{"features":[{"importance":0.5966,"name":"recent_shutdown","rank":1},{"importance":0.0251,"name":"block_rate_roll30_mean","rank":2},{"importance":0.0246,"name":"critical_incident_7d","rank":3},{"importance":0.0198,"name":"protest_last_48h","rank":4},{"importance":0.0193,"name":"week_of_year","rank":5},{"importance":0.0189,"name":"high_importance_event","rank":6},{"importance":0.0181,"name":"month","rank":7},{"importance":0.0173,"name":"election_in_7days","rank":8},{"importance":0.0162,"name":"block_rate_roll14_mean","rank":9},{"importance":0.0161,"name":"block_rate_roll7_mean","rank":10},{"importance":0.0155,"name":"verified_signals_7d","rank":11},{"importance":0.0151,"name":"incident_count_7d","rank":12},{"importance":0.0146,"name":"high_urgency_signals_7d","rank":13},{"importance":0.0138,"name":"blocked_count_roll7_mean","rank":14},{"importance":0.0124,"name":"gdelt_unrest_30d","rank":15},{"importance":0.0116,"name":"gdelt_protests_7d","rank":16},{"importance":0.0115,"name":"risk_tier","rank":17},{"importance":0.0099,"name":"blocked_count_lag2","rank":18},{"importance":0.0095,"name":"block_rate_roll7_std","rank":19},{"importance":0.0095,"name":"gdelt_riots_7d","rank":20},{"importance":0.0091,"name":"block_rate_lag3","rank":21},{"importance":0.0088,"name":"gdelt_conflict_tone_7d","rank":22},{"importance":0.0087,"name":"block_rate_lag7","rank":23},{"importance":0.0087,"name":"block_rate_lag1","rank":24},{"importance":0.0086,"name":"ioda_alert_7d","rank":25},{"importance":0.0085,"name":"blocked_count_lag3","rank":26},{"importance":0.0083,"name":"ooni_anomaly_7d","rank":27},{"importance":0.0074,"name":"blocked_count_roll14_mean","rank":28},{"importance":0.0073,"name":"block_rate_lag14","rank":29},{"importance":0.007,"name":"block_rate_lag2","rank":30},{"importance":0.0066,"name":"blocked_count_lag7","rank":31},{"importance":0.0051,"name":"blocked_count_lag1","rank":32},{"importance":0.0038,"name":"day_of_week","rank":33},{"importance":0.0037,"name":"is_friday","rank":34},{"importance":0.0032,"name":"is_weekend","rank":35},{"importance":0.0,"name":"probe_block_rate_7d","rank":36},{"importance":0.0,"name":"probe_blocked_domains_7d","rank":37},{"importance":0.0,"name":"probe_consensus_flag","rank":38},{"importance":0.0,"name":"probe_method_escalation","rank":39}],"generated_at":"2026-10-06T03:46:37.670291","interpretation":"The forecast model's top feature is gdelt_unrest_30d (0.25) \u2014 protest + conflict signals from the GDELT 1.0 global news feed. recent_shutdown, block_rate rolling means, and incident counts follow. risk_tier \u2014 the leaky country-level encoding that dominated our older classifier at 85% \u2014 contributes only ~2% here. Healthy distribution; no single feature dominates.","model_type":"XGBClassifier (calibrated with isotonic on prod_rolling)","model_version":"v1","n_features":39,"notes":["Importance values come from sklearn feature_importances_ on the underlying XGBoost. They reflect tree-split frequency + gain, NOT SHAP values. For per-prediction SHAP, see /v1/sentinel/current_risk/{country} (planned).","After 2026-05-20 calibration refit, the forecast is honest: see /sentinel/calibration."],"schema":"voidly-sentinel-feature-importance/v1","top_n_sums":{"top_10":0.772,"top_3":0.646,"top_5":0.685}}
