Methodology

1.

How the index is calculated


The Global Supply Chain Index is a weighted average of eight category scores. Each category runs from 0 to 100, where 100 is healthiest. The site recalculates every 5 minutes. Most sources publish daily, weekly or monthly, so a category moves only when its source does. The Semis and Aero tabs show two separate sector indexes, described in section 5.

Category Weight What it measures Main sources
Supply Chain 20% Global supply chain pressure NY Fed GSCPI
Chokepoints 15% Ship traffic through eight maritime chokepoints IMF PortWatch
Energy & Fuel 15% Real prices of Brent crude, diesel and European gas EIA and IMF via FRED, live futures
Trade & Tariffs 15% Customs duties as a share of imports, and trade policy uncertainty U.S. Treasury, Census via FRED, Caldara et al.
Geopolitical Risk 10% Newspaper coverage of geopolitical threats and acts Caldara-Iacoviello GPR
Freight Volume 10% Year-over-year growth in US freight and rail volume BTS, STB
Input Costs 10% Manufacturers' prices paid, real copper and aluminum prices Philadelphia, New York and Dallas Feds, IMF, live futures
Physical Disruption 5% Natural hazards near major ports and the Mississippi River water level GDACS, USGS
Composite = Σ ( Scorei × Weighti ) The weights sum to 1.0. A category with no usable reading is left out, and the other weights are scaled up so they still sum to 1.0.

When a category is excluded, the composite uses those renormalized weights. The weights shown in the category table, the CSV export and the API are the nominal ones, so on those days the scores times the listed weights do not add up to the composite. The snapshot is flagged degraded, and that day's composite is not saved to the history.

The composite maps to a health tier:

Score Tier Color
80 to 100 Healthy ● Green
60 to 79 Stable ● Amber
40 to 59 Stressed ● Orange
0 to 39 Critical ● Red
2.

The 0 to 100 scale


Six of the eight categories put each input on a fixed scale with three anchors taken from that input's own history:

100
The healthiest 5% of months before 2020 (the 5th or 95th percentile, depending on direction).
80
The median before 2020. This is "normal".
0
The worst monthly average on record through 2025. For the tariff burden, where the record is the current period, a cited historical reference is used instead.

Between anchors the score follows a straight line, and it is held at 0 or 100 beyond them. Prices are adjusted for inflation with CPI (CPIAUCSL) to December 2025 dollars and put on a log scale. The two newspaper indexes (trade policy uncertainty and geopolitical risk) are also on a log scale. Volumes use year-over-year growth. The anchors are stored in data/score_anchors.json and change only with a new methodology version.

Normal is 80, the bottom of the Healthy tier. Chokepoints and Physical Disruption are built from events, so a normal day reads about 100 there. With every input at normal the composite is about 84.

3.

Freshness, fallbacks and history


1
Age is counted from the end of the period a value covers: the last day of the month for monthly data, the week-ending date for weekly data, the day itself for daily data.
2
Two limits per input. Past the first, the input is flagged stale. Past the second, it is dropped. Each category's limits are listed below.
3
Missing inputs. If one input in a category is missing, the category uses the others with their weights scaled up. The category is stale if any input it uses is stale.
4
Failed categories. If every input fails to load, the category shows its last stored daily score, flagged stale and fallback, until that stored score is too old (Supply Chain 150 days, Chokepoints 42, Energy 30, Tariffs 150, Geopolitical 42, Freight 200, Input Costs 150, Physical 9). After that it is excluded from the composite. If the inputs load but are all past their drop limits, the category is excluded right away, because a stored score would be older still. A neutral placeholder score is never used.
5
History is recomputed from the real source series with the same formulas. Each value is dated by when its source published it. Days before a source's first observation stay blank, and gaps are never filled.
4.

Categories


Every number on the dashboard carries its source, the date of the data behind it and its stale or fallback status. Hover over a category name, or tap it on a phone, to see each input.

Supply Chain 20%

