# Data Retrieval - Tick

This section contains 6 examples for Data Retrieval - Tick 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__'
```

## Trades

Retrieve Exchange trades from the `US_COMP_SAMPLE` database for `CSCO`, across the specified time range.

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

```myst-ansi
                            Time EXCHANGE  COND STOP_STOCK SOURCE TRF TTE  \
0  2024-01-03 09:30:00.065443591        Z  @  I                 N       0   
1  2024-01-03 09:30:00.111130049        Z  @  I                 N       0   
2  2024-01-03 09:30:00.127459523        V  @                    N       0   
3  2024-01-03 09:30:00.128498068        Z  @F I                 N       1   
4  2024-01-03 09:30:00.135190071        Q  @FTI                 N       1   
..                           ...      ...   ...        ...    ...  ..  ..   
95 2024-01-03 09:30:00.897416820        Q  @F I                 N       1   
96 2024-01-03 09:30:00.897444128        Q  @F I                 N       1   
97 2024-01-03 09:30:00.897474806        Q  @F I                 N       1   
98 2024-01-03 09:30:00.897476583        Q  @F I                 N       1   
99 2024-01-03 09:30:00.897670983        D  @                    N   Q   0   

   TICKER    PRICE        DELETED_TIME  TICK_STATUS  SIZE  CORR  SEQ_NUM  \
0    CSCO  50.0200 1969-12-31 19:00:00            0     2     0   169103   
1    CSCO  50.1600 1969-12-31 19:00:00            0     3     0   169148   
2    CSCO  50.1700 1969-12-31 19:00:00            0   100     0   169181   
3    CSCO  50.1700 1969-12-31 19:00:00            0     5     0   169182   
4    CSCO  50.1300 1969-12-31 19:00:00            0    46     0   169193   
..    ...      ...                 ...          ...   ...   ...      ...   
95   CSCO  50.0800 1969-12-31 19:00:00            0    51     0   171857   
96   CSCO  50.0800 1969-12-31 19:00:00            0    29     0   171858   
97   CSCO  50.0800 1969-12-31 19:00:00            0    12     0   171859   
98   CSCO  50.0800 1969-12-31 19:00:00            0     2     0   171860   
99   CSCO  50.0797 1969-12-31 19:00:00            0   100     0   171862   

   TRADE_ID              PARTICIPANT_TIME                      TRF_TIME  \
0        42 2024-01-03 09:30:00.065250000 1969-12-31 19:00:00.000000000   
1        43 2024-01-03 09:30:00.110938000 1969-12-31 19:00:00.000000000   
2        13 2024-01-03 09:30:00.065044730 1969-12-31 19:00:00.000000000   
3        44 2024-01-03 09:30:00.128306000 1969-12-31 19:00:00.000000000   
4       349 2024-01-03 09:30:00.135173836 1969-12-31 19:00:00.000000000   
..      ...                           ...                           ...   
95      365 2024-01-03 09:30:00.897398456 1969-12-31 19:00:00.000000000   
96      366 2024-01-03 09:30:00.897428791 1969-12-31 19:00:00.000000000   
97      367 2024-01-03 09:30:00.897456284 1969-12-31 19:00:00.000000000   
98      368 2024-01-03 09:30:00.897456284 1969-12-31 19:00:00.000000000   
99      100 2024-01-03 09:30:00.896374950 2024-01-03 09:30:00.897637536   

    OMDSEQ  
0        0  
1        0  
2        0  
3        0  
4        0  
..     ...  
95       3  
96       4  
97       5  
98       6  
99       7  

[100 rows x 18 columns]
```

## Quotes

Retrieve Exchange quotes from the `US_COMP_SAMPLE` database for `CSCO`, across the specified time range.

```ipython3
import onetick.py as otp

data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='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
```

```myst-ansi
                            Time EXCHANGE CORR        DELETED_TIME  \
0  2024-01-03 09:30:00.001830617        Z      1969-12-31 19:00:00   
1  2024-01-03 09:30:00.002078349        K      1969-12-31 19:00:00   
2  2024-01-03 09:30:00.002215206        Q      1969-12-31 19:00:00   
3  2024-01-03 09:30:00.002341904        K      1969-12-31 19:00:00   
4  2024-01-03 09:30:00.002524728        Z      1969-12-31 19:00:00   
..                           ...      ...  ...                 ...   
95 2024-01-03 09:30:00.546456694        K      1969-12-31 19:00:00   
96 2024-01-03 09:30:00.546476188        Z      1969-12-31 19:00:00   
97 2024-01-03 09:30:00.546535306        K      1969-12-31 19:00:00   
98 2024-01-03 09:30:00.546541854        U      1969-12-31 19:00:00   
99 2024-01-03 09:30:00.546550892        K      1969-12-31 19:00:00   

    TICK_STATUS COND NBBO_IND FINRA_BBO_IND FINRA_ADF_MPID_IND SOURCE  ...  \
