问答交流

该怎么实现滚动训练基础上,每一期使用不同的当期因子呢

由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模块的 因子数据

{link}