1
Source: Federal Reserve Bank of New York, Global Supply Chain Pressure Index (GSCPI), monthly.
2
Measures: Transport costs and supplier delivery times across major economies, combined into one z-score where 0 is the historical average. Higher means more pressure.
3
Score: The latest GSCPI on the anchored scale, lower is better. Baseline 1998 to 2019.
4
Anchors: 100 at -0.95 or lower, 80 at -0.37, 0 at +4.43 (Dec 2021).
5
Updates: Published about 5 days after the month ends. GSCPI is stale after 75 days, dropped after 150.

Chokepoints 15%

1
Source: IMF PortWatch daily ship transits, counted from satellite AIS signals. Sources: UN Global Platform; IMF PortWatch.
2
Measures: Traffic through Malacca, the Taiwan Strait, Gibraltar, Hormuz, Dover, the Red Sea (the worse of Bab el-Mandeb and Suez), the Bosporus and Panama. Cape of Good Hope is shown for context only, because its traffic rises when ships reroute.
3
Score: For each corridor, the 7-day average of daily transits divided by the average for the same calendar month in January 2022 to October 2023. Traffic at 90% of normal or above costs nothing. Below that: Score = 100 − 300 × Σ(weight × (1 − min(ratio / 0.90, 1))), clipped to 0 to 100. Tonnage weights: Malacca 26%, Taiwan Strait 18%, Gibraltar 13%, Hormuz 13%, Dover 12%, Red Sea 11%, Bosporus 4%, Panama 3%.
4
Anchors: There is no 80 point: a normal week scores 100. Closing Hormuz alone takes the score to about 61, and closing Malacca alone takes the score to about 21.
5
Updates: PortWatch publishes about 4 days after the date it covers. Transits are stale after 14 days, dropped after 42.

Energy & Fuel 15%

1
Sources: EIA spot prices on FRED: Brent crude (DCOILBRENTEU) and New York Harbor ultra-low-sulfur diesel (DDFUELNYH). European TTF gas from IMF Primary Commodity Prices (PNGASEUUSDM). Live futures through Yahoo Finance: Brent (BZ=F), heating oil (HO=F), TTF (TTF=F) and the euro-dollar rate (EURUSD=X).
2
Measures: Fuel cost pressure. Low prices score high even when they come from weak demand.
3
Score: Each price is adjusted to December 2025 dollars, put on a log scale and anchored. Weights: Brent 35%, diesel 40%, gas 25%. A leg whose real price rose more than 20% in 3 months loses up to 15 points (the full 15 at a rise of 82% or more), weighted like the leg. For Brent and diesel, the latest official price is moved by the futures change since that date. If the futures quote is older than the official price, or the change is outside 0.5x to 2x, the official price is used and the hover text says so. Gas is converted directly: TTF=F (EUR/MWh) × EURUSD=X / 3.412 gives $/MMBtu. It is used only when both quotes are at most 5 days old and the result is within 0.5x to 2x of the latest IMF monthly price; otherwise the monthly price is used.
4
Anchors: Brent 100 at $31/bbl or lower, 80 at $63/bbl, 0 at $198/bbl (Jun 2008). Diesel 100 at $1.02/gal or lower, 80 at $2.02/gal, 0 at $5.83/gal (Jun 2008). Gas 100 at $4.22/MMBtu or lower, 80 at $6.94/MMBtu, 0 at $77.31/MMBtu (Aug 2022). Baseline 1990 to 2019 (gas 1992 to 2019).
5
Updates: EIA spot prices on FRED update weekly; futures move the score during trading hours. Brent, diesel and live gas are stale after 10 days, dropped after 30. The monthly gas price, used when the live quote fails, is stale after 75 days, dropped after 150.

Trade & Tariffs 15%

