第2章:概率论回顾——条件概率、贝叶斯定理、先验与后验分布、最大似然估计
说实话,很多做量化的朋友一上来就撸代码、调参数,结果模型在回测里漂亮得像朵花,一上实盘就崩。为什么?因为忽略了概率论这个底层逻辑。你想想看,市场本质上就是个概率游戏,你连条件概率和贝叶斯都搞不清楚,怎么去评估模型的置信度?
这一章,我们就来把概率论里那几个最核心的概念捋一遍。我会结合我在量化交易中的实际踩坑经历来讲,保证你听完就能用上。
核心观点:概率论不是数学题,它是你理解市场不确定性的语言。贝叶斯定理更是量化置信度评估的基石。
2.1 条件概率:别被“独立事件”骗了
条件概率,说白了就是“在已知某件事发生的情况下,另一件事发生的概率”。公式很简单:
P(A|B) = P(A∩B) / P(B)
嗯,这里要注意。很多新手容易犯一个错误——把条件概率和联合概率搞混。我刚开始做因子研究时就吃过这个亏。
举个例子:
- 假设你有一个动量因子信号A,和一个波动率因子信号B。
- P(A) = 0.6,表示信号A发出买入指示的概率是60%。
- P(B) = 0.4,表示信号B发出买入指示的概率是40%。
- P(A∩B) = 0.3,表示两个信号同时发出买入指示的概率是30%。
那么,在信号B已经发出的情况下,信号A也发出的概率是多少?
P(A|B) = 0.3 / 0.4 = 0.75
看到了吗?条件概率是75%,比单独的60%高了不少。这说明两个信号之间有正相关性。我在项目中遇到过这种情况:两个看起来不错的因子,单独回测都挺好,但组合在一起效果反而变差。为什么?因为它们的条件概率太高了,说白了就是“重复押注”,没有起到分散风险的作用。
我的经验:在做多因子模型时,我习惯先计算因子之间的条件概率矩阵。如果两个因子的P(A|B) > 0.8,我会考虑只保留其中一个,或者做正交化处理。否则,你的模型置信度会被高估。
2.2 贝叶斯定理:量化界的“后悔药”
贝叶斯定理,我个人认为是整个量化置信度评估体系里最重要的公式。没有之一。它的形式是:
P(H|E) = P(E|H) * P(H) / P(E)
其中:
- P(H|E):后验概率(看到数据后,对假设的信念)
- P(H):先验概率(看到数据前,对假设的信念)
- P(E|H):似然(假设成立时,数据出现的概率)
- P(E):证据(数据出现的总概率)
你想想看,做量化交易最怕什么?最怕“死扛”。明明市场已经变了,你还抱着原来的策略不放。贝叶斯定理就是帮你“动态更新信念”的工具。
举个量化中的实际例子:
假设你有一个趋势跟踪策略,历史回测中胜率是55%。你把这个策略部署到实盘上,结果连续亏了3笔。这时候,你是继续相信策略,还是怀疑它失效了?
用贝叶斯定理来算:
- 先验概率P(H):策略有效的概率。根据历史回测,我们设P(H)=0.7(比较乐观)。
- 似然P(E|H):如果策略有效,连续亏3笔的概率。假设策略有效时单笔亏损概率是0.45,那么连续3笔亏损的概率是0.45^3 ≈ 0.091。
- 证据P(E):连续亏3笔的总概率。这包括策略有效时亏的概率 + 策略失效时亏的概率。假设策略失效时单笔亏损概率是0.8,那么P(E) = 0.7*0.091 + 0.3*0.512 ≈ 0.217。
计算后验概率:
P(H|E) = 0.091 * 0.7 / 0.217 ≈ 0.294
看到了吗?连续亏3笔之后,你对策略有效的信念从70%降到了29.4%。这时候,你应该暂停策略,重新评估,而不是继续死扛。
我曾经踩过的坑:刚开始做量化时,我设计了一个套利策略,回测表现极好。实盘前3个月也赚了不少,我就觉得“这策略无敌了”。结果第4个月开始连续回撤,我还在用“均值回归”的理论安慰自己。后来用贝叶斯一算,后验概率早就跌破20%了。那次亏了不少钱,教训深刻。
2.3 先验与后验分布:你的“偏见”很重要
先验分布,说白了就是你在看到数据之前,对某个参数的“主观判断”。后验分布,就是结合数据之后,更新过的判断。
在量化中,先验分布特别重要。为什么?因为金融数据通常信噪比极低,样本量有限。如果你没有合理的先验,光靠数据去拟合,很容易过拟合。
举个例子:
假设你要估计某个股票的年化收益率μ。你只有过去1年的月度数据(12个样本点)。如果你直接用样本均值去估计,可能会得到μ=25%。但你觉得这个数字靠谱吗?
我个人习惯的做法是:
- 设定先验分布:根据该股票所在行业的历史数据,我设定μ服从正态分布N(0.08, 0.05^2)。也就是说,我“先验地”认为年化收益率应该在8%左右,波动范围在±5%。
- 收集数据:过去12个月的月度收益率,样本均值是25%,样本标准差是15%。
- 计算后验分布:结合先验和似然,得到后验均值大约是12.3%,后验标准差是4.2%。
你看,后验均值12.3%比样本均值25%要保守得多,但比先验均值8%要高。这就是“数据修正先验”的过程。
关键点:先验分布不是“拍脑袋”,而是基于历史经验、行业知识、甚至是你对市场逻辑的理解。一个好的先验,能帮你避免被噪声数据带偏。
2.4 最大似然估计:最“诚实”的参数估计方法
最大似然估计(MLE),思路很简单:找到一组参数,使得当前观测数据出现的概率最大。
公式形式:
θ̂ = argmax L(θ; x) = argmax ∏ P(x_i | θ)
其中L(θ; x)是似然函数,P(x_i | θ)是单个数据点的概率密度。
在实际量化中,MLE用得非常多。比如:
- 估计GARCH模型的参数
- 估计Copula模型的参数
- 估计随机波动率模型的参数
举个简单的例子:
假设你观察到某只股票过去10天的日收益率:[-0.02, 0.01, 0.03, -0.01, 0.02, -0.03, 0.01, 0.00, 0.02, -0.01]。你假设这些收益率服从正态分布N(μ, σ^2),想用MLE估计μ和σ。
import numpy as np
from scipy.optimize import minimize
returns = np.array([-0.02, 0.01, 0.03, -0.01, 0.02, -0.03, 0.01, 0.00, 0.02, -0.01])
def neg_log_likelihood(params):
mu, sigma = params
if sigma <= 0:
return 1e10
n = len(returns)
ll = -0.5 * n * np.log(2 * np.pi) - 0.5 * n * np.log(sigma**2) - np.sum((returns - mu)**2) / (2 * sigma**2)
return -ll
result = minimize(neg_log_likelihood, x0=[0.0, 0.02], method='L-BFGS-B', bounds=[(-0.1, 0.1), (0.001, 0.1)])
mu_mle, sigma_mle = result.x
print(f"MLE估计: μ={mu_mle:.4f}, σ={sigma_mle:.4f}")
运行结果大概是μ≈0.002,σ≈0.018。这就是最“诚实”的估计——完全由数据说了算。
我的建议:MLE虽然好,但要注意样本量。如果样本太少,MLE的估计方差会很大。我一般要求至少30个样本点才用MLE,否则我会用贝叶斯方法加上先验分布来约束。
2.5 本章知识体系图
下面我用一张SVG图来总结本章的核心逻辑。你看完应该能明白这些概念之间的关系。
2.6 小结
这一章我们讲了四个核心概念:
- 条件概率:帮你理解事件之间的依赖关系,避免重复押注。
- 贝叶斯定理:量化界的“后悔药”,让你动态更新对策略的信念。
- 先验与后验分布:把你的经验和数据结合起来,做出更稳健的估计。
- 最大似然估计:最“诚实”的参数估计方法,完全由数据说话。
说实话,这些概念单独看都不难,但把它们串起来用,才是真本事。我在做量化模型时,几乎每天都在用贝叶斯思维——先设定一个合理的先验,然后用数据去更新它,最后用MLE或者MAP(最大后验估计)来得到参数。这套流程,就是置信度评估的底层逻辑。
一句话总结:概率论不是用来考试的,它是你量化交易中的“防弹衣”。穿上它,你才能在充满噪声的市场里,做出更理性的决策。
公众号:蓝海资料掘金营,微信deep3321