问答交流

几个常见AI量化交易问题

由iquant创建,最终由iquant 被浏览 93 用户

年后,北京一个忠实用户问了几个问题,我整理了下,也方便持续交流。

他给我留言的问题如下:


  1. 我们的策略回测时,用的模型有没有把验证集的数据学习了?
  2. 滚动回测的效果远远不如常规的 可能原因时什么?
  3. 短期交易,大户资金流比较重要,有什么帖子或者研报发我提供点思路?
  4. 预测明天股票,一定要放在回测里,收通知吗? 验证集最后一天也成最近一天交易日,可以预测吗?

这是他的原话,一个字没有修改,因为我怕理解有偏差。

回测是否学习验证集数据?

在机器学习算法中,我们把可以获得到的数据分为训练集,验证集和测试集,之所以这样划分,是因为训练集拿来训练模型,验证集用来确定模型,测试集用来使用模型预测,各自分工不一致。算法是训练出来的,算法会学习训练集的数据,找到一些pattern,但是训练模型不会用到验证集和测试集的数据,就谈不到模型把验证集的数据学习一说啦。在BigQuant平台上,训练集和测试集数据有清楚明确的划分,而且是以时间点作为划分点,这样的处理使得训练集和测试集完全没有一点重合,因此模型不会把验证集的数据学习。其实,这里连验证集都没有,我们是直接训练集训练出模型,减少了使用验证集来确定模型这一步,然后将模型应用在测试集数据上,测试集也是我们的回测区间,其本身策略的表现就是对模型的一个验证。我猜想,他提问的本意是想说,很多策略资金曲线跑的很漂亮,会不会是因为事先训练模型的时候就已经学习了这些数据,其实并不是的哈,我们严格进行了数据划分

滚动回测效果一定会提升吗? 肯定不是哈

先说说滚动回测本身的一些参数设置吧,滚动回测涉及到最小数据长度、更新周期等,具体可以参考:在AI策略中使用滚动训练 (https://community.bigquant.com/t/在AI策略中使用滚动训练/3542?_ga=2.80279959.1291189343.1632621343-109686139.1631072428

这两个参数都会影响到你训练模型所使用的样本数据量,数据量太少可能会欠拟合,因此训练出来的模型不一定在新的数据上表现良好。

对机器学习算法而言,数据量需要很大,因为其所要探寻的pattern本来就不是那么直观。

{w:100}{w:100}{w:100}

从上图可以看出,默认设置下,滚动训练是在更新模型的时候训练集用到了更多的数据,通过最大数据天数能够控制训练集的数据样本。另外,不同时间区间,市场的状态是不一样的,这里也会影响模型。

大户资金流真的很重要

之前有一天,我们爬取的资金流数据没有及时更新,下午六点那会几个用户问我们数据为什么是缺失值,刚好那会我们数据爬取的监控也发来提醒,因此用户还走在了监控程序之前给我们反馈数据的问题,可见其重要性。 资金流是推动价格变动最为直接的原因。

怎样预测数据

如果还有这样的疑问,那对机器学习算法以及我们平台的使用还需要加深。模型在新的数据上实现预测的目的,以指导我们决策,只要有模型,并有新的数据就可以完成预测,因此我们不要局限于什么时间段的数据,哪一天的数据。如果要预测明天的股票,那么我们把今天收盘后的数据传给模型就可以啦。这里的预测逻辑是:今天的数据在收盘后是最新的数据,那么传给模型后,模型会有一些预测结果,结果可以成为我对股票未来的一个判断,因此可以生成交易信号,好的股票当然要继续持有,差的股票应该果断卖出。用户可以在策略中手动运行进行预测,这可以称为回测,也可以写好逻辑,让该策略模拟交易,这样自动运行后如果绑定邮箱或者微信后就可收到信号推送。

欢迎交流

补充一个问题

问题核心是:如果我的策略在3个月的测试集上给有良好的回测结果,那么我就直接用中间断了3个月的模型去预测将来5天吗? 还是说我的模型把这3个月的数据训练了,再预测将来5天会更好呢?

答:都可以。直观上来说,多三个月的数据可能能训练出更符合当下市场状况的模型。 但间断了三个月的也有优势,因为该模型通过了三个月的回测检验,在过去三个月已经被证实过。

标签

策略回测股票预测AI量化交易量化交易
{link}