1
Sources: Customs duty deposits from the U.S. Treasury Daily Treasury Statement. US goods imports from the Census Bureau through FRED (BOPGIMP). The daily Trade Policy Uncertainty index by Caldara, Iacoviello, Molligo, Prestipino and Raffo.
2
Measures: What tariffs cost importers, and how uncertain trade policy is.
3
Score: 60% tariff burden plus 40% trade policy uncertainty. Burden = customs deposits / goods imports, each summed over 3 months. Duties are mostly paid the month after the goods arrive, so deposits for month m+1 are paired with imports for month m. Deposits are counted before any IEEPA tariff refunds. Uncertainty is the 30-day mean of the daily index on a log scale, anchored on the monthly index for 1985 to 2019.
4
Anchors: Burden 100 at 1.6% or lower, 80 at 1.8% (the median for Nov 2005 to Dec 2017), 0 at 19.8%: duties as a share of imports in 1933, the peak under the Smoot-Hawley Tariff Act (USITC). It is a historical reference because the record in this data is the current period (the highest reading is 12.3% in Oct 2025). Uncertainty 100 at 21 or lower, 80 at 33, 0 at 1,165 (30-day mean, Apr 2025).
5
Updates: Treasury publishes deposits the next business day. Imports come about 35 days after the month ends, so a month's burden is ready about five weeks after it ends. The burden is stale after 75 days, dropped after 150; uncertainty is stale after 14 days, dropped after 42.

Geopolitical Risk 10%

1
Source: Caldara-Iacoviello daily Geopolitical Risk (GPR) index.
2
Measures: The share of newspaper articles about geopolitical threats and acts: wars, terrorism, military buildups. 100 is the 1985 to 2019 average.
3
Score: The 30-day mean of the daily index on a log scale, anchored on the monthly index for 1985 to 2019. Headlines do not affect this score.
4
Anchors: 100 at 54 or lower, 80 at 91, 0 at 513 (Oct 2001), the record month.
5
Updates: The file is updated about weekly. GPR is stale after 14 days, dropped after 42. A disruption register kept by Claude is stored daily at 0% weight (see below).

Freight Volume 10%

1
Sources: Bureau of Transportation Statistics Freight Transportation Services Index (TSIFRGHT), monthly. Surface Transportation Board weekly rail carloads (EP 724) through USDA AgTransport.
2
Measures: How much freight is moving in the US, as year-over-year growth. A contraction scores low. Congestion and cost are measured elsewhere.
3
Score: 50% TSIFRGHT growth plus 50% rail growth. Rail is originated carloads plus intermodal containers and trailers, the 4-week average against the same weeks a year earlier. The weekly STB series starts in 2017, so the rail anchors come from BTS monthly rail carloads plus intermodal units on FRED (RAILFRTCARLOADSD11 and RAILFRTINTERMODALD11), 2001 to 2019.
4
Anchors: Freight TSI 100 at +7.5% or higher, 80 at +2.0%, 0 at -15.0% (Apr 2009). Rail 100 at +8.1% or higher, 80 at +1.3%, 0 at -21.8% (May 2009). Baseline 2001 to 2019.
5
Updates: TSIFRGHT comes about 80 days after the month ends; rail about 5 days after the week ends. TSIFRGHT is stale after 120 days, dropped after 200; rail is stale after 14 days, dropped after 45.

Input Costs 10%

1
Sources: Manufacturing prices-paid indexes from the Federal Reserve Banks of Philadelphia, New York (Empire State) and Dallas, through FRED. IMF Primary Commodity Prices for copper and aluminum (PCOPPUSDM, PALUMUSDM). Live copper (HG=F) and aluminum (ALI=F) futures through Yahoo Finance.
2
Measures: What manufacturers pay for their inputs. Low prices score high even when they come from weak demand.
3
Score: 50% prices paid, 25% copper, 25% aluminum. Each survey becomes a z-score against its own 2004 to 2019 mean and standard deviation, and the surveys that reported that month are averaged. Metals are adjusted to December 2025 dollars, logged and anchored; live futures move the latest monthly price the same way as in energy. Supplier delivery times are shown for context only.
4
Anchors: Prices paid 100 at z -1.51 or lower, 80 at z -0.02, 0 at z +2.89 (Nov 2021). Copper 100 at $2,859/t or lower, 80 at $6,343/t, 0 at $14,518/t (Feb 2011). Aluminum 100 at $2,208/t or lower, 80 at $2,838/t, 0 at $4,619/t (May 2006). Metals baseline 1992 to 2019.
5
Updates: The surveys come out during the month they cover; IMF prices about 35 days after the month ends. Surveys are stale after 60 days, dropped after 150. Live metals are stale after 10 days, dropped after 30; the monthly fallback is stale after 75 days, dropped after 150.

