India Geopolitical Risk Monitor

All series are open data under CC BY 4.0. Attribution required; no other restrictions. Not investment advice.

How to read the data

Every file reduces to one idea: each row is one day, and each number answers "how loud is the world's press about this topic today, compared with this topic's own last two years?", 0 means the quietest day in two years, 100 the loudest, 50 a typical day. The five channel columns are the five topics; composite is their simple average. Nothing here is a price, probability, or prediction. Full column-by-column definitions, units, and construction: the codebook.

Preview: the last ten days of history.csv

Loading preview…

This is exactly what downloads, no cleaning needed; it loads directly into Excel, pandas (pd.read_csv(url, index_col="date")), or R.

Published files

FileWhat it is
history.csv (view)The primary research artifact: full daily percentile scores, one row per day, 2017-present.
episodes.csv (view)Research artifact: every detected episode, channel, start, end, peak date, peak coverage share, spike days.
event_study.csv (view)Research artifact: the event study flattened, one row per channel × outcome × window, with means, 95% CIs, and n.
latest.json (raw)Today's composite and per-channel percentile scores, with the definition line.
history.json (raw)Full daily score history per channel and composite (the wikipedia block carries the demand-side second source).
episodes.json (raw)Detected coverage episodes: channel, start, end, peak date, peak volume share, spike-day count.
event_study.json (raw)Mean cumulative relative returns after episode starts with bootstrapped 95% CIs, plus per-episode raw window returns.
validation.json (raw)Hit-rate against the pre-registered episode list, placebo-channel overlap, dictionary-robustness correlations, cross-source agreement, coverage-drift diagnostics.
alt_specs.json (raw)Secondary specifications: alternative composite weightings, episode thresholds (1.5σ/2.5σ), percentile windows (365/1095 days), each with its correlation to the primary.
seasonality.json (raw)Anniversary-effect quantification: day-of-year partial R² per channel, top recurring dates, deseasonalized-variant correlation.
priced_risk.json (raw)The attention-pricing gap vs India VIX, largest divergence episodes in both directions, and the attention/VIX lead-lag cross-correlation with bootstrap bands.
chokepoints.json (raw)Per-chokepoint weekly press salience vs IMF PortWatch transit calls (both percentiles of own 2019-present history), weekly Spearman on levels, latest gap. Sub-dictionary series; never in the composite.
stress_gauge.json (raw)The India Stress Gauge: four pre-registered components fused into one daily 0-100 line, with per-component attribution, the published hit-rate, and a 365-day history. Publishes once the events history completes.
receipts.json (raw)The evidence behind the latest day's scores: exact queries plus a tier-ranked, aptness-ordered article sample per channel, with the tier 1-2 share.
expert_shelf.json (raw)Latest think-tank roster publications, channel-tagged, titles and links only.
precision.json (raw)Standing precision audit under the versioned rubric; uncalibrated until author labels reach threshold.
reliability.json (raw)The morning contract scored from git evidence; misses stay listed forever.
predictions.json (raw)The Prediction Archive registry: dated falsifiable expectations, graded at horizon.
nowcast.json (raw)PROVISIONAL today-so-far scores from a partial-day NGrams sample, replaced about every two hours and superseded by the daily run. Sample size disclosed in the payload. Not part of the historical series; treat as volatile.
receipts.json (raw)Per-channel receipts for the latest published day: the exact GDELT query and a tier-sorted sample of matched articles (source_tiers.json), plus the tier 1-2 spike-quality share. Latest day only, not a historical archive; tiers never enter any score.

Raw inputs (GDELT volume shares, chunk cache, market closes) are versioned in the repository under data/raw/.

For integrators

Dashboards, agents, and pipelines can consume IGRM directly; no key, no signup, no rate limit beyond ordinary politeness. The endpoints below are stable URLs served over HTTPS with open CORS (Access-Control-Allow-Origin: *), refreshed once daily by 6:00 AM IST (00:30 UTC), scoring the news day that closed at 5:30 AM IST; a provisional nowcast refreshes every two hours after.

EndpointContract
data/latest.jsonSmallest useful payload: date, composite, five channel scores with labels, and a _meta block stating the definition and generation time. Poll once daily.
data/history.jsonFull daily series per channel and composite since 2017, date-aligned arrays.
data/history.csvThe same series as CSV, one row per day.
data/episodes.jsonDetected coverage episodes with channel, dates, and peak share.
feed.xmlRSS for the weekly analytical notes.

Schema promise: fields are added, never renamed or removed, within a major version; breaking changes bump the version in the citation and are announced in the methodology changelog. All endpoints resolve under https://plausibledissent9.github.io/india-geopolitical-risk-monitor/. Attribution per CC BY 4.0: "India Geopolitical Risk Monitor (Ishan Krishna)" with a link. The five endpoints above are the quick-start set; the full frozen v1 API contract lists every endpoint this project serves, its promised fields, and the deprecation policy, machine-readable at data/api_contract.json.

Codebook

Column-by-column definitions, units, and construction for every file live in the codebook (also on GitHub).

The reliability record

The morning contract, scored from git commit timestamps rather than self-reporting: day D final by 6:00 AM IST on D+1. Misses stay listed forever. reliability.json carries the full per-day record; the corrections ledger carries every cause.

Embed a live chart

Any page can carry a live IGRM chart with one iframe. Charts: composite, pakistan_west, china_east, gulf_energy, us_trade, shipping, gauge; optional days=90..1095. The salience-not-risk label is part of the widget and cannot be removed.

<iframe src="https://plausibledissent9.github.io/india-geopolitical-risk-monitor/embed.html?chart=composite&days=365"
        width="100%" height="220" frameborder="0" loading="lazy"
        title="India Geopolitical Risk Monitor, composite salience"></iframe>

Corrections and incident ledger: every error this project caught, dated, append-only.

Citation

BibTeX ready for your reference manager.

If you use the data, cite it:

Krishna, Ishan (2026). India Geopolitical Risk Monitor: a category-decomposed press-salience index for India. Version 1.0.1. https://plausibledissent9.github.io/india-geopolitical-risk-monitor/ (data: CC BY 4.0)

BibTeX:

@misc{krishna2026igrm,
  author = {Krishna, Ishan},
  title  = {India Geopolitical Risk Monitor: a category-decomposed
            press-salience index for India},
  year   = {2026},
  url    = {https://plausibledissent9.github.io/india-geopolitical-risk-monitor/},
  note   = {Version 1.0.1. Data: CC BY 4.0}
}

A DOI-minted release via Zenodo is planned; the citation will gain the DOI when it exists.