{"slug":"market-data-timestamps-explained","qid":"print_trace","label":"The same twelve prints, ranked by venue clock and by tape clock","post_title":"Market Data Timestamps: SIP vs Exchange Clocks","post_url":"/blog/market-data-timestamps-explained#q-print_trace","columns":["print_label","venue_clock_et","tape_clock_et","participant_rank","sip_rank","places_moved","sip_lag_delta_us"],"rows":[{"print_label":"P06","venue_clock_et":"10:44:17.160712","tape_clock_et":"10:44:17.161018","participant_rank":6,"sip_rank":12,"places_moved":6,"sip_lag_delta_us":305.7},{"print_label":"P07","venue_clock_et":"10:44:17.160714","tape_clock_et":"10:44:17.160999","participant_rank":7,"sip_rank":6,"places_moved":1,"sip_lag_delta_us":284.4},{"print_label":"P08","venue_clock_et":"10:44:17.160714","tape_clock_et":"10:44:17.160999","participant_rank":8,"sip_rank":7,"places_moved":1,"sip_lag_delta_us":284.5},{"print_label":"P09","venue_clock_et":"10:44:17.160714","tape_clock_et":"10:44:17.160999","participant_rank":9,"sip_rank":8,"places_moved":1,"sip_lag_delta_us":284.7},{"print_label":"P10","venue_clock_et":"10:44:17.160714","tape_clock_et":"10:44:17.160999","participant_rank":10,"sip_rank":9,"places_moved":1,"sip_lag_delta_us":284.9},{"print_label":"P11","venue_clock_et":"10:44:17.160714","tape_clock_et":"10:44:17.161008","participant_rank":11,"sip_rank":10,"places_moved":1,"sip_lag_delta_us":293.4},{"print_label":"P12","venue_clock_et":"10:44:17.160714","tape_clock_et":"10:44:17.161008","participant_rank":12,"sip_rank":11,"places_moved":1,"sip_lag_delta_us":293.5},{"print_label":"P01","venue_clock_et":"10:44:17.160580","tape_clock_et":"10:44:17.160595","participant_rank":1,"sip_rank":1,"places_moved":0,"sip_lag_delta_us":14.9},{"print_label":"P02","venue_clock_et":"10:44:17.160580","tape_clock_et":"10:44:17.160598","participant_rank":2,"sip_rank":2,"places_moved":0,"sip_lag_delta_us":17.6},{"print_label":"P03","venue_clock_et":"10:44:17.160580","tape_clock_et":"10:44:17.160598","participant_rank":3,"sip_rank":3,"places_moved":0,"sip_lag_delta_us":17.7},{"print_label":"P04","venue_clock_et":"10:44:17.160706","tape_clock_et":"10:44:17.160900","participant_rank":4,"sip_rank":4,"places_moved":0,"sip_lag_delta_us":193.7},{"print_label":"P05","venue_clock_et":"10:44:17.160706","tape_clock_et":"10:44:17.160900","participant_rank":5,"sip_rank":5,"places_moved":0,"sip_lag_delta_us":193.8}],"shape":"table","sql":"WITH\n    burst AS\n    (\n        SELECT intDiv(toUnixTimestamp64Nano(participant_timestamp), 10000000) AS slice_10ms\n        FROM global_markets.stocks_trades\n        WHERE ticker = 'AAPL'\n          AND sip_timestamp >= '2026-06-10 14:30:00'\n          AND sip_timestamp <  '2026-06-10 15:00:00'\n          AND ifNull(toUnixTimestamp64Nano(trf_timestamp), 0) = 0\n        GROUP BY slice_10ms\n        ORDER BY count() DESC, slice_10ms ASC\n        LIMIT 1\n    ),\n    sample AS\n    (\n        SELECT\n            participant_timestamp,\n            sip_timestamp,\n            toUInt64(sequence_number) AS seq,\n            toUnixTimestamp64Nano(sip_timestamp)\n              - toUnixTimestamp64Nano(participant_timestamp) AS lag_ns\n        FROM global_markets.stocks_trades\n        WHERE ticker = 'AAPL'\n          AND sip_timestamp >= '2026-06-10 14:30:00'\n          AND sip_timestamp <  '2026-06-10 15:00:00'\n          AND ifNull(toUnixTimestamp64Nano(trf_timestamp), 0) = 0\n          AND intDiv(toUnixTimestamp64Nano(participant_timestamp), 10000000)\n              IN (SELECT slice_10ms FROM burst)\n        ORDER BY participant_timestamp ASC, seq ASC\n        LIMIT 12\n    ),\n    ranked AS\n    (\n        SELECT\n            participant_timestamp,\n            sip_timestamp,\n            lag_ns,\n            row_number() OVER (ORDER BY participant_timestamp ASC, seq ASC) AS participant_rank,\n            row_number() OVER (ORDER BY sip_timestamp ASC, seq ASC)         AS sip_rank\n        FROM sample\n    )\nSELECT\n    concat('P', leftPad(toString(participant_rank), 2, '0')) AS print_label,\n    concat(formatDateTime(toTimeZone(participant_timestamp, 'America/New_York'), '%H:%i:%S'), '.',\n           leftPad(toString(intDiv(toUnixTimestamp64Nano(participant_timestamp) % 1000000000, 1000)), 6, '0')) AS venue_clock_et,\n    concat(formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S'), '.',\n           leftPad(toString(intDiv(toUnixTimestamp64Nano(sip_timestamp) % 1000000000, 1000)), 6, '0'))         AS tape_clock_et,\n    participant_rank,\n    sip_rank,\n    abs(toInt32(sip_rank) - toInt32(participant_rank)) AS places_moved,\n    round(lag_ns / 1000, 1)                            AS sip_lag_delta_us\nFROM ranked\nORDER BY places_moved DESC, participant_rank ASC","computed_at":"2026-08-14T15:54:51.489256+00:00","elapsed":0.004474075}