DolphinDB机器学习案例教程:实时实际波动率预测

2022-05-23 00:00:00 数据 模型 计算 预测 波动

波动率是衡量价格在给定时间内上下波动的程度。在股指期货实时交易的场景中,如果能够快速、准确地预测未来一段时间的波动率,对交易者及时采取有效的风险防范和监控手段具有重要意义。本教程受Kaggle的Optiver Realized Volatility Prediction竞赛项目的启发,完全基于DolphinDB时序数据库,实现了中国股市全市场高频快照数据的存储、数据预处理、模型构建和实时波动率预测的应用场景开发。

本教程使用上证50成分股2020年的level2快照数据,构建频率为10分钟的高频交易特征(价差、深度不平衡指标、加权平均价格、买卖压力指标、实际波动率)作为模型输入,将未来10分钟的波动率作为模型输出,利用DolphinDB内置机器学习框架中支持分布式计算的adaBoostRegressor算法构建回归模型,使用根均方百分比误差(Root Mean Square Percentage Error,RMSPE)作为评价指标,终实现了测试集RMSPE=1.701的拟合效果,下图展示了中信建投部分波动率预测结果。本教程示例代码必须在1.30.18及以上版本和2.00.6及以上版本的DolphinDB server上运行。

将训练后的模型持久化在DolphinDB服务端,结合DolphinDB流数据处理框架,实时预测上证50成分股未来十分钟的实际波动率。本教程包含内容可在左侧目录快速浏览。

1. Snapshot数据文件结构

本教程应用的数据源为上交所level2快照数据(Snapshot),每幅快照间隔时间为3秒或5秒,数据文件结构如下:

字段含义字段含义字段含义
SecurityID证券代码LowPx低价BidPrice[10]申买十价
DateTime日期时间LastPx新价BidOrderQty[10]申买十量
PreClosePx昨收价TotalVolumeTrade成交总量OfferPrice[10]申卖十价
OpenPx开始价TotalValueTrade成交总金额OfferOrderQty[10]申卖十量
HighPx高价InstrumentStatus交易状态…………

2. 数据预处理

2020年上交所所有证券的Snapshot数据已经提前导入至DolphinDB数据库中,一共约28.75亿条快照数据,导入方法见股票行情数据导入实例,一共174列。

2.1 数据样本选择

本教程用到的字段为Snapshot中的部分字段,包括: 股票代码、快照时间、申买十价,申买十量,申卖十价,申卖十量。

样本为2020年上证50指数的成分股:

  • 股票代码
601318,600519,600036,600276,601166,600030,600887,600016,601328,601288,
600000,600585,601398,600031,601668,600048,601888,600837,601601,601012,
603259,601688,600309,601988,601211,600009,600104,600690,601818,600703,
600028,601088,600050,601628,601857,601186,600547,601989,601336,600196,
603993,601138,601066,601236,601319,603160,600588,601816,601658,600745

相关文章