Physical Disruption 5%

1
Sources: GDACS (Global Disaster Alert and Coordination System) alerts. USGS gauge 07010000, Mississippi River at St. Louis.
2
Measures: Natural events that stop ships near major ports, and low water on the Mississippi, which carries bulk cargo. Panama Canal disruptions are covered by PortWatch transits in Chokepoints.
3
Score: 67% hazards, 33% Mississippi. Each Orange or Red GDACS alert for a tropical cyclone, flood, earthquake or volcano whose center is within 450, 100, 150 or 50 km of one of the 37 ports costs 5,000 × the port's share of world port calls × 0.5 (Orange) or 1 (Red) points; the hazard score is 100 minus the total, floored at 0. The cyclone radius is our judgment, because GDACS gives only the storm's center.
4
Anchors: There is no 80 point: a quiet day scores 100. One Red alert over a median top-10 port costs about 50 hazard points. Mississippi at St. Louis: 100 at 0.54 ft or above, falling in a straight line to 0 at the record low, -5.32 ft (Dec 1989). 0.54 ft is the gauge's 10th-percentile daily stage since 1982, because no official low-water stage for St. Louis was found.
5
Updates: Daily. Each input is stale after 3 days, dropped after 9. The Rhine gauge at Kaub is recorded, not scored.
5.

Sector indexes


The Semis and Aero tabs each show a separate index for one industry. Each is built only from its own categories, the way S&P Global's sector PMIs use only that sector's survey answers. Global is not blended into them and they are not blended into Global. The NY Fed index in Supply Chain already includes the Taiwan and Korea PMIs, so adding chip data to Global would count Asia twice.

Every sector input is an official monthly series with a long history, scored on the same fixed scale as the global inputs (section 2). The map, markets, headlines and briefing are the same on every tab.

1
Index: The semiconductor index is the mean of its categories at 33% each, and the aerospace index at 25% each. Only categories with a score count (measured, stale or a stored fallback), and their weights are scaled up to sum to 1.
2
Coverage: The Semis index is shown only when at least 2 of its 3 categories have a score, and the Aero index when at least 3 of its 4 categories do. Otherwise the readout shows "Not enough data". Past days follow the same rule, so a day below coverage is a gap in the sparkline.
3
Fallbacks: The rules in section 3 apply. A category whose source fails shows its last stored score, flagged stale and fallback, for up to 150 days, then it is excluded. If its inputs load but are past their drop limits, it is excluded right away. A neutral placeholder score is never used.
4
Separation: A sector problem never changes the global index, its disruptions list, its degraded flag or the status of /health. Each sector reports its own flags.

Semiconductor index (Semis tab)

Memory Prices 33%

1
Source: Bank of Japan Corporate Goods Price Index, import price index for MOS memory integrated circuits on a contract-currency basis (PRCG20_2500850005), monthly from 2000.
2
Measures: What Japan pays for imported memory chips, in the currency of each contract, so yen moves do not count. Fast price growth means tight supply and rising costs for chip buyers.
3
Score: The year-over-year % change of the monthly index, lower is better. Baseline Jan 2001 to Dec 2019, since a year-over-year change needs a year of data.
4
Anchors: 100 at -36.3% or lower, 80 at -11.8%, 0 at +57.4% (Dec 2025).
5
Updates: The Bank of Japan publishes about 12 days after the month ends. The site normally asks for each series about once a day, and waits 6 hours after a failed request. The input is stale after 75 days, dropped after 150.

