Overview
This dashboard measures market momentum using a universe of 42 leveraged and inverse ETFs — 21 bull ETFs and their 21 exact inverse counterparts. Each day, the Matrix Series indicator generates a Bull or Bear signal for every ticker. The momentum score reflects what percentage of the 42 ETFs are "correctly aligned" with their expected direction.
The Matrix Series Indicator
The Matrix Series is a Pine Script indicator originally designed for TradingView. It works by computing a triple-smoothed Z-score of price, producing two lines — up and down — where their relative position determines the signal:
ys1 = (High + Low + Close × 2) / 4 ← weighted close
rk3 = EMA(ys1, 5) ← 5-period EMA
rk4 = StdDev(ys1, 5) ← 5-period std deviation
rk5 = (ys1 − rk3) × 200 / rk4 ← Z-score scaled to ±200
rk6 = EMA(rk5, 5) ← smoothed Z-score
up = EMA(rk6, 5) ← signal line
down = EMA(up, 5) ← signal line smoother
Signal: up > down → ● Bull up < down → ● Bear
This formula is implemented in Python using yFinance daily OHLC data, producing results that match TradingView readings exactly (verified against manual readings for June 2026).
The 42 ETF Universe
The universe pairs each major bull leveraged ETF with its exact inverse. This symmetry is intentional — in a truly bullish market, bull ETFs should read Bull and bear ETFs should read Bear simultaneously.
- Bull ETFs (21): TQQQ, SPXL, TNA, WEBL, FAS, HIBL, LABU, SOXL, TECL, SPY, QQQ, ERX, GUSH, NUGT, TMF, TYD, UUP, DRN, YINN, EDC, BULZ
- Bear ETFs (21): SQQQ, SPXS, TZA, WEBS, FAZ, HIBS, LABD, SOXS, TECS, SH, PSQ, ERY, DRIP, DUST, TMV, TYO, UDN, DRV, YANG, EDZ, BERZ
Momentum Score Calculation
Each day's momentum score counts how many of the 42 ETFs are "correctly aligned":
Correct alignment =
(Bull ETFs with Bull signal) + (Bear ETFs with Bear signal)
% Bullish = Correct alignments ÷ 42 × 100
Example: If 15 bull ETFs show Bull and 15 bear ETFs show Bear → 30/42 = 71.4% Bullish.
Signal Zones
| Zone | Score | Interpretation |
| ● Bullish | ≥ 70% | Strong majority of ETF pairs aligned bullishly — risk-on regime |
| ◆ Neutral | 50–70% | Mixed signals — transition or consolidation phase |
| ● Bearish | < 50% | Majority misaligned — risk-off or bearish regime |
Data & Refresh Schedule
- Data source: Yahoo Finance daily OHLC (free, no API key required)
- Warmup period: ~25 bars needed per ticker for EMA chain to stabilize
- History: 60+ trading days stored in Upstash Redis (survives server restarts)
- Daily refresh: Cron job runs after market close, appending one new day
- Manual refresh: Visit
/refresh to force an update
- Full reseed: Visit
/reseed if history needs to be rebuilt
Important Caveats
- The Matrix Series uses daily closing prices only — intraday readings will not match until after market close
- A small number of tickers (e.g. WEBS, BERZ) may have limited history or low liquidity — these show "—" in the heatmap and are excluded from that day's count
- This indicator is a trend-following momentum tool, not a leading indicator — it confirms regime, it does not predict reversals