Skip to content

Commit 48d810f

Browse files
authored
TST: Cover MultiBacktest optimization stats (#1308)
Cover default best-statistics output and the optional stats-plus-heatmaps return contract across datasets.
1 parent 7dafab9 commit 48d810f

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

β€Žbacktesting/test/_test.pyβ€Ž

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,12 +1061,25 @@ def test_MultiBacktest(self):
10611061
res = btm.run(fast=2)
10621062
self.assertIsInstance(res, pd.DataFrame)
10631063
self.assertEqual(res.columns.tolist(), [0, 1, 2])
1064-
heatmap = btm.optimize(fast=[2, 4], slow=[10, 20])
1064+
stats, heatmap = btm.optimize(fast=[2, 4], slow=[10, 20],
1065+
return_heatmap=True)
1066+
self.assertIsInstance(stats, pd.DataFrame)
1067+
self.assertEqual(stats.columns.tolist(), [0, 1, 2])
1068+
self.assertIn('# Trades', stats.index)
10651069
self.assertIsInstance(heatmap, pd.DataFrame)
10661070
self.assertEqual(heatmap.columns.tolist(), [0, 1, 2])
10671071
print(start_method, time.monotonic() - start_time)
10681072
plot_heatmaps(heatmap.mean(axis=1), open_browser=False)
10691073

1074+
def test_MultiBacktest_optimize_returns_best_stats_by_default(self):
1075+
btm = MultiBacktest([GOOG.iloc[:100]], SmaCross, cash=100_000,
1076+
finalize_trades=True)
1077+
stats = btm.optimize(fast=[2, 4], slow=[10, 20])
1078+
self.assertIsInstance(stats, pd.DataFrame)
1079+
self.assertEqual(stats.columns.tolist(), [0])
1080+
self.assertIn('# Trades', stats.index)
1081+
self.assertNotIn('_strategy', stats.index)
1082+
10701083
class SometimesNoTrade(Strategy):
10711084
def init(self):
10721085
self._will_trade = len(self.data) == 20

0 commit comments

Comments
Β (0)