# Reference Retrieval

This section contains 5 examples for Reference Retrieval 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__'
```

## Full Stat Record

Retrieve the Static Records from the `LSE_SAMPLE` database for `VOD`, across the specified time range.

```ipython3
import onetick.py as otp

data = otp.DataSource(db='LSE_SAMPLE', tick_type='STAT')
result = otp.run(data,
                 start=otp.dt(2024, 1, 3),
                 end=otp.dt(2024, 1, 4),
                 timezone='Europe/London',
                 symbols='VOD')
result
```

```myst-ansi
                 Time                NAME          ISIN    SEDOL EXCH_SYMBOL  \
0 2024-01-03 04:00:00  Vodafone Group plc  GB00BH4HKS39  BH4HKS3         VOD   
1 2024-01-03 04:00:00  Vodafone Group plc  GB00BH4HKS39  BH4HKS3         VOD   
2 2024-01-03 04:00:00  Vodafone Group plc  GB00BH4HKS39  BH4HKS3         VOD   

  TRADING_CODE   MIC OPERATING_MIC SEC_TYPE MKT_SEGMENT MKT_SECTOR  \
0       133215  XLON          XLON   Equity        SET1       FE10   
1       133215  XLON          XLON   Equity        SET1       FE10   
2       133215  XLON          XLON   Equity        SET1       FE10   

  COUNTRY_REG CURRENCY  LOT_SIZE  EXCH_MKT_SIZE  OMDSEQ  
0          GB      GBX       1.0          30000   24595  
1          GB      GBX       1.0          30000   50834  
2          GB      GBX       1.0          30000   77076  
```

## Futures Holiday Calendar

Retrieve the Holiday Calendar from the `OQD_MKTCAL` database, for Futures product `CL` (Crude Oil).

```ipython3
import onetick.py as otp

data = otp.DataSource(db='OQD_MKTCAL', tick_type='MKTCAL')
data = data.where(data['ACTIVITY_NAME'].str.like('%HOLIDAY%'))
result = otp.run(data,
                 start=otp.dt(2023, 1, 3),
                 end=otp.dt(2024, 1, 4),
                 timezone='UTC',
                 symbols='TDI_F_CL')
result
```

```myst-ansi
         Time CALENDAR_NAME   ACTIVITY_NAME         TIME_ZONE START_DATE  \
0  2023-01-16      TDI_F_CL  NIGHT2_HOLIDAY  America/New_York 2023-01-16   
1  2023-02-20      TDI_F_CL  NIGHT2_HOLIDAY  America/New_York 2023-02-20   
2  2023-04-07      TDI_F_CL     ALL_HOLIDAY  America/New_York 2023-04-07   
3  2023-05-29      TDI_F_CL  NIGHT2_HOLIDAY  America/New_York 2023-05-29   
4  2023-06-19      TDI_F_CL  NIGHT2_HOLIDAY  America/New_York 2023-06-19   
..        ...           ...             ...               ...        ...   
7  2023-11-23      TDI_F_CL  NIGHT2_HOLIDAY  America/New_York 2023-11-23   
8  2023-11-24      TDI_F_CL     DAY_HOLIDAY  America/New_York 2023-11-24   
9  2023-11-24      TDI_F_CL  NIGHT2_HOLIDAY  America/New_York 2023-11-24   
10 2023-12-25      TDI_F_CL     ALL_HOLIDAY  America/New_York 2023-12-25   
11 2024-01-01      TDI_F_CL     ALL_HOLIDAY  America/New_York 2024-01-01   

     END_DATE START_TIME END_TIME  WEEKDAYS DELETED_TIME  TICK_STATUS  OMDSEQ  
0  2023-01-16      00:00    24:00         2   1970-01-01            0     558  
1  2023-02-20      00:00    24:00         2   1970-01-01            0     747  
2  2023-04-07      00:00    24:00        32   1970-01-01            0    2013  
3  2023-05-29      00:00    24:00         2   1970-01-01            0     766  
4  2023-06-19      00:00    24:00         2   1970-01-01            0     551  
..        ...        ...      ...       ...          ...          ...     ...  
7  2023-11-23      00:00    24:00        16   1970-01-01            0     672  
8  2023-11-24      09:00    13:45        32   1970-01-01            0     726  
9  2023-11-24      00:00    24:00        32   1970-01-01            0     727  
10 2023-12-25      00:00    24:00         2   1970-01-01            0    1945  
11 2024-01-01      00:00    24:00         2   1970-01-01            0    2338  

[12 rows x 12 columns]
```

## Futures Trading Hours

Retrieve the Standard Trading Hours from the `OQD_MKTCAL` database, for Futures product `CL` (Crude Oil).

```ipython3
import onetick.py as otp

data = otp.DataSource(db='OQD_MKTCAL', tick_type='MKTCAL')
_, data = data[data['ACTIVITY_NAME'].str.like('%HOLIDAY%')]
result = otp.run(data,
                 start=otp.dt(1990, 1, 3),
                 end=otp.dt(2024, 1, 4),
                 timezone='UTC',
                 symbols='TDI_F_CL')
result
```

```myst-ansi
         Time CALENDAR_NAME ACTIVITY_NAME         TIME_ZONE START_DATE  \
