Optiver波动率预测金牌方案解读

论坛 期权论坛 期权     
期权匿名问答   2022-3-22 11:45   11237   2
Optiver公司于1986年在荷兰阿姆斯特丹成立,是全球领先的金融衍生品做市商和程序化交易公司。在过去的30年间,集团分别在阿姆斯特丹、芝加哥、悉尼、上海、香港和台湾设立了地区性总部和分支机构,各自活跃于各大主要金融衍生品交易所,积极参与期权、期货、股权、债券等交易,全球拥有超过1000名员工。
2020年7月,Optiver联合Kaggle举办波动率预测比赛,目的是预测各交易品种的波动率。比赛官网地址:Optiver Realized Volatility Prediction。


1)背景介绍

波动率预测对于投资交易较为重要,结合波动率,可以制定不同类型的交易策略。更详细的解释可以参考如下链接。
市场波动率的研究意义到底何在?
波动率模型的应用 | 金融时间序列分析讲义

2)数据特点

这个比赛的一大特点,是类似于高频量化交易,数据频次可以精准到秒级别。

  • 数据收集过程


这题的数据设计方式较为科学,也在一定程度上限制了数据泄露。针对某个stock_id,选取30min作为取样周期,其中前10min用于计算训练样本,中间10min用于计算target,最后10min不做使用。目的就是使用前10min的数据,预测下10min的波动率。


  • 自变量
数据主要包括两部分,报价数据和成交数据。



https://www.kaggle.com/code/jiashenliu/introduction-to-financial-concepts-and-data

上图是成交和报价数据,bid代表买,ask代表卖;当买价和卖价打成一致的时候,会出现成交。



https://www.kaggle.com/code/chumajin/optiver-realized-eda-for-starter-english-version

这个图中包括五条曲线,从上到下依次是卖二、卖一、成交价、买一、买二。这条曲线充分反应了交易过程中报价和成交的动态变化过程。横轴代表时间,0-600s,即10min;纵轴代表价格。


  • 因变量:实际波动率
这个比赛使用成交均价计算收益率,再使用收益率计算波动率,这里我贴原图方便大家理解。



3)解决方案


  • 特征部分
这个比赛的数据精准到了秒级别,每1min数据又包括了60s的报价和成交数据。所以基于此,我们可以做出大量的aggregation特征。当然也可以设计cnn或者rnn专门去处理这些序列数据,不过对建模能力有较高的水准要求。
这里我列一下重点的特征。
特征名解释
stock_id股票代码
log_return_realized_volatility过去10min基于买一和卖一报价计算的实现波动率
log_return_realized_volatility_300过去5min基于买一和卖一报价计算的实现波动率
trade_seconds_in_bucket_count_unique_300过去5min发生的交易的时刻数
price_spread_mean交易价差
trade_seconds_in_bucket_count_unique过去10min发生的交易的时刻数
price_spread_mean_300过去5min交易价差
trade_log_return_realized_volatility过去10min基于成交价计算的实现波动率
trade_log_return_realized_volatility_300过去5min基于成交价计算的实现波动率
log_return2_realized_volatility过去10min基于买二和卖二报价计算的实现波动率
log_return2_realized_volatility_300过去5min基于买二和卖二报价计算的实现波动率
wap_balance_mean过去10min的成交均价价差
wap_balance_mean_300过去5min的成交均价价差
trade_size_sum过去10min的交易量
trade_size_sum_300过去5min的交易量
ask_spead_mean基于卖方报价的价差
bid_spead_mean基于买方报价的价差
bid_ask_spead_mean基于买方和卖方报价的价差
LightGBM starter with feature engineering idea 更多特征可以参考该文档。
除了上述特征外,这个比赛还有两个重要的特征工程技巧,每个技巧都可以大幅提高比赛得分;分别是基于time_id的KNN和基于stock_id的kmeans。


基于time_id的KNN:使用knn算法找到相近的timeid,并把上述的重要的特征重新聚集一遍;反映时间特征。
基于stock_id的kmeans:使用corr+kmeans,找到相近的stockid,并把上述的重要的特征重新聚集一遍;反映行业特征。
更详细的可以参考optiver第一名解决方案Optiver Realized Volatility Prediction。

  • 模型部分
模型部分使用常见的lgb、nn模型即可处理。

总结

1 这个比赛的数据精准到了秒级别,数据量较大,是难得的高频量化比赛。
2 参赛者可以通过一系列特征工程和模型算法,感受如何使用ML和DL方法去解决金融问题。
3 这个比赛还是存在数据泄露的trick的,参赛这一旦发现了计算相似time_id的trick,得分就会有较大的提升。如果当时开发了API接口,可以避免这个问题。另外,如果不是这两个强特,这个比赛的波动实际上是挺大的。
4 数据切分方式:这个比赛的数据收集设计比较严谨,不会出现train和valid时间交叉的问题,使用简单的kfold或者groupkfold即可。
5 至于要不要把stock_id作为特征加进去,这里要分问题而定。如果是预测收益率,建议不加,如果是预测波动率,建议加。原因大概是因为有些品种确实存在较大的波动性,把stock_id作为category变量加进去可以让模型学到。
6 行业特征和相邻时间特征,不止在这个比赛上比较重要,在实际量化中,也都十分重要。
分享到 :
0 人收藏

2 个回复

倒序浏览
2#
期权匿名回答  16级独孤 | 2022-3-22 11:46:00 发帖IP地址来自 北京
行业特征 时间特征说反了吧
3#
期权匿名回答  16级独孤 | 2022-3-22 11:46:23 发帖IP地址来自 北京
确实,我修改一下,看挺认真的哈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP