9. Kaggle: Optiver Realized Volatily Prediction

327 阅读3分钟

1. 背景介绍

这是金融数据分析大赛。Optiver举办的竞赛,股票波动率是衡量股票发展的重要指标,因此大赛旨在通过机器学习预测未来金融市场股票波动率。

3. 评价指标

4. 整体实现思路

自变量:报价数据和成交数据。

因变量:波动率。

计算规则:使用成交均价计算收益率,再使用收益率计算波动率。

  1. 可视化分析与数据清洗
  2. 特征工程
  3. 模型预测
  4. 模型融合

4.1 可视化分析与数据清洗

可视化分析:通过Matplotlib库对数据可视化分析,包括数据的统计、数据的分布、数据的空缺异常情况;

数据清洗:通过Pandas库对数据清洗,包括空缺数据补全、对异常数据剔除、对数据格式转换。

4.2 特征工程

1.基础特征:基础特征和基于基础特征的关联衍生特征

2.两类综合特征:通过KNN算法计算在某个time_id内的所有股票的综合特征(如某个时间段所有股票波动的最大值);通过K-Means算法计算某个stock_id在所有时间内的综合特征(如某个股票在所有时间波动的最小值)。

K-means

随机选取k个点作为簇中心,计算每个样本到各个簇中心的距离,将其分配到它距离最近的簇。

KNN

对于新样本,算法计算与每个训练样本的距离,然后选取最邻近的K个样本,并根据这K个样本的标签来预测新样本的标签。这里的标签就是time_id。

4.3 模型预测

将上述特征喂入模型中,预测股票的波动率。

XGBoost

XGBoost 是一种集成学习算法,通过集成多个弱分类器,来构建一个强分类器。在预测时,XGBoost 将所有的弱分类器的结果加权求和,得到最终的预测结果。

XGBoost是GBDT衍生而来的强分类器,它和GBDT相比有以下几个改进点:

1. 基分类器: GBDT的基分类器只有决策树;XGBoost的基分类器不仅有决策树还有线性分类器。

2. 输入: GBDT的每一个弱分类器的输入来自于上一个弱分类器的残差;XGBoost每一个弱分类器的输入来自于上一个弱分类器的残差和二阶导数。

3. Loss: GBDT每个弱分类器的损失函数都没有正则项;XGBoost每个弱分类器的损失函数都有正则项的。

4. 空缺值自动补全: GBDT对于特征的空缺值没有自动补全功能;XGBoost对于空缺值会自动补全。

5. 列抽样: GBDT的训练会训练所有特征;XGBoost每个训练epoch则会对特征进行随机列抽样,提高效率。

6. block: GBDT每次训练都会对特征进行排序;XGBoost是并行训练特征的,即将特征在训练前进行排序,然后将特征形成block结构,每次训练只需要调用block。

BP-神经网络

全连接网络。

4.4 模型融合

将两个模型的预测结果使用加权融合中的算术平均融合。