Risk Regime Scorecard

As-of 2026-09-30 09:18 PDT · market data 2026-09-30
Refresh: — · Prices: Yahoo/FRED (cache) · Overlays: — · ran —

Macro Weather Model

2 red · 3 amber · 0 green — aligns with Risk-off
Liquidity
Bearish
Credit
Bearish
Volatility
Neutral
Economic Growth
Flat
Earnings Growth
—

Display only · do not vote · Growth split into Economic + Earnings. Liquidity / Credit / Volatility vote; Economic Growth / Earnings Growth are context. Scoring unchanged.

  • Liquidity — voting leg (UUP vs 200DMA): bullish→green, neutral→amber, bearish→red.
  • Credit — voting leg (HYG >200DMA AND 21d ROC>0): same bullish/neutral/bearish color map.
  • Volatility — VIX level + 21d ROC sets base color; hard VIX veto→red; MOVE Rising may only tint green→amber; MOVE Falling may tint amber→green if VIX not bearish; MOVE does not vote.
  • Economic Growth — US GDP nowcast Δ4W only (improving ≥+0.2pp → green; softening ≤−0.2pp → red; else amber Stable). Display-only; does not vote. Overlay still uses US GDP Δ4W as one of three Overlay nudges.
  • Earnings Growth — SPX EPS revisions read (Expanding→green / Stable→amber / Contracting→red); deteriorating stance (contracting or Δgrowth≤−0.5) forces red. Display-only; does not vote. Curve not folded in.

Tactical Risk Posture

Risk-off
Equity 47.5%
Core 45%·Overlay +2.5%

NAAIM 0 (unavailable) · Style +2.5 (Offensive growth) · US GDP Δ4W 0 (unavailable)

Method. Core equities % = round_2.5(60 + 15×4W weighted score), clamp [45,75]. Overlay = equal ±2.5% nudges from NAAIM (3Y %ile ≤20 → Contrarian Long / ≥80 → Contrarian Short), Style (Offensive growth +2.5 / Defensive −2.5; Cyclical value & Mixed = 0), and US GDP nowcast Δ4W (≥+0.2pp Improving / ≤−0.2pp Softening), then cap ±5%. Final = round_2.5(clamp(Core + Overlay, 45, 75)). Hard VIX veto → 45% and ignores Overlay. Regime chip uses Core only.

Outside vs Inside. Regime chip (Risk-on / Mixed / Risk-off) is Core-driven only (Liquidity / Credit / Volatility vote). Overlay = NAAIM + Style + US GDP Δ4W. Equity Style Factors (right) are display-only — Offensive relocates the former Inside pill; does not change Core, Overlay, Final %, or voting.

Style factors why: Style Offensive AND SPHB/SPLV Offensive → Offensive; HF=— unused (Style not Mixed)

Equity Style Factors

Growth
Momentum
High beta
BreadthNarrow
PositioningNeutral
SentimentNeutral
Hedge Fund PositioningMixed

Equity Style Factors. Display-only context. Breadth / Positioning / Sentiment / HF are the former top-strip context lights (Positioning & Sentiment split; HF from VIP vs Most Short).

  • Equity Style Factors pills — Growth (IVW vs IVE 1M), Momentum (MTUM vs VLUE 1M), High beta (SPHB vs SPLV 1M). Green when that factor leads; amber flat; red opposite lean. Label is the factor name only (no Inside: prefix). Display-only.
  • Breadth — % of S&P above 200DMA (Broad/Mixed/Narrow); A/D Divergence / Broken uptrend / Downtrend can worsen amber→red.
  • Positioning — NAAIM 3Y %ile alone (crowded ≥80 → red / washed ≤20 → green / else amber Neutral). Split from the old combined Positioning / Sentiment light.
  • Sentiment — sentiment composite overall alone (Contrarian Short/crowded → red; Contrarian Long/washed → green; else amber Neutral). Split from the old combined Positioning / Sentiment light.
  • Hedge Fund Positioning — GS HF VIP vs Most Short read (Risk-on→green / Mixed→amber / Risk-off or squeeze/spec risk-off→red). Context only.

Core Macro Indicators

Vote = 200DMA rules (Liq 40% / Cred 35% / Vol 25%) · 100DMA column is context only

LegCallLevel vs 200DMA21d vs 100DMA (ctx)
Liquidity / USD bearish UUP 28.75 +3.71% +2.22% +2.11%
Credit bearish HYG 77.33 -1.16% -2.57% -1.74%
Volatility neutral VIX 15.9 * +6.50% —

Weighted leg_score = 0.40·liq + 0.35·cred + 0.25·vol → -0.75 (raw on ≥+0.40 / off ≤−0.40; hard VIX veto → risk_off)

UUP/HYG vs 100DMA is display context only — does not vote. LQD/MOVE/10Y remain context.

* Volatility has no 200DMA. VIX level subscore: <15 → +1 (bullish), 15–20 → 0 (neutral), ≥20 → −1 (bearish). Combined with the 21d ROC subscore (≤−10% → +1, ≥+15% → −1) to form the Call.

US Yield Curve

