For every asset we have market data on (crypto, stocks, and sports next), score every social metric by how well it leads price. A ranked panel on the asset page, and a correlation line right on the chart. All math below runs live in your browser.
Every metric ranked by in-sample predictive power in the window you're looking at. Positive means the metric rising leads price up; negative means it leads price down (a contrarian signal is still a signal).
Same math, no per-asset tuning. Click a row to load it above. Signals differ by asset, and that's the point: the panel tells you what to watch for this asset.
A game's moneyline is a price. The moment we carry odds time-series next to team/player social metrics, this exact code scores "does a surge in Chiefs mentions move the line before the market does?" Zero new math, just a new asset type.
This demo computes everything client-side to prove the math is cheap. In production it's one nightly pass per asset.
For each asset: pull daily series, transform to changes, score 12 metrics × 8 leads + rolling windows. ~5ms per asset; the whole universe is minutes.
/correlations/v1Ranked metrics with lead time, strength, significance, and the rolling series. Also a sellable endpoint on its own (x402 / enterprise API).
The ranked module from this page drops in next to the metric chips. Chips get a small lead badge: the "why should I care" for every metric.
Rolling correlation as a chart overlay pane, same as this demo. When the line regime-shifts, that's a story users screenshot. (Brief band-exits happen by chance; sustained multi-window shifts are the story.)
Three decisions that keep this honest: the difference between a signal and a chart crime.
Two series that both trend up always "correlate." We correlate daily changes against forward returns, so a high score means the metric's moves lead price moves, not that both went up this year. (The "Levels" toggle above shows the naive version for comparison.)
Social data spikes 50× on viral days. Changes are log-scaled and winsorized at the 1st/99th percentile so one Doge meme doesn't fabricate a year of "signal." AltRank is inverted so improving rank reads positive. Clip bounds are fit on the full year in this demo; production would fit them on trailing data only.
Heatmap cells are single tests at |r| > 1.96/√n. Every "best lead" badge is held to a stricter selection-adjusted bar (2.69/√n over the 7 lags searched; 3.2/√n for the cross-asset pick, calibrated on a correlated-test null) so cherry-picking the max can't manufacture signal. The bar stays valid at multi-day leads because the metric-change series are serially near-uncorrelated (worst-case empirical false-positive rate ~5%, checked). Grey means "not distinguishable from noise" and the UI says so. In-sample correlation is still not tradeable alpha: the next step is walk-forward testing, and this panel is designed to survive that conversation.