英文版:Why Financial Data Cannot Be Modeled with "Standard Machine Learning"
目录
引言:回测很好看,为什么实盘全崩?
很多人第一次接触量化交易时,路径往往非常相似。**先获取一段历史行情数据,然后构造一些技术指标作为特征,再使用随机森林、XGBoost甚至深度学习模型去预测未来价格的涨跌。**训练完成之后,模型在测试集上可能达到60%以上的准确率,回测曲线也表现出不错的收益,于是很容易得出一个结论:金融市场是可以被预测的。
但真正的问题通常出现在实盘阶段。一旦策略进入真实市场环境,表现往往迅速恶化,收益下降甚至直接转为亏损。这种"回测有效、实盘失效"的现象,在金融建模中几乎是常态。
造成这一现象的核心原因,并不在于模型是否足够先进,而在于所采用的建模思维本身就不适用于金融数据。换句话说,大多数人是用"普通数据科学的范式",去处理一个本质完全不同的问题。
阅读提示与术语解释:
1. 技术指标
技术指标就是把"原始价格数据"再加工一遍,变成更容易判断趋势或状态的信息。比如把过去一段时间的价格取平均(均线)、计算涨跌速度(动量)、判断是不是涨多了或跌多了(RSI)。本质上它并没有引入新信息,只是把已有的价格用数学方式重新表达 ,让人或模型更容易做决策。
2. 回测
回测就是用历史数据来"模拟"你的交易策略过去会不会赚钱 。你先设定一个规则,比如什么时候买、什么时候卖,然后把这个规则放到过去几年甚至十几年的数据里跑一遍,看看如果当时真的这样操作,最后账户是赚钱还是亏钱。这相当于在历史上做一次"虚拟交易实验" 。
3. 回测曲线
回测曲线就是把回测过程中"账户资金的变化"画成一条线 。横轴是时间,纵轴是你的资金,比如从10万变成12万再变成9万。很多人会通过这条线判断策略好不好,比如是不是稳定上涨、有没有大幅回撤。但需要注意,这条曲线只是历史模拟的结果,并不能保证未来也会一样 。
4. 实盘
实盘就是用真实资金在市场中进行交易,而不是在历史数据中做模拟 。和回测不同,实盘会受到很多现实因素影响,比如成交价格不完全等于你想要的价格(滑点)、手续费、市场突然变化以及人的情绪决策。因此很多策略在回测中表现很好,但一旦进入实盘就会明显变差。
5. 树模型(Tree-based Model)
树模型可以理解为一种"不断问问题来做决策"的模型,它的结构就像一棵倒过来的树。从最上面开始,模型会根据数据特征不断进行判断,比如"这个指标大不大于某个值",然后根据答案走向不同分支,直到最后给出一个结果(比如涨或跌)。整个过程类似人在做决策时一步步排除情况,因此也可以看作是把复杂问题拆成一连串简单判断 。树模型的优点是直观、能处理非线性关系,但在金融中容易出现的问题是,它会把历史中的偶然波动也当成"判断规则"记下来,从而在回测中表现很好,但在未来市场中失效 。
6. 随机森林(Random Forest)
随机森林可以理解为"很多决策树一起投票"的模型。每一棵树都会根据一些规则(比如某个指标大于多少就买)做出判断,最后所有树综合起来给出结果。它的优点是可以捕捉复杂关系,但在金融中容易把随机波动当成规律学进去,从而在历史数据上表现很好,但在未来失效。
7. XGBoost
XGBoost是一种更高级的树模型,它不是简单投票,而是让很多小模型一步一步"修正错误",最终组合成一个很强的预测器 。它在很多数据竞赛中效果很好,因为拟合能力非常强,但在金融中,这种强拟合能力反而容易导致过拟合,把噪声当成信号,从而出现回测很好但实盘失效的问题 。
8. 深度学习模型
深度学习模型本质是由多层神经网络组成的复杂函数,可以自动从数据中提取特征并进行预测,比如用于图像识别或语音识别。在金融中也有人用它来预测价格或收益,但由于金融数据噪声大、结构不稳定,深度学习往往学到的是历史中的偶然模式,而不是稳定规律,因此并不一定比简单模型更有效 。
什么是"普通数据科学思维"?
在大多数机器学习应用中,人们其实默认接受了一套很少被明说的前提。这些前提构成了整个建模方法的基础,也决定了为什么这套方法在很多领域有效。
首先,数据通常被认为来自一个相对稳定的系统。也就是说,历史数据中存在的规律,在未来大概率仍然成立。模型的任务,就是从过去的数据中提取这些规律并加以利用。例如在图像识别中,一只猫的基本形态不会发生变化;在推荐系统中,用户的兴趣虽然会慢慢演化,但整体行为模式是可以持续学习和复用的。
在这个前提下,样本也被视为彼此独立的观测值。数据可以被打乱顺序,训练和验证可以通过随机划分来完成,因为默认认为每一条数据都来自同一个分布,不会因为时间先后而改变其本质。这也是为什么交叉验证在大多数任务中是有效的。
同时,普通数据往往具有相对较高的信噪比,也就是说其中存在清晰、稳定的结构,模型可以通过训练捕捉到这些结构,而不是被随机波动所干扰。这使得复杂模型在很多场景下能够真正学到"有用的信息"。
从整体来看,这套思维的核心其实很简单:数据来自一个稳定环境,里面存在可以被反复利用的规律,而机器学习的作用,就是把这些规律提取出来并用于未来预测。
问题在于,金融市场并不符合这一前提。
阅读提示和术语解释:
1. 交叉验证
交叉验证可以理解为一种"反复换数据来测试模型是否靠谱 "的方法。做法是把数据分成几份,每次拿其中一部分当测试集,其余当训练集,轮流多做几次,看模型在不同数据上的表现是否稳定。如果每次结果都差不多,就说明模型不是只对某一段数据有效,而是有一定泛化能力。本质上就是用多次"模拟考试",来判断模型是不是只会做一套题,还是确实掌握了规律。
2. 泛化能力
泛化能力可以理解为:模型在"没见过的新数据上"表现得好不好 。一个模型如果只是在训练数据上表现很好,但一换到新的数据就失效,那说明它只是"记住了过去",而没有真正学到规律;相反,如果它在新数据上依然能保持相似的效果,就说明它抓住了更本质的结构,这就是泛化能力强。在实际应用中,我们更关心的其实不是模型在历史数据上的表现,而是它在未来、在未知环境中的表现,而这正是泛化能力所衡量的核心。
3. 信噪比
信噪比可以简单理解为**"有用信息"和"随机干扰"的比例** 。信号指的是数据中真正有规律、可以被学习的部分,噪声则是随机波动、没有规律的部分。如果信噪比高,说明数据里有用信息多,模型比较容易学到有效规律;如果信噪比低,说明大部分都是随机变化,模型很容易被误导,把噪声当成规律学进去。在金融市场中,通常就是信噪比很低,这也是建模困难的根本原因之一。
金融数据的本质:一个不断演化的系统
金融数据并不是一组静态样本,而是一个随时间不断演化的过程。理解这一点,是所有后续建模工作的基础。

