# Data Retrieval with Continuous Contracts

This section contains 6 examples for Data Retrieval with Continuous Contracts using the `onetick-py`.<br />
\\\\
Each example is a self-contained script that can be run against the OneTick Cloud sample databases.

```default
# 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.<br />
\\\\
Using Symbol Syntax: `[Product Code]_r_oi`.

```ipython3
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
```

```myst-ansi
                  Time UPDATE_TYPE   OPEN   HIGH    LOW  CLOSE  SETTLE_PRICE  \
0  2024-01-01 23:30:00     Summary    NaN    NaN    NaN    NaN           NaN   
1  2024-01-02 23:30:00     Summary  77.39  79.06  75.60  76.04         75.89   
2  2024-01-03 23:30:00     Summary  76.06  78.67  74.79  78.44         78.25   
3  2024-01-04 23:30:00     Summary  78.56  79.41  76.50  77.74         77.59   
4  2024-01-05 23:30:00     Summary  77.71  79.26  77.66  78.90         78.76   
..                 ...         ...    ...    ...    ...    ...           ...   
60 2024-03-25 22:30:00     Summary  84.83  86.51  84.79  86.04         86.08   
61 2024-03-26 22:30:00     Summary  86.16  86.42  85.19  85.27         85.63   
62 2024-03-27 22:30:00     Summary  85.27  85.70  84.58  85.70         85.41   
63 2024-03-28 22:30:00     Summary  85.69  87.07  85.50  87.07         87.00   
64 2024-03-29 22:30:00     Summary    NaN    NaN    NaN    NaN           NaN   

   SETTLE_DATE    VOLUME  OPEN_INT OPEN_INT_DATE  OMDSEQ  
0                    0.0       NaN                     0  
1     20240102  338351.0  552541.0      20231229       0  
2     20240103  361765.0  526073.0      20240102       0  
3     20240104  356646.0  520589.0      20240103       0  
4     20240105  291002.0  499963.0      20240104       0  
..         ...       ...       ...           ...     ...  
60    20240325  354261.0  555528.0      20240322       0  
61    20240326  338858.0  583946.0      20240325       0  
62    20240327  369265.0  605142.0      20240326       0  
63    20240328  414238.0  610314.0      20240327       0  
64                   0.0       NaN                     0  

[65 rows x 12 columns]
```

## DAY Retrieval Cont Contract by Max Volume

Retrieve the Front Month Continuous Contract based on Maximum Volume.<br />
\\\\
Using Symbol Syntax: `[Product Code]_r_vol`.

```ipython3
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
```

```myst-ansi
                  Time UPDATE_TYPE   OPEN   HIGH    LOW  CLOSE  SETTLE_PRICE  \
0  2024-01-01 23:30:00     Summary    NaN    NaN    NaN    NaN           NaN   
1  2024-01-02 23:30:00     Summary  77.39  79.06  75.60  76.04         75.89   
2  2024-01-03 23:30:00     Summary  76.06  78.67  74.79  78.44         78.25   
3  2024-01-04 23:30:00     Summary  78.56  79.41  76.50  77.74         77.59   
4  2024-01-05 23:30:00     Summary  77.71  79.26  77.66  78.90         78.76   
..                 ...         ...    ...    ...    ...    ...           ...   
60 2024-03-25 22:30:00     Summary  84.83  86.51  84.79  86.04         86.08   
61 2024-03-26 22:30:00     Summary  86.16  86.42  85.19  85.27         85.63   
62 2024-03-27 22:30:00     Summary  85.27  85.70  84.58  85.70         85.41   
63 2024-03-28 22:30:00     Summary  85.69  87.07  85.50  87.07         87.00   
64 2024-03-29 22:30:00     Summary    NaN    NaN    NaN    NaN           NaN   

   SETTLE_DATE    VOLUME  OPEN_INT OPEN_INT_DATE  OMDSEQ  
0                    0.0       NaN                     0  
1     20240102  338351.0  552541.0      20231229       0  
2     20240103  361765.0  526073.0      20240102       0  
3     20240104  356646.0  520589.0      20240103       0  
4     20240105  291002.0  499963.0      20240104       0  
..         ...       ...       ...           ...     ...  
60    20240325  354261.0  555528.0      20240322       0  
61    20240326  338858.0  583946.0      20240325       0  
62    20240327  369265.0  605142.0      20240326       0  
63    20240328  414238.0  610314.0      20240327       0  
64                   0.0       NaN                     0  

