471. Optiver Realized Volatility Prediction | optiver-realized-volatility-prediction
在开始之前,我要感谢 Kaggle 和 Optiver 主办了这场精彩的比赛。当然,还要感谢我优秀的队友 @tomotomo5,是他起草了这篇帖子。
我们在公共排行榜上最终排名第6,目前在私人排行榜上排名第3(截至10月15日)。
在这篇讨论中,我们想介绍一些我们实施的核心想法,正是这些想法提升了我们的分数。其中一些在社区中尚未被广泛讨论。在模型方面,我们的最终模型是 LightGBM 和 ANN 的简单堆叠模型(这部分不太值得注意)。
我们方案中最大的“游戏规则改变者”是基于 time_id 最近邻的特征,这与 @nyanp 在其下方的解决方案中解释的特征创建思路相似。
https://www.kaggle.com/c/optiver-realized-volatility-prediction/discussion/274970
我承认我们的理念没有 @nyanp 那么复杂。我们只是试图找到具有相似市场条件的 time id。事实上,我们并不太清楚我们可以恢复 time-id 的顺序,尽管我们最终创建了与 @nyanp 非常相似的特征。
不同之处在于:
目标转换是我们模型的关键部分,它增加了模型的鲁棒性。股票波动率可能表现为非平稳序列,这意味着波动率水平可能随时间不稳定,但波动率的变化不太可能如此。
考虑到这一点,我们决定将比赛任务从直接预测已实现波动率的水平改为预测目标值与 0~600 秒已实现波动率的比率。
具体来说,我们的转换目标公式如下:
(转换后的目标) = (目标值) / (0~600 秒的已实现波动率)
由于预计训练数据集和最终测试数据集之间存在较大的时间间隔,我们希望尽可能多地向模型提供关于测试数据集的信息。
因此,我们 (1) 连接了训练集 + 测试集,(2) 将 600 秒切成两半,(3) 使用前半部分(0-300 秒)创建特征,(4) 预测后半部分 300-600 秒的已实现波动率。然后我们 (5) 基于数据集的 300-600 秒创建特征,并 (6) 预测 600-900 秒的已实现波动率。
预测结果被用作我们主模型的特征。
这个想法最棒的部分是我们能够基于测试数据训练模型。
我们相信个股波动率在很大程度上取决于宏观环境。
因此,我们训练了一个模型来预测每个 time_id 中所有 stock_id 的平均波动率。
结果被用作我们主模型的特征。
希望此后的私人排行榜不要那么动荡,即使生活是动荡的。
非常感谢您的阅读,祝您 KAGGLE 愉快!