{"components":{"calibration_drift_factor":"abs(calibration_drift_pp) / 100 from the daily per-country calibration drift monitor.","conformal_interval_width":"Half-width of the 90% prediction interval served by the live model. For the 7-day forecast we use the ACI `q_applied` value (online-updated). For multi-horizon we use the static per-horizon halfwidth. For the classifier (no native conformal) we use a proxy: distance from the per-country threshold, capped at 0.5.","cross_model_disagreement":"1 - cross_model_agreement, where agreement = 1 - stdev(today's forecast-7day, multi-horizon-7d, classifier v3.3) / 0.5. If three models disagree wildly, uncertainty rises.","data_age_factor":"1 - exp(-age_days / 7) where age_days is days since the most recent evidence row for this country. Older = more uncertain.","sample_size_factor":"1 / (1 + sqrt(n_observations)) where n_observations = count of forecasts logged in the trailing 90 days."},"description":"Per-(country, model) uncertainty score for today's prediction. Composite of conformal interval width (0.30), data freshness (0.20), calibration drift (0.20), sample size (0.15), and cross-model disagreement (0.15). Higher = more uncertain.","endpoint":"/v1/atlas/uncertainty/{cc}","honest_caveats":["This is a HEURISTIC composite, not a formal Bayesian posterior. Components are normalized to [0,1] and combined linearly with hand-tuned weights.","Weights are NOT learned from data. We chose them by prior intuition: model-internal uncertainty (conformal width) gets the heaviest weight, then evidence freshness + calibration drift, then sample-size + cross-model disagreement.","'Uncertain' prediction does NOT mean 'wrong' — it means 'lower confidence'. A high-uncertainty country may still be correct; it just lacks the signal-density / track-record / model-agreement to back the call strongly.","Cross-model disagreement uses three signals that target slightly different events (7d-forward forecast vs day-level classifier). Stdev of three numbers is a coarse signal.","Data freshness uses evidence.observed_at, not incidents. A country with no recent evidence row gets a freshness penalty even if older OONI/IODA signals are still meaningful.","Classifier conformal proxy is distance-to-threshold capped at 0.5, NOT a true conformal half-width. The v3.3 classifier doesn't ship a native conformal interval."],"least_uncertain_today":"RU","most_uncertain_endpoint":"/v1/atlas/uncertainty/most-uncertain","most_uncertain_today":"SD","n_countries":30,"refresh":"daily at 05:15 UTC via cron","sidecar_last_modified":"2026-05-22T05:15:05Z","sidecar_path":"/opt/voidly-ai/ml-deploy/per_day_uncertainty_v1.json","sidecar_size_bytes":118453,"weights":{"calibration_drift_factor":0.2,"conformal_interval_width":0.3,"cross_model_disagreement":0.15,"data_age_factor":0.2,"sample_size_factor":0.15},"_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."}}