Data Retrieval with Continuous Contracts#

This section contains 6 examples for Data Retrieval with Continuous Contracts 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__'

DAY Retrieval Cont Contract by Max Open Interest#

Retrieve the Front Month Continuous Contract based on Maximum Open Interest.
Using Symbol Syntax: [Product Code]_r_oi.

import onetick.py as otp

data = otp.DataSource(db='ICE_EU_COM_SAMPLE_DAILY', tick_type='DAY')
data = data.where(data['UPDATE_TYPE'] == 'Summary')
result = otp.run(data,
                 start=otp.dt(2024, 1, 1),
                 end=otp.dt(2024, 4, 1),
                 timezone='Europe/London',
                 symbols='BRN_r_oi',
                 symbol_date=otp.dt(2024, 4, 1))
result
Time UPDATE_TYPE OPEN HIGH LOW CLOSE SETTLE_PRICE SETTLE_DATE VOLUME OPEN_INT OPEN_INT_DATE OMDSEQ
0 2024-01-01 23:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0
1 2024-01-02 23:30:00 Summary 77.39 79.06 75.60 76.04 75.89 20240102 338351.0 552541.0 20231229 0
2 2024-01-03 23:30:00 Summary 76.06 78.67 74.79 78.44 78.25 20240103 361765.0 526073.0 20240102 0
3 2024-01-04 23:30:00 Summary 78.56 79.41 76.50 77.74 77.59 20240104 356646.0 520589.0 20240103 0
4 2024-01-05 23:30:00 Summary 77.71 79.26 77.66 78.90 78.76 20240105 291002.0 499963.0 20240104 0
... ... ... ... ... ... ... ... ... ... ... ... ...
60 2024-03-25 22:30:00 Summary 84.83 86.51 84.79 86.04 86.08 20240325 354261.0 555528.0 20240322 0
61 2024-03-26 22:30:00 Summary 86.16 86.42 85.19 85.27 85.63 20240326 338858.0 583946.0 20240325 0
62 2024-03-27 22:30:00 Summary 85.27 85.70 84.58 85.70 85.41 20240327 369265.0 605142.0 20240326 0
63 2024-03-28 22:30:00 Summary 85.69 87.07 85.50 87.07 87.00 20240328 414238.0 610314.0 20240327 0
64 2024-03-29 22:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0

65 rows × 12 columns

DAY Retrieval Cont Contract by Max Volume#

Retrieve the Front Month Continuous Contract based on Maximum Volume.
Using Symbol Syntax: [Product Code]_r_vol.

import onetick.py as otp

data = otp.DataSource(db='ICE_EU_COM_SAMPLE_DAILY', tick_type='DAY')
data = data.where(data['UPDATE_TYPE'] == 'Summary')
result = otp.run(data,
                 start=otp.dt(2024, 1, 1),
                 end=otp.dt(2024, 4, 1),
                 timezone='Europe/London',
                 symbols='BRN_r_vol',
                 symbol_date=otp.dt(2024, 4, 1))
result
Time UPDATE_TYPE OPEN HIGH LOW CLOSE SETTLE_PRICE SETTLE_DATE VOLUME OPEN_INT OPEN_INT_DATE OMDSEQ
0 2024-01-01 23:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0
1 2024-01-02 23:30:00 Summary 77.39 79.06 75.60 76.04 75.89 20240102 338351.0 552541.0 20231229 0
2 2024-01-03 23:30:00 Summary 76.06 78.67 74.79 78.44 78.25 20240103 361765.0 526073.0 20240102 0
3 2024-01-04 23:30:00 Summary 78.56 79.41 76.50 77.74 77.59 20240104 356646.0 520589.0 20240103 0
4 2024-01-05 23:30:00 Summary 77.71 79.26 77.66 78.90 78.76 20240105 291002.0 499963.0 20240104 0
... ... ... ... ... ... ... ... ... ... ... ... ...
60 2024-03-25 22:30:00 Summary 84.83 86.51 84.79 86.04 86.08 20240325 354261.0 555528.0 20240322 0
61 2024-03-26 22:30:00 Summary 86.16 86.42 85.19 85.27 85.63 20240326 338858.0 583946.0 20240325 0
62 2024-03-27 22:30:00 Summary 85.27 85.70 84.58 85.70 85.41 20240327 369265.0 605142.0 20240326 0
63 2024-03-28 22:30:00 Summary 85.69 87.07 85.50 87.07 87.00 20240328 414238.0 610314.0 20240327 0
64 2024-03-29 22:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0

