{"feature_importance":[{"feature":"horizon_days","importance":0.12919840216636658},{"feature":"month_sin","importance":0.11068723350763321},{"feature":"global_30d_events","importance":0.10472018271684647},{"feature":"month_cos","importance":0.09765468537807465},{"feature":"follower_base_rate","importance":0.09538375586271286},{"feature":"follower_90d_events","importance":0.09220441430807114},{"feature":"follower_enc","importance":0.08680064231157303},{"feature":"days_since_follower_last","importance":0.07990104705095291},{"feature":"follower_30d_events","importance":0.06445127725601196},{"feature":"same_auth_cluster","importance":0.035676512867212296},{"feature":"pair_coevents_365d","importance":0.03256774693727493},{"feature":"trigger_enc","importance":0.027370326220989227},{"feature":"trigger_30d_events","importance":0.027290312573313713},{"feature":"same_region","importance":0.016093412414193153}],"honest_caveats":["Pairwise temporal classifier; primary horizon=7d.","Trained on 17622 rows, tested on 9306 rows in last 45d window.","Each row is a (trigger_event, follower_country, horizon) tuple — same trigger appears N-follower times per horizon, so AUC is not strictly per-event but per-pair.","did_follow=1 includes ANY censorship/mixed event in the follower country within H days, which may be coincidental rather than causal contagion. Model can only learn that the joint distribution shifts after the trigger, not establish causality.","Top-chains are TEST-SET averages — they reflect what the model PREDICTS, not what necessarily WILL happen. Use as a forecast prior, not a ground truth.","Sparse positive class (~18% at 7d horizon) means precision @ high-confidence cutoffs is noisy — recommend using the score as a relative ranking, not an absolute probability."],"horizons_days":[3,7,14],"model":"pairwise-xgboost","n_candidate_countries":34,"n_follower_countries":34,"n_significant_pairs":92,"n_trigger_countries":34,"overall_test_ap":0.5134118545225828,"overall_test_auc":0.6983610717603259,"passed_promote_gates":true,"per_horizon_test_metrics":{"3":{"ap":0.34975608080084875,"auc":0.6457041379459076,"brier":0.1413486352273149,"n_test":3102,"pos_rate":0.16795615731785946},"7":{"ap":0.4928577559110649,"auc":0.6696949571962517,"brier":0.18587975807485208,"n_test":3102,"pos_rate":0.25435203094777564},"14":{"ap":0.5972444851313632,"auc":0.691951249794626,"brier":0.22713750929056467,"n_test":3102,"pos_rate":0.3346228239845261}},"primary_horizon_auc":0.6696949571962517,"primary_horizon_days":7,"promote_gate_thresholds":{"min_primary_auc":0.65,"min_significant_pairs":10},"trained_at":"2026-05-21T14:25:41.860469Z","version":"1.0","_voidly_pay":{"claim_did":"https://voidly.ai/pay/claim","for_builders":"https://voidly.ai/pay/for-builders","marketplace":"https://api.voidly.ai/v1/pay/marketplace","live_demo":"https://huggingface.co/spaces/emperor-mew/voidly-pay","universal_proxy":{"url":"https://api.voidly.ai/v1/pay/proxy","example":"https://api.voidly.ai/v1/pay/proxy?u=<https-url>&to=did:voidly:<your-did>&price=0.01","page":"https://voidly.ai/pay/proxy","note":"Paywall any public HTTPS URL with one query param. No SDK install required."},"install":{"typescript":"npm install @voidly/pay","python":"pip install voidly-pay","langchain":"pip install voidly-pay-langchain","vercel_ai":"npm install @voidly/pay-vercel-ai","mcp":"npx @voidly/pay-mcp","cli":"npm install -g @voidly/pay-cli"},"note":"Voidly Pay is the open agent-to-agent payment rail. Claim a DID + 10 starter credits in 60s, or paywall any URL via the universal proxy with one query param."}}