必备数学基础:概率论与统计学、线性代数
说实话,很多做量化交易的朋友,一听到「数学」两个字就头大。我当年刚入行时也一样,觉得写代码才是核心,数学差不多就行。结果呢?第一次写策略回测,发现收益曲线漂亮得不行,实盘一跑就崩。后来才明白——不懂概率和统计,你连自己策略的「命」都算不准。
今天咱们就把量化交易里最常用的数学基础捋一遍。不搞复杂的推导,只讲你写策略时真正用得上的东西。
1. 概率论基础:期望、方差、协方差
这三个概念,说白了就是回答三个问题:
- 这个策略平均能赚多少?
- 它波动大不大?
- 它跟大盘是跟涨还是跟跌?
期望:你的策略「平均」能赚多少
期望就是加权平均。比如你掷骰子,每个面概率1/6,期望值就是 (1+2+3+4+5+6)/6 = 3.5。在交易里,期望就是每笔交易的平均收益。
E[X] = Σ (x_i * p_i)
其中 x_i 是每种收益,p_i 是它发生的概率。
我习惯在回测时先算这个。如果期望是负的,那策略基本可以扔了。别指望靠「运气」翻身——概率论不骗人。
方差:你的策略「稳不稳」
方差衡量的是收益的波动程度。方差越大,说明策略越「刺激」——可能一天赚10%,也可能一天亏10%。
Var[X] = E[(X - E[X])²]
举个例子:
策略A:每天赚1%,雷打不动。方差 = 0。
策略B:有时赚5%,有时亏3%。方差就很大。
我个人更看重方差。因为高方差意味着高回撤,而回撤大了,你的心态和资金都扛不住。
协方差:两个资产「怎么联动」
协方差告诉你:A涨的时候,B是跟着涨还是跟着跌?
Cov(X,Y) = E[(X - E[X])(Y - E[Y])]
如果协方差为正,说明两个资产同涨同跌。为负,则一个涨一个跌。我在做资产配置时,会刻意找协方差为负的品种——这样能对冲风险。
2. 统计学基础:正态分布与假设检验
统计学在量化里最大的用处就两个:
1. 判断你的策略收益是不是「运气」
2. 判断两个变量之间有没有「真关系」
正态分布:金融世界的「万有引力」
正态分布长什么样?中间高、两边低,像个钟。很多金融数据——比如日收益率——都近似服从正态分布。
- 均值 μ:决定分布的中心位置
- 标准差 σ:决定分布的胖瘦
68%的数据落在 μ±σ 内,95%落在 μ±2σ 内。
我记得有一次做高频策略,发现收益分布尾部特别厚——就是极端值比正态分布预测的多很多。后来一查,原来是市场有「跳空」现象。嗯,这时候再用正态分布去建模,就会出大问题。
假设检验:你的策略是「真牛」还是「运气好」
假设检验的核心逻辑很简单:
1. 先假设你的策略不赚钱(零假设)
2. 然后看回测数据,如果赚钱的概率极低(比如低于5%),就拒绝零假设
常用的检验方法:
| 检验方法 | 用途 | 我常用的场景 |
|---|---|---|
| t检验 | 判断均值是否显著不为0 | 检验策略平均收益是否真的为正 |
| 卡方检验 | 判断两个分类变量是否独立 | 检验「周一买入」和「赚钱」有没有关系 |
| KS检验 | 判断数据是否服从某分布 | 检验收益率是否服从正态分布 |
3. 线性代数基础:向量与矩阵运算
线性代数在量化里无处不在。从多因子模型到投资组合优化,背后全是矩阵运算。
向量:把「多只股票」装进一个变量
向量就是一列数。比如你有5只股票,每只的收益率可以写成一个向量:
r = [0.02, -0.01, 0.03, 0.00, 0.015]
向量的加减乘除,就是对每个位置分别操作。比如你想算「等权组合」的收益,就是把所有收益率加起来除以5。
矩阵:处理「多只股票 × 多天数据」
矩阵是向量的升级版。比如你有5只股票、20天的数据,就可以用一个 20×5 的矩阵来表示。
- 矩阵乘法: 用于计算投资组合的方差。公式是 w^T Σ w,其中 w 是权重向量,Σ 是协方差矩阵。
- 转置: 把行和列互换。比如 20×5 转置后变成 5×20。
- 逆矩阵: 用于求解线性方程组。在优化问题里经常用到。
举个例子,计算投资组合的风险:
import numpy as np
# 假设3只股票的协方差矩阵
cov_matrix = np.array([
[0.01, 0.002, 0.001],
[0.002, 0.02, 0.003],
[0.001, 0.003, 0.015]
])
# 权重向量(等权)
weights = np.array([1/3, 1/3, 1/3])
# 组合方差 = w^T Σ w
portfolio_variance = weights.T @ cov_matrix @ weights
print(f"组合方差: {portfolio_variance:.4f}")
知识体系总览
下面这张图,帮你把今天讲的内容串起来:
你看,这三个数学分支不是孤立的。概率论帮你算收益和风险,统计学帮你验证策略是否有效,线性代数则帮你高效处理海量数据。三者结合,才能构建出靠谱的量化交易系统。
好了,今天的内容就到这里。数学这东西,光看没用,得动手。建议你打开 Jupyter Notebook,把上面的代码跑一遍,再换自己的数据试试。相信我,跑通了,你就真正理解了。