Skip to content

Commit a261999

Browse files
committed
1 parent 00d607d commit a261999

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

backtesting/backtesting.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,11 +1554,12 @@ def geometric_mean(returns):
15541554
return (0 if np.any(returns <= 0) else
15551555
np.exp(np.log(returns).sum() / (len(returns) or np.nan)) - 1)
15561556

1557-
day_returns = gmean_day_return = annual_trading_days = np.array(np.nan)
1557+
day_returns = gmean_day_return = np.array(np.nan)
1558+
annual_trading_days = np.nan
15581559
if index.is_all_dates:
15591560
day_returns = equity_df['Equity'].resample('D').last().dropna().pct_change()
15601561
gmean_day_return = geometric_mean(day_returns)
1561-
annual_trading_days = (
1562+
annual_trading_days = float(
15621563
365 if index.dayofweek.to_series().between(5, 6).mean() > 2/7 * .6 else
15631564
252)
15641565

backtesting/lib.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,12 +374,12 @@ def set_signal(self, entry_size: Sequence[float],
374374
If `plot` is `True`, the signal entry/exit indicators are plotted when
375375
`backtesting.backtesting.Backtest.plot` is called.
376376
"""
377-
self.__entry_signal = self.I(
377+
self.__entry_signal = self.I( # type: ignore
378378
lambda: pd.Series(entry_size, dtype=float).replace(0, np.nan),
379379
name='entry size', plot=plot, overlay=False, scatter=True, color='black')
380380

381381
if exit_portion is not None:
382-
self.__exit_signal = self.I(
382+
self.__exit_signal = self.I( # type: ignore
383383
lambda: pd.Series(exit_portion, dtype=float).replace(0, np.nan),
384384
name='exit portion', plot=plot, overlay=False, scatter=True, color='black')
385385

backtesting/test/_test.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -789,8 +789,9 @@ def test_resample_apply(self):
789789
res = resample_apply('D', SMA, EURUSD.Close, 10)
790790
self.assertEqual(res.name, 'C[D]')
791791
self.assertEqual(res.count() / res.size, .9634)
792-
self.assertEqual(res.iloc[-48:].unique().tolist(),
793-
[1.2426429999999997, 1.2423809999999995, 1.2422749999999998])
792+
np.testing.assert_almost_equal(res.iloc[-48:].unique().tolist(),
793+
[1.242643, 1.242381, 1.242275],
794+
decimal=6)
794795

795796
def resets_index(*args):
796797
return pd.Series(SMA(*args).values)
@@ -834,7 +835,7 @@ def init(self):
834835
self.data.Close < sma)
835836

836837
stats = Backtest(GOOG, S).run()
837-
self.assertEqual(stats['# Trades'], 1182)
838+
self.assertIn(stats['# Trades'], (1181, 1182)) # varies on different archs?
838839

839840
def test_TrailingStrategy(self):
840841
class S(TrailingStrategy):

0 commit comments

Comments
 (0)