Point-in-time benchmarks: BBO at different markouts#

Find the prevailing quote at different time intervals (markouts) before/after each trade.

import onetick.py as otp

markouts = [-1, 0, 1, 5, 60, 600]

trd = otp.DataSource('US_COMP_SAMPLE', tick_type='TRD')
trd = trd[['PRICE', 'SIZE']]

qte_by_markout = []
for m in markouts:
    mr = str(m).replace('-', 'm')
    qte = otp.DataSource('US_COMP_SAMPLE',
                         tick_type='NBBO',
                         back_to_first_tick=otp.Hour(24))
    qte = qte[['ASK_PRICE', 'BID_PRICE']]
    qte = qte.rename({'ASK_PRICE': f'ASK_PRICE_{mr}',
                      'BID_PRICE': f'BID_PRICE_{mr}'})
    qte[f'quote_time_{mr}'] = qte['Time']

    # shift the data by m seconds
    qte = qte.time_interval_shift(m * 1000)
    qte_by_markout.append(qte)

trd = otp.join_by_time([trd] + qte_by_markout)
otp.run(
    trd,
    symbols=['AAPL'],
    start=otp.dt(2024, 2, 1, 9, 30),
    end=otp.dt(2024, 2, 1, 9, 30, 1),
    timezone='EST5EDT',
)
Time PRICE SIZE ASK_PRICE_m1 BID_PRICE_m1 quote_time_m1 ASK_PRICE_0 BID_PRICE_0 quote_time_0 ASK_PRICE_1 BID_PRICE_1 quote_time_1 ASK_PRICE_5 BID_PRICE_5 quote_time_5 ASK_PRICE_60 BID_PRICE_60 quote_time_60 ASK_PRICE_600 BID_PRICE_600 quote_time_600
0 2024-02-01 09:30:00.000961260 184.010 302 184.29 184.14 2024-02-01 09:29:59.000000000 184.14 184.00 2024-02-01 09:30:00.000860953 183.93 183.89 2024-02-01 09:30:01.000000000 184.35 184.30 2024-02-01 09:30:05.000000000 184.31 184.26 2024-02-01 09:31:00.000000000 185.16 185.14 2024-02-01 09:40:00.000000000
1 2024-02-01 09:30:00.000961491 184.000 100 184.29 184.14 2024-02-01 09:29:59.000000000 184.14 184.00 2024-02-01 09:30:00.000860953 183.93 183.89 2024-02-01 09:30:01.000000000 184.35 184.30 2024-02-01 09:30:05.000000000 184.31 184.26 2024-02-01 09:31:00.000000000 185.16 185.14 2024-02-01 09:40:00.000000000
2 2024-02-01 09:30:00.000961701 184.000 1 184.29 184.14 2024-02-01 09:29:59.000000000 184.14 184.00 2024-02-01 09:30:00.000860953 183.93 183.89 2024-02-01 09:30:01.000000000 184.35 184.30 2024-02-01 09:30:05.000000000 184.31 184.26 2024-02-01 09:31:00.000000000 185.16 185.14 2024-02-01 09:40:00.000000000
3 2024-02-01 09:30:00.000973163 184.000 1 184.29 184.14 2024-02-01 09:29:59.000000000 184.14 183.90 2024-02-01 09:30:00.000969529 183.93 183.89 2024-02-01 09:30:01.000000000 184.35 184.30 2024-02-01 09:30:05.000000000 184.31 184.26 2024-02-01 09:31:00.000000000 185.16 185.14 2024-02-01 09:40:00.000000000
4 2024-02-01 09:30:00.000973355 184.000 5 184.29 184.14 2024-02-01 09:29:59.000000000 184.14 183.90 2024-02-01 09:30:00.000969529 183.93 183.89 2024-02-01 09:30:01.000000000 184.35 184.30 2024-02-01 09:30:05.000000000 184.31 184.26 2024-02-01 09:31:00.000000000 185.16 185.14 2024-02-01 09:40:00.000000000
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
574 2024-02-01 09:30:00.987184691 183.900 9 184.14 184.00 2024-02-01 09:29:59.972347877 183.93 183.89 2024-02-01 09:30:00.973387417 183.98 183.91 2024-02-01 09:30:01.955975928 184.17 184.10 2024-02-01 09:30:05.980208696 184.30 184.26 2024-02-01 09:31:00.958368208 185.15 185.13 2024-02-01 09:40:00.981049329
575 2024-02-01 09:30:00.990378350 183.920 1 184.14 184.00 2024-02-01 09:29:59.972347877 183.93 183.89 2024-02-01 09:30:00.987461418 183.98 183.91 2024-02-01 09:30:01.955975928 184.17 184.10 2024-02-01 09:30:05.980208696 184.30 184.26 2024-02-01 09:31:00.958368208 185.15 185.13 2024-02-01 09:40:00.989520212
576 2024-02-01 09:30:00.991941892 183.935 1 184.14 184.00 2024-02-01 09:29:59.972347877 183.93 183.89 2024-02-01 09:30:00.987461418 183.98 183.91 2024-02-01 09:30:01.955975928 184.23 184.12 2024-02-01 09:30:05.991820274 184.30 184.26 2024-02-01 09:31:00.958368208 185.15 185.13 2024-02-01 09:40:00.989520212
577 2024-02-01 09:30:00.993785116 183.905 300 184.14 184.00 2024-02-01 09:29:59.972347877 183.93 183.89 2024-02-01 09:30:00.987461418 183.98 183.91 2024-02-01 09:30:01.955975928 184.23 184.13 2024-02-01 09:30:05.992801135 184.30 184.26 2024-02-01 09:31:00.958368208 185.15 185.13 2024-02-01 09:40:00.989520212
578 2024-02-01 09:30:00.996512511 183.934 5 184.14 184.00 2024-02-01 09:29:59.972347877 183.93 183.89 2024-02-01 09:30:00.987461418 183.98 183.91 2024-02-01 09:30:01.955975928 184.23 184.13 2024-02-01 09:30:05.996012263 184.30 184.26 2024-02-01 09:31:00.958368208 185.15 185.13 2024-02-01 09:40:00.996424703

579 rows × 21 columns