⚠️ Correction (Aug 9, 2026) — please read first.
A comment below claimed the backtest showed GOLDILOCKS fired 3× (each preceding a >2% SPX weekly gain) and CONTRACTION correctly flagged risk-off 2 of 2 cases. That was wrong. Those numbers came from a simulator with hardcoded return assumptions, not real market data.
I subsequently ran a real event-study backtest (72 ISM PMI releases, 2019–2024, actual S&P 500 5-day forward returns via yfinance):
Scenario n 5-day avg return GOLDILOCKS 22 +0.80% CONTRACTION 33 +1.13% SOFT_LANDING 5 -2.47% MODERATE 8 +0.25% GOLDILOCKS vs CONTRACTION spread −0.33%, p=0.643 (not significant). The classification does not reliably predict 5-day forward returns. Backtest code is open-source:
real_backtest.py.So what is this about? The tool is still useful as a macro organizer/journal — it structures messy prints into 4 scenarios and logs your reasoning. But it is not a validated alpha signal, and I should not have implied it was. Apologies. The bundle is now described honestly on Gumroad as an organizer toolkit, not an edge product.
The Problem
Every macro print — ISM, NFP, CPI, FOMC — I was manually reasoning about what it meant for my book. Three problems:
- Slow: By the time I'd thought through the implications, the move was done.
- Inconsistent: Same print on different days → different conclusion depending on my mood.
- Unlogged: Two weeks later I couldn't remember why I'd rotated into industrials.
The Solution
I built a scenario classifier that takes 3 inputs — ISM Headline, New Orders, Prices Paid — and outputs one of 4 scenarios:
| Scenario | Condition | Bias |
|---|---|---|
| 🟢 GOLDILOCKS | Strong growth, no overheat | RISK-ON |
| 🟡 MODERATE | Growth with cost pressure | NEUTRAL |
| 🟠 SOFT_LANDING | Cooling but positive | CAUTIOUS |
| 🔴 CONTRACTION | Below 50 / decelerating | RISK-OFF |
Each scenario maps to sector rotation calls, duration positioning, and crypto/risk-asset bias.
The July 2026 ISM Mfg PMI Test
- Headline: 55.6 vs consensus 54.0 → beat by 1.6
- New Orders: 54.2 → expansion accelerating
- Employment: first expansion in 34 months
- Prices Paid: 71.1 → cost pressure persists
Classifier output: GOLDILOCKS, 85% confidence.
Actions fired:
- Rotate cyclicals > defensives (Industrials, Materials, Small Caps)
- US10Y → test 4.80%+ → short duration
- BTC risk-on, target $66k+
- AI interconnect (CRDO) structural bid reinforced
The Code (Zero Dependencies)
import urllib.request, json
def classify_scenario(headline, new_orders, prices_paid):
if headline >= 54 and new_orders >= 53 and prices_paid <= 72:
return 'GOLDILOCKS', 'RISK-ON', 85
elif headline >= 52 and prices_paid > 72:
return 'MODERATE', 'NEUTRAL', 70
elif headline >= 50:
return 'SOFT_LANDING', 'CAUTIOUS', 60
else:
return 'CONTRACTION', 'RISK-OFF', 90
scenario, bias, conf = classify_scenario(55.6, 54.2, 71.1)
print(f'{scenario} | {bias} | {conf}% confidence')
Try the full engine live in your browser (no signup): Backtest Simulator
The Packaging
I packaged it as four products:
1. Notion Trading Journal Template ($7)
Four databases with 13 pre-loaded entries and 4 scenario playbooks.
2. Macro Scenario Analysis API (pay-per-call)
The classification engine wrapped in FastAPI, deployed on Render, listed on RapidAPI.
3. Pine Script Indicator
Displays the scenario classification directly on TradingView charts.
4. Semi Decoupling Dashboard ($9.99)
An HTML dashboard tracking NVDA vs semi equipment/storage decoupling.
The Bundle
All four for $14.99: gumroad.com/l/txmuvz
Notion template standalone: gumroad.com/l/nztlu
Free preview: notion.site
Why This Works
- Zero competition on Gumroad.
- Zero maintenance (static template).
- Category creator on TradingView.
- Marketplace distribution via RapidAPI.
🎁 Free Cheat Sheet
Grab the free ISM PMI Macro Scenario Cheat Sheet — one page, 4 scenarios, live API demo, no signup:
👉 Get the free cheat sheet
If you found this useful, the bundle is $14.99. Questions? Ask in the comments.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.