返回列表

Public 12 Place Short Solution

471. Optiver Realized Volatility Prediction | optiver-realized-volatility-prediction

开始: 2021-06-28 结束: 2022-01-10 量化投资 数据算法赛
Public 12 Place Short Solution

公开第12名简短方案

作者: khyeh (Grandmaster) | 比赛排名: 18

感谢 Kaggle 和 Optiver 举办了这场比赛,也感谢大量的公开分享,让我学到了很多。最后感谢我的队友在比赛期间的付出。

验证策略

由于 Public/Private LB(排行榜)代表未来的市场,最好的方法是进行基于时间的验证划分。然而,由于声明指出不同的 time_id 之间不存在实际的序列关系,因此进行验证的最佳方法是基于 time_id 的 Group K-Fold 验证。

验证的经验法则变为:

  1. 检查每一组变更
  2. 如果 CV(交叉验证)分数保持不变或有提升,我们就在 LB 上进行测试。
  3. 如果 LB 有所提升,我们就保留这些特征。

其核心思想是,我们创建/调整的特征/模型至少应该能够泛化到不同的时间桶中。此外,我们将 LB 视为一个额外的验证折,它应该能更好地代表 Private 测试集。

建模

[理想的神经网络设计]
  • 使用 RNN 提取每个 stock_id 在每个 time_id 下的簿记/交易特征
  • 使用 Transformer 捕捉股票间的关系

NN Design

[演进 1]

问题:训练太慢
解决方案:用手工特征替换 RNN 部分
- 训练速度快得多
- 性能几乎没有差异

表现:CV: 0.211, LB: ~0.200

[演进 2]

问题:正如顶尖队伍所提示的,我们没有考虑 time_id 之间的关系。
解决方案:使用最近邻算法找到前 N 个最接近的 time_id,并从这些时间邻居中平均每个股票的特征作为新特征。

表现:CV: ~0.198, LB: ~0.189

[融合]

Transformer + Tabnet + 拥有不同特征集的神经网络。

同比赛其他方案