Logic Chip Prices 33%

1
Source: Bank of Japan Corporate Goods Price Index, import price index for MOS logic integrated circuits on a contract-currency basis (PRCG20_2500850004).
2
Measures: What Japan pays for imported logic chips (processors and other chips that are not memory), in the currency of each contract.
3
Score: The year-over-year % change of the monthly index, lower is better. Baseline Jan 2001 to Dec 2019.
4
Anchors: 100 at -14.9% or lower, 80 at -2.8%, 0 at +29.4% (Feb 2022).
5
Updates: Same schedule as memory. The input is stale after 75 days, dropped after 150.

Fab Utilization 33%

1
Source: Federal Reserve Board G.17 Industrial Production and Capacity Utilization, semiconductors and other electronic components (CAPUTLG3344S on FRED), monthly from 1972.
2
Measures: The share of US chip and electronic component capacity in use.
3
Score: The utilization level in percent, lower is better: spare capacity can absorb a jump in demand or an outage elsewhere. Baseline Jan 1972 to Dec 2019.
4
Anchors: 100 at 64.8% or lower, 80 at 80.1%, 0 at 93.2% (Jul 2000).
5
Updates: G.17 comes out about 16 days after the month ends. The input is stale after 75 days, dropped after 150.

Aerospace index (Aero tab)

Aero Throughput 25%

1
Source: Federal Reserve Board G.17, capacity utilization for aerospace and miscellaneous transportation equipment (CAPUTLG3364T9S on FRED).
2
Measures: The share of US aerospace manufacturing capacity in use. Plants near their normal rate are turning out aircraft and parts at a steady pace.
3
Score: The utilization level in percent, higher is better. Baseline Jan 1972 to Dec 2019.
4
Anchors: 100 at 85.8% or higher, 80 at 73.8%, 0 at 46.8% (Apr 2020). The record low is counted from 1972 (see the limitations below).
5
Updates: G.17 comes out about 16 days after the month ends. The input is stale after 75 days, dropped after 150.

Delivery Flow 25%

1
Source: Census Bureau M3 survey, nondefense aircraft and parts: inventories (ANAPTI) and shipments (ANAPVS) on FRED.
2
Measures: How many months of shipments are sitting in inventory. Work piling up unshipped points to a blockage in the production line.
3
Score: Inventories divided by the mean of the last 3 months of shipments, on a log scale, lower is better. A month with no positive shipments mean is not scored. Baseline Mar 1992 to Dec 2019.
4
Anchors: 100 at 3.48 months or lower, 80 at 4.73 months, 0 at 15.89 months (Jul 2020).
5
Updates: M3 comes out about 35 days after the month ends. The input is stale after 75 days, dropped after 150.

Mill Prices 25%

1
Sources: Bureau of Labor Statistics Producer Price Index on FRED: titanium and titanium-base alloy mill shapes (WPU102505) and nickel and nickel-base alloy mill shapes (WPU102504).
2
Measures: Prices for the metal that aircraft and engine makers buy before forging or machining it.
3
Score: The year-over-year % change of the monthly index, lower is better. The category is the mean of the two input scores (one alone if the other is missing). Baseline Jan 1972 to Dec 2019.
4
Anchors: Titanium 100 at -14.1% or lower, 80 at +0.4%, 0 at +98.7% (Apr 2006). Nickel alloy 100 at -16.4% or lower, 80 at +0.9%, 0 at +70.6% (Sep 1988).
5
Updates: The PPI comes out about 15 days after the month ends. Each input is stale after 75 days, dropped after 150.

Forgings & Castings 25%