FRED 2s10s · as-of 2026-09-28 · (context only)

SeriesLevel1Y %ile3Y %ile 1M3MRead
2s10s (10Y − 2Y)32 bps749-15 bps+4 bpsFalling

Read (2s10s): Rising if 1M Δ >0, Falling if 1M Δ <0, Flat if 1M Δ =0; the level is shown separately and does not override the Read. 3M is display only. Context only — not a voting leg. Source: FRED DGS2/DGS10. 1Y/3Y %ile = current level percentile over trailing 1Y/3Y; 2s10s Δ in bps. Bond vol (MOVE) is on Global Volatility, not this panel.

Global Volatility

VIX · NDX vol · RUT vol · MOVE · CVIX (FX) · as-of 2026-09-30 · (context only)

SeriesLevel1Y %ile3Y %ile 1W1M3MRead
VIX15.862642+4.48%-2.94%+0.32%Falling
NDX vol22.103662+6.45%+0.64%-21.02%Rising
RUT vol21.293027+6.61%+3.10%-1.48%Rising
MOVE106.69876+11.68%+36.88%+63.00%Rising
CVIX (FX)6.715129+3.07%+9.28%+11.83%Rising

Context only — does not vote and does not change the Core Volatility leg. 1W / 1M / 3M are percent changes over 5 / 21 / 63 sessions; 1W and 3M are display only. 1Y/3Y %ile are current level percentiles over trailing 1Y/3Y. Global Volatility Reads use the signed 1M change only: >0 Rising, <0 Falling, =0 Flat; there are no panel bands or 3M confirmations. The Macro Weather Volatility light is intentionally unchanged: its legacy MOVE context tint uses the separate weather_read input, while the panel displays the simple 1M MOVE Read. Up = higher vol. Source: Bloomberg MASTER (2) PX_LAST. Core Volatility vote still uses Yahoo ^VIX only.

Rolling Correlations

Windows: 5d (1W) / 21d (1M) / 63d (3M) · as-of 2026-09-30

Pair1W1M3MRead
SPY vs UUP (DXY)-0.89-0.44-0.31Risk-off
SPY vs TLT (long Treasuries)+0.54+0.61+0.48Risk-off
SPY vs crude oil (WTI)+0.08-0.43-0.56Risk-off
Bitcoin vs UUP (DXY)-0.12-0.20-0.36—
Gold vs UUP (DXY)-0.69-0.52-0.55—
Crude oil vs UUP (DXY)+0.17-0.15+0.01—

Spot moves

Series1W1M3M
UUP (DXY)+0.33%+2.22%+0.90%
10Y yield (^TNX)+17 bps+52 bps+81 bps
Crude oil (WTI)-0.62%+6.80%+33.55%
Bitcoin (BTC-USD)-0.24%+7.17%+40.29%
Gold (GC=F)-3.01%-6.54%+2.59%

Read uses 1M corr (|r| ≥ 0.15; 3M fallback if 1M missing). 1W is display only. SPY pairs keep Risk-on/off Reads; Bitcoin/Gold/Crude vs UUP are numbers-only (Read —). Rolling corr is noisy (esp. 1W); context only — not a regime leg.

Breadth

Now: 41.5% above 200DMA · coverage 501/503 names · Reads: Broad / Narrow / Mixed (participation & size; context only)

Measure1W1M3MRead
% above 200DMA (Δ pp)-7.8-28.1-19.1Narrow
IWM (small) vs SPY (large)-0.98%-5.13%-9.72%Narrow

Changes are percentage points. Read uses level and primarily 1M Δ (conflicts = Mixed); thresholds ≥55% / ≤45%. 41.5% SPX above 200DMA → Read Narrow (level ≥55% or 1M Δ ≥+5 pp = Broad; level ≤45% or 1M Δ ≤−5 pp = Narrow; conflicts = Mixed); RSP/SPY 21d -4.74%, 63d -4.92% · computed from 503 S&P constituents (portfolio OHLCV cache); n_valid=501 n_missing=2

Style rotation

Overall (1M): Offensive growth · soft lean: Risk-on lean · taxonomy: Offensive growth / Cyclical value / Defensive / Mixed (context only)

Pair1W1M3MRead
MTUM (momentum) vs VLUE (value)+1.41%+6.93%-5.15%Momentum
IVW (S&P growth) vs IVE (S&P value)+1.81%+5.34%+3.64%Growth
SPHB (high-beta) vs SPLV (low-beta)+0.04%+8.10%+4.38%High Beta

SPHB vs SPLV Read uses the 1M relative return: positive = High Beta, negative = Low Beta, and |relative return| <0.5% = Mixed. The broader Style taxonomy and Overlay keep their existing Offensive growth / Defensive labels and logic.

Hedge Fund Positioning

Overall (1M): Mixed · GS VIP / Most Short · as-of 2026-09-30 · (context only)

Basket1W1M3MRead
No HF positioning data — run hf_positioning.py

Context only — not a voting leg. GS HF VIP vs Most Short Rolling; pair = VIP − Most Short return.

Earnings and Real GDP Growth