[65 rows x 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`.<br />
\\\\
For example Brent Crude (exchange symbol `BRN`), has Bloomberg Product code `CO`.<br />
\\\\
Instead of `BRN_r_vol`, `COA Comdty` can be specified.

```ipython3
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
```

```myst-ansi
                  Time UPDATE_TYPE   OPEN   HIGH    LOW  CLOSE  SETTLE_PRICE  \
0  2024-01-01 23:30:00     Summary    NaN    NaN    NaN    NaN           NaN   
1  2024-01-02 23:30:00     Summary  77.39  79.06  75.60  76.04         75.89   
2  2024-01-03 23:30:00     Summary  76.06  78.67  74.79  78.44         78.25   
3  2024-01-04 23:30:00     Summary  78.56  79.41  76.50  77.74         77.59   
4  2024-01-05 23:30:00     Summary  77.71  79.26  77.66  78.90         78.76   
..                 ...         ...    ...    ...    ...    ...           ...   
60 2024-03-25 22:30:00     Summary  84.83  86.51  84.79  86.04         86.08   
61 2024-03-26 22:30:00     Summary  86.16  86.42  85.19  85.27         85.63   
62 2024-03-27 22:30:00     Summary  85.27  85.70  84.58  85.70         85.41   
63 2024-03-28 22:30:00     Summary  85.69  87.07  85.50  87.07         87.00   
64 2024-03-29 22:30:00     Summary    NaN    NaN    NaN    NaN           NaN   

   SETTLE_DATE    VOLUME  OPEN_INT OPEN_INT_DATE  OMDSEQ  
0                    0.0       NaN                     0  
1     20240102  338351.0  552541.0      20231229       0  
2     20240103  361765.0  526073.0      20240102       0  
3     20240104  356646.0  520589.0      20240103       0  
4     20240105  291002.0  499963.0      20240104       0  
..         ...       ...       ...           ...     ...  
60    20240325  354261.0  555528.0      20240322       0  
61    20240326  338858.0  583946.0      20240325       0  
62    20240327  369265.0  605142.0      20240326       0  
63    20240328  414238.0  610314.0      20240327       0  
64                   0.0       NaN                     0  

[65 rows x 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`.<br />
\\\\
Rolls based on contract expiry.

```ipython3
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
```

```myst-ansi
                  Time UPDATE_TYPE   OPEN   HIGH    LOW  CLOSE  SETTLE_PRICE  \
0  2024-01-01 23:30:00     Summary    NaN    NaN    NaN    NaN           NaN   
1  2024-01-02 23:30:00     Summary  77.39  79.06  75.60  76.04         75.89   
2  2024-01-03 23:30:00     Summary  76.06  78.67  74.79  78.44         78.25   
3  2024-01-04 23:30:00     Summary  78.56  79.41  76.50  77.74         77.59   
4  2024-01-05 23:30:00     Summary  77.71  79.26  77.66  78.90         78.76   
..                 ...         ...    ...    ...    ...    ...           ...   
60 2024-03-25 22:30:00     Summary  85.50  87.17  85.40  86.68         86.75   
61 2024-03-26 22:30:00     Summary  86.81  87.06  85.80  85.86         86.25   
62 2024-03-27 22:30:00     Summary  85.86  86.39  85.17  86.34         86.09   
63 2024-03-28 22:30:00     Summary  85.69  87.07  85.50  87.07         87.00   
64 2024-03-29 22:30:00     Summary    NaN    NaN    NaN    NaN           NaN   

   SETTLE_DATE    VOLUME  OPEN_INT OPEN_INT_DATE  OMDSEQ  
0                    0.0       NaN                     0  
1     20240102  338351.0  552541.0      20231229       0  
2     20240103  361765.0  526073.0      20240102       0  
3     20240104  356646.0  520589.0      20240103       0  
4     20240105  291002.0  499963.0      20240104       0  
..         ...       ...       ...           ...     ...  
60    20240325  175000.0  206541.0      20240322       0  
61    20240326  126815.0  169162.0      20240325       0  
62    20240327   96507.0  137464.0      20240326       0  
63    20240328  414238.0  610314.0      20240327       0  
64                   0.0       NaN                     0  

[65 rows x 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`).<br />
\\\\
Using Symbol Syntax: `[Product Code]_r_tdi`.

```ipython3
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
```

```myst-ansi
         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 x 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`.<br />
\\\\
Rolls based on contract expiry.<br />
\\\\
For example Brent Crude (exchange symbol `BRN`), has Bloomberg Product code `CO`.

```ipython3
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
```

```myst-ansi
                  Time UPDATE_TYPE   OPEN   HIGH    LOW  CLOSE  SETTLE_PRICE  \
0  2024-01-01 23:30:00     Summary    NaN    NaN    NaN    NaN           NaN   
1  2024-01-02 23:30:00     Summary  77.39  79.06  75.60  76.04         75.89   
2  2024-01-03 23:30:00     Summary  76.06  78.67  74.79  78.44         78.25   
3  2024-01-04 23:30:00     Summary  78.56  79.41  76.50  77.74         77.59   
4  2024-01-05 23:30:00     Summary  77.71  79.26  77.66  78.90         78.76   
..                 ...         ...    ...    ...    ...    ...           ...   
60 2024-03-25 22:30:00     Summary  85.50  87.17  85.40  86.68         86.75   
61 2024-03-26 22:30:00     Summary  86.81  87.06  85.80  85.86         86.25   
62 2024-03-27 22:30:00     Summary  85.86  86.39  85.17  86.34         86.09   
63 2024-03-28 22:30:00     Summary  85.69  87.07  85.50  87.07         87.00   
64 2024-03-29 22:30:00     Summary    NaN    NaN    NaN    NaN           NaN   

   SETTLE_DATE    VOLUME  OPEN_INT OPEN_INT_DATE  OMDSEQ  
0                    0.0       NaN                     0  
1     20240102  338351.0  552541.0      20231229       0  
2     20240103  361765.0  526073.0      20240102       0  
3     20240104  356646.0  520589.0      20240103       0  
4     20240105  291002.0  499963.0      20240104       0  
..         ...       ...       ...           ...     ...  
60    20240325  175000.0  206541.0      20240322       0  
61    20240326  126815.0  169162.0      20240325       0  
62    20240327   96507.0  137464.0      20240326       0  
63    20240328  414238.0  610314.0      20240327       0  
64                   0.0       NaN                     0  

[65 rows x 12 columns]
```
