机器学习市场整体行情建模分析(一)

一、数据获取:打好地基
1.1 指数选择
要反映全市场整体走势,我们优先考虑中证全指(000985.SH),它覆盖沪深两市全部A股,最具代表性。若数据源不支持,也可用沪深300(000300.SH)作为替代,但需注意其偏向大盘蓝筹风格。我们这里将会采取两种数据进行比较,看看哪个指数的效果更好。
1.2 数据源与颗粒度
-
推荐数据源:Tushare Pro、AkShare(免费)、Baostock等。建议交叉验证(如Tushare与AkShare对比)以确保准确性。
-
数据颗粒度:预测次日涨跌,日频数据足够。所需字段包括:开盘价、最高价、最低价、收盘价、成交量、成交额。若后续涉及个股因子,需获取个股的前复权价格。
1.3 注意事项
-
免费数据的准确性需通过多源对比和异常值检查来保障。
-
指数本身无需复权,但个股因子必须使用前复权数据。
二、数据清洗:去芜存菁
数据清洗是建模中常被忽视却至关重要的环节。对于日频数据,主要处理:
-
缺失值:检查停牌、节假日导致的空值,一般用前一日填充或直接剔除。
-
异常值:识别涨跌幅超过±10%或成交量突变为零等异常情况,结合上下文判断是否为真实事件(如成分股调整),否则予以修正。
-
时间对齐:确保日期连续,剔除周末和节假日,保证时间序列的完整性。
三、特征工程:构建预测信号
特征工程是模型预测能力的核心。我们将从定义标签、计算因子、处理成交量内生性三个层面展开。
3.1 定义标签
预测目标有两种常见设定:
-
分类任务:
次日涨跌 = 1 if 次日收盘价 > 当日收盘价 else 0。直接输出涨跌方向,便于评估准确率。 -
回归任务:
次日收益率 = (次日收盘价 - 当日收盘价)/当日收盘价。再根据预测值符号判断涨跌,能提供更多信息,但难度稍高。
建议先从分类任务入手,简化问题。
3.2 计算因子(部分)
从多个维度构建因子,捕捉市场信息:
|
|
|
|---|---|
| 量能类 |
|
| 价格类 |
|
| 技术指标 |
|
| 市场情绪 |
|
| 宏观/日历 |
|
3.3 核心难点:成交量与收益的内生性
直接使用当日成交量预测次日收益,容易陷入伪相关。我们推荐以下处理方式:
-
方法一:滞后成交量因子
只用截止到前一日的成交量数据,如昨日成交量/过去5日均量,避免未来函数。 -
方法二:量价配合信号
构造离散信号,例如: -
放量上涨:今日涨幅>1%且今日成交量/过去5日均量>1.5 → 看多信号 -
放量下跌:今日跌幅<-1%且今日成交量/过去5日均量>1.5 → 看空信号 -
方法三:成交量预测误差(进阶)
先建立成交量预测模型,将“实际成交量-预测成交量”作为意外放量/缩量因子。此方法需谨慎,避免误差累积。
建议优先使用方法一和方法二,简单有效。
3.4 特征工程注意事项
-
标准化:树模型无需标准化;逻辑回归、神经网络需Z-score标准化。
-
避免未来函数:所有因子必须基于当日及之前数据计算。
-
滚动窗口:计算移动平均等指标时,使用expanding或rolling窗口,确保不泄漏未来信息。
四、模型训练:从简单到复杂
我们采用渐进式策略,逐步提升模型复杂度,并观察预测性能的变化。
4.1 基线模型:逻辑回归
-
优点:解释性强,训练快,不易过拟合。
-
操作:将筛选后的因子作为特征,次日涨跌作为标签,进行二分类。
-
预期准确率:约55%-60%。
4.2 进阶模型:树模型(XGBoost / LightGBM)
-
优点:自动捕捉非线性关系,处理特征交互,鲁棒性好。
-
操作:调参(树深度、学习率、正则化)防止过拟合。
-
预期准确率:可达60%-65%。
4.3 高级模型:深度学习(LSTM / Transformer)
-
优点:能建模时间序列长期依赖,适合捕捉趋势和周期。
-
操作:将过去N天的因子序列作为输入,需构建三维数据,注意过拟合。
-
预期准确率:有望冲击70%,但需要大量数据和算力。
4.4 模型集成策略
-
投票法:综合多个模型预测结果,取多数或加权平均。
-
Stacking:将各模型预测概率作为新特征,训练次级分类器。
五、模型评估:聚焦预测性能
根据你的需求,我们不进行模拟交易回测,而是直接评估模型的预测准确率、精确率等指标。
5.1 评估方法
-
滚动时间窗口划分:严格按时间顺序划分训练集、验证集和测试集。例如:用前3年数据训练,验证调参,测试下一年,逐年滚动。
-
交叉验证:使用时间序列交叉验证(如Expanding Window Cross-Validation),避免随机打乱带来的未来信息泄漏。
5.2 核心指标
-
准确率(Accuracy):预测涨跌正确的比例,即我们关注的70%目标。
-
精确率(Precision):预测上涨中实际上涨的比例,避免盲目看多。
-
召回率(Recall):实际上涨中被正确预测的比例。
-
盈亏比:预测正确的平均收益 vs 预测错误的平均亏损。高胜率低盈亏比可能无法盈利。
5.3 过拟合检验
-
对比训练集与测试集准确率,若差距过大(如训练集90%、测试集50%),则过拟合严重。
-
使用验证集进行早停、正则化等手段控制复杂度。
5.4 交易成本考虑(可选)
虽然不进行回测,但若未来打算实盘,可估算单边0.1%的交易成本,观察其对净收益的影响。这有助于判断模型的实用价值。
六、迭代优化:迈向70%胜率
若模型准确率未达预期,可通过以下路径迭代:
-
调整因子:新增有效因子,剔除噪音,尝试因子组合。
-
优化模型参数:使用网格搜索、贝叶斯优化寻找最优超参数。
-
尝试更复杂模型:从XGBoost升级到LSTM,或引入注意力机制。
-
特征工程改进:增加交互项、多项式特征,或对因子进行降维(PCA等)。


评论