Skip to content

Commit 252cabd

Browse files
committed
REF: Spew fewer numpy nan/invalid (expected) warnings all around
1 parent 9ee9174 commit 252cabd

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

backtesting/_util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def _as_list(value) -> List:
3737
def _data_period(index) -> Union[pd.Timedelta, Number]:
3838
"""Return data index period as pd.Timedelta"""
3939
values = pd.Series(index[-100:])
40-
return values.diff().median()
40+
return values.diff().dropna().median()
4141

4242

4343
class _Array(np.ndarray):

backtesting/backtesting.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,11 +1157,11 @@ def run(self, **kwargs) -> pd.Series:
11571157
if start < len(self._data):
11581158
try_(broker.next, exception=_OutOfMoneyError)
11591159

1160-
# Set data back to full length
1161-
# for future `indicator._opts['data'].index` calls to work
1162-
data._set_length(len(self._data))
1160+
# Set data back to full length
1161+
# for future `indicator._opts['data'].index` calls to work
1162+
data._set_length(len(self._data))
11631163

1164-
self._results = self._compute_stats(broker, strategy)
1164+
self._results = self._compute_stats(broker, strategy)
11651165
return self._results
11661166

11671167
def optimize(self,
@@ -1414,7 +1414,7 @@ def geometric_mean(returns):
14141414
# our risk doesn't; they use the simpler approach below.
14151415
annualized_return = (1 + gmean_day_return)**annual_trading_days - 1
14161416
s.loc['Return (Ann.) [%]'] = annualized_return * 100
1417-
s.loc['Volatility (Ann.) [%]'] = np.sqrt((day_returns.var(ddof=1) + (1 + gmean_day_return)**2)**annual_trading_days - (1 + gmean_day_return)**(2*annual_trading_days)) * 100 # noqa: E501
1417+
s.loc['Volatility (Ann.) [%]'] = np.sqrt((day_returns.var(ddof=int(bool(day_returns.shape))) + (1 + gmean_day_return)**2)**annual_trading_days - (1 + gmean_day_return)**(2*annual_trading_days)) * 100 # noqa: E501
14181418
# s.loc['Return (Ann.) [%]'] = gmean_day_return * annual_trading_days * 100
14191419
# s.loc['Risk (Ann.) [%]'] = day_returns.std(ddof=1) * np.sqrt(annual_trading_days) * 100
14201420

0 commit comments

Comments
 (0)