【历史文档】高阶技巧-滚动训练在DNN策略上的应用分享
由ypyu创建,最终由small_q 被浏览 437 用户
更新
本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明
新版量化开发IDE(AIStudio):
https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW
新版模版策略:
https://bigquant.com/wiki/doc/demos-ecdRvuM1TU
新版数据平台:
https://bigquant.com/data/home
https://bigquant.com/wiki/doc/dai-PLSbc1SbZX
新版表达式算子:
https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS
新版因子平台:
https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5
简介
本文主要是分享一个滚动训练模块在DNN策略上的应用。
滚动训练模块是一个已经封装好的可视化模块,右侧属性栏里可以看见模块代码。 使用时主要需设置一下以下几个参数:
- trading_days_market: 使用哪个市场的交易日历,如‘CN’
- train_instruments_mid:训练数据 证券代码列表 模块id,如‘m1’
- test_instruments_mid:测试数据 证券代码列表 模块id,如'm9'
- predict_mid: 预测 模块id,如'm24'
- trade_mid:回测 模块id,如'm19'
- start_date:数据开始日期,如'2018-01-23'
- end_date: 数据结束日期,如T.live_run_param('trading_date', '2019-01-11')
- train_update_days: 更新周期,按交易日计算,每多少天更新一次
- train_update_days_for_live:模拟实盘模式下的更新周期,按交易日计算,每多少天更新一次。如果需要在模拟实盘阶段使用不同的模型更新周期,可以设置这个参数
- train_data_min_days:最小数据天数,按交易日计算,所以第一个滚动的结束日期是 从开始日期到开始日期+最小数据天数
- train_data_max_days: 最大数据天数,按交易日计算,0,表示没有限制,否则每一个滚动的开始日期=max(此滚动的结束日期-最大数据天数, 开始日期
- rolling_count_for_live:实盘模式下滚动次数,模拟实盘模式下,取最后多少次滚动。一般在模拟实盘模式下,只用到最后一次滚动训练的模型,这里可以设置为1;如果你的滚动训练数据时间段很短,以至于期间可能没有训练数据,这里可以设置大一点。0表示没有限制。
运行结束后,还可以使用以下代码查看相关的一些数据:
# 第一次训练的训练集
print(m10.result['rollings'][0]['m1'].data.read_pickle()['start_date'])
print(m10.result['rollings'][0]['m1'].data.read_pickle()['end_date'])
# 第一次训练的预测集
print(m10.result['rollings'][0]['m9'].data.read_pickle()['start_date'])
print(m10.result['rollings'][0]['m9'].data.read_pickle()['end_date'])
# 训练的第一个模型的预测结果
m10.result['rollings'][0]['m11'].data.read_pickle()
详细的滚动训练模块介绍见 文档-滚动训练(v1)
以下是一个模块在DNN上的应用实例,感兴趣的朋友可以克隆下来进行调参得到一个更好的回测结果。
策略案例
https://bigquant.com/experimentshare/80d0f49388714f6387db64fb814425ad
\