{"slug":"why-short-interest-is-two-weeks-old","qid":"lag_stats","label":"The pipeline lag in one row: plus the bulk backfill these figures deliberately exclude","post_title":"Why Short Interest Data Is Always Two Weeks Old","post_url":"/blog/why-short-interest-is-two-weeks-old#q-lag_stats","columns":["settlements_measured","fastest_lag_days","median_lag_days","slowest_lag_days","settlements_bulk_loaded","bulk_load_date"],"rows":[{"settlements_measured":10,"fastest_lag_days":10,"median_lag_days":14,"slowest_lag_days":26,"settlements_bulk_loaded":197,"bulk_load_date":"2026-03-16"}],"shape":"scalar","sql":"WITH first_arrival AS (\n    SELECT settlement_date,\n           toDate(min(_ingest_time)) AS arrived\n    FROM global_markets.stocks_short_interest\n    GROUP BY settlement_date\n),\nbulk_days AS (\n    SELECT arrived\n    FROM first_arrival\n    GROUP BY arrived\n    HAVING count() > 5\n),\norganic AS (\n    SELECT settlement_date,\n           dateDiff('day', settlement_date, arrived) AS lag\n    FROM first_arrival\n    WHERE arrived NOT IN (SELECT arrived FROM bulk_days)\n)\nSELECT count() AS settlements_measured,\n       min(lag) AS fastest_lag_days,\n       round(quantileDeterministic(0.5)(lag, cityHash64(settlement_date)), 1) AS median_lag_days,\n       max(lag) AS slowest_lag_days,\n       (SELECT count() FROM first_arrival WHERE arrived IN (SELECT arrived FROM bulk_days)) AS settlements_bulk_loaded,\n       (SELECT toString(max(arrived)) FROM bulk_days) AS bulk_load_date\nFROM organic","computed_at":"2026-08-22T04:36:30.360914+00:00","elapsed":1.172700412}