1
Sources: Bureau of Labor Statistics Producer Price Index on FRED: titanium and titanium alloy forgings (PCU33211233211242), nonferrous forging (PCU332112332112) and steel investment castings (PCU3315123315120).
2
Measures: Prices for the forged and cast parts that go into engines and airframes. Few shops make them, so fast price growth points to tight capacity.
3
Score: The year-over-year % change of the monthly index, lower is better. The category is the mean of the input scores that are available. Baseline Jan 1985 to Dec 2019.
4
Anchors: Titanium forgings 100 at -6.5% or lower, 80 at +0.0%, 0 at +24.7% (May 2023). Nonferrous forgings 100 at -2.8% or lower, 80 at +0.5%, 0 at +10.2% (Aug 2022). Steel castings 100 at -1.5% or lower, 80 at +1.1%, 0 at +21.9% (Jul 2022).
5
Updates: The PPI comes out about 15 days after the month ends. Each input is stale after 75 days, dropped after 150.

Limitations of the sector indexes

1
Gluts read as healthy: Chip and aerospace metal prices are cost gauges, like Energy. A price glut or a demand collapse reads as healthy. In March 2023, during a memory glut, Memory Prices read 99.
2
Memory at 0: Memory Prices reads 0 whenever its year-over-year change is above +57.4% (Dec 2025), the worst month on record through 2025. The score cannot go lower, so the category table tags it "past record" and its hover shows the current change next to the record. This applies to any input past its record. For example, in the September 2026 data, memory chip import prices were up 316% on a year earlier, so the category read 0.
3
Utilization: Fab Utilization does not separate spare capacity from weak demand. Low utilization because orders fell reads as healthy. Aero Throughput has the opposite problem: low utilization from weak orders reads as supply trouble.
4
Aerospace record: The aerospace utilization series starts in 1948. Its record low is counted from 1972, like the semiconductor series, because the postwar readings of 1948 to 1950 are not comparable. So 0 is 46.8% (Apr 2020). Counted from 1948, 0 would be March 1950.
5
Left out: Order backlogs are not scored, because a large backlog can mean strong demand or a supply problem. Lead times are not covered, because no free source publishes them on a regular schedule.

Credits. This service uses the API provided by the 'Bank of Japan Time-Series Data Search.' The Bank of Japan does not guarantee the content of the service. Commercial reuse of the memory and logic chip price scores requires the Bank of Japan's permission. Fab utilization and the aerospace inputs are US government data from the Federal Reserve Board (G.17), the Census Bureau (M3) and the Bureau of Labor Statistics (Producer Price Index), released here under CC-BY-4.0 like the global index.

6.

What Claude does


Anthropic's Claude writes the headline severities, the briefing, the full report, the port summaries and the disruption register. None of these set a category score.

Headlines, briefing and report

1
Headlines: articles from 17 RSS feeds, plus a daily Claude web search, are filtered for relevance. The feeds are re-read every 60 minutes, and new headlines appear with no severity until Claude's next run. Every 6 hours Claude scores the headlines it has not seen yet; earlier scores are kept. Without an API key, headlines show with no severity.
2
Topics: tags use whole-word matching, so "port" does not match "report".
3
Briefing and report: once a day Claude writes a 3-bullet briefing from the top 15 headlines and the full report at /report.
4
Failures: a failed call is retried after 60 minutes. The last result stays up, marked stale, for up to 7 days.

Port summaries and disruption register

1
Port summaries: once a day Claude writes a summary and a 0 to 50 disruption penalty for each of the 37 ports, shown on the map.
2
Disruption register: once a day Claude, with web search, keeps a list of ongoing disruptions. Each has a severity from 0 to 10 and the share of world trade affected, with a cited basis. An event stays open until there is evidence it has ended.
3
Shadow mode: register score = 100 − 0.3 × Σ(severity × trade share %), floored at 0. It is stored every day at 0% weight in Geopolitical Risk while it is compared with PortWatch and GPR.
7.

Port map


