和其他机器学习任务(比如视觉,推荐,NLP)不同的是,股票价格预测往往不追求过高的准确率。这是因为首先金融数据中充满了各种不同的随机噪声(或者可以理解为无法预测的因子);其次股票价格时间序列往往是 non-stationary,及其波动率会随着时间变化。然后股票价格回报率的分布一般不满足高斯分布,而属于某种长尾分布。这些统计特征使得我们在预测股价回报率的时候不会有特别高的准确率。一般来说,我们预测的准确率和我们预测的时间长度成反比,也就是说预测时间的越短,准确率越高。在本项目中,我们提供大约300 只股票从2023 年6 月1 日至2023 年12 月31 七个月的分钟级数据,预测的长度(forecast horizon)为12 分钟,即预测 12 分钟后的价格变化率:
- 数据:约 300 只股票,2023.6.1–2023.12.31,分钟级。
- 预测目标:12 分钟后价格变化率 fret12 $$ \text{fret12} = \frac{P_{12} - P_0}{P_0} $$
-
$P_0$ :当前价格;$P_{12}$:12 分钟后价格。
项目整体自由度较高,和常见的预测类任务相同,我们一般把流程分为数据分析,特征挖掘,模型定义,结果评价等几个常见环节。
数据分析 → 特征挖掘 → 模型定义 → 结果评价
where
Tips
- MSE 低通常伴随更好的 r、R²,Loss 可不限于 MSE。
- 参考基线:6 特征 + Ridge → r≈2%–3%;预期 5%–10%;>10% 加分。
- 效果来自:优质特征 或 强模型;建议:数十–上百特征 + 非线性模型(神经网络)。
参考 Google 风格:
- 运算符、逗号后加空格
- 类名:大驼峰;函数/变量:小驼峰/下划线
- 命名清晰、注释精简(必要处即可)
- 模块化、简洁紧凑
- bid:买单;ask:卖单。
- 多档位价格 + 数量快照
- Add:挂单(买/卖)
- Trade:成交
- Cxl:撤单
- Trade Buy:买单主动成交(主动买)
- Trade Sell:卖单主动成交(主动卖)
价格形成与交易机制,短期波动的核心驱动,是优质特征来源。
- 动量:趋势延续(反应不足)
- 反转:均值回归(反应过度)
- 规律:大成交量/大单占比高 → 反转;小成交量/小单占比高 → 动量
| 列名 | 含义 |
|---|---|
| symbol | 股票代码 |
| interval | 时间戳(毫秒) |
| fret12 | 标签:12min 后收益率 |
| midpx | 中间价:(bid0+ask0)/2 |
| lastpx | 区间最后成交价 |
| open/high/low | 区间开/高/低价 |
| bid0/ask0 | 买一/卖一价 |
| bsize0/asize0 | 买一/卖一量 |
| bid4/ask4 | 买五/卖五价 |
| bsize0_4/asize0_4 | 买1–5/卖1–5 总量 |
| btr0_4/atr0_4 | 买1–5/卖1–5 总金额 |
| nTradeBuy | 主买成交次数 |
| tradeBuyQty | 主买总量 |
| tradeBuyTurnover | 主买总金额 |
| buyVwad | 买单加权平均时间 |
- 严防过拟合:测试集与训练集完全无关。