非平稳性:市场环境持续变化
金融时间序列最显著的特征之一,是其非平稳性 。简单来说,数据的统计性质并不是固定的,均值、方差乃至整体分布都会随着时间发生变化。
市场会经历不同阶段,例如流动性宽松时期通常伴随着趋势性上涨,而紧缩周期则可能带来更高的波动和更频繁的回撤。在极端情况下,例如金融危机或重大宏观冲击,市场的行为模式甚至会出现断裂式变化。
这意味着一个关键问题:模型在训练过程中所学习到的"规律",实际上只是某一阶段的局部特征。一旦市场进入新的状态,这些规律往往不再成立,甚至可能出现反向作用。例如,在上涨趋势中形成的动量信号,在下跌阶段可能转变为反转信号。
这种现象通常被称为"状态切换 "。它揭示了一个重要事实,即金融市场并不存在一个统一且稳定的分布,而是在多个不同状态之间不断切换。
阅读提示和术语解释:
1. 非平稳性
非平稳性可以理解为:数据的"规律会变"。也就是说,过去的数据长什么样、怎么波动,并不能保证未来也一样。比如有时候市场一直涨、有时候一直跌,有时候波动很小、有时候剧烈震荡,这些状态会不断变化。所以金融数据不像考试题那样有固定答案,而是环境一直在变。
2. 流动性宽松时期
流动性宽松时期可以简单理解为:市场里"钱很多、很容易借到"。比如央行降息、放水,资金成本变低,大家更愿意投资和买资产,这时候市场往往更容易上涨。你可以把它想象成水很多的池子,水越多,船(资产价格)越容易被抬高。
3. 回撤
回撤就是:从一个高点往下跌的过程 。比如你账户从10万涨到12万,然后跌到11万,这中间跌掉的1万就是回撤 。它反映的是策略在赚钱过程中会经历多大的"回落",回撤越大,说明波动越剧烈,风险也越高。
4. 动量信号
动量信号可以理解为一种"趋势延续 "的判断方式。简单说就是:涨了还可能继续涨,跌了还可能继续跌。例如一只股票连续上涨,动量信号就会认为它短期内还有上涨的可能。本质上就是在利用"惯性"做判断。
5. 反转信号
反转信号和动量刚好相反,它认为:涨多了可能要跌,跌多了可能要涨。比如一只股票已经连续大涨,价格偏高了,那么反转信号会判断它可能要回落。本质上是在利用"均值回归"的思想,也就是价格不会一直偏离太远,最终会往正常水平靠近。
高噪声:可预测信息极其有限
金融数据的第二个关键特征,是极低的信噪比。价格的短期波动往往受到多种因素的共同影响,包括宏观政策、市场情绪、资金流动以及突发事件等。这些因素具有高度的不确定性,并且难以被完全观测和建模。
在这种环境下,数据中真正具有预测价值的部分非常有限,而大多数波动实际上属于噪声。机器学习模型由于具有较强的拟合能力,往往会将这些噪声误认为是有意义的模式,从而在训练集和回测中表现良好,但在未来数据中迅速失效。
这种现象本质上是过拟合问题在金融场景中的放大。由于信号本身极弱,模型越复杂,就越容易捕捉到随机波动,从而降低泛化能力。
时间依赖性:顺序本身就是信息
金融数据的第三个重要特征,是其强烈的时间依赖性。价格序列中包含了大量动态结构,例如动量效应、均值回归以及波动率聚集等,这些现象都依赖于时间顺序的连续性。
如果像处理普通数据那样对样本进行随机打乱,就会破坏这种结构,甚至引入严重的数据泄露问题。模型在训练过程中可能无意间利用了未来信息,从而在回测中获得虚高的表现,但这种结果在真实环境中无法复现。
因此,在金融建模中,时间维度必须被严格保留 。训练与测试的划分需要按照时间顺序进行,模型评估也需要采用滚动窗口等方法,以模拟真实的决策过程。
阅读提示和术语解释:
1. 动量效应
动量效应可以简单理解为"趋势有惯性"。也就是说,如果一个资产最近一直在上涨,那么短期内它更有可能继续上涨;如果一直在下跌,也可能继续下跌。就像一个正在往前跑的人,不会突然立刻停下来,而是会有一个惯性继续向前。
2. 均值回归
均值回归可以理解为"涨多了会跌,跌多了会涨"。当价格偏离正常水平太远时,往往会往回走,回到一个更"合理"的位置。就像橡皮筋被拉长之后,会往回弹一样,这种"回归正常"的趋势就是均值回归。
3. 波动率聚集
波动率聚集指的是:市场的"波动大小"也有惯性。简单来说,就是一段时间如果市场很平静,往往会继续平静;如果最近波动很剧烈,比如大涨大跌,那么接下来一段时间也很可能继续剧烈波动。就像情绪一样,一旦进入紧张状态,短时间内很难马上恢复平静。
4. 滚动窗口
滚动窗口可以理解为一种"不断往前移动的训练方式"。比如你用前一段时间的数据训练模型,然后用紧接着的一段时间做测试,之后再把窗口往前移动一段,再重复这个过程 。这样做的目的,是模拟真实交易中"只能用过去预测未来"的情况,而不是一次性用所有历史数据去预测,这样结果会更接近真实表现。
为什么常见机器学习模型在金融中容易失效?
在理解了金融数据的特性之后,再来看随机森林或XGBoost等模型的局限性,就会变得更加清晰。
这类模型本质上依赖于数据分布的稳定性,通过学习一系列固定规则来进行预测。然而在金融市场中,同一个信号在不同阶段的含义可能完全不同,固定规则很难长期有效。
同时,这些模型通常具有较强的表达能力,能够拟合复杂的非线性关系。但在高噪声环境中,这种能力往往转化为对噪声的过拟合,而不是对真实结构的捕捉。
此外,传统机器学习模型大多建立在静态表格数据的框架之上,对时间结构的刻画能力有限。虽然可以通过构造滞后特征来部分引入时间信息,但这种方式难以完整描述序列的动态演化过程。
更重要的一点是,这类模型通常关注的是预测结果本身,而不是不确定性。在金融决策中,仅仅知道价格上涨的方向是不够的,还需要评估其概率以及潜在风险。如果模型无法刻画分布特征,那么即使方向预测有一定准确率,也难以转化为稳定收益。
金融建模的正确方向:从结果预测到过程建模
要在金融中建立有效模型,首先需要完成一个核心转变,即从"预测结果"转向"建模过程"。
传统机器学习关注的是直接预测目标变量的取值,而金融建模更强调对数据生成机制的理解 。例如,与其预测明天的价格,不如分析收益率的分布特征,研究波动率如何随时间变化,以及不同变量之间如何相互影响。
在这一框架下,时间序列模型成为基础工具。这类模型明确考虑时间维度,通过刻画自相关结构、波动率动态以及多变量关系,来描述数据的演化过程。相比之下,它们并不依赖于分布稳定的假设,而是试图在变化中寻找结构。
与此同时,概率思维在金融中具有核心地位。决策的关键不在于给出一个确定的预测,而在于评估不同结果发生的可能性,以及在不确定性下如何进行风险控制。因此,建模分布特征、关注尾部风险以及进行风险度量,都是不可或缺的环节。
阅读提示和术语解释:
1. 建模分布特征
建模分布特征可以理解为:不是只关心"会不会涨",而是关心"涨跌大概会怎么分布" 。也就是说,不去预测一个确定的结果,而是去描述各种可能情况出现的概率,比如小涨、小跌、大涨、大跌各自有多大可能。本质上是在回答:"未来可能发生什么,以及每种情况有多大概率"。
2. 尾部风险
尾部风险可以理解为"那些不常发生,但一旦发生就很严重的情况"。比如市场突然暴跌、极端行情,这些在平时很少见,但一旦出现就会带来巨大损失。关注尾部风险,就是不要只看正常情况下的波动,还要特别留意这些极端情况,因为真正的风险往往就藏在这些"少数但致命"的事件里。
3. 风险度量
风险度量就是:用具体数字去衡量"最坏情况下可能亏多少"。比如你可以问:"在正常情况下,我最多可能亏多少钱?"或者"有5%的概率会亏超过多少?"通过这样的量化方式,你可以更清楚地知道策略的风险有多大,而不是只看收益好不好,从而做出更理性的决策。
专栏路线说明:你将学到什么
如果你已经意识到,传统机器学习方法无法直接解决金融问题,那么接下来需要做的,是建立一套新的建模体系。
在本专栏中,我们将从最基础的数据处理开始,逐步构建完整的金融建模框架。首先会介绍收益率建模以及平稳性检验,帮助你理解时间序列分析的基本逻辑。随后将进入波动率建模,重点讲解GARCH模型及其在风险分析中的应用。在此基础上,我们会进一步扩展到多变量模型,分析不同资产之间的动态关系,并引入更高级的相关性建模方法。
在最后阶段,将把这些模型与实际策略相结合,讲解如何进行合理回测,以及如何避免常见的"回测幻觉"。
结尾
当你真正理解金融数据的特性之后,就会发现,这并不是一个简单套用机器学习工具的问题,而是需要从根本上重建建模思维。
金融建模的核心,不在于使用多复杂的模型,而在于是否正确理解了数据本身。