API

Every endpoint is public and CORS-enabled. No API key. Try any endpoint directly below.

Base URL: https://sector-slow.fourieranalys.workers.dev. All responses are JSON. All endpoints are read-only except ?snapshot=1.

Correlation endpoints

GET/_correlation

All surfaced pairs with full statistical fields. This is the primary endpoint.

curl -s "https://sector-slow.fourieranalys.workers.dev/_correlation" | jq '.pairs_count, .pairs_evaluated'

Fields: a, b, r, n, p_value, p_bh, bh_significant, perm_p, ci_low, ci_high, ci_width, provenance, stale_data, verdict, tier, contradiction. Full definitions in methodology.

GET/_correlation?days=N

Stability tracking over the last N snapshots. Shows which pairs persist across days.

Additional fields: days_present, stability_pct, r_mean, r_min, r_max, pareto. Also returns drifts[] (Frobenius distance between consecutive snapshots) and top-level transitivity.

GET/_correlation?snapshot=1

Manually write today's snapshot to _corr_<date>. Idempotent — skips if already written. The cron writes it automatically at 03:57 UTC, so this is only for manual triggers.

Sector endpoints

GET/signal/<sector>

Current value and delta for one sector.

Returns delta (current, previous, pct_change, actual_window_days), context (history_points), sources (healthy/failed), and a pre-formatted summary string.

GET/history/<sector>

Full time-series for one sector. This is what the correlation engine reads.

Returns metric, points, first, last, and history[] array of {t, v} — Unix-millisecond timestamp and value.

Operational endpoints

GET/health

Basic health check. Returns {ok: true} if the worker is up.

GET/health?full=1

Deep health check: cron status, calibration status, shard coverage, audit findings.

Key fields: checks.cron.shards_today.{seen,expected}, checks.cron.last_run, checks.calibration, checks.sectors.shards_merged.

GET/metrics

Pipeline health: how many sectors are tracked, healthy, failing.

Field reference

FieldMeaning
rPearson correlation on detrended residuals
nCommon daily observations (>= 10 required)
p_bhBenjamini-Hochberg adjusted p-value (q=0.05, m≈5000)
bh_significantSurvives multiple-testing correction
perm_pPermutation p-value (2000 shuffles, assumption-free)
ci_widthFisher 95% CI width on r (higher = less confident)
provenanceTwo sources of same underlying metric
stale_dataArtifact of batch-update counters
verdictconfirm:provenance, surface, suppress:*, dispute:*
tierP (provenance) / A / B / C / D
contradictionPrior violated (only fires for known priors)
stability_pctFraction of available days this pair appeared
r_ranger_max - r_min across snapshots
drifts[]Frobenius distance between consecutive snapshots
paretoOn frontier of (stability, |r|) — not dominated by any other pair

Rate limits

No API key, no explicit rate limit. Please be considerate: this runs on Cloudflare Workers Free tier, which allows ~100k requests/day. A single page load of the dashboard makes ~2 requests. Reasonable for exploration and light automation.

CORS

All endpoints send Access-Control-Allow-Origin: *. You can call them from any origin, including a browser on another domain or a static page like this one.

Data freshness

The cron runs 5 shards between 03:17 and 03:57 UTC daily. Data from /history and /signal refreshes nightly. The /_correlation endpoint computes on-demand from current KV state, so it reflects the most recent history points (typically up to yesterday).