0             0    R        4                                       N  ...   
1             0    R        0                                       N  ...   
2             0    R        0                                       N  ...   
3             0    R        0                                       N  ...   
4             0    R        4                                       N  ...   
..          ...  ...      ...           ...                ...    ...  ...   
95            0    R        0                                       N  ...   
96            0    R        0                                       N  ...   
97            0    R        0                                       N  ...   
98            0    R        0                                       N  ...   
99            0    R        0                                       N  ...   

   TICKER BID_PRICE BID_SIZE ASK_PRICE ASK_SIZE SEQ_NUM  \
0    CSCO     50.00        9     50.18        2  760290   
1    CSCO     49.80        1     50.37        1  760345   
2    CSCO     50.00        6     50.20        7  760370   
3    CSCO     49.80        1     50.37        1  760434   
4    CSCO     50.00        9     50.18        3  760445   
..    ...       ...      ...       ...      ...     ...   
95   CSCO     50.00        2     50.17        2  777868   
96   CSCO     50.01        2     50.16        1  777869   
97   CSCO     50.00        2     50.17        2  777873   
98   CSCO     50.00        2     50.17        2  777874   
99   CSCO     50.00        2     50.17        2  777875   

                PARTICIPANT_TIME      FINRA_ADF_TIME  SECURITY_STATUS_IND  \
0  2024-01-03 09:30:00.001336000 1969-12-31 19:00:00                        
1  2024-01-03 09:30:00.001881000 1969-12-31 19:00:00                        
2  2024-01-03 09:30:00.002199928 1969-12-31 19:00:00                        
3  2024-01-03 09:30:00.002147000 1969-12-31 19:00:00                        
4  2024-01-03 09:30:00.002344000 1969-12-31 19:00:00                        
..                           ...                 ...                  ...   
95 2024-01-03 09:30:00.546282000 1969-12-31 19:00:00                        
96 2024-01-03 09:30:00.546298000 1969-12-31 19:00:00                        
97 2024-01-03 09:30:00.546361000 1969-12-31 19:00:00                        
98 2024-01-03 09:30:00.546367116 1969-12-31 19:00:00                        
99 2024-01-03 09:30:00.546374000 1969-12-31 19:00:00                        

    OMDSEQ  
0        0  
1        0  
2        1  
3        2  
4        3  
..     ...  
95      14  
96      15  
97      16  
98      17  
99      18  

[100 rows x 26 columns]
```

## NBBO

Retrieve NBBO quotes from the `US_COMP_SAMPLE` database for `CSCO`, across the specified time range.

```ipython3
import onetick.py as otp

data = otp.DataSource(db='US_COMP_SAMPLE', tick_type='NBBO')
# 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
```

```myst-ansi
                            Time  BID_PRICE  BID_SIZE  BID_SIZE_TOTAL  \
0  2024-01-03 09:30:00.001830617      50.00         9              14   
1  2024-01-03 09:30:00.002215206      50.00         9              15   
2  2024-01-03 09:30:00.002524728      50.00         9              15   
3  2024-01-03 09:30:00.003295288      50.00        10              16   
4  2024-01-03 09:30:00.010072539      50.00        10              16   
..                           ...        ...       ...             ...   
95 2024-01-03 09:30:00.652918680      50.06         2               4   
96 2024-01-03 09:30:00.652981633      50.06         2               2   
97 2024-01-03 09:30:00.652986724      50.05         2               4   
98 2024-01-03 09:30:00.653005094      50.05         2               6   
99 2024-01-03 09:30:00.653037674      50.05         2               6   

   BID_EXCHANGE  ASK_PRICE  ASK_SIZE  ASK_SIZE_TOTAL ASK_EXCHANGE  \
0             Z      50.18         2               2            Z   
1             Z      50.18         2               2            Z   
2             Z      50.18         3               3            Z   
3             Z      50.18         3               3            Z   
4             Z      50.18         4               4            Z   
..          ...        ...       ...             ...          ...   
95            U      50.09         2               3            U   
96            U      50.09         2               3            U   
97            Z      50.09         2               3            U   
98            Z      50.09         2               3            U   
99            Z      50.09         3               5            Z   

    IS_PRE_OPEN  OMDSEQ  
