{"slug":"sip-vs-direct-exchange-feeds","qid":"sip_hop_latency","label":"Venue clock to consolidated tape clock, KO quotes on June 16, 2026","post_title":"SIP Feeds vs Direct Exchange Feeds","post_url":"/blog/sip-vs-direct-exchange-feeds#q-sip_hop_latency","columns":["et_time","median_hop_us","p95_hop_us","quote_update_count"],"rows":[{"et_time":"09:00","median_hop_us":33.7,"p95_hop_us":350.2,"quote_update_count":234},{"et_time":"09:30","median_hop_us":393.9,"p95_hop_us":481.4,"quote_update_count":35260},{"et_time":"10:00","median_hop_us":403.8,"p95_hop_us":944,"quote_update_count":66543},{"et_time":"10:30","median_hop_us":403.9,"p95_hop_us":539.6,"quote_update_count":56232},{"et_time":"11:00","median_hop_us":407.8,"p95_hop_us":604,"quote_update_count":34352},{"et_time":"11:30","median_hop_us":406.7,"p95_hop_us":862.7,"quote_update_count":35607},{"et_time":"12:00","median_hop_us":408.4,"p95_hop_us":503.6,"quote_update_count":29427},{"et_time":"12:30","median_hop_us":408.2,"p95_hop_us":513.6,"quote_update_count":24500},{"et_time":"13:00","median_hop_us":408,"p95_hop_us":524.8,"quote_update_count":15755},{"et_time":"13:30","median_hop_us":409.3,"p95_hop_us":491.8,"quote_update_count":12721},{"et_time":"14:00","median_hop_us":408.8,"p95_hop_us":490.7,"quote_update_count":11896},{"et_time":"14:30","median_hop_us":405.3,"p95_hop_us":481,"quote_update_count":14095},{"et_time":"15:00","median_hop_us":405.8,"p95_hop_us":525.6,"quote_update_count":18501},{"et_time":"15:30","median_hop_us":394.4,"p95_hop_us":862.2,"quote_update_count":35466},{"et_time":"16:00","median_hop_us":28.1,"p95_hop_us":1028.6,"quote_update_count":229}],"shape":"series","sql":"SELECT\n    formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,\n    round(quantileDeterministic(0.5)(toFloat64(toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000, toUInt64(sequence_number)), 1)  AS median_hop_us,\n    round(quantileDeterministic(0.95)(toFloat64(toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000, toUInt64(sequence_number)), 1) AS p95_hop_us,\n    count()                                                                                                       AS quote_update_count\nFROM global_markets.cache_stocks_quotes\nWHERE ticker = 'KO'\n  AND sip_timestamp >= '2026-06-16 12:00:00'\n  AND sip_timestamp <  '2026-06-16 22:00:00'\n  AND toUnixTimestamp64Nano(participant_timestamp) > 0\nGROUP BY et_time\nHAVING quote_update_count >= 200\nORDER BY et_time","computed_at":"2026-08-09T14:56:20.359839+00:00","elapsed":0.003135595}