当前位置: 首页 > news >正文

DataWhale 机器学习夏令营第二期——AI量化模型预测挑战赛 学习记录

DataWhale 机器学习夏令营第二期

  • 学习记录一 (2023.08.06)
    • 1. 问题建模
      • 1.1 赛事数据
        • 数据集情况
        • 数据中缺失值
        • 类别和数值特征的基本分布
      • 1.2 评价指标
        • 中间价的计算方式
        • 价格移动方向说明
      • 1.3 线下验证

DataWhale 机器学习夏令营第二期
——AI量化模型预测挑战赛
已跑通baseline,线上得分0.51138, 跑通修改后进阶代码,线上得分0.34497

学习记录一 (2023.08.06)

按照鱼佬直播分享按照以下常见思路分析机器学习竞赛:

建模思路

1. 问题建模

1.1 赛事数据

数据集情况

给定数据集: 给定训练集(含验证集), 包括10只(不公开)股票、79个交易日的L1snapshot数据(前64个交易日为训练数据,用于训练;后15个交易日为测试数据,不能用于训练), 数据已进行规范化和隐藏处理,包括5档量/价,中间价,交易量等数据(具体可参考后续数据说明)。
预测任务:利用过往及当前数据预测未来中间价的移动方向,在数据上进行模型训练与预测
输入数据
行情频率:3秒一个数据点(也称为1个tick的snapshot);
每个数据点包括当前最新成交价/五档量价/过去3秒内的成交金额等数据;
训练集中每个数据点包含5个预测标签的标注; 允许利用过去不超过100tick(包含当前tick)的数据,预测未来N个tick后的中间价移动方向。
预测时间跨度:5、10、20、40、60个tick,5个预测任务;
即在t时刻,分别预测t+5tick,t+10tick,t+20tick,t+40tick,t+60tick以后: 最新中间价相较t时刻的中间价:下跌/不变/上涨。

数据分为训练集和测试集,训练集包括sym0 ~ 910个sym从date0 ~ 6364天每天上午和下午的数据,测试集则为后续date64 ~ 7814天的数据。数据量较大,典型的时间序列预测问题。时间步长为 3 s, 范围从 09:40:03~ 11:19:5713:10:03~14:49:57
思路:

  • 在构建时序特征时需要考虑按照每个上下午,分组进行构造来保证时间步长一致。
  • 对10只股票分开处理
  • 对5个任务分开处理, N=5,10 为一类, N = 20,40,60 一类

数据中缺失值

train_df.isnull().sum()

不存在缺失值

类别和数值特征的基本分布

查看数值型特征在训练集和测试集上的数据分布
请添加图片描述

  1. 价格类数值变量数值比较稳定,训练和测试集分布范围基本一致,如’n_close’,‘n_midprice’, ‘n_bid1’, 'n_ask1’等
  2. 而和交易量相关的数值变量训练集的变化比测试集较大, 训练集中存在交易量远大于测试集交易量的数据,后续分析可以研究这些高交易量对应的日期是否在一天,是否为特殊时刻,以及是否为异常值

1.2 评价指标

中间价的计算方式

n _ m i d p r i c e = n _ b i d 1 + n _ b i d 2 2 n\_midprice = \frac{n\_bid1+n\_bid2}{2} n_midprice=2n_bid1+n_bid2
其中,一个为0取另一个值

分析
查看为 n _ b i d 1 , n _ b i d 2 n\_bid1, n\_bid2 n_bid1,n_bid2中存在0的行:

train_df[(train_df['n_bid1'] == 0 )| (train_df['n_ask1'] == 0)].index
Index([   6641,    6642,    6645,    6646,    6647,    6648,    6649,    6650,6651,    6652,...2446840, 2446842, 2446844, 2446845, 2446846, 2446848, 2446918, 2446919,2446920, 2446921],dtype='int64', length=175414)

上面为 n _ b i d 1 , n _ b i d 2 n\_bid1, n\_bid2 n_bid1,n_bid2中存在0的行索引,共175414行存在为0的值。这也说明了之前的箱线图分析中,交易值偏向于低端的原因,因此,后续可以对交易量相关特征进一步分析,包括:1)去除0值观察分布, 2)取对数。

去0后其实对分布影响不大,含0的数据量太少了:
在这里插入图片描述

此外,不存在都为0的行,该结果在缺失值分析中已经得到了。

价格移动方向说明

以涨跌幅为基准,分为 2(涨)、1(不变)、0(跌)
L a b e l t N = σ ( n _ m i d p r i c e t + N − n _ m i d p r i c e t ) Label_t^N = \sigma(n\_midprice_{t+N} - n\_midprice_t) LabeltN=σ(n_midpricet+Nn_midpricet)
赛题公式说明
这里我目前还没理解清楚,按照给的公式我去计算了下标签,发现不太一致。另外,如果有了这个具体的指标确定的话不是可以直接用于测试集的计算?

1.3 线下验证

Baseline 采取的是K折交叉验证,时序数据为了保证数据一致性,后续打算采用训练集中data50~63共14天数据作为验证集以尽可能保持线上线下一致性,用来分析后续特征工程中衍生特征的好坏。


下一步打算对数据进一步分析,构建交叉特征,同时对不同股票不同天的上下午构建时序特征,对五种不同预测任务构建不同的模型,并采用训练集后14天作为验证集进行验证(K折太久了)。此外,收集些业务信息,感觉对赛题的理解还不够清晰。

PS:

  1. 一轮赛制,按照目前的排行榜基本无了
  2. 认真看赛题,两次提交失败都是因为没注意到赛题已经说明 文件详细说明:以zip文件格式提交,编码为UTF-8,文件格式:submit.zip文件,包含文件夹submit
http://www.lryc.cn/news/112540.html

相关文章:

  • 简单认识ELK日志分析系统
  • 【算法笔记】深度优先遍历-解决排列组合问题-
  • 【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台2
  • 应急响应-勒索病毒的处理思路
  • ChatGPT是否能够处理多模态数据和多模态对话?
  • AcWing1171. 距离(lcatarjan)
  • JVM-运行时数据区
  • RedisTemplate中boundHashOps的使用
  • 计算机网络-性能指标
  • 排序第一课【插入排序】直接插入排序 与 希尔排序
  • 云计算——ACA学习 云计算概述
  • 如何为网站进行全面的整站翻译?
  • 项目部署(前后端分离)
  • 增强型Web安全网关在银行的应用
  • Oracle-ORA-00600:[ktspffbmb:objdchk_kcbnew_3]
  • SPINN:基于设备和云的神经网络协同递进推理
  • 数据结构-二叉树
  • Open3D 进阶(4)高斯混合点云聚类
  • 计算机组成和IO
  • STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用
  • 系统设计类题目汇总
  • css滚动条样式指南
  • vue子组件修改父组件传递的变量(自定义日期时间组件,时间间隔为15分钟或者一个小时)
  • 【PyTorch】nn.Conv2d函数详解
  • 数智保险 创新未来 | GBASE南大通用亮相中国保险科技应用高峰论坛
  • 分布式天梯图算法在 Redis 图数据库中的应用
  • 观察者模式——对象间的联动
  • 【雕爷学编程】Arduino动手做(189)---特别苗条,使用微波传感器控制的纤细小车
  • 机器学习基础算法及其实现
  • docker安装MinIO