Skip to content

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 the exclusiveparameter to true. After thorough testing, we have determined that using exclusive=true might 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 .awaitResult<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

NameTypeRequiredDefaultDescription
symbolstringyesTicker symbol (e.g. AAPL)
expirationdateyesExpiration date YYYYMMDD
datedateyesDate YYYYMMDD
strikestringno*Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection.
rightstringnobothOption side. Accepted values: call, put, both.
start_timestringno09:30:00Start time filter
end_timestringno16:00:00End time filter
exclusiveboolnotrueWhen true, quotes whose timestamp equals the trade timestamp are excluded; only quotes strictly before the trade are paired.
max_dteintnoMaximum days to expiration
strike_rangeintnoStrike range filter
start_datedatenoStart date YYYYMMDD
end_datedatenoEnd date YYYYMMDD
timeout_msintnoPer-request deadline in milliseconds. 0 means no deadline.

Response

Rows of TradeQuoteTick:

FieldTypeDescription
ms_of_dayi32Milliseconds since midnight Eastern Time.
sequencei32Exchange-assigned trade sequence number.
ext_condition1i32Additional trade condition code.
ext_condition2i32Additional trade condition code.
ext_condition3i32Additional trade condition code.
ext_condition4i32Additional trade condition code.
conditioni32Trade condition code.
sizei32Number of contracts or shares traded.
exchangei32Exchange code where the trade executed.
pricef64Trade price.
condition_flagsi32Trade condition flags bitmap.
price_flagsi32Trade price flags bitmap.
volume_typei32Volume reporting mode: 0 = incremental, 1 = cumulative.
records_backi32Offset of this record behind the most recent record.
quote_ms_of_dayi32Timestamp of the paired quote, milliseconds since midnight ET.
bid_sizei32Last NBBO bid size.
bid_exchangei32Exchange code of the NBBO bid.
bidf64NBBO bid at the time of the trade.
bid_conditioni32Quote condition code on the bid side.
ask_sizei32Last NBBO ask size.
ask_exchangei32Exchange code of the NBBO ask.
askf64NBBO ask at the time of the trade.
ask_conditioni32Quote condition code on the ask side.
datei32Trading 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_daysequenceext_condition1ext_condition2ext_condition3ext_condition4conditionsizeexchangepricecondition_flagsprice_flagsvolume_typerecords_backquote_ms_of_daybid_sizebid_exchangebidbid_conditionask_sizeask_exchangeaskask_conditiondate
35703122-198693222825525525525513010641.71000035699396431541.250430542.095020240614
36819652-19405302342552552552551251540.48000036819403325540.0350325540.895020240614
37285683-19239624182552552552551302641.27000037285629250540.9250250541.745020240614

Decoded from a captured production response; 3 of 98 rows shown.

Released under the Apache-2.0 License.