65 rows × 12 columns

DAY Retrieval Cont Contract by Max Volume with Bloomberg Symbology#

Front Month Continous Contract by Max Volume can be specified with Bloomberg BSYM symbology: [Bloomberg Product code]A.
For example Brent Crude (exchange symbol BRN), has Bloomberg Product code CO.
Instead of BRN_r_vol, COA Comdty can be specified.

import onetick.py as otp

data = otp.DataSource(db='ICE_EU_COM_SAMPLE_DAILY', tick_type='DAY')
data = data.where(data['UPDATE_TYPE'] == 'Summary')
result = otp.run(data,
                 start=otp.dt(2024, 1, 1),
                 end=otp.dt(2024, 4, 1),
                 timezone='Europe/London',
                 symbols='BSYM::::COA Comdty',
                 symbol_date=otp.dt(2024, 4, 1))
result
Time UPDATE_TYPE OPEN HIGH LOW CLOSE SETTLE_PRICE SETTLE_DATE VOLUME OPEN_INT OPEN_INT_DATE OMDSEQ
0 2024-01-01 23:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0
1 2024-01-02 23:30:00 Summary 77.39 79.06 75.60 76.04 75.89 20240102 338351.0 552541.0 20231229 0
2 2024-01-03 23:30:00 Summary 76.06 78.67 74.79 78.44 78.25 20240103 361765.0 526073.0 20240102 0
3 2024-01-04 23:30:00 Summary 78.56 79.41 76.50 77.74 77.59 20240104 356646.0 520589.0 20240103 0
4 2024-01-05 23:30:00 Summary 77.71 79.26 77.66 78.90 78.76 20240105 291002.0 499963.0 20240104 0
... ... ... ... ... ... ... ... ... ... ... ... ...
60 2024-03-25 22:30:00 Summary 84.83 86.51 84.79 86.04 86.08 20240325 354261.0 555528.0 20240322 0
61 2024-03-26 22:30:00 Summary 86.16 86.42 85.19 85.27 85.63 20240326 338858.0 583946.0 20240325 0
62 2024-03-27 22:30:00 Summary 85.27 85.70 84.58 85.70 85.41 20240327 369265.0 605142.0 20240326 0
63 2024-03-28 22:30:00 Summary 85.69 87.07 85.50 87.07 87.00 20240328 414238.0 610314.0 20240327 0
64 2024-03-29 22:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0

65 rows × 12 columns

DAY Retrieval Cont Contract by Month (1-12)#

Front Month to Twelve Month Continuous Contract can be specified [Product code]\1 to [Product code]\12.
Rolls based on contract expiry.

import onetick.py as otp

data = otp.DataSource(db='ICE_EU_COM_SAMPLE_DAILY', tick_type='DAY')
data = data.where(data['UPDATE_TYPE'] == 'Summary')
result = otp.run(data,
                 start=otp.dt(2024, 1, 1),
                 end=otp.dt(2024, 4, 1),
                 timezone='Europe/London',
                 symbols='BRN\\1',
                 symbol_date=otp.dt(2024, 4, 1))
result
Time UPDATE_TYPE OPEN HIGH LOW CLOSE SETTLE_PRICE SETTLE_DATE VOLUME OPEN_INT OPEN_INT_DATE OMDSEQ
0 2024-01-01 23:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0
1 2024-01-02 23:30:00 Summary 77.39 79.06 75.60 76.04 75.89 20240102 338351.0 552541.0 20231229 0
2 2024-01-03 23:30:00 Summary 76.06 78.67 74.79 78.44 78.25 20240103 361765.0 526073.0 20240102 0
3 2024-01-04 23:30:00 Summary 78.56 79.41 76.50 77.74 77.59 20240104 356646.0 520589.0 20240103 0
4 2024-01-05 23:30:00 Summary 77.71 79.26 77.66 78.90 78.76 20240105 291002.0 499963.0 20240104 0
... ... ... ... ... ... ... ... ... ... ... ... ...
60 2024-03-25 22:30:00 Summary 85.50 87.17 85.40 86.68 86.75 20240325 175000.0 206541.0 20240322 0
61 2024-03-26 22:30:00 Summary 86.81 87.06 85.80 85.86 86.25 20240326 126815.0 169162.0 20240325 0
62 2024-03-27 22:30:00 Summary 85.86 86.39 85.17 86.34 86.09 20240327 96507.0 137464.0 20240326 0
63 2024-03-28 22:30:00 Summary 85.69 87.07 85.50 87.07 87.00 20240328 414238.0 610314.0 20240327 0
64 2024-03-29 22:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0

