python爬股指期货数据_股指期货高频数据机器学习预测

更多精彩内容,欢迎关注公众号:数量技术宅

问题描述

通过对交易委托账本(订单簿)中数据的学习,给定特定一只股票10个时间点股票的订单簿信息,预测下20个时间点中间价的均值。

评价标准为均方根误差。

交易时间为工作日9:30-11:30,13:00-15:00,快照频率3秒。

股价的形成分为集合竞价和连续竞价– 集合竞价:9:15-9:25,开盘集合竞价,确定开盘价

– 连续竞价:9:30之后,根据买卖双方的委托形成的价格

竞价原则:价格优先,时间优先。

交易委托账本具体信息:– Date - 日期– Time - 时间– MidPrice - 中间价(买入价与卖出价的平均值)– LastPirce - 最新成交价– Volume - 当日累计成交数量– BidPrice1 - 申买最高价– BidVolume1 - 申买最高价对应的量– AskPrice1 - 申卖最高价

– AskVolume1 - 申卖最高价对应的量

问题分析

在这个问题中,我们利用10个时间点股票的订单簿信息,预测特定一只股票下20个时间点中间价的均值,来判断其在一分钟内的价格变化特征,以便于高频交易。高频交易的意义在于,对于人类来说,很难在一分钟之内判断出股价变化情况,并完成交易。因此,只能利用计算机进行自动化交易。对于无信息无模型预测,即利用订单簿中最后一个价格“预测”,得到的均方根误差为0.00155。试图通过分析数据、建立模型,做出高于此误差的预测。

数据分析

数据集

训练集(raw training data,train_data.csv):430039条订单簿信息测试集(test data, test_data.csv):1000条(100组)订单簿信息为了避免概念的混淆,下文中如果特别说明,“测试集”均指public board所依赖的数据。此外,这里的“训练集”下文中包含经过数据清理和预处理的训练集(training data)和验证集(development data)。

数据清洗

为了将训练集转换为测试集的格式,即通过10个间隔3秒的订单簿记录,来预测后20个间隔3秒的订单簿记录中中间价的均值,必须对数据清洗。将训练集集中连续的nGiven+(nPredict平方)条数据作为一组数据。

检查每一组数据,去掉含有时间差不为3秒的连续两条数据的组。这样可以跳过跨天的以及不规整的数据。

数据预处理

归一化

给定的数据特征(日期、时间、价格、成交量等)的量纲不同,并且数据绝对值差的较大。如测试集第一条数据:

MidPrice和Volume差6个数量级。首先,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确地收敛到最优解。其次,在支持向量机(SVM)等不具有伸缩不变性的模型中,大数量级的数据会掩盖小数量级的数据。这是因为随机进行初始化后,各个数据拥有同样的或近似的缩放比例,相加之后小数量级的数据便被大数量级的数据“吃掉了”。此外,对于具有伸缩不变性的模型,如逻辑回归,进行归一化也有助于模型更快地收敛。综上所述,对模型进行归一化是十分有必要的。

Prices

训练集MidPrice分布:

测试集MidPrice分布:

从上面两张图片中可以看出,训练集和测试集中最重要的特征以及待遇测量——中间价只有约三分之一重合。这意味着如果按照数值直接进行归一化,可能会有较差的结果。

我采取的第一种方式是预测差值——+即每组数据待预测量——下20条数组中MidPrice的均值与最后一个MidPrice的差值,并将各个价格减去最后一个MidPriced的值,这样可以使训练集和验证集分布更为接近,但是这样造成的问题是,在量纲存在的情况下,最后一个MidPriced的值仍是有价值的,将它直接消去不合适。

第二种方式是完全消除量纲,将预测任务变为变化率的预测。即将所有与Price相关的变量都减去并除以最后一条数组的中间价。这样就可以将量纲完全消除。

last_mp = x_cur[nGiven-1,0]

for axis in [0,1,3,5]: # MidPrice, LastPrice, BidPrice1, AskPrice1

x_cur[:,axis] -= last_mp

x_cur[:,axis] /= last_mp

...

y.append((sum(mid_price[k+nGiven:k+nGiven+nPredict])/

nPredict-mid_price[k+nGiven-1])/mid_price[k+nGiven-1])

Volume

Volume是指当日累计成交数量。在每组数据中,Volume的大小差别很大,这主要是因为每组数据开始的时间不同。开始,我试图保留时间信息和Volume,来更好地利用Volume信息。事实上,虽

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值