相对旋转图 (RRG)
一篮子风格/行业 ETF 相对基准的 RS-Ratio(相对强弱趋势)与 RS-Momentum(其变化率),落在四个随时间顺时针旋转的象限——领先、减弱、落后、改善。RRG 读的是轮动节奏(谁在领先 vs 改善),不是价格方向预测。
使用方法
- 把风格/行业 ETF 的 Price Factor 连进来作篮子(edge-first),或直接填
symbols。 - 设
benchmark(默认 SPY)——它是 100,100 原点,会从篮子中排除。 - 看每个标的的象限 + 轨迹。改善 → 领先(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 归一。
已知局限
- 读的是相对轮动节奏,不是方向——若整个基准下跌,领先标的绝对值也可能下跌。
- 因子/风格制度可持续很长时间;象限穿越是倾向性的、非确定。
- 历史过短(<
ratio_window + momentum_window)会标记short_history,轨迹不可靠。 - 对窗口取值敏感——窗口越短噪声越大。
参考
- 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 已加。

