How this chart is built, what the axes mean, and how to read it.
A Relative Rotation Graph (RRG) plots how a group of sectors is performing
relative to a benchmark — here, all 11 GICS sector ETFs against
VTI — and, just as importantly, whether that relative
performance is accelerating or fading. Instead of a price chart with lines going up and to
the right, each sector becomes a single dot that orbits a center point. Money visibly
rotates from one sector to another as the dots sweep clockwise around the wheel over time —
which is the whole idea: sector leadership rotates in cycles, and this chart makes that
rotation visible instead of buried in eleven separate price charts.
Every dot's position comes from two independent numbers, each centered on 100 (100 = "in line with the benchmark, no signal"):
Combining the two gives four classic quadrants — Leading (both > 100), Weakening (Ratio > 100, Momentum < 100), Lagging (both < 100), and Improving (Ratio < 100, Momentum > 100) — which this chart splits further into 8 phases for finer resolution:
Read it like a clock: the top-right is where you want sectors to be (winning and accelerating), and the healthy path is clockwise — Improving → Leading → Weakening → Lagging → Improving again. A sector cutting counter-clockwise is behaving unusually and worth a second look.
Each sector isn't a static dot — it's a comet trail of its last several days of (RS-Ratio, RS-Momentum) pairs, brightest at the tip (today) and fading toward the tail (oldest). The small triangular arrowhead at the tip points along the direction of the most recent move, so you can tell a sector's heading at a glance without reading coordinates. The Tail buttons (15d / 30d / 60d / All) control how much of that trail is drawn at once — shorter tails read cleaner for "what's happening right now," longer tails show the fuller arc of a rotation.
Up to 90 trading days of history are computed and embedded in the page. Dragging the slider (or hitting play) replays the chart day-by-day so you can watch a sector's rotation unfold instead of only seeing today's snapshot — useful for building intuition about how fast sectors typically move between phases.
This page is a static snapshot generated once a day after the close. The Go live toggle fetches
today's prices client-side from Yahoo Finance (routed through a small local proxy — rrg_proxy.py
— to satisfy the browser's CORS requirements) and recomputes today's RS-Ratio/RS-Momentum with the exact
same formula, then appends it as an extra point you can scrub to. It refreshes every 60 seconds while on;
if the proxy or the upstream fetch fails, the status line next to the button says so rather than failing silently.
Distance from the center is signal strength, not time — the chart says nothing about how long a sector has been in a phase. And RRGs describe relative rotation, not absolute return: a sector deep in "Lagging" can still be up in price, just less than the benchmark. Treat this as a way to see where money is rotating to, not a standalone buy/sell signal.