65 rows × 12 columns

DAY Retrieval Cont Contract by Tick Data Method#

Retrieve the Front Month Continuous Contract based on Tick Data Methology (only relevant for TDI_FUT).
Using Symbol Syntax: [Product Code]_r_tdi.

import onetick.py as otp

data = otp.DataSource(db='TDI_FUT_SAMPLE_DAILY', tick_type='DAY')
result = otp.run(data,
                 start=otp.dt(2024, 1, 1),
                 end=otp.dt(2024, 4, 1),
                 timezone='Europe/London',
                 symbols='CO_r_tdi',
                 symbol_date=otp.dt(2024, 4, 1))
result
Time OPEN HIGH LOW SETTLE_PRICE VOLUME OPEN_INT
0 2024-01-02 77.39 79.06 75.60 75.89 338351 552541.0
1 2024-01-03 76.06 78.67 74.79 78.25 361765 526073.0
2 2024-01-04 78.56 79.41 76.50 77.59 356646 520589.0
3 2024-01-05 77.71 79.26 77.66 78.76 291002 499963.0
4 2024-01-08 78.70 78.95 75.26 76.12 342629 494881.0
... ... ... ... ... ... ... ...
61 2024-03-24 84.83 85.10 84.79 85.10 2955 549192.0
62 2024-03-25 84.83 86.51 84.79 86.08 354261 555528.0
63 2024-03-26 86.16 86.42 85.19 85.63 338858 583946.0
64 2024-03-27 85.27 85.70 84.58 85.41 369265 605142.0
65 2024-03-28 85.69 87.07 85.50 87.00 414238 610314.0

66 rows × 7 columns

DAY Retrieval Cont Contract with Bloomberg Symbology#

Front Month to Twelve Month Continuous Contract can be specified with Bloomberg BSYM symbology [Product code]1 to [Product code]12.
Rolls based on contract expiry.
For example Brent Crude (exchange symbol BRN), has Bloomberg Product code CO.

import onetick.py as otp

data = otp.DataSource(db='ICE_EU_COM_SAMPLE_DAILY', tick_type='DAY')
data = data.where(data['UPDATE_TYPE'] == 'Summary')
result = otp.run(data,
                 start=otp.dt(2024, 1, 1),
                 end=otp.dt(2024, 4, 1),
                 timezone='Europe/London',
                 symbols='BSYM::::CO1 Comdty',
                 symbol_date=otp.dt(2024, 4, 1))
result
Time UPDATE_TYPE OPEN HIGH LOW CLOSE SETTLE_PRICE SETTLE_DATE VOLUME OPEN_INT OPEN_INT_DATE OMDSEQ
0 2024-01-01 23:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0
1 2024-01-02 23:30:00 Summary 77.39 79.06 75.60 76.04 75.89 20240102 338351.0 552541.0 20231229 0
2 2024-01-03 23:30:00 Summary 76.06 78.67 74.79 78.44 78.25 20240103 361765.0 526073.0 20240102 0
3 2024-01-04 23:30:00 Summary 78.56 79.41 76.50 77.74 77.59 20240104 356646.0 520589.0 20240103 0
4 2024-01-05 23:30:00 Summary 77.71 79.26 77.66 78.90 78.76 20240105 291002.0 499963.0 20240104 0
... ... ... ... ... ... ... ... ... ... ... ... ...
60 2024-03-25 22:30:00 Summary 85.50 87.17 85.40 86.68 86.75 20240325 175000.0 206541.0 20240322 0
61 2024-03-26 22:30:00 Summary 86.81 87.06 85.80 85.86 86.25 20240326 126815.0 169162.0 20240325 0
62 2024-03-27 22:30:00 Summary 85.86 86.39 85.17 86.34 86.09 20240327 96507.0 137464.0 20240326 0
63 2024-03-28 22:30:00 Summary 85.69 87.07 85.50 87.07 87.00 20240328 414238.0 610314.0 20240327 0
64 2024-03-29 22:30:00 Summary NaN NaN NaN NaN NaN 0.0 NaN 0

65 rows × 12 columns