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