NTM EPS · 50/50 Weighted+NTM revision · Growth = NTM/TTM · real GDP nowcasts · as-of 2026-09-30 · (context only)

IndexNTM EPSBlended 4W revBlended 3M revGrowth (NTM/TTM)Growth 4W agoΔ (pp)Read
No fundamentals data — run fundamentals_growth.py

Real GDP nowcasts

RegionNowcast4W agoΔ (pp)Read
No nowcast data — run fundamentals_growth.py

Context only — not a voting leg. Revision Read = mean of available 4W/3M % changes in Bloomberg Weighted Est and Next Year EPS (50/50 when both exist). NTM EPS level = Next Year estimate. Growth = NTM EPS / TTM EPS − 1. Nowcasts = Bloomberg Economics GDP nowcasts (US/China/Euro Area), using the last non-null datapoint in each country column. EA = Bloomberg Euro Area GDP nowcast (BENWEAGQ).

Positioning

Non-commercial / leveraged net · 3Y %ile · as-of 2026-09-30 · (context only)

AssetNetNet 4W ago3Y %ileRead
No positioning data — run positioning_sentiment.py

Read from 3Y %ile (80/20), contrarian context only — not a vote. Asset-manager nets omitted (noisy scale).

Sentiment

Overall: Neutral · composite %ile — · as-of 2026-09-30

MeasureLevelLevel 4W ago3Y %ileRead
No sentiment data — run positioning_sentiment.py

Read from 3Y %ile (80/20), contrarian context only — not a vote.

Weekly samples (persistence trail)

Headline = 4W weighted raw · Legacy persist = legacy 3-week confirm — not the headline

DateRaw4W scoreWeightedLegacy persistvol/cred/liqEquities tgtVeto
2026-09-30Risk-off-1.00Risk-offRisk-off-1/-1/045.0%—
2026-09-24Risk-off-1.00Risk-offRisk-off-1/-1/045.0%—
2026-09-17Risk-off-0.90Risk-offRisk-off-1/0/047.5%—
2026-09-10Risk-off-0.70Risk-offMixed-1/0/-150.0%—
2026-09-02Risk-off-0.40Risk-offMixed-1/0/055.0%—
2026-08-26Mixed+0.00MixedMixed-1/1/160.0%—
2026-08-19Mixed-0.10MixedMixed-1/1/157.5%—
2026-08-12Mixed-0.30MixedMixed-1/1/155.0%—

1M regime log

22 trading days (2026-08-31 → 2026-09-30) · Risk-on 0 · Mixed 7 · Risk-off 15 · %>200DMA 41.5–66.9% (last 41.5%)

DateRegime (raw)leg_score / legs%>200DMA (context)liq / cred / vol
2026-09-30Risk-offls=-0.75 · 0↑ 2↓41.5%liq:S cred:S vol:N
2026-09-29Risk-offls=-0.75 · 0↑ 2↓41.5%liq:S cred:S vol:N
2026-09-28Risk-offls=-0.75 · 0↑ 2↓43.7%liq:S cred:S vol:N
2026-09-25Risk-offls=-0.50 · 1↑ 2↓46.3%liq:S cred:S vol:B
2026-09-24Risk-offls=-0.75 · 0↑ 2↓44.9%liq:S cred:S vol:N
2026-09-23Risk-offls=-0.75 · 0↑ 2↓47.5%liq:S cred:S vol:N
2026-09-22Mixedls=-0.15 · 1↑ 1↓49.3%liq:S cred:N vol:B
2026-09-21Mixedls=-0.15 · 1↑ 1↓50.1%liq:S cred:N vol:B
2026-09-18Mixedls=-0.15 · 1↑ 1↓49.9%liq:S cred:N vol:B
2026-09-17Risk-offls=-0.40 · 0↑ 1↓50.7%liq:S cred:N vol:N
2026-09-16Risk-offls=-0.65 · 0↑ 2↓50.5%liq:S cred:N vol:S
2026-09-15Risk-offls=-0.65 · 0↑ 2↓53.3%liq:S cred:N vol:S
2026-09-14Risk-offls=-0.65 · 0↑ 2↓56.7%liq:S cred:N vol:S
2026-09-11Risk-offls=-0.40 · 0↑ 1↓56.9%liq:S cred:N vol:N
2026-09-10Risk-offls=-0.65 · 0↑ 2↓55.1%liq:S cred:N vol:S
2026-09-09Risk-offls=-0.40 · 0↑ 1↓57.3%liq:S cred:N vol:N
2026-09-08Risk-offls=-0.40 · 0↑ 1↓61.1%liq:S cred:N vol:N
2026-09-04Mixedls=+0.20 · 2↑ 1↓64.7%liq:S cred:B vol:B
2026-09-03Mixedls=+0.20 · 2↑ 1↓66.9%liq:S cred:B vol:B
2026-09-02Risk-offls=-0.40 · 0↑ 1↓64.9%liq:S cred:N vol:N
2026-09-01Mixedls=-0.05 · 1↑ 1↓63.3%liq:S cred:B vol:N
2026-08-31Mixedls=+0.20 · 2↑ 1↓66.9%liq:S cred:B vol:B

Changes (raw flips)