Query
Saved analyses are materialised by the nightly export from the semantic layer; each shows its latest value, the observations behind it and the formula. The console runs read-only SQL against the same store; the Ask button in the header puts a model in front of it, with every number checked against the record it cites.
Saved analyses
- METR horizon doubling times, both windows and both reliability levels
How fast is the time horizon doubling, and does the answer depend on the window?
108 daysas of 2026-03-05(25 obs)obs:0d21fe65obs:19631991obs:2325ad87obs:261c1f51obs:2eb7c897obs:3466aea4+19 moreOLS on ln(horizon); rows beyond the 16h suite ceiling excluded; CI from the slope standard error.
Formula
python: fits.loglinear
- Constant-hazard misfit
Do the 50% and 80% horizons sit where a constant task-length hazard predicts?
2.04×as of 2026-03-05(2 obs)obs:11a8bbd2obs:858c619bTwo points per model on METR's suite; the constant-hazard model is a null, not a claim.
Formula
SELECT a.as_of_date, (a.value_numeric / b.value_numeric) / 3.1063 AS value, [a.id, b.id] AS obs_ids FROM observations a JOIN observations b ON a.subject = b.subject AND a.as_of_date = b.as_of_date WHERE a.series_key LIKE 'metr.%.horizon_50.pt' AND b.series_key LIKE 'metr.%.horizon_80.pt' AND NOT coalesce(a.disputed, false)
- Concentration by layer
Is any layer fragmenting while its neighbours stay concentrated?
0.35 indexas of 2026-03-31(3 obs)compute_cloudobs:01a2687fobs:5b994889obs:a26cee82Only covered filers; Broadcom, TSMC, Oracle and the neoclouds are absent, so levels overstate concentration. Fiscal quarters mapped to the calendar quarter of their period end. Ramp lab shares allow multi-homing and are normalised to sum to one.
Formula
WITH rev AS ( SELECT date_trunc('quarter', as_of_date) AS cq, subject, value_numeric AS v, id, CASE WHEN subject IN ('nvda', 'amd') THEN 'compute_semis' ELSE 'compute_cloud' END AS layer_id, CASE WHEN subject IN ('nvda', 'amd') THEN 2 ELSE 3 END AS need FROM observations WHERE series_key IN ('sec_seg.nvda.data_center.revenue.q', 'sec_seg.amd.data_center.revenue.q', 'sec_seg.amzn.aws.revenue.q', 'sec_seg.googl.cloud.revenue.q', 'sec_seg.msft.intelligent_cloud.revenue.q')), complete AS (SELECT cq, layer_id FROM rev GROUP BY cq, layer_id, need HAVING count(DISTINCT subject) = need), sh AS (SELECT (r.cq + INTERVAL 3 MONTH - INTERVAL 1 DAY)::DATE AS as_of_date, r.layer_id, r.v / sum(r.v) OVER (PARTITION BY r.cq, r.layer_id) AS s, r.id FROM rev r JOIN complete c USING (cq, layer_id)), lab AS (SELECT as_of_date, 'model' AS layer_id, value_numeric / sum(value_numeric) OVER (PARTITION BY as_of_date) AS s, id FROM observations WHERE series_key LIKE 'ramp.%.business_paid_share.m') SELECT as_of_date, layer_id, sum(s * s) AS value, list(id ORDER BY id) AS obs_ids FROM (SELECT * FROM sh UNION ALL SELECT * FROM lab) GROUP BY 1, 2 - Lab recoupment ratios
How much run-rate has each lab earned per dollar of capital raised?
2.87×as of 2026-08-31(2 obs)obs:89540992obs:b7dae308Tier-5 inputs; excludes debt, compute credits and cloud commitments; run-rates are press-reported annualised months.
Formula
WITH rr AS (SELECT subject, as_of_date, value_numeric AS rev, id FROM observations WHERE series_key LIKE 'epoch.%.revenue_run_rate_usd.pt'), eq AS (SELECT subject, as_of_date, value_numeric AS eq, id FROM observations WHERE series_key LIKE 'epoch.%.round_equity_usd.pt') SELECT rr.as_of_date, rr.subject AS entity, rr.rev / sum(eq.eq) AS value, list_concat([rr.id], list(eq.id ORDER BY eq.id)) AS obs_ids FROM rr JOIN eq ON eq.subject = rr.subject AND eq.as_of_date <= rr.as_of_date GROUP BY rr.as_of_date, rr.subject, rr.rev, rr.id - Labour-tracker concordance
Do the four monthly labour trackers agree?
0as of 2026-07-31(4 obs)obs:2ec713fcobs:83c12befobs:a9276b9dobs:cbb77dc6Different geographies (CA claims vs US employment), different exposure measures; a count, not a test.
Formula
WITH latest AS ( SELECT series_key, value_numeric, as_of_date, id, row_number() OVER (PARTITION BY series_key ORDER BY as_of_date DESC) AS rn FROM observations WHERE series_key IN ('adp_research.us_high_exposure.employment_yoy.m', 'revelio.us_exposed.growth_gap.m', 'cait.ca_high_exposure.claims_3mma_mom.m', 'stanford_del.us_entry_level_exposed.employment_gap.pt')) SELECT max(as_of_date) AS as_of_date, sum(CASE WHEN series_key = 'adp_research.us_high_exposure.employment_yoy.m' AND value_numeric <= -0.03 THEN 1 WHEN series_key = 'revelio.us_exposed.growth_gap.m' AND value_numeric <= -0.10 THEN 1 WHEN series_key = 'cait.ca_high_exposure.claims_3mma_mom.m' AND value_numeric >= 0.05 THEN 1 WHEN series_key = 'stanford_del.us_entry_level_exposed.employment_gap.pt' AND value_numeric >= 0.25 THEN 1 ELSE 0 END)::DOUBLE AS value, list(id ORDER BY id) AS obs_ids FROM latest WHERE rn = 1 - Capex to AI revenue
How far ahead of AI revenue is hyperscaler capex running?
2.51×as of 2026-06-30(16 obs)obs:027237d8obs:143dcf3eobs:196a6174obs:29221e09obs:416fff66obs:4910df35+10 moreHyperscaler capex is not all AI; the revenue side is run-rates (annualised, press-reported) plus one annual survey and double-counts where enterprises buy from labs; grade C by construction.
Formula
WITH capex AS ( SELECT date_trunc('quarter', as_of_date) AS cq, subject, value_numeric AS v, id FROM observations WHERE series_key LIKE 'sec.%.capex.q' AND subject IN ('msft', 'googl', 'amzn', 'meta', 'orcl')), qs AS (SELECT DISTINCT cq FROM capex WHERE cq >= DATE '2024-01-01'), capex4 AS ( SELECT q.cq, sum(c.v) AS v, list(c.id ORDER BY c.id) AS ids FROM qs q JOIN capex c ON c.cq > q.cq - INTERVAL 12 MONTH AND c.cq <= q.cq GROUP BY q.cq HAVING count(DISTINCT c.subject) >= 4), rr AS (SELECT entity_id, as_of_date, value_numeric AS v, id FROM observations WHERE series_key LIKE 'epoch.%.revenue_run_rate_usd.pt' AND entity_id IS NOT NULL), rr_latest AS ( SELECT q.cq, r.entity_id, arg_max(r.v, r.as_of_date) AS v, arg_max(r.id, r.as_of_date) AS id FROM qs q JOIN rr r ON r.as_of_date <= q.cq + INTERVAL 3 MONTH AND r.as_of_date > q.cq - INTERVAL 9 MONTH GROUP BY 1, 2), ent AS (SELECT as_of_date, value_numeric AS v, id FROM observations WHERE series_key = 'menlo.us_enterprise.genai_spend_usd.fy'), ent_latest AS (SELECT q.cq, arg_max(e.v, e.as_of_date) AS v, arg_max(e.id, e.as_of_date) AS id FROM qs q JOIN ent e ON e.as_of_date <= q.cq + INTERVAL 3 MONTH GROUP BY 1) SELECT (c.cq + INTERVAL 3 MONTH - INTERVAL 1 DAY)::DATE AS as_of_date, c.v / ((SELECT sum(v) FROM rr_latest r WHERE r.cq = c.cq) + e.v) AS value, list_distinct(flatten([c.ids, (SELECT list(id) FROM rr_latest r WHERE r.cq = c.cq), [e.id]])) AS obs_ids FROM capex4 c JOIN ent_latest e USING (cq) - Circular financing total
How much circular financing has been signed?
$903Bas of 2026-08-17(14 obs)obs:0020effeobs:15768aa0obs:15f854e5obs:47769aecobs:5b741dc1obs:86bf3cb0+8 moreMixes instruments (equity, guarantees, commitments) with different risk; "up to" and floor values taken at face; cumulative, so it only rises until a row is superseded.
Formula
WITH deals AS ( SELECT as_of_date, value_numeric AS v, id FROM observations WHERE series_key LIKE 'circular.%_usd.pt' AND series_key NOT LIKE '%loi_usd%' AND series_key NOT LIKE '%talks_usd%' AND series_key NOT LIKE '%total_commitments%' AND series_key NOT LIKE '%commercial_rpo%') SELECT last_deal AS as_of_date, sum(v) OVER (ORDER BY q_end) AS value, flatten(list(ids) OVER (ORDER BY q_end)) AS obs_ids FROM (SELECT date_trunc('quarter', as_of_date)::DATE AS q_end, max(as_of_date) AS last_deal, sum(v) AS v, list(id ORDER BY id) AS ids FROM deals GROUP BY 1) - Price per capability
What does a METR-hour of capability cost on OpenRouter?
$0.30as of 2026-09-10(32 obs)obs:03f5354fobs:0862bc67obs:0d21fe65obs:261c1f51obs:2eb7c897obs:37e97a6f+26 moreList prices on one router, prompt tokens only; the horizon is METR's suite, not general capability; only models present in both datasets count; a price series starts on 10 Sep 2026 and records change points, so the trend needs months.
Formula
WITH h AS ( SELECT subject, arg_max(value_numeric, as_of_date) AS minutes, arg_max(id, as_of_date) AS hid FROM observations WHERE series_key LIKE 'metr.%.horizon_50.pt' AND NOT coalesce(disputed, false) GROUP BY subject), p AS (SELECT subject, as_of_date, value_numeric AS usd, id FROM observations WHERE series_key LIKE 'openrouter.%.price_prompt_usd_per_mtok.pt') SELECT p.as_of_date, min(p.usd / (h.minutes / 60)) AS value, list_distinct(flatten(list([p.id, h.hid]))) AS obs_ids FROM p JOIN h USING (subject) GROUP BY p.as_of_date