Skip to content

Commit d3d51a3

Browse files
committed
REF: Error if some optimization variable is passed no values
1 parent c5cd1b3 commit d3d51a3

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

backtesting/backtesting.py

+5
Original file line numberDiff line numberDiff line change
@@ -1235,6 +1235,11 @@ def constraint(_):
12351235
def _tuple(x):
12361236
return x if isinstance(x, Sequence) and not isinstance(x, str) else (x,)
12371237

1238+
for k, v in kwargs.items():
1239+
if len(_tuple(v)) == 0:
1240+
raise ValueError("Optimization variable '{0}' is passed no "
1241+
"optimization values: {0}={1}".format(k, v))
1242+
12381243
class AttrDict(dict):
12391244
def __getattr__(self, item):
12401245
return self[item]

backtesting/test/_test.py

+1
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,7 @@ def test_multiprocessing_windows_spawn(self):
507507
def test_optimize_invalid_param(self):
508508
bt = Backtest(GOOG.iloc[:100], SmaCross)
509509
self.assertRaises(AttributeError, bt.optimize, foo=range(3))
510+
self.assertRaises(ValueError, bt.optimize, fast=[])
510511

511512
def test_optimize_no_trades(self):
512513
bt = Backtest(GOOG, SmaCross)

0 commit comments

Comments
 (0)