Skip to content

Commit

Permalink
black re-format
Browse files Browse the repository at this point in the history
  • Loading branch information
letianzj committed Jun 18, 2024
1 parent bb400dc commit 797c1ab
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
12 changes: 9 additions & 3 deletions quanttrader/backtest_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ def __init__(self, start_date: datetime, end_date: datetime) -> None:
self.instrument_meta: dict[str, dict[str, Any]] = (
{}
) # one copy of meta dict shared across program
self._data_feed: BacktestDataFeed = BacktestDataFeed(self._start_date, self._end_date)
self._data_feed: BacktestDataFeed = BacktestDataFeed(
self._start_date, self._end_date
)
self._data_board: DataBoard = DataBoard()
self._performance_manager: PerformanceManager = PerformanceManager(
self.instrument_meta
Expand Down Expand Up @@ -80,7 +82,9 @@ def set_capital(self, capital: float) -> None:
def set_strategy(self, strategy: StrategyBase) -> None:
self._strategy = strategy

def add_data(self, data_key: str, data_source: pd.DataFrame, watch: bool = True) -> None:
def add_data(
self, data_key: str, data_source: pd.DataFrame, watch: bool = True
) -> None:
"""
Add data for backtest
:param data_key: AAPL or CL
Expand Down Expand Up @@ -144,7 +148,9 @@ def _tick_event_handler(self, tick_event: TickEvent) -> None:
tick_event.price,
self._data_board,
)
self._strategy.on_tick(tick_event) # plus strategy.position_manager market to marekt
self._strategy.on_tick(
tick_event
) # plus strategy.position_manager market to marekt
# data_baord update after strategy, so it still holds price of last tick; for position MtM
# strategy uses tick.price for current price; and use data_board.last_price for previous price
# for backtest, this is PLACEHOLDER based on timestamp.
Expand Down
16 changes: 12 additions & 4 deletions quanttrader/performance/performance_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ class PerformanceManager(object):

def __init__(self, instrument_meta: dict[str, dict[str, Any]]) -> None:
self._symbols: list[str] = []
self.instrument_meta: dict[str, dict[str, Any]] = instrument_meta # sym ==> meta
self.instrument_meta: dict[str, dict[str, Any]] = (
instrument_meta # sym ==> meta
)

self._realized_pnl: float = 0.0
self._unrealized_pnl: float = 0.0
Expand All @@ -50,7 +52,9 @@ def reset(self) -> None:
self._equity = pd.Series(dtype=np.float64) # equity line
self._equity.name = "total"

self._df_positions = pd.DataFrame(columns=self._symbols + ["cash"], dtype=np.float64)
self._df_positions = pd.DataFrame(
columns=self._symbols + ["cash"], dtype=np.float64
)

self._df_trades = pd.DataFrame(
np.empty(
Expand Down Expand Up @@ -111,7 +115,9 @@ def update_performance(
performance_time = current_time

equity = 0.0
self._df_positions.loc[performance_time] = [0.0] * len(self._df_positions.columns)
self._df_positions.loc[performance_time] = [0.0] * len(
self._df_positions.columns
)
for sym, pos in position_manager.positions.items():
if sym in self.instrument_meta.keys():
multiplier = self.instrument_meta[sym]["Multiplier"]
Expand All @@ -128,7 +134,9 @@ def update_performance(

self._df_positions.loc[performance_time, "cash"] = position_manager.cash
self._equity[performance_time] = equity + position_manager.cash
self._df_positions.loc[performance_time, "total"] = self._equity[performance_time]
self._df_positions.loc[performance_time, "total"] = self._equity[
performance_time
]

if performance_time != current_time: # not final day
self._equity[current_time] = 0.0 # add new date
Expand Down

0 comments on commit 797c1ab

Please sign in to comment.