Trade Quote
FreeValueStandardPro
Fetch combined trade + quote ticks for an option contract.
- Returns every trade reported by OPRA paired with the last NBBO quote reported by OPRA at the time of trade.
- A quote is matched with a trade if its timestamp
<=the trade timestamp. - To match trades with quotes timestamps that are
<the trade timestamp, specify theexclusiveparameter totrue. After thorough testing, we have determined that usingexclusive=truemight yield better results for various applications. - Multi-day requests are limited to 1 month of data, and must specify an expiration.
rust
pub fn option_history_trade_quote(
&self,
symbol: &str,
expiration: &str,
date: &str,
) -> OptionHistoryTradeQuoteBuilder<'_>Optional parameters chain on the builder: .strike(&str), .right(&str), .start_time(&str), .end_time(&str), .exclusive(bool), .max_dte(i32), .strike_range(i32), .start_date(&str), .end_date(&str). Execute with .await → Result<Vec<TradeQuoteTick>, Error>, or decode chunk-by-chunk with .stream(handler).
Example
rust
let rows = tdx
.option_history_trade_quote("SPY", "20250321", "20250303")
.strike("570")
.right("C")
.await?;
for t in &rows {
println!("ms_of_day={} price={} bid={} ask={}", t.ms_of_day, t.price, t.bid, t.ask);
}Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | yes | — | Ticker symbol (e.g. AAPL) |
expiration | date | yes | — | Expiration date YYYYMMDD |
date | date | yes | — | Date YYYYMMDD |
strike | string | no | * | Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection. |
right | string | no | both | Option side. Accepted values: call, put, both. |
start_time | string | no | 09:30:00 | Start time filter |
end_time | string | no | 16:00:00 | End time filter |
exclusive | bool | no | true | When true, quotes whose timestamp equals the trade timestamp are excluded; only quotes strictly before the trade are paired. |
max_dte | int | no | — | Maximum days to expiration |
strike_range | int | no | — | Strike range filter |
start_date | date | no | — | Start date YYYYMMDD |
end_date | date | no | — | End date YYYYMMDD |
timeout_ms | int | no | — | Per-request deadline in milliseconds. 0 means no deadline. |
Response
Rows of TradeQuoteTick:
| Field | Type | Description |
|---|---|---|
ms_of_day | i32 | Milliseconds since midnight Eastern Time. |
sequence | i32 | Exchange-assigned trade sequence number. |
ext_condition1 | i32 | Additional trade condition code. |
ext_condition2 | i32 | Additional trade condition code. |
ext_condition3 | i32 | Additional trade condition code. |
ext_condition4 | i32 | Additional trade condition code. |
condition | i32 | Trade condition code. |
size | i32 | Number of contracts or shares traded. |
exchange | i32 | Exchange code where the trade executed. |
price | f64 | Trade price. |
condition_flags | i32 | Trade condition flags bitmap. |
price_flags | i32 | Trade price flags bitmap. |
volume_type | i32 | Volume reporting mode: 0 = incremental, 1 = cumulative. |
records_back | i32 | Offset of this record behind the most recent record. |
quote_ms_of_day | i32 | Timestamp of the paired quote, milliseconds since midnight ET. |
bid_size | i32 | Last NBBO bid size. |
bid_exchange | i32 | Exchange code of the NBBO bid. |
bid | f64 | NBBO bid at the time of the trade. |
bid_condition | i32 | Quote condition code on the bid side. |
ask_size | i32 | Last NBBO ask size. |
ask_exchange | i32 | Exchange code of the NBBO ask. |
ask | f64 | NBBO ask at the time of the trade. |
ask_condition | i32 | Quote condition code on the ask side. |
date | i32 | Trading date as a YYYYMMDD integer. |
Wildcard requests additionally populate expiration (YYYYMMDD), strike (dollars), and right ("C" / "P") on every row to identify the contract; on single-contract requests these are absent (None / null / undefined; the Rust and C rows carry the documented 0 / 0.0 / '\0' fills).
Example response
ms_of_day | sequence | ext_condition1 | ext_condition2 | ext_condition3 | ext_condition4 | condition | size | exchange | price | condition_flags | price_flags | volume_type | records_back | quote_ms_of_day | bid_size | bid_exchange | bid | bid_condition | ask_size | ask_exchange | ask | ask_condition | date |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 35703122 | -1986932228 | 255 | 255 | 255 | 255 | 130 | 10 | 6 | 41.71 | 0 | 0 | 0 | 0 | 35699396 | 431 | 5 | 41.2 | 50 | 430 | 5 | 42.09 | 50 | 20240614 |
| 36819652 | -1940530234 | 255 | 255 | 255 | 255 | 125 | 1 | 5 | 40.48 | 0 | 0 | 0 | 0 | 36819403 | 325 | 5 | 40.03 | 50 | 325 | 5 | 40.89 | 50 | 20240614 |
| 37285683 | -1923962418 | 255 | 255 | 255 | 255 | 130 | 2 | 6 | 41.27 | 0 | 0 | 0 | 0 | 37285629 | 250 | 5 | 40.92 | 50 | 250 | 5 | 41.74 | 50 | 20240614 |
Decoded from a captured production response; 3 of 98 rows shown.