4.2 假设检验
假设检验是用样本数据对关于总体的某个陈述(假设)做出接受或拒绝的统计决策方法,是量化策略回测中判断信号是否有效的核心工具。
一、基本概念
1.1 原假设与备择假设
- 原假设 :通常代表"无效应"或"默认情况"
- 备择假设 :代表研究者希望证明的结论
常见形式:
- 双侧检验: vs
- 右侧检验: vs
- 左侧检验: vs
1.2 两类错误
| 决策 \ 真实状态 | 为真 | 为真 |
|---|---|---|
| 接受 | ✅ 正确 | ❌ 第二类错误 () |
| 拒绝 | ❌ 第一类错误 () | ✅ 正确(检验功效 ) |
- 显著性水平 :犯第一类错误的概率(通常取 0.05)
- 检验功效 :正确拒绝错误原假设的概率
1.3 p-value
p-value 是在原假设成立下,观察到当前样本结果(或更极端结果)的概率:
二、t 检验
2.1 单样本 t 检验
检验 vs :
2.2 手算示例:基金 Alpha 检验
某量化基金宣称能产生正的月度 alpha。收集 12 个月的超额收益数据(%):
[1.2, 0.8, -0.3, 1.5, 0.6, 2.0, -0.1, 0.9, 1.1, 0.3, 1.7, 0.4]
检验 vs (右侧检验,)。
第一步:计算样本统计量
| 月份 | 超额收益 |
|---|---|
| 1 | 1.2 |
| 2 | 0.8 |
| 3 | -0.3 |
| 4 | 1.5 |
| 5 | 0.6 |
| 6 | 2.0 |
| 7 | -0.1 |
| 8 | 0.9 |
| 9 | 1.1 |
| 10 | 0.3 |
| 11 | 1.7 |
| 12 | 0.4 |
第二步:计算样本均值和标准差
| 统计量 | 计算 | 结果 |
|---|---|---|
| 逐项计算 | ||
第三步:计算 t 统计量
第四步:查找临界值
(单侧临界值)
第五步:决策
,拒绝 。
| 项 | 值 |
|---|---|
| 统计量 | |
| 临界值 | |
| p-value | |
| 结论 | ✅ 拒绝 ,基金 alpha 显著为正 |
2.3 双样本 t 检验
比较两个策略的收益是否有显著差异:
三、其他常见检验方法
| 检验 | 用途 | 检验统计量 |
|---|---|---|
| z 检验 | 方差已知,大样本均值检验 | |
| 双样本 t 检验 | 两独立样本均值比较 | 见上 |
| 配对 t 检验 | 同一对象前后对比 | |
| 卡方检验 | 分类变量的独立性 | |
| F 检验 | 方差齐性检验 |
Quant Link:因子显著性检验
在量化研究中最经典的假设检验应用——因子是否有效:
- Fama-French 三因子模型:对于每个因子(市场、规模、价值),检验其风险溢价是否显著非零
- IC(信息系数)检验:,检验因子与未来收益的相关性是否显著
- 多空组合收益检验:检验做多 top 分位数、做空 bottom 分位数的收益是否显著 > 0
- 策略回测:对夏普比率做 t 检验,判断策略收益是否显著优于基准
实操要点:
- 多重比较问题:同时测试上百个因子时,需用 Bonferroni 校正(调整 )
- 数据窥探偏差:反复使用同一数据检验假设会导致过拟合
- 经济显著性 vs 统计显著性:p < 0.05 不意味策略能赚钱,还需考虑交易成本、滑点
Python 验证
python
import numpy as np
from scipy import stats
# 基金 alpha 单样本 t 检验
alpha = np.array([1.2, 0.8, -0.3, 1.5, 0.6, 2.0, -0.1, 0.9, 1.1, 0.3, 1.7, 0.4])
t_stat, p_value = stats.ttest_1samp(alpha, 0, alternative='greater')
print(f"t 统计量 = {t_stat:.4f}")
print(f"p-value = {p_value:.4f}")
print(f"结论: {'alpha 显著 > 0' if p_value < 0.05 else '不显著'}")小结
| 概念 | 含义 | 量化应用 |
|---|---|---|
| 无效应假设 | 因子无预测力、策略无 alpha | |
| 显著性水平(Type I 错误) | 误判假因子为真 | |
| Type II 错误 | 漏掉真因子 | |
| p-value | 观察到极端结果的概率 | 因子筛选的量化指标 |
| 检验功效 | 发现真效应的概率 | 回测长度设计 |
下一步:继续学习 4.3 方差分析(ANOVA)——比较多个策略的均值差异。