Basics#
This section contains 14 examples for Basics using the onetick-py.
Each example is a self-contained script that can be run against the OneTick Cloud sample databases.
# onetick-py WebAPI configuration for OneTick Cloud
import os
os.environ['OTP_WEBAPI'] = '1'
os.environ['OTP_HTTP_ADDRESS'] = 'https://rest.cloud.onetick.com'
os.environ['OTP_ACCESS_TOKEN_URL'] = 'https://cloud-auth.parent.onetick.com/realms/OMD/protocol/openid-connect/token'
os.environ['OTP_CLIENT_ID'] = '__FILL_IN__'
os.environ['OTP_CLIENT_SECRET'] = '__FILL_IN__'
Data Retrieval#
Retrieve Exchange trades from the US_COMP_SAMPLE database for CSCO, across the specified time range.
import onetick.py as otp
# Define Data Source, with Database and Table
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
# Specify Symbol, Time Range, and Time Zone
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 30, 1),
timezone='America/New_York',
symbols='CSCO')
result
| Time | EXCHANGE | COND | STOP_STOCK | SOURCE | TRF | TTE | TICKER | PRICE | DELETED_TIME | TICK_STATUS | SIZE | CORR | SEQ_NUM | TRADE_ID | PARTICIPANT_TIME | TRF_TIME | OMDSEQ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2024-01-03 09:30:00.065443591 | Z | @ I | N | 0 | CSCO | 50.02 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 169103 | 42 | 2024-01-03 09:30:00.065250000 | 1969-12-31 19:00:00 | 0 | ||
| 1 | 2024-01-03 09:30:00.111130049 | Z | @ I | N | 0 | CSCO | 50.16 | 1969-12-31 19:00:00 | 0 | 3 | 0 | 169148 | 43 | 2024-01-03 09:30:00.110938000 | 1969-12-31 19:00:00 | 0 | ||
| 2 | 2024-01-03 09:30:00.127459523 | V | @ | N | 0 | CSCO | 50.17 | 1969-12-31 19:00:00 | 0 | 100 | 0 | 169181 | 13 | 2024-01-03 09:30:00.065044730 | 1969-12-31 19:00:00 | 0 | ||
| 3 | 2024-01-03 09:30:00.128498068 | Z | @F I | N | 1 | CSCO | 50.17 | 1969-12-31 19:00:00 | 0 | 5 | 0 | 169182 | 44 | 2024-01-03 09:30:00.128306000 | 1969-12-31 19:00:00 | 0 | ||
| 4 | 2024-01-03 09:30:00.135190071 | Q | @FTI | N | 1 | CSCO | 50.13 | 1969-12-31 19:00:00 | 0 | 46 | 0 | 169193 | 349 | 2024-01-03 09:30:00.135173836 | 1969-12-31 19:00:00 | 0 | ||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 145 | 2024-01-03 09:30:00.999507511 | Q | @ I | N | 0 | CSCO | 50.09 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 172569 | 396 | 2024-01-03 09:30:00.999433768 | 1969-12-31 19:00:00 | 2 | ||
| 146 | 2024-01-03 09:30:00.999511419 | Q | @ | N | 0 | CSCO | 50.09 | 1969-12-31 19:00:00 | 0 | 200 | 0 | 172570 | 397 | 2024-01-03 09:30:00.999433768 | 1969-12-31 19:00:00 | 3 | ||
| 147 | 2024-01-03 09:30:00.999512020 | Q | @ | N | 0 | CSCO | 50.09 | 1969-12-31 19:00:00 | 0 | 300 | 0 | 172571 | 398 | 2024-01-03 09:30:00.999433768 | 1969-12-31 19:00:00 | 4 | ||
| 148 | 2024-01-03 09:30:00.999553801 | P | @ I | N | 0 | CSCO | 50.09 | 1969-12-31 19:00:00 | 0 | 87 | 0 | 172574 | 312 | 2024-01-03 09:30:00.999210245 | 1969-12-31 19:00:00 | 5 | ||
| 149 | 2024-01-03 09:30:00.999590600 | Q | @F | N | 1 | CSCO | 50.09 | 1969-12-31 19:00:00 | 0 | 500 | 0 | 172575 | 399 | 2024-01-03 09:30:00.999572740 | 1969-12-31 19:00:00 | 6 |
150 rows × 18 columns
First N Rows#
Retrieve the first 100 trades for CSCO from the US_COMP_SAMPLE database, across the specified time range.
import onetick.py as otp
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
# Return first 100 Rows
data = data.limit(100)
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols='CSCO')
result
| Time | EXCHANGE | COND | STOP_STOCK | SOURCE | TRF | TTE | TICKER | PRICE | DELETED_TIME | TICK_STATUS | SIZE | CORR | SEQ_NUM | TRADE_ID | PARTICIPANT_TIME | TRF_TIME | OMDSEQ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2024-01-03 09:30:00.065443591 | Z | @ I | N | 0 | CSCO | 50.0200 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 169103 | 42 | 2024-01-03 09:30:00.065250000 | 1969-12-31 19:00:00.000000000 | 0 | ||
| 1 | 2024-01-03 09:30:00.111130049 | Z | @ I | N | 0 | CSCO | 50.1600 | 1969-12-31 19:00:00 | 0 | 3 | 0 | 169148 | 43 | 2024-01-03 09:30:00.110938000 | 1969-12-31 19:00:00.000000000 | 0 | ||
| 2 | 2024-01-03 09:30:00.127459523 | V | @ | N | 0 | CSCO | 50.1700 | 1969-12-31 19:00:00 | 0 | 100 | 0 | 169181 | 13 | 2024-01-03 09:30:00.065044730 | 1969-12-31 19:00:00.000000000 | 0 | ||
| 3 | 2024-01-03 09:30:00.128498068 | Z | @F I | N | 1 | CSCO | 50.1700 | 1969-12-31 19:00:00 | 0 | 5 | 0 | 169182 | 44 | 2024-01-03 09:30:00.128306000 | 1969-12-31 19:00:00.000000000 | 0 | ||
| 4 | 2024-01-03 09:30:00.135190071 | Q | @FTI | N | 1 | CSCO | 50.1300 | 1969-12-31 19:00:00 | 0 | 46 | 0 | 169193 | 349 | 2024-01-03 09:30:00.135173836 | 1969-12-31 19:00:00.000000000 | 0 | ||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 95 | 2024-01-03 09:30:00.897416820 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 51 | 0 | 171857 | 365 | 2024-01-03 09:30:00.897398456 | 1969-12-31 19:00:00.000000000 | 3 | ||
| 96 | 2024-01-03 09:30:00.897444128 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 29 | 0 | 171858 | 366 | 2024-01-03 09:30:00.897428791 | 1969-12-31 19:00:00.000000000 | 4 | ||
| 97 | 2024-01-03 09:30:00.897474806 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 12 | 0 | 171859 | 367 | 2024-01-03 09:30:00.897456284 | 1969-12-31 19:00:00.000000000 | 5 | ||
| 98 | 2024-01-03 09:30:00.897476583 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 171860 | 368 | 2024-01-03 09:30:00.897456284 | 1969-12-31 19:00:00.000000000 | 6 | ||
| 99 | 2024-01-03 09:30:00.897670983 | D | @ | N | Q | 0 | CSCO | 50.0797 | 1969-12-31 19:00:00 | 0 | 100 | 0 | 171862 | 100 | 2024-01-03 09:30:00.896374950 | 2024-01-03 09:30:00.897637536 | 7 |
100 rows × 18 columns
Selecting Fields#
Retrieve Trades specifying selected fields as an array of fields from the returned data source.
import onetick.py as otp
# Define the Data Source specifying the Database and Table
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
# Specify the fields to return
data = data[['PRICE', 'SIZE']]
# Return first 100 Rows
data = data.limit(100)
# Run the Query for the defined Symbol and Time Window
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols='CSCO')
result
| Time | PRICE | SIZE | |
|---|---|---|---|
| 0 | 2024-01-03 09:30:00.065443591 | 50.0200 | 2 |
| 1 | 2024-01-03 09:30:00.111130049 | 50.1600 | 3 |
| 2 | 2024-01-03 09:30:00.127459523 | 50.1700 | 100 |
| 3 | 2024-01-03 09:30:00.128498068 | 50.1700 | 5 |
| 4 | 2024-01-03 09:30:00.135190071 | 50.1300 | 46 |
| ... | ... | ... | ... |
| 95 | 2024-01-03 09:30:00.897416820 | 50.0800 | 51 |
| 96 | 2024-01-03 09:30:00.897444128 | 50.0800 | 29 |
| 97 | 2024-01-03 09:30:00.897474806 | 50.0800 | 12 |
| 98 | 2024-01-03 09:30:00.897476583 | 50.0800 | 2 |
| 99 | 2024-01-03 09:30:00.897670983 | 50.0797 | 100 |
100 rows × 3 columns
Adding Calculated Fields#
Retrieve Trades adding a calculated field to the data source.
import onetick.py as otp
# Define Data Source
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
# Limit Schema
data = data[['PRICE', 'SIZE']]
# Add Calculated Field
data['TRADED_VALUE'] = data['PRICE'] * data['SIZE']
# Return first 100 Rows
data = data.limit(100)
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols='CSCO')
result
| Time | PRICE | SIZE | TRADED_VALUE | |
|---|---|---|---|---|
| 0 | 2024-01-03 09:30:00.065443591 | 50.0200 | 2 | 100.04 |
| 1 | 2024-01-03 09:30:00.111130049 | 50.1600 | 3 | 150.48 |
| 2 | 2024-01-03 09:30:00.127459523 | 50.1700 | 100 | 5017.00 |
| 3 | 2024-01-03 09:30:00.128498068 | 50.1700 | 5 | 250.85 |
| 4 | 2024-01-03 09:30:00.135190071 | 50.1300 | 46 | 2305.98 |
| ... | ... | ... | ... | ... |
| 95 | 2024-01-03 09:30:00.897416820 | 50.0800 | 51 | 2554.08 |
| 96 | 2024-01-03 09:30:00.897444128 | 50.0800 | 29 | 1452.32 |
| 97 | 2024-01-03 09:30:00.897474806 | 50.0800 | 12 | 600.96 |
| 98 | 2024-01-03 09:30:00.897476583 | 50.0800 | 2 | 100.16 |
| 99 | 2024-01-03 09:30:00.897670983 | 50.0797 | 100 | 5007.97 |
100 rows × 4 columns
Adding Filters#
Retrieve Trades, filtered by exchange and trade size.
import onetick.py as otp
# Define Data Source
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
# Limit Schema
data = data[['PRICE', 'SIZE', 'EXCHANGE']]
# Add Calculated Fields
data['TRADED_VALUE'] = data['PRICE'] * data['SIZE']
# Filter Fields
data = data.where((data['EXCHANGE'] == 'N') & (data['SIZE'] > 100))
# Return first 100 Rows
data = data.limit(100)
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols='CSCO')
result
| Time | PRICE | SIZE | EXCHANGE | TRADED_VALUE | |
|---|---|---|---|---|---|
| 0 | 2024-01-03 09:30:02.371760827 | 50.13 | 127 | N | 6366.51 |
| 1 | 2024-01-03 09:30:19.325065423 | 50.13 | 337 | N | 16893.81 |
| 2 | 2024-01-03 09:30:19.701084742 | 50.15 | 400 | N | 20060.00 |
| 3 | 2024-01-03 09:30:20.787037891 | 50.14 | 107 | N | 5364.98 |
| 4 | 2024-01-03 09:30:23.436860708 | 50.14 | 600 | N | 30084.00 |
| ... | ... | ... | ... | ... | ... |
| 54 | 2024-01-03 09:38:28.029695573 | 50.08 | 200 | N | 10016.00 |
| 55 | 2024-01-03 09:39:01.147191601 | 50.09 | 312 | N | 15628.08 |
| 56 | 2024-01-03 09:39:04.654739241 | 50.08 | 200 | N | 10016.00 |
| 57 | 2024-01-03 09:39:17.427491120 | 50.08 | 211 | N | 10566.88 |
| 58 | 2024-01-03 09:39:22.549900523 | 50.10 | 200 | N | 10020.00 |
59 rows × 5 columns
Adjusting for Corporate Actions#
Retrieve trades with original and corporate action adjusted prices for splits.
import onetick.py as otp
# Defining Data Source
data = otp.DataSource(db='LSE_SAMPLE', tick_type='TRD')
# Restrict Returned Fields
data = data[['PRICE', 'SIZE']]
# Add Fields with Original Price and Size
data['ORIG_PRICE'] = data['PRICE']
data['ORIG_SIZE'] = data['SIZE']
# Adjust PRICE field for historic Corporate Actions
data = data.corp_actions(fields='PRICE',
adjustment_date=otp.date(2024, 1, 17),
adjust_rule='PRICE',
apply_split=True)
# Adjust SIZE field for historic Corporate Actions
data = data.corp_actions(fields='SIZE',
adjustment_date=otp.date(2024, 1, 17),
adjust_rule='SIZE',
apply_split=True)
result = otp.run(data,
start=otp.dt(2024, 1, 10),
end=otp.dt(2024, 1, 17),
timezone='Europe/London',
symbols='DKE',
symbol_date=otp.dt(2024, 1, 17))
result
| Time | PRICE | SIZE | ORIG_PRICE | ORIG_SIZE | |
|---|---|---|---|---|---|
| 0 | 2024-01-10 10:17:28.066 | 0.4010 | 127668.4 | 0.04010 | 1276684 |
| 1 | 2024-01-10 10:17:54.299 | 0.4000 | 100000.0 | 0.04000 | 1000000 |
| 2 | 2024-01-10 10:18:02.437 | 0.4120 | 111349.5 | 0.04120 | 1113495 |
| 3 | 2024-01-10 10:18:34.771 | 0.3566 | 600739.4 | 0.03566 | 6007394 |
| 4 | 2024-01-10 10:18:42.555 | 0.3500 | 55.0 | 0.03500 | 550 |
| ... | ... | ... | ... | ... | ... |
| 102 | 2024-01-16 11:00:11.634 | 0.4000 | 520794.0 | 0.40000 | 520794 |
| 103 | 2024-01-16 11:49:51.584 | 0.3750 | 475182.0 | 0.37500 | 475182 |
| 104 | 2024-01-16 11:58:51.631 | 0.3500 | 51661.0 | 0.35000 | 51661 |
| 105 | 2024-01-16 14:55:22.581 | 0.3500 | 18.0 | 0.35000 | 18 |
| 106 | 2024-01-16 15:42:57.681 | 0.3875 | 24136.0 | 0.38750 | 24136 |
107 rows × 5 columns
Aggregation Statistics#
Trade Price Statistics Analysis.
Computes aggregate price statistics (mean, standard deviation, median, min, max, VWAP, count) for LSE trades.
import onetick.py as otp
# Create the DataSource for LSE_SAMPLE.TRD trades
data = otp.DataSource(
db='LSE_SAMPLE',
tick_type='TRD',
# Define the schema for trades
schema_policy='manual',
schema={'PRICE': float, 'SIZE': int},
)
# Aggregate statistics over the interval
agg = data.agg({
'MEAN_PRICE': otp.agg.average('PRICE'),
'STDDEV_PRICE': otp.agg.stddev('PRICE'),
'MEDIAN_PRICE': otp.agg.median('PRICE'),
'MAX_PRICE': otp.agg.max('PRICE'),
'MIN_PRICE': otp.agg.min('PRICE'),
'VWAP_PRICE': otp.agg.vwap('PRICE', 'SIZE'),
'COUNT_PRICE': otp.agg.count(),
})
# Run the query
result = otp.run(
agg,
symbols='VOD',
start=otp.dt(2024, 1, 3, 8),
end=otp.dt(2024, 1, 4, 16),
timezone='UTC',
)
result
| Time | MEAN_PRICE | STDDEV_PRICE | MEDIAN_PRICE | MAX_PRICE | MIN_PRICE | VWAP_PRICE | COUNT_PRICE | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2024-01-04 16:00:00 | 69.770939 | 4.877331 | 70.16 | 71.0166 | 0.812 | 70.020224 | 11925 |
Multiple Symbol Retrieval#
Retrieve Multiple Symbols by submitting an array of symbols into otp.run.
import onetick.py as otp
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
# Specify the fields to return
data = data[['PRICE', 'SIZE']]
# Return first 100 Rows
data = data.limit(100)
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols=['CSCO', 'MSFT'])
result
{'CSCO': Time PRICE SIZE
0 2024-01-03 09:30:00.065443591 50.0200 2
1 2024-01-03 09:30:00.111130049 50.1600 3
2 2024-01-03 09:30:00.127459523 50.1700 100
3 2024-01-03 09:30:00.128498068 50.1700 5
4 2024-01-03 09:30:00.135190071 50.1300 46
.. ... ... ...
95 2024-01-03 09:30:00.897416820 50.0800 51
96 2024-01-03 09:30:00.897444128 50.0800 29
97 2024-01-03 09:30:00.897474806 50.0800 12
98 2024-01-03 09:30:00.897476583 50.0800 2
99 2024-01-03 09:30:00.897670983 50.0797 100
[100 rows x 3 columns],
'MSFT': Time PRICE SIZE
0 2024-01-03 09:30:00.001141139 368.990 9
1 2024-01-03 09:30:00.001232095 369.000 10
2 2024-01-03 09:30:00.001348140 369.000 90
3 2024-01-03 09:30:00.001835253 368.995 1
4 2024-01-03 09:30:00.002218671 368.990 100
.. ... ... ...
95 2024-01-03 09:30:00.382076572 369.000 1
96 2024-01-03 09:30:00.396730897 369.095 3
97 2024-01-03 09:30:00.396780282 369.095 3
98 2024-01-03 09:30:00.405154725 369.120 4
99 2024-01-03 09:30:00.427825042 369.050 20
[100 rows x 3 columns]}
Identify Trading Days Half Day#
Fetch daily bar data for HD stock, filtered by market activity and exchange,
then retrieve the closing price and activity code for January 2024.
import onetick.py as otp
# Define the data source for daily bars
data = otp.DataSource(
db='US_COMP_SAMPLE_DAILY',
tick_type='DAY',
schema_policy='manual',
schema={'CLOSE': float, 'EXCHANGE': str}
)
# Market Activity column returns R [Regular], L [Half Day], H [Holiday], W [Weekend]
data = data.mkt_activity('CLOUD_DB_US_COMP')
# Filter for EXCHANGE == ''
data = data.where(data['EXCHANGE'] == '')
# Select only the CLOSE and ACTIVITY_CODE columns
data = data[['CLOSE', 'MKT_ACTIVITY']]
# Return first 100 Rows
data = data.limit(100)
# Run the query for symbol 'HD' and the specified time range
result = otp.run(
data,
symbols=['HD'],
start=otp.dt(2024, 1, 1),
end=otp.dt(2024, 2, 1),
timezone='UTC'
)
result
| Time | CLOSE | MKT_ACTIVITY | |
|---|---|---|---|
| 0 | 2024-01-03 01:15:00 | 345.08 | R |
| 1 | 2024-01-04 01:15:00 | 338.26 | R |
| 2 | 2024-01-05 01:15:00 | 338.59 | R |
| 3 | 2024-01-06 01:15:00 | 342.94 | R |
| 4 | 2024-01-09 01:15:00 | 347.93 | R |
| ... | ... | ... | ... |
| 15 | 2024-01-25 01:15:00 | 347.27 | R |
| 16 | 2024-01-26 01:15:00 | 350.97 | R |
| 17 | 2024-01-27 01:15:00 | 355.30 | R |
| 18 | 2024-01-30 01:15:00 | 355.70 | R |
| 19 | 2024-01-31 01:15:00 | 357.10 | R |
20 rows × 3 columns
Join Trades to Prevailing Quotes#
Retrieve trades joined to prevailing quotes based on an asof join.
Both Trade and Quote Data sources are defined, and then joined by time using
otp.join_by_time.
import onetick.py as otp
trd = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
trd = trd[['PRICE', 'SIZE']]
qte = otp.DataSource(db='US_COMP_SAMPLE', tick_type='QTE')
qte = qte[['BID_PRICE', 'ASK_PRICE']]
data = otp.join_by_time([trd, qte])
# Return first 100 Rows
data = data.limit(100)
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols='CSCO')
result
| Time | PRICE | SIZE | BID_PRICE | ASK_PRICE | |
|---|---|---|---|---|---|
| 0 | 2024-01-03 09:30:00.065443591 | 50.0200 | 2 | 49.50 | 50.18 |
| 1 | 2024-01-03 09:30:00.111130049 | 50.1600 | 3 | 49.98 | 50.19 |
| 2 | 2024-01-03 09:30:00.127459523 | 50.1700 | 100 | 49.98 | 50.19 |
| 3 | 2024-01-03 09:30:00.128498068 | 50.1700 | 5 | 50.00 | 50.17 |
| 4 | 2024-01-03 09:30:00.135190071 | 50.1300 | 46 | 50.00 | 50.17 |
| ... | ... | ... | ... | ... | ... |
| 95 | 2024-01-03 09:30:00.897416820 | 50.0800 | 51 | 50.05 | 50.12 |
| 96 | 2024-01-03 09:30:00.897444128 | 50.0800 | 29 | 50.05 | 50.12 |
| 97 | 2024-01-03 09:30:00.897474806 | 50.0800 | 12 | 50.05 | 50.10 |
| 98 | 2024-01-03 09:30:00.897476583 | 50.0800 | 2 | 50.05 | 50.10 |
| 99 | 2024-01-03 09:30:00.897670983 | 50.0797 | 100 | 50.06 | 50.12 |
100 rows × 5 columns
Prevailing Price#
Retrieve prevailing trade price for CSCO on database US_COMP_SAMPLE at a specified timestamp.
Looking back 1 Day (86400 seconds) in cases where the trade does not occur at the exact timestamp.
import onetick.py as otp
# Define the Data Source with back_to_first_tick
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD', back_to_first_tick=86400)
# Return first 100 Rows
data = data.limit(100)
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols='CSCO')
result
| Time | EXCHANGE | COND | STOP_STOCK | SOURCE | TRF | TTE | TICKER | PRICE | DELETED_TIME | TICK_STATUS | SIZE | CORR | SEQ_NUM | TRADE_ID | PARTICIPANT_TIME | TRF_TIME | OMDSEQ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2024-01-03 09:30:00.000000000 | Q | @FT | N | 1 | CSCO | 50.16 | 1969-12-31 19:00:00 | 0 | 471 | 0 | 168866 | 348 | 2024-01-03 09:29:59.990923814 | 1969-12-31 19:00:00 | 1 | ||
| 1 | 2024-01-03 09:30:00.065443591 | Z | @ I | N | 0 | CSCO | 50.02 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 169103 | 42 | 2024-01-03 09:30:00.065250000 | 1969-12-31 19:00:00 | 0 | ||
| 2 | 2024-01-03 09:30:00.111130049 | Z | @ I | N | 0 | CSCO | 50.16 | 1969-12-31 19:00:00 | 0 | 3 | 0 | 169148 | 43 | 2024-01-03 09:30:00.110938000 | 1969-12-31 19:00:00 | 0 | ||
| 3 | 2024-01-03 09:30:00.127459523 | V | @ | N | 0 | CSCO | 50.17 | 1969-12-31 19:00:00 | 0 | 100 | 0 | 169181 | 13 | 2024-01-03 09:30:00.065044730 | 1969-12-31 19:00:00 | 0 | ||
| 4 | 2024-01-03 09:30:00.128498068 | Z | @F I | N | 1 | CSCO | 50.17 | 1969-12-31 19:00:00 | 0 | 5 | 0 | 169182 | 44 | 2024-01-03 09:30:00.128306000 | 1969-12-31 19:00:00 | 0 | ||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 95 | 2024-01-03 09:30:00.897235112 | U | @F | N | 1 | CSCO | 50.07 | 1969-12-31 19:00:00 | 0 | 200 | 0 | 171855 | 22 | 2024-01-03 09:30:00.897017316 | 1969-12-31 19:00:00 | 2 | ||
| 96 | 2024-01-03 09:30:00.897416820 | Q | @F I | N | 1 | CSCO | 50.08 | 1969-12-31 19:00:00 | 0 | 51 | 0 | 171857 | 365 | 2024-01-03 09:30:00.897398456 | 1969-12-31 19:00:00 | 3 | ||
| 97 | 2024-01-03 09:30:00.897444128 | Q | @F I | N | 1 | CSCO | 50.08 | 1969-12-31 19:00:00 | 0 | 29 | 0 | 171858 | 366 | 2024-01-03 09:30:00.897428791 | 1969-12-31 19:00:00 | 4 | ||
| 98 | 2024-01-03 09:30:00.897474806 | Q | @F I | N | 1 | CSCO | 50.08 | 1969-12-31 19:00:00 | 0 | 12 | 0 | 171859 | 367 | 2024-01-03 09:30:00.897456284 | 1969-12-31 19:00:00 | 5 | ||
| 99 | 2024-01-03 09:30:00.897476583 | Q | @F I | N | 1 | CSCO | 50.08 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 171860 | 368 | 2024-01-03 09:30:00.897456284 | 1969-12-31 19:00:00 | 6 |
100 rows × 18 columns
Query Data Availability Status#
Retrieve Completed Data Load Events for US_COMP Database.
Returns load completion events from the last 7 days.
import onetick.py as otp
# Calculate time window: last 7 days to now
now = otp.now()
seven_days_ago = now - otp.Day(7)
# Create data source for DB_INFO.PROC_EVENTS
proc_events = otp.DataSource(
db='DB_INFO',
tick_type='PROC_EVENTS'
)
# Filter for US_COMP database, successful load events, and events from the last 7 days
proc_events = proc_events.where(
(proc_events['DB_NAME'] == 'US_COMP') &
(proc_events['EVENT_NAME'] == 'Load finished')
)
# Run the query for the specified time window and output as a dataframe
result = otp.run(
proc_events,
symbols='US_COMP',
start=seven_days_ago,
end=now,
timezone='UTC',
)
result
| Time | DB_NAME | DB_DESCRIPTION | TIMEZONE | DATA_DATE | EVENT_TIME | EVENT_NAME | SOURCE_FILE_NAME | OMDSEQ | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 2026-08-04 | US_COMP | US Consolidated Equities (exc. OTC) | America/New_York | 20260804 | 2026-08-05 02:15:14 | Load finished | 5006 | |
| 1 | 2026-08-05 | US_COMP | US Consolidated Equities (exc. OTC) | America/New_York | 20260805 | 2026-08-06 02:38:26 | Load finished | 4991 | |
| 2 | 2026-08-06 | US_COMP | US Consolidated Equities (exc. OTC) | America/New_York | 20260806 | 2026-08-07 02:43:32 | Load finished | 4956 | |
| 3 | 2026-08-07 | US_COMP | US Consolidated Equities (exc. OTC) | America/New_York | 20260807 | 2026-08-08 02:38:16 | Load finished | 4887 |
Ranking#
Retrieve trades ranked by price for CSCO from the US_COMP_SAMPLE database, across the specified time range.
import onetick.py as otp
data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='TRD')
data = data[['PRICE', 'SIZE']]
data = data.ranking({'SIZE': 'desc'})
# Return first 100 Rows
data = data.limit(100)
result = otp.run(data,
start=otp.dt(2024, 1, 3, 9, 30),
end=otp.dt(2024, 1, 3, 9, 40),
timezone='America/New_York',
symbols='CSCO')
result
| Time | PRICE | SIZE | RANKING | |
|---|---|---|---|---|
| 0 | 2024-01-03 09:30:00.065443591 | 50.0200 | 2 | 3867 |
| 1 | 2024-01-03 09:30:00.111130049 | 50.1600 | 3 | 3817 |
| 2 | 2024-01-03 09:30:00.127459523 | 50.1700 | 100 | 684 |
| 3 | 2024-01-03 09:30:00.128498068 | 50.1700 | 5 | 3664 |
| 4 | 2024-01-03 09:30:00.135190071 | 50.1300 | 46 | 2580 |
| ... | ... | ... | ... | ... |
| 95 | 2024-01-03 09:30:00.897416820 | 50.0800 | 51 | 2401 |
| 96 | 2024-01-03 09:30:00.897444128 | 50.0800 | 29 | 2818 |
| 97 | 2024-01-03 09:30:00.897474806 | 50.0800 | 12 | 3270 |
| 98 | 2024-01-03 09:30:00.897476583 | 50.0800 | 2 | 3867 |
| 99 | 2024-01-03 09:30:00.897670983 | 50.0797 | 100 | 684 |
100 rows × 4 columns
Run SQL#
Execute a SQL statement using otp.SqlQuery.
import onetick.py as otp
sql_statement = """
SELECT * FROM US_COMP_SAMPLE.TRD
WHERE SYMBOL_NAME='CSCO'
and TIMESTAMP >= '2024-01-03 09:30:00 America/New_York'
and TIMESTAMP < '2024-01-03 09:40:00 America/New_York'
LIMIT 100
"""
sql_query = otp.SqlQuery(sql_statement)
result = otp.run(sql_query)
result
| Time | EXCHANGE | COND | STOP_STOCK | SOURCE | TRF | TTE | TICKER | PRICE | DELETED_TIME | TICK_STATUS | SIZE | CORR | SEQ_NUM | TRADE_ID | PARTICIPANT_TIME | TRF_TIME | OMDSEQ | SYMBOL_NAME | TICK_TYPE | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2024-01-03 09:30:00.065443591 | Z | @ I | N | 0 | CSCO | 50.0200 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 169103 | 42 | 2024-01-03 09:30:00.065250000 | 1969-12-31 19:00:00.000000000 | 0 | CSCO | TRD | ||
| 1 | 2024-01-03 09:30:00.111130049 | Z | @ I | N | 0 | CSCO | 50.1600 | 1969-12-31 19:00:00 | 0 | 3 | 0 | 169148 | 43 | 2024-01-03 09:30:00.110938000 | 1969-12-31 19:00:00.000000000 | 0 | CSCO | TRD | ||
| 2 | 2024-01-03 09:30:00.127459523 | V | @ | N | 0 | CSCO | 50.1700 | 1969-12-31 19:00:00 | 0 | 100 | 0 | 169181 | 13 | 2024-01-03 09:30:00.065044730 | 1969-12-31 19:00:00.000000000 | 0 | CSCO | TRD | ||
| 3 | 2024-01-03 09:30:00.128498068 | Z | @F I | N | 1 | CSCO | 50.1700 | 1969-12-31 19:00:00 | 0 | 5 | 0 | 169182 | 44 | 2024-01-03 09:30:00.128306000 | 1969-12-31 19:00:00.000000000 | 0 | CSCO | TRD | ||
| 4 | 2024-01-03 09:30:00.135190071 | Q | @FTI | N | 1 | CSCO | 50.1300 | 1969-12-31 19:00:00 | 0 | 46 | 0 | 169193 | 349 | 2024-01-03 09:30:00.135173836 | 1969-12-31 19:00:00.000000000 | 0 | CSCO | TRD | ||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 95 | 2024-01-03 09:30:00.897416820 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 51 | 0 | 171857 | 365 | 2024-01-03 09:30:00.897398456 | 1969-12-31 19:00:00.000000000 | 3 | CSCO | TRD | ||
| 96 | 2024-01-03 09:30:00.897444128 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 29 | 0 | 171858 | 366 | 2024-01-03 09:30:00.897428791 | 1969-12-31 19:00:00.000000000 | 4 | CSCO | TRD | ||
| 97 | 2024-01-03 09:30:00.897474806 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 12 | 0 | 171859 | 367 | 2024-01-03 09:30:00.897456284 | 1969-12-31 19:00:00.000000000 | 5 | CSCO | TRD | ||
| 98 | 2024-01-03 09:30:00.897476583 | Q | @F I | N | 1 | CSCO | 50.0800 | 1969-12-31 19:00:00 | 0 | 2 | 0 | 171860 | 368 | 2024-01-03 09:30:00.897456284 | 1969-12-31 19:00:00.000000000 | 6 | CSCO | TRD | ||
| 99 | 2024-01-03 09:30:00.897670983 | D | @ | N | Q | 0 | CSCO | 50.0797 | 1969-12-31 19:00:00 | 0 | 100 | 0 | 171862 | 100 | 2024-01-03 09:30:00.896374950 | 2024-01-03 09:30:00.897637536 | 7 | CSCO | TRD |
100 rows × 20 columns