第2章:统计基础回顾:均值、方差、正态分布、t分布、假设检验
各位同学,欢迎来到第二章。做量化交易,尤其是协整和价差策略,说白了就是跟一堆数字打交道。你连这些数字的脾气都摸不透,怎么指望它给你赚钱?
这一章我们回顾一下最核心的统计概念。别嫌基础,我敢打赌,很多做策略亏钱的人,就是栽在这些基础概念上。我自己刚入行那会儿,也吃过这个亏。
2.1 均值与方差:数据的“位置”和“离散度”
先聊均值。均值就是平均数,代表数据的“中心位置”。在价差交易里,均值就是那个“回归”的锚点。价差偏离均值太远,我们就认为它迟早要回来。
方差和标准差呢?它们衡量数据有多“散”。方差大,说明价格上蹿下跳;方差小,说明走势平稳。做套利时,我们当然希望价差序列的方差尽量稳定,不然你刚建仓,一个剧烈波动就把你打爆了。
核心公式:
- 均值:μ = (1/N) * Σxᵢ
- 方差:σ² = (1/N) * Σ(xᵢ - μ)²
- 标准差:σ = √σ²
我的经验: 计算价差序列的方差时,我习惯用“滚动窗口”来计算。比如用过去60天的数据算一个方差,而不是用全部历史数据。因为市场结构会变,用太久远的数据反而会失真。
2.2 正态分布:金融世界的“理想模型”
正态分布,就是那个钟形曲线。很多统计模型都假设数据服从正态分布。但说实话,金融数据很少是完美的正态分布。它往往有“肥尾”现象——极端行情发生的概率比正态分布预测的要高得多。
为什么会这样?因为市场是由人组成的,而人在恐慌和贪婪时会做出极端行为。08年金融危机、2020年疫情暴跌,都是典型的肥尾事件。
避坑指南: 我曾经在回测时,直接用正态分布假设去计算价差突破的概率,结果实盘时连续被打脸。后来我改用t分布来建模,效果好了很多。记住,金融数据,宁可用肥尾分布,也别轻信正态分布。
2.3 t分布:更适合“小样本”和“肥尾”
t分布长得像正态分布,但尾巴更厚。它有一个参数叫“自由度”。自由度越小,尾巴越厚;自由度越大,就越接近正态分布。
在量化交易里,我们经常用t分布来做两件事:
- 小样本推断: 比如你只有30个交易日的价差数据,想判断均值是否显著偏离零,用t分布比正态分布更靠谱。
- 建模肥尾: 用t分布拟合收益率或价差序列,能更好地捕捉极端风险。
我个人习惯,在做协整检验之前,先用t分布拟合一下价差序列,看看它的尾部特征。如果自由度小于10,说明肥尾很严重,这时候做交易要格外小心止损。
2.4 假设检验:用数据说话
假设检验,说白了就是“用数据来验证你的猜想”。在价差交易里,我们最常用的假设检验是:
- 均值是否为零: 价差序列的均值是否显著偏离0?如果显著偏离,说明价差有趋势,不适合做均值回归策略。
- 序列是否平稳: 这是协整检验的核心。我们后面会详细讲。
假设检验的步骤很简单:
- 提出原假设H0(比如“价差均值为0”)和备择假设H1(“价差均值不为0”)
- 计算检验统计量(比如t统计量)
- 查p值。如果p值小于显著性水平(通常取0.05),就拒绝H0。
关键点: p值不是“H0为真的概率”。它是在H0为真的前提下,观察到当前数据或更极端数据的概率。p值小,说明数据跟H0不太兼容,所以我们拒绝H0。
2.5 知识体系框架
下面这张图,是我自己梳理的本章知识脉络。你可以把它当作一个思维导图来看。
2.6 实战代码:快速检验价差均值是否为零
光说不练假把式。我们写一小段Python代码,看看怎么用t检验来判断价差均值是否显著偏离零。
import numpy as np
from scipy import stats
# 模拟一组价差数据(假设均值为0.5)
np.random.seed(42)
spread = np.random.normal(loc=0.5, scale=1.0, size=100)
# 单样本t检验:检验均值是否等于0
t_stat, p_value = stats.ttest_1samp(spread, 0)
print(f"t统计量: {t_stat:.3f}")
print(f"p值: {p_value:.4f}")
if p_value < 0.05:
print("结论:拒绝原假设,价差均值显著不为0")
else:
print("结论:无法拒绝原假设,价差均值可能为0")
我的习惯: 在实际项目中,我不会只看p值。我还会看t统计量的绝对值。如果t统计量绝对值大于2,即使p值略高于0.05,我也会警惕。因为样本量小的时候,p值可能不太可靠。
2.7 本章小结
这一章我们回顾了均值、方差、正态分布、t分布和假设检验。这些是后续做协整分析和价差交易的数学基础。你想想看,如果连价差均值是否为零都判断不准,那你的交易信号就是瞎蒙。
下一章我们会进入正题,开始讲协整关系的定义和检验方法。嗯,到时候你会看到,这些统计基础会反复出现。