Skip to content

回撤序列

峰-谷回撤序列 + 最大回撤。输入 returns 数组(也接受 prices)。标准业绩分析 primitive。Edge-first;连到多个 Price Factor 时按标的 fan out 为 by_symbol

做什么(One-liner)

Layer-1 变换:消费收益率序列,输出运行回撤序列及其最小值(最大回撤)。max_drawdown = -0.23 表示 23% 的峰-谷损失。

输入

  • returns(array,必填)—— 收益率序列(也接受 prices)。

输出

  • drawdown —— 每个点的回撤,范围 (-1, 0]。
  • max_drawdown —— 全序列最大回撤,范围 (-1, 0]。
  • by_symbol —— 连多个 Price Factor 时的 per-ticker 映射。

怎么用

  1. 提供 returns 数组。
  2. 查看 drawdown 数组 + max_drawdown 标量。

核心公式

cum_t = Π(1 + r_i) for i in 1..t   (起始 1.0)
running_max_t = max(cum_1, ..., cum_t)
dd_t = (cum_t - running_max_t) / running_max_t   ∈ (-1, 0]
max_drawdown = min(drawdown)

假设与适用场景

假设:simple returns(非 log)+ compounding + 起始 1.0。

适用:backtest 绩效、CPPI、基金 fact-sheet;任意资产类别,任意频率,最少 2 个观测。

不适用:期望 returns 却传价格序列、log returns、n<2。

已知局限

  1. 路径依赖 —— 只反映所给窗口,而非历史峰值。
  2. 不说明恢复时间或回撤频率。
  3. 起始点 1.0(非实际资本)。
  4. log returns 会有 second-order 误差。

参考文献

Magdon-Ismail & Atiya (2004) + Chekhlov et al. (2005) 优化嵌入。

Golden Test

tests/golden/fixtures/tier1/drawdown_series/,1e-12 tolerance,2026-05-25 passing。参考:numpy 手工复现(cumprod + maximum.accumulate)。

Changelog

  • 1.1.0 (2026-05-25) —— 提升为 Active 的 Layer-1 变换;并入已弃用 Layer-0 drawdown_series 卡片的完整治理字段。
  • 1.0.0 (2026-05-23) —— 初始 edge-first Layer-1 Draft 卡片。

Verifiable intelligence for the decisions that demand scrutiny.