0  1993-01-06      TDI_F_CL           DAY  America/New_York 1993-01-06   
1  1993-03-13      TDI_F_CL           DAY  America/New_York 1993-03-13   
2  2001-09-17      TDI_F_CL           DAY  America/New_York 2001-09-17   
3  2001-09-18      TDI_F_CL           DAY  America/New_York 2001-09-18   
4  2001-09-20      TDI_F_CL           DAY  America/New_York 2001-09-20   
..        ...           ...           ...               ...        ...   
13 2007-02-01      TDI_F_CL        NIGHT1  America/New_York 2007-02-01   
14 2007-02-01      TDI_F_CL        NIGHT2  America/New_York 2007-02-01   
15 2008-09-15      TDI_F_CL        NIGHT1  America/New_York 2008-09-15   
16 2008-09-16      TDI_F_CL        NIGHT1  America/New_York 2008-09-16   
17 2015-09-21      TDI_F_CL        NIGHT2  America/New_York 2015-09-21   

     END_DATE START_TIME END_TIME  WEEKDAYS DELETED_TIME  TICK_STATUS  OMDSEQ  
0  1993-03-12      09:45    15:40        62   1970-01-01            0       2  
1  2001-09-10      09:45    15:15        62   1970-01-01            0       2  
2  2001-09-17      11:45    14:40        62   1970-01-01            0      20  
3  2001-09-19      09:45    13:45        62   1970-01-01            0       8  
4  2001-09-28      10:45    13:50        62   1970-01-01            0      67  
..        ...        ...      ...       ...          ...          ...     ...  
13 2008-09-14      18:00    09:00        62   1970-01-01            0      40  
14 2015-09-18      14:30    17:15        62   1970-01-01            0      41  
15 2008-09-15      10:00    09:00         2   1970-01-01            0     210  
16 2068-07-19      18:00    09:00        62   1970-01-01            0      30  
17 2068-07-19      14:30    17:00        62   1970-01-01            0     212  

[18 rows x 12 columns]
```

## Market Holiday Calendar

Retrieve the Holiday Calendar from the `OQD_MKTCAL` database, for Database `LSE`.

```ipython3
import onetick.py as otp

data = otp.DataSource(db='OQD_MKTCAL', tick_type='MKTCAL')
data = data.where(data['ACTIVITY_NAME'].str.like('%HOLIDAY%'))
result = otp.run(data,
                 start=otp.dt(2023, 1, 3),
                 end=otp.dt(2024, 1, 4),
                 timezone='UTC',
                 symbols='CLOUD_DB_LSE')
result
```

```myst-ansi
         Time CALENDAR_NAME ACTIVITY_NAME      TIME_ZONE START_DATE  \
0  2023-04-07  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-04-07   
1  2023-04-10  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-04-10   
2  2023-05-01  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-05-01   
3  2023-05-08  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-05-08   
4  2023-05-29  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-05-29   
5  2023-08-28  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-08-28   
6  2023-12-22  CLOUD_DB_LSE   DAY_HOLIDAY  Europe/London 2023-12-22   
7  2023-12-25  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-12-25   
8  2023-12-26  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2023-12-26   
9  2023-12-29  CLOUD_DB_LSE   DAY_HOLIDAY  Europe/London 2023-12-29   
10 2024-01-01  CLOUD_DB_LSE   ALL_HOLIDAY  Europe/London 2024-01-01   

     END_DATE START_TIME END_TIME  WEEKDAYS DELETED_TIME  TICK_STATUS  OMDSEQ  
0  2023-04-07      00:00    24:00        32   1970-01-01            0     725  
1  2023-04-10      00:00    24:00         2   1970-01-01            0     289  
2  2023-05-01      00:00    24:00         2   1970-01-01            0     470  
3  2023-05-08      00:00    24:00         2   1970-01-01            0      48  
4  2023-05-29      00:00    24:00         2   1970-01-01            0     301  
5  2023-08-28      00:00    24:00         2   1970-01-01            0      38  
6  2023-12-22      08:00    12:30        32   1970-01-01            0      60  
7  2023-12-25      00:00    24:00         2   1970-01-01            0     648  
8  2023-12-26      00:00    24:00         4   1970-01-01            0     362  
9  2023-12-29      08:00    12:30        32   1970-01-01            0     146  
10 2024-01-01      00:00    24:00         2   1970-01-01            0     804  
```

## Market Trading Hours

Retrieve the Standard Trading Hours from the `OQD_MKTCAL` database, for Database `LSE`.

```ipython3
import onetick.py as otp

data = otp.DataSource(db='OQD_MKTCAL', tick_type='MKTCAL')
_, data = data[data['ACTIVITY_NAME'].str.like('%HOLIDAY%')]
result = otp.run(data,
                 start=otp.dt(1990, 1, 3),
                 end=otp.dt(2024, 1, 4),
                 timezone='UTC',
                 symbols='CLOUD_DB_LSE')
result
```

```myst-ansi
        Time CALENDAR_NAME ACTIVITY_NAME      TIME_ZONE START_DATE   END_DATE  \
0 1993-01-01  CLOUD_DB_LSE        MARKET  Europe/London 1993-01-01 2068-07-19   
1 1993-01-01  CLOUD_DB_LSE   POST_MARKET  Europe/London 1993-01-01 2068-07-19   
2 1993-01-01  CLOUD_DB_LSE    PRE_MARKET  Europe/London 1993-01-01 2068-07-19   
3 1993-01-01  CLOUD_DB_LSE  X_MARKET_MTF  Europe/London 1993-01-01 2068-07-19   

  START_TIME END_TIME  WEEKDAYS DELETED_TIME  TICK_STATUS  OMDSEQ  
0      08:00    16:30        62   1970-01-01            0     635  
1      16:30    18:30        62   1970-01-01            0     636  
2      07:00    08:00        62   1970-01-01            0     637  
3      08:00    16:30        62   1970-01-01            0     638  
```
