Skip to content
Slow Variables

Ask the data

Answers come from the same store as the site; every number is checked against the record it cites.

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 more

    OLS 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:858c619b

    Two 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)
    
  • Margin stack by layer

    Where in the stack does filed operating income bulge?

    57.3%as of 2026-06-30(8 obs)compute_semis
    obs:288c79d6obs:815ceb0bobs:87068884obs:89c26630obs:a3832632obs:d271f3bf+2 more

    Fiscal quarters mapped to the calendar quarter of their period end (NVIDIA's late-July quarter counts as Q3); a filer's unreported fiscal Q4 is filled as fiscal year minus its three reported quarters and cites all four filings; quarters where any of the five segments is still missing are dropped; segment operating income, not gross profit; only two layers so far.

    Formula
    WITH q AS (
      SELECT subject, series_key, as_of_date, period_start, value_numeric AS v, id
      FROM observations WHERE series_key LIKE 'sec_seg.%.operating_income.q'),
    fy AS (
      SELECT subject, replace(series_key, '.fy', '.q') AS series_key, as_of_date, period_start, value_numeric AS v, id
      FROM observations WHERE series_key LIKE 'sec_seg.%.operating_income.fy'),
    fill AS (  -- FY minus the three quarters inside it, when exactly three are reported
      SELECT fy.subject, fy.series_key, fy.as_of_date, fy.v - sum(q.v) AS v, list_prepend(fy.id, list(q.id ORDER BY q.id)) AS ids
      FROM fy JOIN q ON q.subject = fy.subject AND q.series_key = fy.series_key
                     AND q.as_of_date > fy.period_start AND q.as_of_date < fy.as_of_date
      GROUP BY fy.subject, fy.series_key, fy.as_of_date, fy.v, fy.id
      HAVING count(*) = 3 AND NOT EXISTS (SELECT 1 FROM q q2 WHERE q2.series_key = fy.series_key AND q2.as_of_date = fy.as_of_date)),
    allq AS (
      SELECT subject, as_of_date, v, [id] AS ids FROM q
      UNION ALL SELECT subject, as_of_date, v, ids FROM fill),
    seg AS (
      SELECT date_trunc('quarter', as_of_date) AS cq, subject, v, ids,
             CASE WHEN subject IN ('nvda', 'amd') THEN 'compute_semis' ELSE 'compute_cloud' END AS layer_id
      FROM allq),
    complete AS (SELECT cq FROM seg GROUP BY cq HAVING count(DISTINCT subject) = 5),
    by_layer AS (SELECT s.cq, s.layer_id, sum(v) AS oi, flatten(list(ids)) AS ids FROM seg s JOIN complete c USING (cq) GROUP BY 1, 2)
    SELECT (cq + INTERVAL 3 MONTH - INTERVAL 1 DAY)::DATE AS as_of_date, layer_id, oi / sum(oi) OVER (PARTITION BY cq) AS value,
           list_distinct(flatten(list(ids) OVER (PARTITION BY cq))) AS obs_ids
    FROM by_layer
    
  • Concentration by layer

    Is any layer fragmenting while its neighbours stay concentrated?

    0.35 indexas of 2026-03-31(3 obs)compute_cloud
    obs:01a2687fobs:5b994889obs:a26cee82

    Only 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:b7dae308

    Tier-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:cbb77dc6

    Different 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 more

    Hyperscaler 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 more

    Mixes 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 more

    List 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
    
  • Frontier share of venture dollars

    What share of tracked venture dollars goes to the frontier labs?

    94.8%as of 2026-06-30(32 obs)
    obs:021fc48dobs:03a62453obs:08c5c905obs:0f018dc2obs:14dda4d0obs:15d383db+26 more

    Denominator is the seed list, not the market; frontier rounds are mostly Epoch (tier 5) because the labs raise through vehicles that do not file Form D.

    Formula
    WITH f AS (SELECT entity_id, as_of_date, value_numeric AS v, id FROM observations WHERE series_key LIKE 'formd.%.amount_sold_usd.pt' AND entity_id IS NOT NULL),
    e AS (SELECT entity_id, as_of_date, value_numeric AS v, id FROM observations WHERE series_key LIKE 'epoch.%.round_equity_usd.pt' AND entity_id IS NOT NULL),
    rounds AS (SELECT * FROM f UNION ALL SELECT * FROM e WHERE NOT EXISTS (SELECT 1 FROM f WHERE f.entity_id = e.entity_id AND date_trunc('quarter', f.as_of_date) = date_trunc('quarter', e.as_of_date))),
    m AS (SELECT entity_id, sublayer_id FROM entity_membership WHERE is_primary AND sublayer_id IS NOT NULL),
    q AS (SELECT date_trunc('quarter', r.as_of_date) AS cq, m.sublayer_id, r.v, r.id FROM rounds r JOIN m USING (entity_id) WHERE r.as_of_date >= DATE '2023-01-01'),
    qs AS (SELECT DISTINCT cq FROM q)
    SELECT (qs.cq + INTERVAL 3 MONTH - INTERVAL 1 DAY)::DATE AS as_of_date,
           sum(CASE WHEN q.sublayer_id = 'frontier_labs' THEN q.v ELSE 0 END) / sum(q.v) AS value,
           list(q.id ORDER BY q.id) AS obs_ids
    FROM qs JOIN q ON q.cq > qs.cq - INTERVAL 12 MONTH AND q.cq <= qs.cq GROUP BY 1 HAVING sum(q.v) > 0
    

Console

Read-only, 200 rows, five seconds. Tables: observations, derived, status_events, indicators, metrics.