Upticks / Downticks#

Let’s mark each trade as an uptick if its price is above the last trade’s price and as a downtick if it’s below.

import onetick.py as otp

def uptick(t):
    if t['PRICE'] == otp.nan or t['PRICE'][-1] == otp.nan:
        return otp.nan
    if t['PRICE'] > t['PRICE'][-1]:
        return 1
    elif t['PRICE'] < t['PRICE'][-1]:
        return -1
    else:
        return 0

trd = otp.DataSource('US_COMP_SAMPLE', tick_type='TRD')
trd = trd[['PRICE']]
trd['UPTICK'] = trd.apply(uptick)
otp.run(
    trd,
    symbols=['AAPL'],
    start=otp.dt(2024, 2, 1, 9, 30),
    end=otp.dt(2024, 2, 1, 9, 30, 1),
)
Time PRICE UPTICK
0 2024-02-01 09:30:00.000961260 184.010 NaN
1 2024-02-01 09:30:00.000961491 184.000 -1.0
2 2024-02-01 09:30:00.000961701 184.000 0.0
3 2024-02-01 09:30:00.000973163 184.000 0.0
4 2024-02-01 09:30:00.000973355 184.000 0.0
... ... ... ...
574 2024-02-01 09:30:00.987184691 183.900 0.0
575 2024-02-01 09:30:00.990378350 183.920 1.0
576 2024-02-01 09:30:00.991941892 183.935 1.0
577 2024-02-01 09:30:00.993785116 183.905 -1.0
578 2024-02-01 09:30:00.996512511 183.934 1.0

579 rows × 3 columns