Heterogeneous Treatment Effects: Elections → Shutdowns
For each country, the expected lift in 7-day shutdown probability when an election occurs in the next 7 days. Causal Forest DML (Athey & Wager 2019, Chernozhukov et al. 2018). 90% honest forest confidence intervals from EconML.
- Only 5 countries have ≥ 3 elections in the training window. Other estimates are extrapolations via the country one-hot plus risk-tier and unrest features — wide CI, flagged noisy=true.
- Identification assumes unconfoundedness conditional on W = (risk_tier, month, day-of-week, prior shutdowns, lagged block rate, weekend). Unobserved confounders (e.g. coups not in our event calendar) still bias the estimate.
- ATE is the average over the country's day distribution. A specific election may differ by stakes, incumbent risk, opposition coordination — not captured here.
Per-country ATE (sorted by magnitude)
Bars scale by ATE; brackets show the 90% honest forest CI. Negative ATE = elections reduce shutdown probability.
Per-country detail (click country for raw JSON)
| Country | ATE | 90% CI | Train events | Status |
|---|---|---|---|---|
| IRIran | 44.8pp | [-54.0pp, 143.6pp] | 0 | noisy / extrapolated |
| VNVietnam | 32.2pp | [14.1pp, 50.2pp] | 8 | signal |
| KPNorth Korea | 17.7pp | [-2.8pp, 38.2pp] | 0 | noisy / extrapolated |
| CNChina | 17.7pp | [-2.8pp, 38.2pp] | 0 | noisy / extrapolated |
| BYBelarus | 16.7pp | [9.2pp, 24.3pp] | 8 | signal |
| SASaudi Arabia | 16.7pp | [-3.0pp, 36.3pp] | 0 | noisy / extrapolated |
| CUCuba | 15.8pp | [3.1pp, 28.6pp] | 0 | noisy / extrapolated |
| SYSyria | 15.2pp | [2.7pp, 27.7pp] | 0 | noisy / extrapolated |
| TMTurkmenistan | 13.4pp | [1.7pp, 25.1pp] | 0 | noisy / extrapolated |
| PKPakistan | 7.1pp | [-7.7pp, 21.8pp] | 0 | noisy / extrapolated |
| RURussia | 3.3pp | [-22.3pp, 29.0pp] | 0 | noisy / extrapolated |
| TRTurkey | 3.1pp | [-13.9pp, 20.1pp] | 0 | noisy / extrapolated |
| MYMalaysia | 2.6pp | [-4.2pp, 9.4pp] | 0 | noisy / extrapolated |
| MMMyanmar | 1.9pp | [-6.9pp, 10.7pp] | 0 | noisy / extrapolated |
| BDBangladesh | 1.5pp | [-10.7pp, 13.7pp] | 0 | noisy / extrapolated |
| THThailand | 0.6pp | [-3.5pp, 4.7pp] | 0 | noisy / extrapolated |
| KZKazakhstan | 0.5pp | [-0.3pp, 1.2pp] | 8 | signal |
| IDIndonesia | 0.4pp | [-1.8pp, 2.6pp] | 0 | noisy / extrapolated |
| EGEgypt | 0.3pp | [-0.2pp, 0.8pp] | 8 | signal |
| UZUzbekistan | 0.2pp | [-3.3pp, 3.7pp] | 0 | noisy / extrapolated |
| VEVenezuela | -9.6pp | [-15.2pp, -3.9pp] | 8 | signal |
Methodology
We use Double Machine Learning (DML) with a Causal Forest second stage (EconML's CausalForestDML). The DML framework cross-fits two nuisance models — an outcome regression E[Y | W] and a propensity model P(T=1 | W) — and then a causal forest learns the conditional average treatment effect tau(X) = E[Y(1) - Y(0) | X] from residualised data. This makes the estimate doubly robust: it is consistent if either the outcome model or the propensity model is correctly specified.
Treatment
T = 1 if the country has an election in the next 7 days (election_in_7days flag from the forecast feature panel). 40 treated rows in training, across 7 distinct countries (KZ, VN, BD, EG, BY, MM, VE).
Outcome
Y = target_7day — binary indicator: did at least one labelled shutdown event occur for this country in the 7-day window starting at this country-day? Same label as the production XGBoost forecast.
Covariates W
risk_tier(1–5 baseline censorship intensity)month,day_of_week,is_weekend(seasonality)prior_shutdowns_30d(rolling 30-day target sum, shifted)block_rate_lag7(7-day-old block-rate baseline)
Effect modifiers X
- Country one-hot (21 dummies)
risk_tiergdelt_unrest_30d
Identification assumptions
- SUTVA: country i's outcome does not depend on whether country j has an election. Plausible at 7-day horizon.
- Unconfoundedness given W: after controlling for risk tier, seasonality, and lagged severity, election timing is as good as random. Violated if governments call snap elections strategically when censorship infrastructure is ready.
- Positivity: every covariate stratum has a non-zero chance of treatment. Approximated by the DML cross-fit; some country/risk-tier cells are sparse.
Evaluation
We hold out the most recent 120 days of country-days. The held-out ATE is computed two ways:
- Model ATE:
est.ate_inference(X_holdout).conf_int_mean(alpha=0.10). - Empirical ATE: bootstrap-resample the held-out treated and control outcome means 200 times.
CI coverage = fraction of bootstrap empirical ATEs that fall inside the model's 90% CI. Election treatment: 99.5%.
Promote criteria
- CI coverage ≥ 75% on held-out
- ≥ 50% of countries with ≥ 3 events have a CI that excludes zero (signal-to-noise floor)
Election treatment passes both. Protest treatment fails (empirical ATE near zero, CI excludes empirical mean) and is not promoted.
Related
- /sentinel/attribute — single-event synthetic DiD attribution
- /atlas/forecast — calibrated 7-day risk predictions
- /atlas/elections — upcoming election calendar with risk overlay
References
- Athey, S. & Wager, S. (2019). "Estimation and Inference of Heterogeneous Treatment Effects using Random Forests." JASA.
- Chernozhukov, V., Chetverikov, D., Demirer, M., Duflo, E., Hansen, C., Newey, W., & Robins, J. (2018). "Double/debiased machine learning for treatment and structural parameters." Econometrics Journal.
- Microsoft EconML library: econml.azurewebsites.net
API: GET /v1/sentinel/hte?country={cc}&treatment=election · leaderboard /v1/sentinel/hte/leaderboard · info /v1/sentinel/hte/info
Data refreshes every 30 minutes. Model retrained on demand from forecast_training_data.parquet.