尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Bellwether is an interactive atlas of the ISM PMI suite — Manufacturing PMI (1948→present, 75+ years) and Services PMI (1997→present) — read alongside the US economic-policy decisions that shaped each era.
翻譯準備中
正在載入完整 README。 以下為已儲存的摘錄。
The economy's earliest tell, made explorable. Read the ISM PMI the way the Fed does.
Bellwether is an interactive atlas of the ISM PMI suite — Manufacturing PMI (1948→present, 75+ years) and Services PMI (1997→present) — read alongside the US economic-policy decisions that shaped each era. The PMI is the economy's earliest monthly tell: a diffusion index that crosses 50 before GDP turns. Bellwether makes that signal something you can drive rather than a number you read once a month.檢視完整 README ↗The economy's earliest tell, made explorable. Read the ISM PMI the way the Fed does.
Bellwether is an interactive atlas of the ISM PMI suite — Manufacturing PMI (1948→present, 75+ years) and Services PMI (1997→present) — read alongside the US economic-policy decisions that shaped each era. The PMI is the economy's earliest monthly tell: a diffusion index that crosses 50 before GDP turns. Bellwether makes that signal something you can drive rather than a number you read once a month.
It's for the economically curious non-economist — anyone who sees "ISM Manufacturing PMI came in at 48.7" in the headlines and wants the machine behind it: what the number means, how it's built, and what it has caught (and missed) across seventy-five years of cycles.
Try it live → bellwether-nine.vercel.app
Status: live — 7 modes, Manufacturing PMI back to 1948 (75+ years), Services PMI to 1997, per-cell data provenance, FRED-backed, no signup.
| Mode | Route | What it does |
|---|---|---|
| Timeline | / | INDPRO Y/Y % spine 1949→present, with hand-curated ISM PMI markers, a separate Services PMI figure (1997→), and a policy lane of major US economic decisions. |
| Decompose | /decompose · ?report=services | Reweight the headline subindices and backtest your blend against NBER recessions — Manufacturing (5 subindices) and Services (4). |
| Fed Chair | /fed-chair | Era-locked decision game with after-action review. Manufacturing PMI only; scenarios pre-date the Services PMI's 1997 launch. |
| Heatmap | /heatmap · ?report=services | 18 industries × 5 policy regimes, for both Manufacturing and Services. |
| PMI Explained | /pmi-explained | How to read the ISM Reports on Business, with live Manufacturing and Services prints. |
| About the data | /about-the-data | Per-cell provenance ledger — every value traced to its source. |
| Background | /background | Illustrated timeline of the institutions and the seventeen Fed chairs. |
The headline PMI is a fixed-weight blend of five subindices. In Decompose, move the weights and watch your custom blend redraw against the real series — then see whether your mix would have caught the last twelve recessions. (static version.)
npm install
cp .env.example .env.local # paste your FRED key
npm run refresh-data # fetch FRED snapshots into data/fred/
npm run dev # http://localhost:3000
The build doesn't require FRED at runtime — all market data is checked-in JSON in data/. Re-run npm run refresh-data when you want fresher FRED snapshots, and npm run import-prnewswire to backfill the most recent ISM headline prints from ISM's monthly press releases on PRNewswire. ISM Wayback re-imports (for the post-2014 history and the per-month subindex / industry tables) are documented in data/CONTRIBUTING.md.
noUncheckedIndexedAccess) · Tailwind CSS + shadcn-style primitivesd3-shape, d3-scale, d3-array) for the timeline and backtestsNo database, no auth.
src/
app/ # Next.js App Router
page.tsx # Timeline (default mode)
decompose/page.tsx # ?report=services for Services
fed-chair/page.tsx # scenario index
fed-chair/[id]/page.tsx # per-scenario runner
heatmap/page.tsx # ?report=services for Services
pmi-explained/page.tsx
about/page.tsx
about-the-data/page.tsx
background/page.tsx
style-guide/page.tsx
components/
timeline/ # PMITimeline, PolicyLane, etc.
decompose/
fed-chair/
heatmap/
background/
pmi-explained/
ui/ # primitives — Button, Sheet, Card, Slider, etc.
lib/
data/ # series loaders + Zod schemas
content/ # policies + glossary (data lives in `_policies-data.ts`, not MDX)
decompose/ # weighting math + backtest
background/ # illustrated timeline data
data/
fred/*.json # FRED snapshots (INDPRO, IPMAN, FEDFUNDS, USREC, NAPM stubs)
pmi-historical.json # forecasts.org mirror, 1948 → 2014
pmi-wayback.json # ISM Mfg ROB via Internet Archive, 2014→present
pmi-subindices-wayback.json # the five Mfg subindices
pmi-curated.{csv,json} # Mfg headline rows from ISM press releases (PRNewswire) + hand entries
nmi-wayback.json # ISM Services ROB via Internet Archive
nmi-subindices-wayback.json # the four Services subindices
nmi-curated.json # Services headline rows from ISM press releases (PRNewswire)
industry-monthly-wayback.json # Mfg per-month industry growth/contraction lists
services-industry-monthly-wayback.json
sectors.json # Mfg heatmap (18 industries × 5 regimes)
sectors-services.json # Services heatmap
scripts/
fetch-fred.ts # FRED refresh
import-wayback-ism.ts # Mfg headline scraper (Wayback Machine)
import-wayback-subindices.ts # Mfg subindices (Wayback Machine)
import-wayback-industries.ts # Mfg industry lists (Wayback Machine)
import-wayback-nmi*.ts # Services equivalents (Wayback Machine)
import-prnewswire-ism.ts # current-vintage Mfg + Services headlines from PRNewswire
import-forecastsorg.ts # historical mirror
import-pmi-csv.ts # CSV → JSON for hand-curated rows
reconcile-ism.ts # 3 checks/sector: cross-source, composite, spot-check
verify-nber.ts # link health on NBER citations
Bellwether's edge is its provenance. Nothing is scraped live at request time — every series is a checked-in JSON snapshot, backfilled from several primary sources and cross-checked against each other:
Those sources are held against each other rather than trusted individually. npm run check-data requires that months carried by two sources agree, that each headline equals the mean of its own subindices, and that hand-read anchor values match what ships — so a scraper that starts quietly returning the wrong number fails the build instead of publishing.
Every value is reproducible, and the per-cell provenance ledger traces each one to its source. See data/CONTRIBUTING.md for how the imports work and data/LICENSING.md for the per-source licensing posture before you redistribute the data.
noUncheckedIndexedAccess is on, deal with undefinedContributions are welcome — especially data corrections, new policy events, and deeper provenance. Good first contributions: file a data correction when you spot a value that disagrees with the primary source, or improve the explainer for one of the subindices. See CONTRIBUTING.md to get started and CODE_OF_CONDUCT.md for community expectations; bug reports and feature requests have their own issue templates.
Before opening a PR: npm run lint && npm run typecheck && npm test.
The project's own code and content are released into the public domain under CC0 1.0 — use it for anything, no attribution required.
The data layer is different and is not dedicated to the public domain: economic values are facts reproduced with attribution to their primary sources, and quoted ISM commentary is included as fair-use excerpts. See data/LICENSING.md for the per-source posture before redistributing the data.