Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
support multiple symbols
  • Loading branch information
robert1003 committed May 8, 2022
commit 3cf29e4ca7b5ee6c1a57c1ea0dde05a9ac32aa21
12 changes: 10 additions & 2 deletions backtesting/_stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ def geometric_mean(returns: pd.Series) -> float:
def compute_stats(
trades: Union[List['Trade'], pd.DataFrame],
equity: np.ndarray,
symbols: List[str],
ohlc_data: pd.DataFrame,
strategy_instance: 'Strategy',
risk_free_rate: float = 0,
Expand Down Expand Up @@ -92,8 +93,15 @@ def _round_timedelta(value, _period=_data_period(index)):
s.loc['Equity Final [$]'] = equity[-1]
s.loc['Equity Peak [$]'] = equity.max()
s.loc['Return [%]'] = (equity[-1] - equity[0]) / equity[0] * 100
c = ohlc_data.Close.values
s.loc['Buy & Hold Return [%]'] = (c[-1] - c[0]) / c[0] * 100 # long-only return

r = []
for symbol in symbols:
c = ohlc_data[f"{symbol}_Close"].values
_r = (c[-1] - c[0]) / c[0] * 100
s.loc[f'Buy & Hold Return for {symbol} [%]'] = _r # long-only return
r.append(_r)
s.loc[f'Avg Buy & Hold Return [%]'] = np.mean(r)


gmean_day_return: float = 0
day_returns = np.array(np.nan)
Expand Down
Loading