{"slug":"us-market-volume-by-hour-german-time","qid":"spreads_berliner_stunden","label":"spreads_berliner_stunden","post_title":"us-market-volume-by-hour-german-time","post_url":"/blog/lang/de/us-market-volume-by-hour-german-time#q-spreads_berliner_stunden","columns":["berlin_time","spread_aapl_bps","spread_ko_bps","aufschlag_faktor_aapl","rang_breite"],"rows":[{"berlin_time":"15:30-16:30","spread_aapl_bps":1.79,"spread_ko_bps":2.26,"aufschlag_faktor_aapl":1.99,"rang_breite":1},{"berlin_time":"16:30-17:30","spread_aapl_bps":1.2,"spread_ko_bps":1.13,"aufschlag_faktor_aapl":1.33,"rang_breite":4},{"berlin_time":"17:30-18:30","spread_aapl_bps":1.2,"spread_ko_bps":1.13,"aufschlag_faktor_aapl":1.33,"rang_breite":3},{"berlin_time":"18:30-19:30","spread_aapl_bps":0.9,"spread_ko_bps":1.13,"aufschlag_faktor_aapl":1,"rang_breite":6},{"berlin_time":"19:30-20:30","spread_aapl_bps":0.9,"spread_ko_bps":1.13,"aufschlag_faktor_aapl":1,"rang_breite":7},{"berlin_time":"20:30-21:30","spread_aapl_bps":1.5,"spread_ko_bps":1.13,"aufschlag_faktor_aapl":1.67,"rang_breite":2},{"berlin_time":"21:30-22:00","spread_aapl_bps":0.9,"spread_ko_bps":1.14,"aufschlag_faktor_aapl":1,"rang_breite":5}],"shape":"series","sql":"SELECT\n    berlin_time,\n    spread_aapl_bps,\n    spread_ko_bps,\n    round(spread_aapl_bps / min(spread_aapl_bps) OVER (), 2)   AS aufschlag_faktor_aapl,\n    row_number() OVER (ORDER BY spread_aapl_bps DESC)          AS rang_breite\nFROM\n(\n    SELECT\n        intDiv(berlin_minute - 930, 60) AS bucket,\n        concat(\n            leftPad(toString(intDiv(930 + 60 * bucket, 60)), 2, '0'), ':',\n            leftPad(toString(modulo(930 + 60 * bucket, 60)), 2, '0'), '-',\n            leftPad(toString(intDiv(least(990 + 60 * bucket, 1320), 60)), 2, '0'), ':',\n            leftPad(toString(modulo(least(990 + 60 * bucket, 1320), 60)), 2, '0')\n        )                               AS berlin_time,\n        round(quantileDeterministicIf(0.5)(spread_bps, sequence_number, ticker = 'AAPL'), 2) AS spread_aapl_bps,\n        round(quantileDeterministicIf(0.5)(spread_bps, sequence_number, ticker = 'KO'), 2)   AS spread_ko_bps\n    FROM\n    (\n        SELECT\n            ticker,\n            toUInt64(sequence_number) AS sequence_number,\n            toHour(toTimeZone(sip_timestamp, 'Europe/Berlin')) * 60\n                + toMinute(toTimeZone(sip_timestamp, 'Europe/Berlin')) AS berlin_minute,\n            10000 * (toFloat64(ask_price) - toFloat64(bid_price))\n                  / (0.5 * (toFloat64(ask_price) + toFloat64(bid_price))) AS spread_bps\n        FROM global_markets.cache_stocks_quotes\n        WHERE ticker IN ('AAPL', 'KO')\n          AND sip_timestamp >= '2026-09-16 13:30:00'\n          AND sip_timestamp <  '2026-09-16 20:00:00'\n          AND bid_price > 0\n          AND ask_price > bid_price\n    )\n    WHERE berlin_minute >= 930 AND berlin_minute < 1320\n    GROUP BY bucket, berlin_time\n    HAVING countIf(ticker = 'AAPL') > 0 AND countIf(ticker = 'KO') > 0\n)\nORDER BY bucket","computed_at":"2026-10-01T15:38:16.863737+00:00","elapsed":0.003966055}