kaggle比赛案例|股票市场波动率预测baseline
Kaggle 上近日发布了一个时间序列方向的新赛:Optiver Realized Volatility Prediction,即“ 股票市场波动率预测 ”比赛。奖金10W美刀,要求参赛者构建模型预测不同行业数百只股票的短期波动。

这是一个时间序列预测的任务,整体难度不大,适合机器学习/深度学习初学者参加。此外,本次比赛还涉及到金融行业的量化交易知识,对此感兴趣的同学千万不要错过。
01 比赛简介
比赛名称:
Optiver Realized Volatility Prediction
比赛链接:
https://www.kaggle.com/c/optiver-realized-volatility-prediction/leaderboard
波动率是你在任何交易大厅都会听到的最重要的术语之一,高波动性与市场动荡时期和价格大幅波动有关,而低波动性则描述更平静和安静的市场。
对于像Optiver这样的交易公司来说,准确预测波动率对于期权交易至关重要,期权的价格与标的产品的波动率直接相关。
1.1 比赛目标
在本次比赛的前三个月,你将构建模型来预测不同行业数百只股票的短期波动。你将拥有触手可及的数亿行高度细化的财务数据,你将利用这些数据设计预测 10 分钟内波动率的模型。
你的模型将根据训练后三个月评估期内收集的真实市场数据进行评估。
1.2 比赛时间
2021年6月28日-开始报名比赛;
2021年9月20日-合并队伍截止日期;
2021年9月27日-最终提交日期.;
在最终提交截止日期之后,排行榜将定期更新,以测试比赛选手模型在真实交易市场的实时分数。
1.3 评估指标
**评估指标:**本次评估指标用的是RMSPE,如下所示:

结果提交:
结果文件submission.csv中应该包括row_id和target两列,如下所示。并且必须通过Notebooks来提交代码,运行时间不能超过九个小时。提交示例文件如下:
代码:
02 数据分析
该数据集包括了在金融市场中实际交易执行相关的股票市场数据,包括了订单簿数据和交易数据。秒级的数据以更细的粒度描述了金融市场的微观结构。
数据集是不允许下载的,只有测试集的前几行可供下载,可在notebook中进行使用,隐藏的测试集大概有15w的数据需要预测,public leaderboard和private leaderboard所使用的的数据是完全没有重叠的。
这个比赛主要提供了book和trade的信息,下面直接结合这两部分信息来帮助大家快速了解比赛内容。


2.1 book数据
book0 = util.load_book(0)

该文件中提供了进入市场的最具竞争力的买卖订单的订单簿数据,通俗来说,也就是买一,卖一,买二,卖二价格数据。一个stock_id对应了一个订单簿文件,test里面只有stock_id=0的数据。

2.2 trade 数据
该表格提供了交易数据。通常来说,投资者被动买卖的交易意向比实际交易要多得多,所以实际的交易数据会比订单簿更加稀疏。
(被动买卖:不着急出手,认为股票股价还有发展的潜力(或跌或涨),挂单的价格相比于买一卖一没有那么有竞争力;主动买卖:急于出手,以卖一价以上的价格成交或以买一以下的价格成交)。
一个stock_id对应了一个交易数据文件,test里面只有stock_id=0的数据。


根据股票id和时间合并trade和book表格之后的数据如下:

2.3 金融背景知识补充
这里先要对不熟悉背景的同学介绍一下什么叫做Order Book。
现在主流的交易所一般都使用Order Book进行交易,交易所在内部的Order Book上记录所有买家和卖家的报价,比如像这样:

Bid表示买家,Offer表示卖家,这张报价单表示买卖双方发出的所有报价单(Limit Order)。这张表才是高频交易最关心的信息。任意时刻,买家的出价总是低于卖家(比如这里的98对101)。所以报价虽然一直在变化,但是只有报价是不会有任何成交的。
什么时候会产生交易呢?有两种情况:第一是任一方发出市价单(Market Order),比如一个买家发出一张单量为10的市价单,就可以买到卖方在101价格上挂的10份,这个交易成功之后,Order Book会变成这样:

03 基于特征工程与LGB的波动率基线模型
3.1 金融交易特征
3.2 统计编码特征
关注【学姐带你玩AI】公众号,点击菜单【联系学姐】获取完整baseline代码
3.3 LGB模型构建
训练日志如下

金牌区开源代码公众号有完整版:
https://mp.weixin.qq.com/s/9csOFLBnGKTeTZTxvPUUrQ