最大回撤的完整指标族:深度、时长、修复、频次
我的掌握程度:
先掌握这个答案
四成员:①MaxDD最大回撤=峰谷最大跌幅(q-094已学);②回撤时长=峰到谷的天数(衡量"下坠持续感");③修复时长=谷回到前高的天数(衡量"套牢时长"——投资者体验的核心);④回撤频次=超过某阈值(如10%)的回撤次数/年(衡量"反复受伤率")。Calmar=年化收益/MaxDD——用三年滚动MaxDD而非全样本单次(全样本只有一个点、且早期数据少时失真;三年滚动反映"近期痛感",机构标准口径)。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
触发规则不保证按阈值成交
价格跳空、涨跌停、停牌与流动性枯竭都可能让实际损失越过止损线。写清观察频率、触发价、订单类型、无法成交时的动作和恢复条件。
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
背景 · 从一个困惑说起
q-094(阶段1)学了回撤剖析的雏形。绩效指标族里,回撤是唯一描述"路径之痛"的成员——而痛有多个维度:多深、多久、多久回来、多久来一次。
由此产生的问题
回撤指标族的四个成员(MaxDD/回撤时长/修复时长/回撤频次)各怎么算各说明什么?为什么Calmar要用"三年滚动"口径?
核心概念
四成员:①MaxDD最大回撤=峰谷最大跌幅(q-094已学);②回撤时长=峰到谷的天数(衡量"下坠持续感");③修复时长=谷回到前高的天数(衡量"套牢时长"——投资者体验的核心);④回撤频次=超过某阈值(如10%)的回撤次数/年(衡量"反复受伤率")。Calmar=年化收益/MaxDD——用三年滚动MaxDD而非全样本单次(全样本只有一个点、且早期数据少时失真;三年滚动反映"近期痛感",机构标准口径)。
为什么需要它
①单一MaxDD的盲区:MaxDD 30%但三年修复 vs 30%但三个月修复——同样的深度、天壤的体验与赎回风险;②产品设计的硬约束:预警线/平仓线(0.90/0.85)触发看的是回撤路径不是年度收益——回撤族直接决定产品生死;③报告规范:机构风控页的标配是四成员+Calmar(三年滚动)——只报MaxDD一个数是不完整的痛感描述。
实际应用场景
计算骨架:dd=equity/cummax−1;MaxDD=dd.min();各次回撤的峰谷表可用信号处理(sign change of dd)提取"回撤事件"再统计时长分布。
与之前知识的联系
q-094/015(阶段1回撤)的指标化完全体;q-528(夏普三骗术)的对照面(收益效率vs路径痛感);q-944(阶段10停机线)以回撤为触发器。
⚠ 常见误解
- MaxDD是完整的风险描述:同深度的回撤,时长与修复差异巨大——四成员才是完整画像
- 修复时长是策略属性:它也取决于市场(熊市里谁都修不动)——比较策略时注意同期性
- Calmar高就安全:它是收益/单次最深痛感——没考虑频次(一年三次-15%的Calmar可能优于三年一次-40%,但体验未必)
🛠 本题实践任务
为你的策略计算回撤族五件套(MaxDD/最长回撤时长/修复时长中位数/年回撤频次/水下占比),并与沪深300同期对照。哪个维度你显著差于基准?
💡 提示(先自己想5分钟再看)
水下占比=dd<-1%的天数比例;频次按>10%的事件数/年数。
✅ 验收标准
五件套对照表。你的绩效报告升级为"完整的痛感档案"——这是客户与风控真正关心的页面。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(回撤计算、夏普三骗术),再用案例、公式和代码帮助理解。此功能需要先启用服务。