历史文档

【历史文档】高阶技巧-滚动训练在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

\

{link}