Public government, court, statement, and market sources — each with a defined role in the index
Every source and the specific role it plays in building the index.
| Source | Type | Role in the index | Cadence | Access basis |
|---|---|---|---|---|
| Federal Register API | Government publication | Threat detection (EOs, proclamations, presidential memoranda & determinations) + outcome resolution | Daily (incremental) | Public API |
| USTR FR notices (Section 301) | Government agency notice | Threat detection (Section 301 actions) | Daily (via Federal Register) | Public API |
| CNN Truth Social Archive | Public archive | Threat detection — primary statement feed; feeds the repetition-pattern dimension | 5-minute cache | Public archive |
| USITC DataWeb | Government tariff data | Outcome resolution + economic measurement (statutory↔applied gap drives reversal magnitude) | Monthly (rolling) | Public, JWT registration |
| CourtListener / PACER PCL | Federal court records | Outcome resolution (CIT / CAFC / SCOTUS rulings + D.D.C. and the D.C./1st/4th/9th Circuits) | 6-hourly / on-fallback | Public API |
| Congress.gov API | Government legislative data | Outcome resolution (bill actions for legislation-linked events) | Per bill-linked event | Public, free key |
| Gemini (Google Search grounding) | AI resolver | Outcome resolution for overdue non-trade events (independent reporting weighted above self-reported posts) | Per overdue event | API key (optional) |
| eCFR | Government regulatory text | Outcome verification (regulatory diffs compared against each recorded outcome; disagreements flagged for operator review, v1.2.14) | Per resolved event | Public API |
| Census Bureau imports (duty/value) | Government trade data | Independent applied-rate backstop — monthly cross-check of live USITC rates per country × HS chapter (report-only; publication-lag-aware) | Monthly (16th) | Public API, key required |
| BLS Public Data API | Government price indices | Economic-impact measurement (four-group CPI, pass-through) | Monthly — three release schedules, reported separately | Public, free key |
| FRED (St. Louis Fed) | Government macro series | Economic-impact measurement + macro context | Daily / monthly | Public, free key |
| Yahoo Finance (yfinance) | Market data feed | Economic-impact measurement (market reaction around threat/outcome dates) | Every 6h run | Public |
| Retail pass-through constants | Static calibration | Calibration only (superseded by live USITC rates each run) | Static seed | Disclosed constants |
Source ingestion runs every 6 hours. The public composite index is published
daily after validation; per-source freshness is exposed live at
/api/v1/sources/status
(human-readable view: source freshness status).
Each source updates on its own official release schedule.
| Source | Data | Auth | Official cadence |
|---|---|---|---|
|
Federal Register API v1 PUBLIC |
Executive Orders, Presidential Proclamations, tariff schedules, presidential memoranda. Primary source for EO event classification. | None (public API) | Daily (incremental) |
|
CNN Truth Social Archive PUBLIC |
All presidential Truth Social posts with engagement metadata. Used for real-time statement detection and threat classification. | None | 5-minute cache |
|
USITC DataWeb API v2 PUBLIC |
Applied tariff rates at HS-2 × country level (15 countries: CN, MX, CA, JP, KR, VN, TW, DE, GB, FR, IT, BR, IN, TH, TR). Duties collected ÷ customs value = effective applied rate. Core input to Reversal Magnitude scoring. | JWT (public registration) | Monthly (rolling 3-month window) |
|
BLS Public Data API v2 PUBLIC |
Four-group CPI proxies (Apparel, Household Furnishings, Food at Home, Medical Commodities, Services, Core Commodities) — the series behind the tariff pass-through model; PPI final demand (WPUFD4); Import Price Index (EIUIR); manufacturing/retail employment (CEU30, CEU42). Reported as three separate sources because BLS publishes them on different schedules — between roughly the 5th and 18th of a month they legitimately show different reference months. |
BLS_API_KEY (free registration) | Monthly, lookback to 2017. Release dates differ by series: employment first Friday of the following month; CPI 10th–14th; PPI ~13th–15th; import prices ~16th–18th. |
|
FRED API (St. Louis Fed) PUBLIC |
CPI (CPIAUCSL), core CPI (CPILFESL), S&P 500 (SP500), VIX (VIXCLS), goods trade balance (BOPGSTB), imports (IMPGS), PPI all commodities, nominal broad dollar index, 10Y/2Y Treasury yields. |
FRED_API_KEY (free registration) | Daily / monthly (series-specific) |
|
CourtListener API v4 PUBLIC |
Federal court rulings affecting tariff validity and executive-order legality, across three layers: the trade courts — U.S. Court of International Trade (CIT) and Court of Appeals for the Federal Circuit (CAFC); the Supreme Court; and the EO-litigation courts — the District of Columbia district court (D.D.C.) and the D.C., First, Fourth and Ninth Circuits, where challenges to executive orders are filed and first enjoined. Primary automated court ingest. | COURTLISTENER_API_KEY (free) | 6-hourly (within daily budget) |
|
PACER PCL (Case Locator) PUBLIC |
Automated fallback for CIT (citdc) and CAFC (cafc) cases not yet mirrored in CourtListener RECAP. REST API: auth via pacer.login.uscourts.gov/services/cso-auth → nextGenCSO token; case search via pcl.uscourts.gov/pcl-public-api/rest/cases/find. Triggered automatically when CourtListener raises errors on all courts. |
PACER_USERNAME + PACER_PASSWORD | On CourtListener error (automated fallback) |
|
yfinance (Yahoo Finance) PUBLIC |
SPY, VIX, and sector ETFs (XLP, XLI, XLY, EEM) daily closes around threat/outcome dates. Market impact signal only — not used in behavioral scoring. | None | Every 6-hour pipeline run |
|
eCFR API v1 PUBLIC |
Electronic Code of Federal Regulations — point-in-time snapshots for regulatory outcome verification against resolved events. | None | Per resolved event (10/run) |
|
Congress.gov API v3 PUBLIC |
Authoritative congressional bill actions and enactment status. Reconciles the outcome of monitoring events tied to legislation (e.g. the SAVE Act): bill death → abandoned, passage/enactment → full_implementation. No-ops when the key is unset. |
CONGRESS_API_KEY (free) | Per bill-linked event (10/run) |
|
Gemini API (Google Search grounding) AI |
Foreign-policy / domestic outcome reconciliation (v25). For overdue, still-pending non-trade events the Federal Register / court / Congress resolvers can't reach, determines whether the threatened action was carried out, de-escalated, or abandoned — weighting independent reporting above the president's own posts (records outcome_evidence_source = gemini_websearch vs self_reported). Claude remains the threat classifier. No-ops when the key is unset. |
GEMINI_API_KEY | Per overdue non-trade event (25/run, 7-day attempt cooldown) |
Government statistical series are revised after publication. PEPI's economic layer therefore tracks latest vintage, not point-in-time: each surface reports the currently published value for a reference period, not the value that was published when we first read it. That is stated here because it determines what a figure means when you cite it.
No revision schedule is assumed. BLS documents typical revision windows, but those are practices rather than guarantees — benchmark and seasonal-factor revisions reach further back than the routine one, corrections land off-cycle, and the calendar itself slips (the 2025 appropriations lapse removed October 2025 from the annual import/export price review). So no fetch window, comparison window, or rebuild trigger is keyed off an expected revision date. The full history is re-fetched every run and every observation compared against the stored value, which means a restatement is caught wherever and whenever it lands. Restatements update automatically on the next cycle; each one is recorded so the change stays auditable afterwards.
What a revision moves is bounded. It updates the price-impact measures and the per-event economic columns derived from them. It does not move any event's composite score — the scorer's only economic inputs are the announced and applied tariff rates, which come from USITC, not BLS — and it does not move the daily index, which reads the economic series only for the day's S&P 500 close. The behavioural index is stable against statistical revision by construction. Full detail is in §6.1a of the methodology whitepaper.
Two AI models sit between ingestion and scoring. They interpret public-source text into structured events and outcomes; they are not themselves data sources.
| Model | Role | Notes |
|---|---|---|
| Anthropic Claude | Threat classifier. Tags each ingested statement against the four PEPI criteria and as new_threat, action_claim, deescalation, or reiteration; extracts domain, severity, entities, deadline, and statutory authority with a confidence score. |
Events below 0.70 confidence are flagged for human review before they are confirmed. |
| Google Gemini (grounded) | Non-trade outcome resolver. Reconciles overdue foreign-policy / domestic outcomes the documentary resolvers can't reach, weighting independent reporting above self-reported posts. | Added alongside Claude (v25); confidence < 0.70 leaves the event monitoring. |
These datasets are loaded once during initialization and are not automatically refreshed.
| Source | Data | Used for |
|---|---|---|
| Retail price pass-through constants | Published, freely-citable aggregate constants: retail pass-through (24%), CPI contribution (+0.76pp), consumer incidence (43%). The underlying retail-scanner replication package (≈359,104 products across five major U.S. retailers) was used only to verify methodology alignment — these are disclosed static constants, not a live or proprietary government input. | Economic-impact calibration for trade events; superseded by live USITC applied rates each pipeline run. |
| First-term trade-war rate references | First-term trade events: Section 232 (March 2018), Section 301 China tariff lists, Phase One deal terms, Canada/Mexico exemption timeline. | Historical event calibration for TACO-2018-* events. |
These sources have no public API. They are used for manual event verification and calibration audits — not for automated ingest.
| Source | Scope | How used |
|---|---|---|
| Atlantic Council Trump Tariff Tracker | Second-term (2025+) tariff events, court ruling timeline, statutory authority (IEEPA, Section 232, Section 301, Section 122) | Verify event dates, confirm court rulings, cross-check statutory authority |
| First-term trade-war rate reference | First-term (2018–2021) Section 232/301 events; Phase One deal terms | Source authority for first-term calibration events |
| Federal Register (historical) | Full presidential documents since 1994 | Manual verification of seed events predating our 2025-01-20 automated ingest start date |
| USTR Press Releases | Official tariff-action announcements; Section 301/232 investigations | Cross-check announced rates and dates. The formal USTR actions behind them now auto-ingest as Federal Register notices; the press page remains a manual reference. |
| Yale Budget Lab — Tariff Tracker | Monthly effective tariff rate, customs revenue, PCE goods/durables price deviation | Independent cross-validation of our USITC applied rates and BEA PCE series; pass-through range for the economic-impact calibration |
| PACER (full docket system) | All federal court dockets in real time (CIT, CAFC, and others) | Manual spot-checks of high-stakes tariff dockets (distinct from the automated PACER PCL case-locator fallback above) |