@Sunx 有问题跟你汇报下哈:
1.按照你说的方法测了下,整数可以运行,小数报错,比如其中的1.0不能运行,而改为1就可以运行,param_values = [[3+(x+1)*1.0/1 for x in range(2)], [1+(x+1)*1.0/1 for x in range(2)]] 改为[[4.0,5.0],[2.0,3.0]]一样报错 KeyError,报错如下
报错为:---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-20-45e020d32126> in <module>()
10 #param_values = [['BP'], tuple(zip(range(0,100,10), range(10,101,10)))]
11 param_names = ['lag','lim'],
---> 12 param_values = [[3+(x+1)*1.0/1 for x in range(2)], [1+(x+1)*1.0/1 for x in range(2)]]
13 )
<ipython-input-18-d374f0e3f8c3> in get_backtest_data(self, algorithm_id, benchmark_id, file_name, running_max, start_date, end_date, frequency, initial_cash, param_names, param_values)
235 initial_cash=initial_cash,
236 param_names=param_names,
--> 237 param_values=param_values
238 )
239 # 回测结果指标中加入 log 收益率和超额收益率等指标
<ipython-input-18-d374f0e3f8c3> in run_backtest(self, algorithm_id, running_max, start_date, end_date, frequency, initial_cash, param_names, param_values)
89 for i in range(pointer, pointer+to_run):
90 # 备选的参数排列组合的 df 中第 i 行变成 dict,每个 key 为列名字,value 为 df 中对应的值
---> 91 params = to_run_df.ix[i].to_dict()
92 # 记录策略回测结果的 id,调整参数 extras 使用 params 的内容
93 backtest = create_backtest(algorithm_id = algorithm_id,
/opt/conda/envs/python2/lib/python2.7/site-packages/pandas/core/indexing.pyc in __getitem__(self, key)
68 return self._getitem_tuple(key)
69 else:
---> 70 return self._getitem_axis(key, axis=0)
71
72 def _get_label(self, label, axis=0):
/opt/conda/envs/python2/lib/python2.7/site-packages/pandas/core/indexing.pyc in _getitem_axis(self, key, axis)
927 return self._get_loc(key, axis=axis)
928
--> 929 return self._get_label(key, axis=axis)
930
931 def _getitem_iterable(self, key, axis=0):
/opt/conda/envs/python2/lib/python2.7/site-packages/pandas/core/indexing.pyc in _get_label(self, label, axis)
84 raise IndexingError('no slices here, handle elsewhere')
85
---> 86 return self.obj._xs(label, axis=axis)
87
88 def _get_loc(self, key, axis=0):
/opt/conda/envs/python2/lib/python2.7/site-packages/pandas/core/generic.pyc in xs(self, key, axis, level, copy, drop_level)
1471 drop_level=drop_level)
1472 else:
-> 1473 loc = self.index.get_loc(key)
1474
1475 if isinstance(loc, np.ndarray):
/opt/conda/envs/python2/lib/python2.7/site-packages/pandas/core/index.pyc in get_loc(self, key, method)
1570
2. 对于bool类型,设置param_values = [['True', 'False']][{}][{True, False}][True, False]都报错,要么是KeyError,要么是typeError,这个类型该如何设置呢?
KeyError Traceback (most recent call last)
<ipython-input-41-2ee723a6e0e0> in <module>()
10 #param_values = [['BP'], tuple(zip(range(0,100,10), range(10,101,10)))]
11 param_names = ['peg','Sort_turnover_ratio_weight'],
---> 12 param_values = [['True', 'False'], [1+(x+1)*1/1 for x in range(2)]]
13 )
2017-08-24