Skip to content

相对旋转图 (RRG)

一篮子风格/行业 ETF 相对基准的 RS-Ratio(相对强弱趋势)与 RS-Momentum(其变化率),落在四个随时间顺时针旋转的象限——领先、减弱、落后、改善。RRG 读的是轮动节奏(谁在领先 vs 改善),不是价格方向预测。

使用方法

  1. 把风格/行业 ETF 的 Price Factor 连进来作篮子(edge-first),或直接填 symbols
  2. benchmark(默认 SPY)——它是 100,100 原点,会从篮子中排除。
  3. 看每个标的的象限 + 轨迹。改善 → 领先(RS-Ratio 上穿 100 且动量为正)是切入早期信号;领先 → 减弱是超额动量回落。两者都是倾向性判读,非确定结论。

核心公式

RS          = 100 · price / benchmark            (对齐到最短公共长度)
RS-Ratio    = 100 + rolling_z(RS, ratio_window)
RS-Momentum = 100 + rolling_z(ΔRS-Ratio, momentum_window)   (ΔRS-Ratio[0] := 0)

象限:  领先   (ratio ≥ 100, mom ≥ 100)
       减弱   (ratio ≥ 100, mom < 100)
       落后   (ratio < 100, mom < 100)
       改善   (ratio < 100, mom ≥ 100)

rolling_z 为在达到 window 前扩张、之后末端 window、总体标准差(ddof=0)的 z-score;首点与任何常数窗口贡献 0(基线 100,绝不 NaN/inf)。

假设与适用性

假设:有意义的轨迹需要 ≥ ratio_window + momentum_window 的历史;基准严格为正且有限。

适用:股票 / ETF / 多资产篮子,日频数据,≥ 5 个对齐观测。

不适用:价格方向预测、单标的分析、专有 JdK 归一。

已知局限

  1. 读的是相对轮动节奏,不是方向——若整个基准下跌,领先标的绝对值也可能下跌。
  2. 因子/风格制度可持续很长时间;象限穿越是倾向性的、非确定。
  3. 历史过短(< ratio_window + momentum_window)会标记 short_history,轨迹不可靠。
  4. 对窗口取值敏感——窗口越短噪声越大。

参考

  • StockCharts / OpenBB 公开 RRG 描述(RS-Ratio · RS-Momentum,四象限)——本算子实现的可复现方法。
  • Julius de Kempenaer (JdK),Relative Rotation Graphs——概念提出者(此处使用专有 JdK 归一)。

Golden 测试

tests/golden/fixtures/tier2/rrg/ —— 1e-3 绝对(吸收算子的 3 位四舍五入),独立 pandas-rolling 参考对比算子的 numpy 逐窗循环,2026-05-25 通过。锁定两级滚动-z 叠加、ddof=0 总体标准差、扩张-至-window 预热、ΔRS-Ratio[0]:=0 接缝,以及象限阈值。

变更记录

  • 1.0.0(2026-05-25)—— 新算子(Stage 2 — 风格轮动)。后端 handler + 核心、前端注册 + 四象限 SVG 渲染器、风格 + 行业 demo、golden 已加。

Verifiable intelligence for the decisions that demand scrutiny.