{"slug":"market-data-licensing-for-app-developers","qid":"delay_window","label":"delay_window","post_title":"market-data-licensing-for-app-developers","post_url":"/blog/market-data-licensing-for-app-developers#q-delay_window","columns":["et_time","spy_range_pct","ko_range_pct"],"rows":[{"et_time":"09:30","spy_range_pct":0.372,"ko_range_pct":0.958},{"et_time":"09:45","spy_range_pct":0.332,"ko_range_pct":0.523},{"et_time":"10:00","spy_range_pct":0.31,"ko_range_pct":0.504},{"et_time":"10:15","spy_range_pct":0.279,"ko_range_pct":0.38},{"et_time":"10:30","spy_range_pct":0.254,"ko_range_pct":0.402},{"et_time":"10:45","spy_range_pct":0.291,"ko_range_pct":0.346},{"et_time":"11:00","spy_range_pct":0.228,"ko_range_pct":0.33},{"et_time":"11:15","spy_range_pct":0.241,"ko_range_pct":0.249},{"et_time":"11:30","spy_range_pct":0.217,"ko_range_pct":0.291},{"et_time":"11:45","spy_range_pct":0.221,"ko_range_pct":0.253},{"et_time":"12:00","spy_range_pct":0.2,"ko_range_pct":0.206},{"et_time":"12:15","spy_range_pct":0.17,"ko_range_pct":0.245},{"et_time":"12:30","spy_range_pct":0.195,"ko_range_pct":0.223},{"et_time":"12:45","spy_range_pct":0.163,"ko_range_pct":0.23},{"et_time":"13:00","spy_range_pct":0.187,"ko_range_pct":0.225},{"et_time":"13:15","spy_range_pct":0.212,"ko_range_pct":0.192},{"et_time":"13:30","spy_range_pct":0.192,"ko_range_pct":0.214},{"et_time":"13:45","spy_range_pct":0.173,"ko_range_pct":0.178},{"et_time":"14:00","spy_range_pct":0.196,"ko_range_pct":0.208},{"et_time":"14:15","spy_range_pct":0.165,"ko_range_pct":0.215},{"et_time":"14:30","spy_range_pct":0.17,"ko_range_pct":0.205},{"et_time":"14:45","spy_range_pct":0.173,"ko_range_pct":0.18},{"et_time":"15:00","spy_range_pct":0.182,"ko_range_pct":0.235},{"et_time":"15:15","spy_range_pct":0.189,"ko_range_pct":0.232},{"et_time":"15:30","spy_range_pct":0.176,"ko_range_pct":0.296},{"et_time":"15:45","spy_range_pct":0.349,"ko_range_pct":0.415}],"shape":"series","sql":"WITH buckets AS\n(\n    SELECT\n        ticker,\n        toStartOfInterval(window_start, INTERVAL 15 MINUTE) AS bucket,\n        max(toFloat64(high))  AS hi,\n        min(toFloat64(low))   AS lo,\n        avg(toFloat64(close)) AS mid\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'KO')\n      AND window_start >= '2026-06-01 00:00:00'\n      AND window_start <  '2026-07-01 00:00:00'\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) <  960\n    GROUP BY ticker, bucket\n)\nSELECT\n    formatDateTime(toTimeZone(bucket, 'America/New_York'), '%H:%i') AS et_time,\n    round(avgIf((hi - lo) / mid * 100, ticker = 'SPY'), 3)          AS spy_range_pct,\n    round(avgIf((hi - lo) / mid * 100, ticker = 'KO'), 3)           AS ko_range_pct\nFROM buckets\nGROUP BY et_time\nHAVING countIf(ticker = 'SPY') > 0\n   AND countIf(ticker = 'KO') > 0\nORDER BY et_time","computed_at":"2026-10-03T15:11:42.642341+00:00","elapsed":0.003843156}