Each of the 37 ports scores 60% of the composite plus 40% of its local weather (Open-Meteo: weather code, wind gusts, the day's precipitation and temperature). It then loses Claude's port penalty (0 to 50), set from the day's port summary. Headlines are not matched to ports and do not change a port's score. Weather is shown on the map only and is not part of the composite.

8.

Public API


GET /api/v1/latest is free and returns the latest snapshot as JSON, limited to 500 requests per hour and 2,000 per day per IP. Data is licensed CC-BY-4.0. If you use the chokepoint data, credit "Sources: UN Global Platform; IMF PortWatch". The Semis memory and logic scores come from Bank of Japan data and carry their own terms (section 5).

Field Contents
methodology_version 2
timestamp When the snapshot was made (UTC)
composite_index The composite stored with the snapshot. Under an exclusion it uses renormalized weights
categories One object per global category: score (null when excluded), weight (nominal), as_of (date of the oldest input used), source, is_stale, is_fallback, stored_on (date of the stored score a fallback shows) and inputs (each input's name, score, as_of, status, source and raw value)
degraded True when any category is on a fallback or excluded
fallback_categories Categories showing their last stored score
excluded_categories Categories left out of the composite
stale_categories Categories using an input past its stale limit
disruptions Low-scoring categories (impact = 100 − score) and high-severity headlines (impact = severity × 10)
map_markers The 37 ports with score and hover text
sectors One block per sector index (semiconductor, aerospace): index (null below coverage), tier, coverage (categories with a score), min_categories, degraded, its own fallback, excluded and stale lists, categories (the same objects as above, with the sector weights) and terms (reuse terms and credits). The global fields above never include sector categories

GET /health returns state (warming_up, healthy or degraded, with HTTP 503 for degraded), data_age_seconds, last_fetch_status, last_fetch_error (the error type only), fallback_categories, stale_categories, excluded_categories and sectors (each sector's degraded and coverage). A sector outage never changes state or the HTTP status.

9.

Infrastructure


The site is built with Plotly Dash, served by Gunicorn and hosted on Render. A background thread does all the fetching, so page loads read from memory.

flowchart LR style A fill:#07090C,stroke:#1D232B,color:#8A94A3 style B fill:#07090C,stroke:#1D232B,color:#8A94A3 style C fill:#07090C,stroke:#1D232B,color:#8A94A3 style D fill:#07090C,stroke:#1D232B,color:#8A94A3 style E fill:#07090C,stroke:#FFB020,stroke-width:2px,color:#F2F4F7 style F fill:#07090C,stroke:#8A94A3,color:#F2F4F7 style G fill:#07090C,stroke:#8A94A3,color:#F2F4F7 style H fill:#07090C,stroke:#8A94A3,color:#F2F4F7 A["NY Fed, FRED, Treasury
BTS, STB, Caldara-Iacoviello
Bank of Japan"] --> E B["IMF PortWatch, GDACS
USGS"] --> E C["Yahoo Finance
(live futures)"] --> E D["RSS feeds and web search
(display only)"] --> F E["Background thread
8 category providers
7 sector providers"] --> G["Neon Postgres
daily scores"] F["Claude
headlines, ports, register"] --> H E --> H["Dash UI
dashboard and API"]

Background data pipeline

1
Cycle: every 5 minutes the providers run 3 at a time. Each has 45 seconds (150 for Freight and Physical); one that runs over is treated as failed. The sector providers run 2 at a time on their own pool, 60 seconds each (up to 120 for the Aero categories that read several series). They are collected after the global ones, so a slow sector source never holds up a global one.
2
Cache: results are saved to disk. A fresh deploy loads the last snapshot saved in the database, then a committed fallback snapshot if it is under 14 days old.
3
Serve: page loads read the in-memory snapshot and never call a data source.

Storage and email

1
Database: Neon PostgreSQL stores daily category scores, the daily composite (only on days with no excluded category), the latest snapshot, the disruption register and river gauge readings.
2
Newsletter: the daily briefing is emailed each morning with the stored composite. No email goes out when there is no composite. Every email has an unsubscribe link.
10.

News sources


Headlines come from 17 RSS feeds from industry, trade policy and weather alert sources, plus a daily Claude web search. They are shown for context and do not feed any score.

Ports and shipping

gCaptain, Splash 247, The Loadstar, Maritime Executive, Logistics Management (Ocean Freight)

Supply chain and logistics

Supply Chain Dive, SupplyChainBrain, FreightWaves, Logistics Management (Transportation), Supply Chain Management Review, Logistics Viewpoints

Trade policy

WTO News

Weather and disasters

GDACS Disaster Alerts, plus four NOAA National Hurricane Center feeds (Atlantic and Eastern Pacific cyclones, Atlantic outlook, Atlantic high seas forecast)

11.

Limitations


The index measures supply-side stress and input costs. In a demand collapse, such as April 2020, oil and metal prices fall, so the Energy and Input Costs categories read as healthy and offset the disruption elsewhere. The backtest reads April 2020 at about 70 (Stable), even though the NY Fed index (Supply Chain 30) and freight (51) were stressed.

This is a property of averaging cost categories with disruption categories. It is disclosed here and has not been tuned away.

The sector indexes have their own limitations, listed in section 5.

12.

Data sources and credits


Source Data used
Federal Reserve Bank of New York Global Supply Chain Pressure Index; Empire State Manufacturing Survey prices paid (FRED PPCDISA066MSFRBNY)
IMF PortWatch Daily chokepoint transits and port calls. Sources: UN Global Platform; IMF PortWatch
FRED, Federal Reserve Bank of St. Louis Distribution of most monthly and daily series below, and CPI (CPIAUCSL)
U.S. Energy Information Administration (EIA) Brent crude and New York Harbor ULSD spot prices (FRED DCOILBRENTEU, DDFUELNYH)
Yahoo Finance Live futures quotes from ICE (Brent, TTF) and CME Group (heating oil, copper, aluminum)
U.S. Treasury, Daily Treasury Statement Customs duty deposits
U.S. Census Bureau via FRED Goods imports (BOPGIMP)
Caldara and Iacoviello Geopolitical Risk (GPR) index
Caldara, Iacoviello, Molligo, Prestipino and Raffo Trade Policy Uncertainty index
Bureau of Transportation Statistics Freight Transportation Services Index (TSIFRGHT); monthly rail carloads and intermodal units (FRED RAILFRTCARLOADSD11, RAILFRTINTERMODALD11)
Surface Transportation Board, via USDA AgTransport Weekly rail carloads (EP 724)
Federal Reserve Bank of Philadelphia Manufacturing Business Outlook Survey prices paid
Federal Reserve Bank of Dallas Texas Manufacturing Outlook Survey prices paid for raw materials
IMF Primary Commodity Prices European natural gas, copper and aluminum (FRED PNGASEUUSDM, PCOPPUSDM, PALUMUSDM)
GDACS Natural hazard alerts
USGS Mississippi River gauge height at St. Louis (site 07010000)
USITC Duties as a share of imports, 1891 to 2018 (tariff burden zero point)
Bank of Japan, Time-Series Data Search Corporate Goods Price Index, import prices for MOS memory and logic integrated circuits (PRCG20_2500850005, PRCG20_2500850004). This service uses the API provided by the 'Bank of Japan Time-Series Data Search.' The Bank of Japan does not guarantee the content of the service.
Federal Reserve Board, G.17 Capacity utilization for semiconductors and electronic components, and for aerospace (FRED CAPUTLG3344S, CAPUTLG3364T9S)
U.S. Census Bureau, M3 survey Nondefense aircraft and parts inventories and shipments (FRED ANAPTI, ANAPVS)
U.S. Bureau of Labor Statistics, Producer Price Index Titanium and nickel alloy mill shapes, titanium and nonferrous forgings, steel investment castings (FRED WPU102505, WPU102504, PCU33211233211242, PCU332112332112, PCU3315123315120)
Open-Meteo Port weather for the map
Anthropic Claude: headline severities, briefing, report, port summaries, disruption register