0             0       0  
1             0       0  
2             0       1  
3             0       0  
4             0       0  
..          ...     ...  
95            0       2  
96            0       3  
97            0       4  
98            0       0  
99            0       1  

[100 rows x 11 columns]
```

## Indicative Prices

Retrieve Indicative Auction Prices 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='IND')
# Return first 100 Rows
data = data.limit(100)
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                     EXCH_TIME  PRICE    SIZE  \
0  2024-01-03 07:50:00.075 2024-01-03 07:50:00.074938266  69.00    6000   
1  2024-01-03 07:50:00.076 2024-01-03 07:50:00.075324726  69.00    6880   
2  2024-01-03 07:50:00.085 2024-01-03 07:50:00.085221086  69.00    7370   
3  2024-01-03 07:50:00.088 2024-01-03 07:50:00.087546226  69.00    8870   
4  2024-01-03 07:50:00.090 2024-01-03 07:50:00.089537586  68.28    9505   
..                     ...                           ...    ...     ...   
95 2024-01-03 07:55:00.003 2024-01-03 07:55:00.003081449  69.00  116438   
96 2024-01-03 07:55:00.534 2024-01-03 07:55:00.533325177  68.35  148938   
97 2024-01-03 07:55:00.644 2024-01-03 07:55:00.643580237  68.43  148938   
98 2024-01-03 07:55:00.644 2024-01-03 07:55:00.643616077  68.35  148938   
99 2024-01-03 07:55:05.134 2024-01-03 07:55:05.133979316  68.35  156237   

   IMB_SIDE  IMB_VOLUME AUCTION_TYPE  OMDSEQ  
0         B        2900            O      28  
1         B        2020            O       5  
2         B        1530            O       8  
3         B          30            O       1  
4         B        1945            O       8  
..      ...         ...          ...     ...  
95        B        4774            O       5  
96        B       29604            O       0  
97        B        1256            O       1  
98        B       29604            O       2  
99        B       22305            O       1  

[100 rows x 8 columns]
```

## Market Phases

Retrieve Exchange market phase changes 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='MKT')

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 MKT_PHASE QUOTE_BOOK_STATUS OFF_BOOK_STATUS  \
0 2024-01-03 07:15:00.037                                           T   
1 2024-01-03 07:50:00.067         a                                 T   
2 2024-01-03 08:00:06.226         T                                 T   
3 2024-01-03 16:30:00.107         d                                 T   
4 2024-01-03 16:35:07.331         u                                 T   
5 2024-01-03 16:40:00.025         b                                 T   
6 2024-01-03 17:15:00.080         x                                 T   
7 2024-01-03 17:30:00.041         c                                 T   
8 2024-01-03 17:30:00.041         c                                 c   

  OMD_STATUS  OMDSEQ  
0          R      77  
1          O     134  
2          T      26  
3          C      91  
4          t       0  
5          p      34  
6          p     106  
7          c      34  
8          c       0  
```

## Short Interest

Query short interest data for `AAPL` over the last 7 days.<br />
\\\\
Returns all available short interest metrics for the specified date range.

```python
import onetick.py as otp

data = otp.DataSource(db='US_SHORT_INT', tick_type='DAY')

result = otp.run(data,
                 symbols='AAPL',
                 start=otp.now() - otp.Day(7),
                 end=otp.now(),
                 timezone='America/New_York')

# Display the result
result
```

|    | Time                |   SHORT_VOLUME |   SHORT_EXEMPT_VOLUME |      VOLUME | TRF   |   OMDSEQ |
|----|---------------------|----------------|-----------------------|-------------|-------|----------|
|  0 | 2026-07-27 20:15:00 |    7.12266e+06 |                 36753 | 1.76945e+07 | BQN   |       30 |
|  1 | 2026-07-28 20:15:00 |    9.60599e+06 |                 42284 | 1.90899e+07 | BQN   |       32 |
|  2 | 2026-07-29 20:15:00 |    8.47753e+06 |                 43470 | 1.76618e+07 | BQN   |       30 |
|  3 | 2026-07-30 20:15:00 |    9.69986e+06 |                 39078 | 2.02463e+07 | BQN   |       29 |
|  4 | 2026-07-31 20:15:00 |    2.36486e+07 |                822016 | 4.49851e+07 | BQN   |       31 |
