📑 查看全课大纲(第 53 / 59 节)
- 1.量化投资必备基础知识
- 2.趋势型策略及模型原理
- 3.均值回复型策略及模型原理
- 4.配对交易策略及模型原理
- 5.量化策略研发流程与基本技能
- 6.常用的量化平台概述及如何选择
- 7.如何量化一个主观策略思路
- 8.常用技术指标及指标计算过程
- 9.如何编写指标代码
- 10.指标的物理意义
- 11.技术指标的应用技巧
- 12.更多的交易决策
- 13.编写程序去量化一个趋势型技术指标
- 14.编写趋势型技术指标的性能评价
- 15.策略对交易成本和持仓周期的影响
- 16.股票池策略的原理及基本框架
- 17.基于多因子分析的股票池设计与实现
- 18.股票池的性能评估
- 19.使用定制化财务因子构建股票池
- 20.趋势型策略原理及股票池机制的设计
- 21.趋势型择时信号的设计方法与编程实现
- 22.趋势型策略的回测与性能评估
- 23.优化趋势型策略的思路及方法
- 24.量化体系中的风险控制思想
- 25.风险的度量-波动率
- 26.常用的风险控制方法
- 27.实现止盈止损模块以提高策略性能
- 28.策略性能的评估与优化
- 29.探讨波动率与风险的关系
- 30.量化策略中的经典资金管理模型
- 31.用python编程实现资金管理模块
- 32.构建一个完善的量化交易策略
- 33.趋势型量化策略必备的期货知识
- 34.期货量化工具介绍
- 35.商品期货趋势型策略原理
- 36.用TB编写商品期货趋势型策略(上)
- 37.用TB编写商品期货趋势型策略(下)
- 38.分析优化商品期货趋势型策略的方法思路
- 39.期货交易策略的注意事项
- 40.均值回复型策略的原理
- 41.A股市场有没有稳定的均值回复效应?
- 42.编写一个均值回复型股票量化策略
- 43.编写多空组合策略进行策略改进
- 44.在策略中实现头寸管理进行策略优化
- 45.套利策略原理及常见套利类型
- 46.用MC开发一个跨品种套利交易策略(上)
- 47.用MC开发一个跨品种套利交易策略(下)
- 48.统计套利之股票配对交易策略
- 49.实盘中的细节问题:加减仓
- 50.关于高频交易
- 51.如何评价实盘量化策略的性能
- 52.量化系统的工作过程及研发流程
- 53.运气or实力
- 54.量化实盘交易需要满足什么条件
- 55.未来函数的坑
- 56.实盘数据接口异常的自动报警
- 57.交易系统的压力测试
- 58.自动运行的交易策略,什么时候需要人工干预
- 59.预案准备和实盘心理建设
运气or实力
约 12 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
运气or实力
小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在随机游走的金融市场中,短期大赚究竟是策略具备真实 Alpha(实力),还是仅仅碰巧赶上了市场风格(运气)?本节深入剖析假设检验、-统计量、拔靴法(Bootstrap 重抽样)以及蒙特卡洛随机置换检验,教你用严密统计学工具剥离运气的幻觉。
💡 核心导读
- 辨别量化实力与运气的四大统计学工具:
- -统计量与 -value 检验:检验策略超额收益均值是否显著大于 0(要求 );
- 拔靴法重抽样(Bootstrap Resampling):对历史交易记录进行 10,000 次有放回重抽样,计算夏普比率的 95% 置信区间;
- 蒙特卡洛随机打乱(Monte Carlo Permutation):打乱价格走势时序,检验策略是否仍能跑出正收益(若能,则策略存在过拟合漏洞);
- 风格归因(Factor Attribution):剥离市场 Beta、大小盘风格与行业暴露,提取真正的特异性 Alpha。
┌─────────────────────────────────────────────────────────────┐
│ 实力与运气统计学鉴别矩阵拓扑图 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐
│ <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi></mrow><annotation encoding="application/x-tex">t</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.6151em;"></span><span class="mord mathnormal">t</span></span></span></span>-统计量假设检验 │ │ Bootstrap 重抽样置信区间│ │ 蒙特卡洛随机置换检验 │
├─────────────────────────┤ ├─────────────────────────┤ ├─────────────────────────┤
│ • <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mo>=</mo><mfrac><mi>μ</mi><mrow><mi>σ</mi><mi mathvariant="normal">/</mi><msqrt><mi>N</mi></msqrt></mrow></mfrac><mo>></mo><mn>2.0</mn></mrow><annotation encoding="application/x-tex">t = \frac{\mu}{\sigma/\sqrt{N}} > 2.0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.6151em;"></span><span class="mord mathnormal">t</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1.3851em;vertical-align:-0.6376em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7475em;"><span style="top:-2.5374em;"><span class="pstrut" style="height:3em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.0359em;">σ</span><span class="mord mtight">/</span><span class="mord sqrt mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.9323em;"><span class="svg-align" style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mtight" style="padding-left:0.833em;"><span class="mord mathnormal mtight" style="margin-right:0.109em;">N</span></span></span><span style="top:-2.8923em;"><span class="pstrut" style="height:3em;"></span><span class="hide-tail mtight" style="min-width:0.853em;height:1.08em;"><svg xmlns="http://www.w3.org/2000/svg" width="400em" height="1.08em" viewBox="0 0 400000 1080" preserveAspectRatio="xMinYMin slice"><path d="M95,702
c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429
c69,-144,104.5,-217.7,106.5,-221
l0 -0
c5.3,-9.3,12,-14,20,-14
H400000v40H845.2724
s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
M834 80h400000v40h-400000z"/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.1077em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4461em;"><span class="pstrut" style="height:3em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">μ</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.6376em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6444em;"></span><span class="mord">2.0</span></span></span></span> │ │ • 10000 次模拟夏普分布 │ │ • 打乱时序检验 Alpha 归零│
│ • 证明收益非随机游走 │ │ • 95% 下界夏普仍大于 1.0│ │ • 识破过拟合假象 │
└─────────────────────────┘ └─────────────────────────┘ └─────────────────────────┘一、夏普比率 -统计量与置信度检验数学推导
设策略拥有 笔独立交易记录,样本均值为 ,标准差为 。检验零假设 的 -统计量为:
当交易笔数 时,即便年化收益很高, 统计量往往也无法突破临界值 (无法排除纯运气成分)。
import pandas as pd
import numpy as np
def calculate_strategy_t_stat(returns: pd.Series) -> dict:
"""
计算策略收益率的 t-统计量与统计显著性
"""
n = len(returns)
mu = returns.mean()
se = returns.std() / (np.sqrt(n) + 1e-8)
t_stat = mu / (se + 1e-8)
return {
'N_Trades': n,
'Mean_Return': float(mu),
'T_Stat': float(t_stat),
'Is_Statistically_Significant': abs(t_stat) >= 1.96
}二、Bootstrap 拔靴法夏普比率置信区间估计
通过对历史收益率进行 5000 次有放回重抽样,计算夏普比率在 置信度下的最悲观下界。
def bootstrap_sharpe_confidence_interval(returns: pd.Series, n_iterations: int = 1000, alpha: float = 0.05) -> dict:
"""
Bootstrap 估计夏普比率置信区间
"""
boot_sharpes = []
n = len(returns)
rets_arr = returns.values
for _ in range(n_iterations):
sample = np.random.choice(rets_arr, size=n, replace=True)
s = sample.mean() / (sample.std() + 1e-8) * np.sqrt(252)
boot_sharpes.append(s)
lower_bound = np.percentile(boot_sharpes, alpha / 2 * 100)
upper_bound = np.percentile(boot_sharpes, (1 - alpha / 2) * 100)
return {'Sharpe_Mean': float(np.mean(boot_sharpes)), 'Sharpe_Lower_95': float(lower_bound), 'Sharpe_Upper_95': float(upper_bound)}📝 动手练一练
编写 Python 测试脚本,对模拟策略进行 1000 次 Bootstrap 抽样,测算夏普比率 95% 置信区间:
import pandas as pd
import numpy as np
def run_luck_vs_skill_test():
np.random.seed(42)
# 模拟 200 笔具备稳定正期望的交易收益
trades = pd.Series(np.random.normal(0.005, 0.02, 200))
t_info = calculate_strategy_t_stat(trades)
boot_info = bootstrap_sharpe_confidence_interval(trades, n_iterations=1000)
print("================ 运气 vs 实力:统计显著性检验 ================")
print(f"交易样本量 N: {t_info['N_Trades']} 笔")
print(f"超额收益 t 统计量: {t_info['T_Stat']:.4f} (临界值 1.96)")
print(f"统计显著性判定 : {t_info['Is_Statistically_Significant']} (排除纯运气)")
print(f"夏普 95% 置信区间: [{boot_info['Sharpe_Lower_95']:.2f}, {boot_info['Sharpe_Upper_95']:.2f}]")
assert t_info['Is_Statistically_Significant'], "策略未能通过统计显著性检验!"
print("✅ 统计学假设检验与 Bootstrap 置信区间测试 PASS")
print("============================================================")
if __name__ == '__main__':
run_luck_vs_skill_test()运行结果输出:
================ 运气 vs 实力:统计显著性检验 ================
交易样本量 N: 200 笔
超额收益 t 统计量: 3.1782 (临界值 1.96)
统计显著性判定 : True (排除纯运气)
夏普 95% 置信区间: [1.35, 5.92]
✅ 统计学假设检验与 Bootstrap 置信区间测试 PASS
============================================================本章小结
- 用统计大数定律剥离运气:单笔或少量交易的大赚往往纯属运气,唯有 的大样本才能证明实力。
- 以 Bootstrap 下界评估风险:关注夏普比率在 置信度下的悲观下界,做好实盘降速心理准备。
- 警惕样本量过小的欺骗性:策略评估至少需要累积 100 笔以上独立交易样本,杜绝基于三五次交易妄下结论。
📋 行动清单 (Action Checklist)
- 运行显著性检验代码,测试样本量缩减至 20 笔时的 统计量变化;
- 编写时序随机置换检验(Permutation Test)脚本;
- 预习下一节,掌握量化策略上线实盘所需满足的硬性条件。
— 小象教研组
配套学习资源与课件
- 第10章课件:实盘中的细节问题讨论(PDF · 1.7MB)下载
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问