Options
Return models
Response models serialize with camelCase; the tables use SDK Rust field names. Later endpoints reference these tables instead of repeating models.
ImpliedVolMetric
ImpliedVolMetric| Field | Rust type | Description |
|---|---|---|
| period | String | Metric period |
| percentile | f64 | Percentile |
| rank | f64 | Rank |
OptionVolatilityPoint
OptionVolatilityPoint| Field | Rust type | Description |
|---|---|---|
| implied_vol | f64 | Implied volatility |
| percentile | f64 | Percentile |
| rank | f64 | Rank |
| his_volatility | f64 | Historical volatility |
| timestamp | i64 | Unix timestamp in milliseconds |
OptionAnalysis
OptionAnalysis| Field | Rust type | Description |
|---|---|---|
| symbol | String | Underlying symbol |
| implied_vol30_days | f64 | 30-day implied volatility |
| his_volatility | f64 | Historical volatility |
| iv_his_v_ratio | f64 | IV/HV ratio |
| call_put_ratio | f64 | Call/put ratio |
| implied_vol_metric | Option<ImpliedVolMetric> | Implied-volatility metric; see ImpliedVolMetric |
| volatility_list | Vec<OptionVolatilityPoint> | Volatility series; see OptionVolatilityPoint |
OptionLeg
OptionLeg| Field | Rust type | Description |
|---|---|---|
| identifier | String | Option identifier |
| strike | String | Strike price |
| right | String | Option right |
| bid_price | f64 | Best bid price |
| bid_size | i64 | Best bid size |
| ask_price | f64 | Best ask price |
| ask_size | i64 | Best ask size |
| volume | i64 | Volume |
| latest_price | f64 | Latest price |
| pre_close | f64 | Previous close |
| open_interest | i64 | Open interest |
| multiplier | i32 | Contract multiplier |
| last_timestamp | i64 | Last quote timestamp |
| implied_vol | f64 | Implied volatility |
| delta | f64 | Delta (deprecated) |
| gamma | f64 | Gamma (deprecated) |
| theta | f64 | Theta (deprecated) |
| vega | f64 | Vega (deprecated) |
| rho | f64 | Rho (deprecated) |
| mark_price | f64 | Mark price |
| pre_mark_price | f64 | Previous mark price |
| mark_timestamp | i64 | Mark-price timestamp |
| mid_price | f64 | Mid price |
| pre_mid_price | f64 | Previous mid price |
| mid_timestamp | i64 | Mid-price timestamp |
OptionChainRow
OptionChainRow| Field | Rust type | Description |
|---|---|---|
| put | Option<OptionLeg> | Put leg; see OptionLeg |
| call | Option<OptionLeg> | Call leg; see OptionLeg |
OptionChain
OptionChain| Field | Rust type | Description |
|---|---|---|
| symbol | String | Underlying symbol |
| expiry | i64 | Expiration timestamp |
| items | Vec<OptionChainRow> | Put/call pairs; see OptionChainRow |
DepthLevel
DepthLevel| Field | Rust type | Description |
|---|---|---|
| price | f64 | Level price |
| count | i32 | Number of orders at the level |
| volume | i64 | Level volume |
Depth
Depth| Field | Rust type | Description |
|---|---|---|
| symbol | String | Option symbol |
| asks | Vec<DepthLevel> | Ask levels; see DepthLevel |
| bids | Vec<DepthLevel> | Bid levels; see DepthLevel |
OptionExpiration
OptionExpiration| Field | Rust type | Description |
|---|---|---|
| symbol | String | Underlying symbol |
| option_symbols | Vec<String> | Option symbols |
| dates | Vec<String> | Expiration dates |
| timestamps | Vec<i64> | Expiration timestamps |
| periods | Vec<String> | Expiration periods |
| counts | Vec<i32> | Corresponding contract counts |
KlineItem
KlineItem| Field | Rust type | Description |
|---|---|---|
| time | i64 | Bar start time |
| volume | i64 | Volume |
| volume_decimal | Option<f64> | Decimal volume |
| open | f64 | Open price |
| close | f64 | Close price |
| high | f64 | High price |
| low | f64 | Low price |
| amount | f64 | Turnover |
Kline (OptionKline alias)
Kline (OptionKline alias)| Field | Rust type | Description |
|---|---|---|
| symbol | String | Option symbol |
| period | String | Bar period |
| next_page_token | String | Next-page token |
| items | Vec<KlineItem> | Bars; see KlineItem |
Brief (OptionBrief alias)
Brief (OptionBrief alias)| Field | Rust type | Description |
|---|---|---|
| symbol | String | Option symbol |
| open | f64 | Open price |
| high | f64 | High price |
| low | f64 | Low price |
| close | f64 | Close price |
| pre_close | f64 | Previous close |
| latest_price | f64 | Latest price |
| latest_time | i64 | Latest trade time |
| ask_price | f64 | Best ask price |
| ask_size | i64 | Best ask size |
| bid_price | f64 | Best bid price |
| bid_size | i64 | Best bid size |
| volume | i64 | Volume |
| status | String | Status |
| adj_pre_close | f64 | Adjusted previous close |
| change | f64 | Price change |
| change_rate | f64 | Change rate |
| amplitude | f64 | Amplitude |
| expiry | String | Expiration; the SDK deserializes a string or number |
| strike | String | Strike price |
| right | String | Option right |
| multiplier | i32 | Contract multiplier |
| open_interest | i64 | Open interest |
OptionSymbol
OptionSymbol| Field | Rust type | Description |
|---|---|---|
| symbol | String | Underlying symbol |
| market | String | Market |
| name | String | Name |
| name_cn | String | Chinese name |
| name_en | String | English name |
| underlying_symbol | String | Underlying symbol |
TimelineItem
TimelineItem| Field | Rust type | Description |
|---|---|---|
| time | i64 | Timeline point time |
| volume | i64 | Volume |
| volume_decimal | Option<f64> | Decimal volume |
| price | f64 | Price |
| avg_price | f64 | Average price |
TimelineBucket
TimelineBucket| Field | Rust type | Description |
|---|---|---|
| items | Vec<TimelineItem> | Timeline points; see TimelineItem |
Timeline
Timeline| Field | Rust type | Description |
|---|---|---|
| symbol | String | Option symbol |
| period | String | Timeline period |
| pre_close | f64 | Previous close |
| intraday | Option<TimelineBucket> | Intraday timeline; see TimelineBucket |
| pre_hours | Option<TimelineBucket> | Pre-market timeline; see TimelineBucket |
| after_hours | Option<TimelineBucket> | After-hours timeline; see TimelineBucket |
TradeTickItem
TradeTickItem| Field | Rust type | Description |
|---|---|---|
| time | i64 | Trade time |
| volume | i64 | Trade volume |
| price | f64 | Trade price |
| r#type | String | Trade type |
| part_code | String | Participant code |
| part_name | String | Participant name |
| cond | String | Trade condition |
TradeTick
TradeTick| Field | Rust type | Description |
|---|---|---|
| symbol | String | Option symbol |
| begin_index | i64 | Start index |
| end_index | i64 | End index |
| items | Vec<TradeTickItem> | Trade ticks; see TradeTickItem |
Get Option Analysis
Signature
pub async fn get_option_analysis( &self, req: OptionAnalysisRequest, ) -> Result<Vec<OptionAnalysis>, TigerError>
Description
Use symbols or symbol_items; items take precedence; volatility history optional.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.symbols | Option<Vec<String>> | Conditional: at least one of symbols / symbol_items | None (omitted) |
| req.symbol_items | Option<Vec<OptionAnalysisSymbol>> | Conditional: at least one of symbols / symbol_items | None (omitted) |
| req.market | Option<String> | Optional | None (omitted) |
| req.period | Option<String> | Optional | None (omitted) |
| req.require_volatility_list | Option<bool> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<OptionAnalysis>, TigerError>. SeeOptionAnalysis,ImpliedVolMetric, andOptionVolatilityPoint.
implied_vol30_days, historical volatility, ratios, metric, series.
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_analysis(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_analysis(OptionAnalysisRequest { symbols: Some(vec!["AAPL".into()]), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"symbol": "AAPL 250221C00195000",
"impliedVol30Days": 0.2845,
"hisVolatility": 0.213,
"ivHisVRatio": 1.3356,
"callPutRatio": 1.52,
"impliedVolMetric": null,
"volatilityList": [
{
"period": "30d",
"impliedVol": 0.2845,
"hisVolatility": 0.213
}
]
}
]Rate limit
The base rate limit is 60 requests/min.
Get Option Chain
Signature
pub async fn get_option_chain( &self, req: OptionChainRequest, ) -> Result<Vec<OptionChain>, TigerError>
Description
v3; option_basic required; ranges use RangeF64 or RangeI32.
Deprecated:
return_greek_value,option_filter.greeks, and the returned leg fieldsdelta,gamma,theta,vega, andrhoare deprecated. These values update daily and are not suitable for intraday decisions; new integrations should not set these parameters or rely on these response fields.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.option_basic | Option<Vec<OptionChainItem>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.market | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
| req.return_greek_value | Option<bool> | Deprecated; do not set | None (omitted) |
| req.option_filter | Option<OptionChainFilter> | Optional; its greeks field is deprecated | None (omitted) |
Return
QuoteClient:Result<Vec<OptionChain>, TigerError>. SeeOptionChain,OptionChainRow, andOptionLeg.
symbol/expiry/rows with call and put quote, OI, and IV. Greek fields are deprecated and should not be relied upon. Each leg (OptionChainRow) also includes: mark_price: f64 (mark price), pre_mark_price: f64 (previous mark price), mark_timestamp: i64 (mark price timestamp, ms), mid_price: f64 (mid price), pre_mid_price: f64 (previous mid price), mid_timestamp: i64 (mid price timestamp, ms).
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_chain(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_chain(OptionChainRequest { option_basic: Some(Default::default()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"symbol": "AAPL 250221C00195000",
"expiry": 1740096000000,
"items": [
{
"strike": 195.0,
"call": {
"symbol": "AAPL 250221C00195000",
"latestPrice": 3.45,
"volume": 12500,
"openInterest": 35000
},
"put": {
"symbol": "AAPL 250221P00195000",
"latestPrice": 2.8,
"volume": 9800,
"openInterest": 28000
}
}
]
}
]Rate limit
The base rate limit is 60 requests/min.
Get Option Market Depth
Signature
pub async fn get_option_depth( &self, req: OptionDepthRequest, ) -> Result<Vec<Depth>, TigerError>
Description
Returns the option order book. option_basic and market depth access are required.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.option_basic | Option<Vec<OptionQueryItem>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.market | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<Depth>, TigerError>. SeeDepthand nestedDepthLevel.
Vec<Depth>
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_depth(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_depth(OptionDepthRequest { option_basic: Some(Default::default()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"symbol": "AAPL 250221C00195000",
"asks": [
{
"price": 195.51,
"volume": 200
},
{
"price": 195.52,
"volume": 350
}
],
"bids": [
{
"price": 195.49,
"volume": 150
},
{
"price": 195.48,
"volume": 400
}
]
}
]Get Option Expiration
Signature
pub async fn get_option_expiration( &self, symbols: &[&str], market: Option<&str>, ) -> Result<Vec<OptionExpiration>, TigerError>
Description
Nonempty symbols; pass Some("HK") for HK options.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| symbols | &[&str] | Required | None |
| market | Option<&str> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<OptionExpiration>, TigerError>. SeeOptionExpiration.
symbol/dates/timestamps/option_symbols/periods/counts.
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_expiration(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_expiration(&["AAPL"], None).await?;
Ok(())
}
Response example
[
{
"symbol": "AAPL 250221C00195000",
"optionSymbols": ["AAPL 250221C00195000", "AAPL 250221P00195000"],
"dates": ["2025-02-21", "2025-03-21"],
"timestamps": [1740096000000, 1742515200000],
"periods": ["weekly", "monthly"],
"counts": [42, 56]
}
]Special option symbols for indices
- S&P 500 (
.SPX): monthly options useSPX; weekly and quarterly options useSPXW. - Nasdaq-100: monthly options use
NDX; weekly options useNDXP. - VIX: monthly options use
VIX; weekly options useVIXW.
Rate limit
The base rate limit is 60 requests/min.
Get Option Kline
Signature
pub async fn get_option_kline( &self, req: OptionKlineRequest, ) -> Result<Vec<OptionKline>, TigerError>
Description
v2; option_query required; sort direction, range, limit optional per item.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.option_query | Option<Vec<OptionKlineItem>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.market | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<OptionKline>, TigerError>, whereOptionKline = Kline. SeeKlineand nestedKlineItem.
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_kline(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_kline(OptionKlineRequest { option_query: Some(Default::default()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"value": 94836000000.0
}
]Rate limit
The base rate limit is 60 requests/min.
Get Option Quote
Signature
pub async fn get_option_quote( &self, req: OptionQuoteRequest, ) -> Result<Vec<OptionBrief>, TigerError>
Description
v2; option_basic required; use OptionContractItem::from_occ.
Deprecated alias:
get_option_briefforwards to this method and has been marked#[deprecated]in the SDK since 0.5.1. It adds no behavior. Useget_option_quotein new code.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.option_basic | Option<Vec<OptionContractItem>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.market | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<OptionBrief>, TigerError>, whereOptionBrief = Brief. SeeBrief.
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_quote(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_quote(OptionQuoteRequest { option_basic: Some(Default::default()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"value": 94836000000.0
}
]Rate limit
The base rate limit is 120 requests/min.
Get Option Symbols
Signature
pub async fn get_option_symbols( &self, req: OptionSymbolsRequest, ) -> Result<Vec<OptionSymbol>, TigerError>
Description
HK option universe; normally market=HK.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.market | Option<String> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<OptionSymbol>, TigerError>. SeeOptionSymbol.
Symbol, market, names, underlying.
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_symbols(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_symbols(OptionSymbolsRequest { market: Some("US".into()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"symbol": "AAPL",
"market": "US",
"name": "AAPL Options",
"nameCn": "Apple Options",
"nameEn": "AAPL Options",
"underlyingSymbol": "AAPL"
}
]Get Option Timeline
Signature
pub async fn get_option_timeline( &self, req: OptionTimelineRequest, ) -> Result<Vec<Timeline>, TigerError>
Description
option_query required.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.option_query | Option<Vec<OptionQueryItem>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.market | Option<String> | Optional | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<Timeline>, TigerError>. SeeTimeline,TimelineBucket, andTimelineItem.
Vec<Timeline>
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_timeline(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_timeline(OptionTimelineRequest { option_query: Some(Default::default()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"symbol": "AAPL 250221C00195000",
"period": "day",
"preClose": 192.53,
"intraday": null,
"preHours": null,
"afterHours": null
}
]Get Option Trade Ticks
Signature
pub async fn get_option_trade_ticks( &self, req: OptionTradeTicksRequest, ) -> Result<Vec<TradeTick>, TigerError>
Description
contracts required, containing OptionQueryItem.
Parameters
| Parameter | Rust type | Requirement | SDK default |
|---|---|---|---|
| req.contracts | Option<Vec<OptionQueryItem>> | Required by the server; not prevalidated by the SDK | None (omitted) |
| req.lang | Option<String> | Optional | None (omitted) |
Return
QuoteClient:Result<Vec<TradeTick>, TigerError>. SeeTradeTickand nestedTradeTickItem.
Vec<TradeTick>
Example
use std::sync::Arc;
use tigeropen::client::http_client::HttpClient;
use tigeropen::config::ClientConfig;
use tigeropen::error::TigerError;
use tigeropen::model::order::*;
use tigeropen::model::quote::*;
use tigeropen::model::quote_requests::*;
use tigeropen::model::trade_requests::*;
use tigeropen::push::*;
use tigeropen::quote::QuoteClient;
use tigeropen::trade::TradeClient;
async fn example_get_option_trade_ticks(config: ClientConfig, quote: &QuoteClient, trade: &TradeClient, push: &Arc<PushClient>) -> Result<(), TigerError> {
let result_0 = quote.get_option_trade_ticks(OptionTradeTicksRequest { contracts: Some(Default::default()), ..Default::default() }).await?;
Ok(())
}
Response example
[
{
"symbol": "AAPL 250221C00195000",
"beginIndex": 0,
"endIndex": 30,
"items": [
{
"time": 1738180750000,
"price": 195.5,
"volume": 100,
"type": "+"
},
{
"time": 1738180745000,
"price": 195.49,
"volume": 50,
"type": "-"
}
]
}
]Rate limit
The base rate limit is 120 requests/min.
Updated about 1 month ago
