该怎么实现滚动训练基础上,每一期使用不同的当期因子呢
由iquant创建,最终由iquant 被浏览 41 用户
问题
该怎么实现滚动训练基础上,每一期使用不同的当期因子呢
解答
那就要在每个滚动期的运行过程中除了修改起止日期,还要根据你的滚动规则修改特征列表模块的参数。
首先看懂模块中每次滚动的训练和预测代码:
# 训练和预测
results = []
for rolling in rolling_dates:
parameters = {}
# 先禁用回测
parameters[trade_mid + '.__enabled__'] = False
parameters[train_instruments_mid + '.start_date'] = rolling['train_start_date']
parameters[train_instruments_mid + '.end_date'] = rolling['train_end_date']
parameters[test_instruments_mid + '.start_date'] = rolling['test_start_date']
parameters[test_instruments_mid + '.end_date'] = rolling['test_end_date']
# print('------ rolling_train:', parameters)
results.append(g.run(parameters))
这段话的意思是先关闭回测模块,每个滚动周期内重置代码列表模块的起止日期, 如果你每个阶段都换因子,就要对应在每个滚动周期内按规则添加一句 parameters[‘m3.features’]= \n ’.join([你的新因子组合]) 放到results.append(g.run(parameters))这句之前,表示每个滚动期内你修改了m3模块的 因子数据