必备数学基础:概率论与统计学、线性代数

说实话,很多做量化交易的朋友,一听到「数学」两个字就头大。我当年刚入行时也一样,觉得写代码才是核心,数学差不多就行。结果呢?第一次写策略回测,发现收益曲线漂亮得不行,实盘一跑就崩。后来才明白——不懂概率和统计,你连自己策略的「命」都算不准。

今天咱们就把量化交易里最常用的数学基础捋一遍。不搞复杂的推导,只讲你写策略时真正用得上的东西。

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])]

如果协方差为正,说明两个资产同涨同跌。为负,则一个涨一个跌。我在做资产配置时,会刻意找协方差为负的品种——这样能对冲风险。

避坑指南: 协方差的数值大小受单位影响,不好直接比较。所以实际中我们更常用「相关系数」,它把协方差归一化到[-1, 1]之间。

2. 统计学基础:正态分布与假设检验

统计学在量化里最大的用处就两个:
1. 判断你的策略收益是不是「运气」
2. 判断两个变量之间有没有「真关系」

正态分布:金融世界的「万有引力」

正态分布长什么样?中间高、两边低,像个钟。很多金融数据——比如日收益率——都近似服从正态分布。

关键参数:
  • 均值 μ:决定分布的中心位置
  • 标准差 σ:决定分布的胖瘦

68%的数据落在 μ±σ 内,95%落在 μ±2σ 内。

我记得有一次做高频策略,发现收益分布尾部特别厚——就是极端值比正态分布预测的多很多。后来一查,原来是市场有「跳空」现象。嗯,这时候再用正态分布去建模,就会出大问题。

注意: 金融数据经常有「肥尾」现象。别盲目假设一切都服从正态分布,否则你的风险模型会严重低估极端行情。

假设检验:你的策略是「真牛」还是「运气好」

假设检验的核心逻辑很简单:
1. 先假设你的策略不赚钱(零假设)
2. 然后看回测数据,如果赚钱的概率极低(比如低于5%),就拒绝零假设

常用的检验方法:

检验方法 用途 我常用的场景
t检验 判断均值是否显著不为0 检验策略平均收益是否真的为正
卡方检验 判断两个分类变量是否独立 检验「周一买入」和「赚钱」有没有关系
KS检验 判断数据是否服从某分布 检验收益率是否服从正态分布
我的习惯: 每次回测完,先跑一个t检验。如果p值大于0.05,我就当这个策略是「随机游走」——不值得投入真金白银。

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}")
我曾经踩过的坑: 矩阵运算时一定要注意维度匹配。比如 (3×3) 的矩阵乘 (3×1) 的向量没问题,但乘 (1×3) 就会报错。写代码前先拿笔算一遍维度,能省很多调试时间。

知识体系总览

下面这张图,帮你把今天讲的内容串起来:

量化交易数学基础 概率论基础 统计学基础 线性代数基础 期望 方差 协方差 正态分布 假设检验 t检验/卡方检验 向量 矩阵 矩阵乘法/转置 应用:策略回测 → 风险度量 → 投资组合优化

你看,这三个数学分支不是孤立的。概率论帮你算收益和风险,统计学帮你验证策略是否有效,线性代数则帮你高效处理海量数据。三者结合,才能构建出靠谱的量化交易系统。

好了,今天的内容就到这里。数学这东西,光看没用,得动手。建议你打开 Jupyter Notebook,把上面的代码跑一遍,再换自己的数据试试。相信我,跑通了,你就真正理解了。

专注资料整理