
机器学习在量化交易里到底学什么
很多人以为机器学习就是扔一堆历史数据进去,模型自己就能找到赚钱的规律。这个想法放在股票和期货市场里,基本等于送钱。机器学习的强项是找统计上的相关性,不是理解市场规则。比如某只股票在财报发布后经常跳空高开,模型能记住这个模式,但它不知道什么是财报,也不知道为什么高开。
量化交易里的业务逻辑,说白了就是三件事:交易规则、市场微观结构、风控约束。交易规则包括涨跌停、T+1、最小变动价位。市场微观结构包括订单簿怎么撮合、大单怎么影响价格。风控约束包括单笔最大亏损、总仓位上限、禁止交易的品种。机器学习要理解这些,靠的不是模型自己悟,而是人把逻辑翻译成模型能消化的形式。

特征工程就是把业务逻辑翻译成数字
你有一个期货日内策略,逻辑是:当主力合约比次主力合约贵出一定幅度,且成交量突然放大,就做空价差。这个逻辑里包含三个业务概念:价差、成交量突变、主力合约切换。机器学习模型看不懂“主力合约”这个词,你需要构造特征:
价差率 = (主力价格 - 次主力价格) / 次主力价格
成交量 z-score = (当前分钟成交量 - 过去20分钟均值) / 过去20分钟标准差
距离交割日天数
该品种历史波动率分位数
这些特征就是业务逻辑的数字替身。模型在这些特征上学习非线性关系,相当于间接理解了“价差过大且放量时,价差大概率回归”这个规则。特征工程做得好,模型不需要太复杂;特征工程糊弄,再深的神经网络也是垃圾进垃圾出。
用约束和惩罚让模型学会规矩
机器学习天生喜欢走捷径。你让它预测期货价格,它可能发现下午两点五十九分的数据和收盘价高度相关,因为那个时间点已经接近收盘,价格基本定了。这种特征在实盘里完全没用。解决办法是在损失函数里加惩罚项,或者直接禁止模型使用某些特征。
更高级的做法是让模型在模拟环境里学习。强化学习适合这种场景:智能体在历史订单簿上执行买卖动作,环境返回成交回报和盈亏。业务逻辑通过环境设计植入——比如设置滑点模型模拟大单冲击,设置手续费和延迟,设置仓位上限。智能体为了最大化收益,必须学会在约束内行动。它学到的策略自然符合业务规则,因为违反规则的行动会得到负奖励。
股票和期货里的具体差异
股票市场没有夜盘,T+1制度让日内回转交易受限。机器学习模型在股票上做预测,必须把“今日买入不能今日卖出”这个逻辑编码进去。常见做法是预测未来N日收益,而不是未来N分钟。特征里要加入流动性指标,因为小盘股买卖价差大,模型预测的收益可能被交易成本吃掉。
期货市场有杠杆、有保证金、有强平机制。机器学习模型如果只预测价格方向,不考虑保证金占用和强平线,实盘会爆仓。业务逻辑要求模型输出仓位建议时,必须同时考虑账户净值和波动率。一个实用的做法是让模型预测波动率,然后用凯利公式或风险平价方法把波动率预测转换成仓位。这样模型学的是“市场状态”,业务逻辑负责“下多大注”。
避免过拟合就是尊重业务常识
机器学习在量化里最大的敌人是过拟合。模型在历史数据上表现完美,实盘一塌糊涂。过拟合的本质是模型学到了噪声,而不是业务逻辑。判断一个模型是否真的理解了业务逻辑,看它的特征重要性是否符合常识。如果模型最依赖的特征是“昨天收盘价的小数点后第二位”,那它肯定没学到东西。
用滚动窗口训练、样本外测试、蒙特卡洛模拟,这些方法能过滤掉一部分过拟合。更根本的做法是让模型简单一点。线性模型加几个精心构造的特征,往往比深度神经网络更稳健。因为线性模型的系数可以直接解读——系数为正,说明该特征增加时目标变量增加,这符合业务直觉。
实盘监控是最后一道防线
模型上线后,业务逻辑的理解不能停。每天检查模型预测分布是否偏移,特征均值是否突变。如果某天模型突然疯狂做多,而市场波动率没有异常,大概率是数据管道出了问题。设置硬性规则:单日最大交易次数、单品种最大仓位、连续亏损后自动降频。这些规则不依赖模型,是业务逻辑的直接体现。
机器学习在量化交易里不是替代人,是放大人的逻辑。人把业务规则翻译成特征和约束,模型在边界内寻找最优解。理解业务逻辑的模型,特征重要性合理,样本外表现稳定,极端行情下不会失控。不理解业务逻辑的模型,回测曲线再漂亮,实盘也是亏钱机器。