All series are open data under CC BY 4.0. Attribution required; no other restrictions. Not investment advice.
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.
| 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.
| File | What 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/.
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.
| Endpoint | Contract |
|---|---|
data/latest.json | Smallest useful payload: date, composite, five channel scores with labels, and a _meta block stating the definition and generation time. Poll once daily. |
data/history.json | Full daily series per channel and composite since 2017, date-aligned arrays. |
data/history.csv | The same series as CSV, one row per day. |
data/episodes.json | Detected coverage episodes with channel, dates, and peak share. |
feed.xml | RSS 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.
Column-by-column definitions, units, and construction for every file live in the codebook (also on GitHub).
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.
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.
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.