Options

Get Option Expiration Dates

Request class: OptionExpirationQueryRequest

Description

Get option expiration date information for specified stocks. Maximum of 30 requests per batch.

Parameters

ParameterRequiredTypeDescription
symbolsYesarrayList of stock symbols, limit: 30
marketYesstringUS / HK for Hong Kong stocks

Response
com.tigerbrokers.stock.openapi.client.https.response.option.OptionExpirationResponsesource

Structure:

public class OptionExpirationResponse extends TigerResponse {
  @JSONField(name = "data")
  private List<OptionExpirationItem> optionExpirationItems;
}

The returned data can be accessed through the OptionExpirationResponse.getOptionExpirationItems() method, which returns OptionExpirationItem objects. The com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionExpirationItem properties are as follows:

NameTypeDescription
symbolstringStock symbol
countintNumber of expiration dates
datesarrayExpiration dates in date format, e.g.: 2024-06-28
timestampsarrayExpiration dates in timestamp format, e.g.: 1544763600000 (US New York time timestamp)
periodTagsarrayOption period tags, m for monthly options, w for weekly options
optionSymbolsarraySymbol corresponding to the four option elements

Specific fields can be accessed through the object's get methods, such as getSymbol(), or converted to string through the object's toString() method.

Example

List<String> symbols = new ArrayList<>();
symbols.add("VIX");
OptionExpirationResponse response = client.execute(
        new OptionExpirationQueryRequest(symbols, Market.US));
// HK market option. market parameter must be Market.HK
// symbols.add("PAI.HK");
// OptionExpirationResponse response = client.execute(
//        new OptionExpirationQueryRequest(symbols, Market.HK));
if (response.isSuccess()) {
  System.out.println(JSONObject.toJSONString(response));
} else {
  System.out.println("response error:" + response.getMessage());
}

Example Response

{
    "code": 0,
    "data": [
        {
            "count": 12,
            "dates": [
                "2024-12-24",
                "2024-12-31",
                "2025-01-08",
                "2025-01-15",
                "2025-01-22",
                "2025-02-19",
                "2025-03-18",
                "2025-04-16",
                "2025-05-21",
                "2025-06-18",
                "2025-07-16",
                "2025-08-20"
            ],
            "optionSymbols": [
                "VIXW",
                "VIXW",
                "VIXW",
                "VIXW",
                "VIX",
                "VIX",
                "VIX",
                "VIX",
                "VIX",
                "VIX",
                "VIX",
                "VIX"
            ],
            "periodTags": [
                "w",
                "q",
                "w",
                "w",
                "m",
                "m",
                "m",
                "m",
                "m",
                "m",
                "m",
                "m"
            ],
            "symbol": "VIX",
            "timestamps": [
                1735016400000,
                1735621200000,
                1736312400000,
                1736917200000,
                1737522000000,
                1739941200000,
                1742270400000,
                1744776000000,
                1747800000000,
                1750219200000,
                1752638400000,
                1755662400000
            ]
        }
    ],
    "message": "success",
    "sign": "jBxaUFSd6e1qIsEeb6l7/Wb8R7kMcNvvglzC6PsJpd7VMP12HKyKMJH8+4g1ePLyT/TzVhyJpCEpXcUAkGrg7hVMMhLoD397vW2Xf0VKedE5mKMy4I+yFK2PneZXr4xKyfCc/+Yb3dc//1gOEEvk9EQHjDzXp6bmy/dFD4020h0=",
    "success": true,
    "timestamp": 1735048291531
}

S&P 500 (.SPX) option symbols

Monthly options use SPX; weekly and quarterly options use SPXW.


Get Option Chain

Request class: OptionChainQueryV3Request

Description

Get option chain data.

⚠️

Option-chain Greeks are deprecated

Greek-related option-chain request flags, filters/models, and response fields delta, gamma, theta, vega, and rho are Deprecated. Their values are updated daily and are not timely enough for intraday use. Do not use them for real-time trading decisions. Use the Option Calculation Tool with current market inputs instead.

Parameters

ParameterTypeRequiredDescription
symbolstringYesStock symbol, symbol and expiry combination limit: 30
expiryStringYesOption expiration date, example: '2022-01-01'
marketstringYesUS/HK for Hong Kong stocks

Filter Parameters:

OptionChainFilterModel.Greeks and its methods are Deprecated because they filter on daily-updated values that are not suitable for intraday use.

ParameterTypeRequiredDescription
implied_volatilitydoubleNoImplied volatility
in_the_moneybooleanNoWhether the option is in the money
open_interestintNoOpen interest
deltadoubleNoDeprecated. Daily-updated Delta filter; not suitable for intraday use
gammadoubleNoDeprecated. Daily-updated Gamma filter; not suitable for intraday use
thetadoubleNoDeprecated. Daily-updated Theta filter; not suitable for intraday use
vegadoubleNoDeprecated. Daily-updated Vega filter; not suitable for intraday use
rhodoubleNoDeprecated. Daily-updated Rho filter; not suitable for intraday use

Deprecated daily-updated Greek values are not returned by default. Do not enable them in new integrations; use the option calculation tool instead.

Response
com.tigerbrokers.stock.openapi.client.https.response.option.OptionChainResponsesource

Structure:

public class OptionChainResponse extends TigerResponse {

  @JSONField(name = "data")
  private List<OptionChainItem> optionChainItems;
}

The returned data can be accessed through the OptionChainResponse.getOptionChainItems() method, which returns OptionChainItem objects. The com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionChainItem properties are as follows:

NameTypeDescription
symbolstringUnderlying stock symbol
expirylongOption expiration date
itemsList<OptionRealTimeQuoteGroup>List containing OptionRealTimeQuoteGroup objects, saves option chain data, details below

OptionRealTimeQuoteGroup object structure:

NameTypeDescription
putOptionRealTimeQuotePut option
callOptionRealTimeQuoteCall option

OptionRealTimeQuote object structure:

NameTypeDescription
identifierstringOption identifier, e.g.: AAPL 210115C00095000
strikedoubleStrike price
rightstringOption right, PUT/CALL
askPricedoubleAsk price
askSizeintAsk size
bidPricedoubleBid price
bidSizeintBid size
lastTimestamplongLast trade timestamp, e.g.: 1543343800698
latestPricedoubleLatest price
multiplierdoubleMultiplier, US options default 100
openInterestintOpen interest
preClosedoublePrevious trading day's closing price
volumelongVolume
impliedVoldoubleImplied volatility
deltadoubleDeprecated. Daily-updated Delta; not suitable for intraday use
gammadoubleDeprecated. Daily-updated Gamma; not suitable for intraday use
thetadoubleDeprecated. Daily-updated Theta; not suitable for intraday use
vegadoubleDeprecated. Daily-updated Vega; not suitable for intraday use
rhodoubleDeprecated. Daily-updated Rho; not suitable for intraday use

Specific fields can be accessed through the object's get methods, such as getSymbol(), or converted to string through json methods.

Example

OptionChainModel basicModel = new OptionChainModel("AAPL", "2024-07-26",  TimeZoneId.NewYork);
OptionChainFilterModel filterModel = new OptionChainFilterModel()
  .inTheMoney(true)
  .impliedVolatility(0.1537, 0.8282)
  .openInterest(10, 50000)
;
OptionChainQueryV3Request request = OptionChainQueryV3Request.of(basicModel, filterModel, Market.US);

OptionChainResponse response = client.execute(request);
if (response.isSuccess()) {
  System.out.println(JSONObject.toJSONString(response));
} else {
  System.out.println("response error:" + response.getMessage());
}

Example Response

{
  "code": 0,
  "data": [
    {
      "expiry": 1721966400000,
      "items": [
        {
          "put": {
            "askPrice": 4.65,
            "askSize": 2,
            "bidPrice": 4.5,
            "bidSize": 66,
            "delta": -0.503388,
            "gamma": 0.037062,
            "identifier": "AAPL  240726P00210000",
            "impliedVol": 0.183129,
            "lastTimestamp": 1719345582586,
            "latestPrice": 4.6,
            "multiplier": 100,
            "openInterest": 1858,
            "preClose": 5.26,
            "rho": -0.072819,
            "right": "put",
            "strike": "210.0",
            "theta": -0.060326,
            "vega": 0.24135,
            "volume": 404
          }
        },
        {
          "put": {
            "askPrice": 7.75,
            "askSize": 59,
            "bidPrice": 7.4,
            "bidSize": 260,
            "delta": -0.686314,
            "gamma": 0.03523,
            "identifier": "AAPL  240726P00215000",
            "impliedVol": 0.18012,
            "lastTimestamp": 1719345365800,
            "latestPrice": 7.8,
            "multiplier": 100,
            "openInterest": 1222,
            "preClose": 8.5,
            "rho": -0.084955,
            "right": "put",
            "strike": "215.0",
            "theta": -0.048649,
            "vega": 0.21153,
            "volume": 134
          }
        }
      ],
      "symbol": "AAPL"
    }
  ],
  "message": "success",
  "sign": "dA0ngWPHWC0GOme2h0/FPma5UAcLSKiR5vWw9ldZ1wz8sHiRG7QMroO78JXqK5A+J3m6XWT9esAXagwbs8D6mI/3vhFU5QCJQbDd58lQRJRWeAK/G+7eQOwAQIqvgLttBtMBbRKlHMchhHATgUi9U7v/eu4NG5tDHr04InQy0cc=",
  "success": true,
  "timestamp": 1719407360986
}

Get Option Real-time Quotes

Request class: OptionBriefQueryV2Request

Description

Gets real-time option quotes. Corresponding market data permissions must be purchased before using this endpoint. Each request supports up to 30 options.

Parameters

ParameterTypeRequiredDescription
marketMarketYesMarket, supports US, HK
option_basicList<OptionCommonModel>YesList of option four elements, max 30

OptionCommonModel parameter structure:

ParameterTypeRequiredDescription
symbolstringYesStock symbol. For Hong Kong stocks, use the symbol returned by the "Get Hong Kong Option Names" endpoint
rightstringYesCall or put (CALL/PUT)
expirylongYesExpiration time
strikestringYesStrike price. Decimal places must match the option chain: US options require at least one decimal place and may require two; HK stock options use two; HK index options use none.

Response
com.tigerbrokers.stock.openapi.client.https.request.option.OptionBriefResponsesource

Structure:

public class OptionBriefResponse extends TigerResponse {

  @JSONField(name = "data")
  private List<OptionBriefItem> optionBriefItems;
}

The returned data can be accessed through the TigerResponse.getOptionBriefItems() method, which returns OptionBriefItem objects. The com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionBriefItem properties are as follows:

FieldTypeDescription
symbolstringStock symbol
strikestringStrike price
bidPricedoubleBid price
bidSizeintBid size
askPricedoubleAsk price
askSizeintAsk size
latestPricedoubleLatest price
timestamplongLatest trade time
volumeintVolume
highdoubleHigh price
lowdoubleLow price
opendoubleOpen price
preClosedoublePrevious trading day's closing price
openInterestintOpen interest
changedoublePrice change
multiplierintMultiplier, US options default 100
ratesBondsdoubleOne-year US Treasury rate, updated daily, e.g.: 0.0078 means actual rate is: 0.78%
rightstringDirection (PUT/CALL)
volatilitystringHistorical volatility
expirylongExpiration time (milliseconds, 0 o'clock of the day)
midPricedoubleMid price
midTimestamplongTimestamp of the mid price
markPricedoubleMark price
markTimestamplongTimestamp of the mark price
preMarkPricedoublePrevious mark price
sellingReturndoubleAnnualized return from selling

Specific fields can be accessed through the object's get methods, such as getSymbol(), or converted to string through the object's toString() method.

Example

OptionCommonModel model = new OptionCommonModel();
model.setSymbol("TSLA");
model.setStrike("437.5");
model.setRight("PUT");
model.setExpiry("2026-01-30", TimeZoneId.NewYork);
List<OptionCommonModel> models = new ArrayList<>();
models.add(model);

OptionBriefQueryV2Request request = new OptionBriefQueryV2Request(models, Market.US);
OptionBriefResponse response = client.execute(request);
if (response.isSuccess()) {
   System.out.println(JSONObject.toJSONString(response));
} else {
   System.out.println("response error:" + response.getMessage());
}

Example Response

{
  "code" : 0,
  "message" : "success",
  "timestamp" : 1769061919677,
  "optionBriefItems" : [ {
    "lang" : null,
    "identifier" : "TSLA  260130P00437500",
    "symbol" : "TSLA",
    "strike" : "437.5",
    "bidPrice" : 17.45,
    "bidSize" : 10,
    "askPrice" : 17.65,
    "askSize" : 10,
    "latestPrice" : 17.6,
    "volume" : 967,
    "high" : 25.35,
    "low" : 14.5,
    "open" : 25.35,
    "preClose" : 25.44,
    "openInterest" : 679,
    "change" : -7.84,
    "multiplier" : 100,
    "right" : "put",
    "volatility" : "31.10%",
    "expiry" : 1769749200000,
    "ratesBonds" : 0.035227,
    "midPrice" : 17.55,
    "midTimestamp" : 1769029200460,
    "markPrice" : 17.6,
    "markTimestamp" : 1769029200460,
    "preMarkPrice" : 26.125,
    "sellingReturn" : 1.065105,
    "timestamp" : 1769028900019,
    "latestTime" : "2026-01-21 15:55:00.019",
    "account" : null
  } ],
  "success" : true
}

Get Option Depth Quotes

Request class: OptionDepthQueryRequest

Description

Get option depth market data, supports US and Hong Kong market options, batch requests support up to 30 items at once.

Parameters

ParameterTypeRequiredDescription
marketMarketYesMarket, US/HK
option_basicList<OptionCommonModel>YesOption four-element list, max 30

OptionCommonModel parameter structure:

ParameterTypeRequiredDescription
symbolstringYesStock symbol
rightstringYesCall or Put (CALL/PUT)
expirylongYesExpiry time (milliseconds of day 0 o'clock)
strikestringYesStrike price. Decimal places must match the option chain: US options require at least one decimal place and may require two; HK stock options use two; HK index options use none.

Response
com.tigerbrokers.stock.openapi.client.https.response.option.OptionDepthResponsesource

Structure:

public class OptionDepthResponse extends TigerResponse {

  @JSONField(name = "data")
  private List<OptionDepthItem> optionDepthItems;
}

Return data includes real-time quotes from 17 exchanges during market hours. If the quote is 0, it means that exchange has no quote.

Return data can be accessed through OptionDepthResponse.getOptionDepthItems() method, returning a list of OptionDepthItem objects. The com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionDepthItem properties are:

NameTypeDescription
symbolstringUnderlying stock symbol
expirylongExpiry time
strikestringStrike price
rightstringPUT or CALL
timestamplongData timestamp
askList<OptionDepthOrderBook>Ask order book data
bidList<OptionDepthOrderBook>Bid order book data

OptionDepthOrderBook object structure:

NameTypeDescription
pricedoubleOrder price
codestringOption exchange code
timestamplongExchange time
volumeintOrder volume

Specific fields can be accessed through object's get methods, such as getSymbol(), or converted to string through object's toString() method.

Example

OptionCommonModel model = new OptionCommonModel();
model.setSymbol("AAPL");
model.setRight("PUT");
model.setStrike("210.0");
model.setExpiry("2024-06-28", TimeZoneId.NewYork);

OptionDepthQueryRequest request = OptionDepthQueryRequest.of(model).market(Market.US);
OptionDepthResponse response = client.execute(request);
if (response.isSuccess()) {
  System.out.println(JSONObject.toJSONString(response));
} else {
  System.out.println("response error:" + response.getMessage());
}

Example Response

{
	"code": 0,
	"data": [{
		"ask": [{
			"code": "CBOE",
			"price": 1.19,
			"volume": 10,
			"timestamp": 1718654399000
		},
		{
			"code": "BZX",
			"price": 1.19,
			"volume": 10,
			"timestamp": 1718654399000
		},
		{
			"code": "AMEX",
			"price": 1.19,
			"volume": 2,
			"timestamp": 1718654400000
		},
		{
			"code": "NSDQ",
			"price": 1.19,
			"volume": 2,
			"timestamp": 1718654399000
		},
		{
			"code": "BX",
			"price": 1.19,
			"volume": 2,
			"timestamp": 1718654399000
		},
		{
			"code": "PHLX",
			"price": 1.2,
			"volume": 54,
			"timestamp": 1718654399000
		},
		{
			"code": "BOX",
			"price": 1.2,
			"volume": 31,
			"timestamp": 1718654399000
		},
		{
			"code": "GEM",
			"price": 1.2,
			"volume": 24,
			"timestamp": 1718654399000
		},
		{
			"code": "MCRY",
			"price": 1.2,
			"volume": 24,
			"timestamp": 1718654399000
		},
		{
			"code": "MIAX",
			"price": 1.2,
			"volume": 24,
			"timestamp": 1718654399000
		},
		{
			"code": "EDGX",
			"price": 1.2,
			"volume": 23,
			"timestamp": 1718654399000
		},
		{
			"code": "EMLD",
			"price": 1.2,
			"volume": 18,
			"timestamp": 1718654399000
		},
		{
			"code": "ISE",
			"price": 1.2,
			"volume": 18,
			"timestamp": 1718654399000
		},
		{
			"code": "MPRL",
			"price": 1.2,
			"volume": 8,
			"timestamp": 1718654399000
		},
		{
			"code": "C2",
			"price": 1.2,
			"volume": 6,
			"timestamp": 1718654399000
		},
		{
			"code": "ARCA",
			"price": 1.2,
			"volume": 1,
			"timestamp": 1718654399000
		},
		{
			"code": "MEMX",
			"price": 0.0,
			"volume": 0,
			"timestamp": 1718654402000
		}],
		"bid": [{
			"code": "PHLX",
			"price": 1.12,
			"volume": 48,
			"timestamp": 1718654399000
		},
		{
			"code": "MIAX",
			"price": 1.12,
			"volume": 37,
			"timestamp": 1718654399000
		},
		{
			"code": "BX",
			"price": 1.12,
			"volume": 34,
			"timestamp": 1718654399000
		},
		{
			"code": "BOX",
			"price": 1.12,
			"volume": 32,
			"timestamp": 1718654399000
		},
		{
			"code": "CBOE",
			"price": 1.12,
			"volume": 29,
			"timestamp": 1718654399000
		},
		{
			"code": "MPRL",
			"price": 1.12,
			"volume": 22,
			"timestamp": 1718654399000
		},
		{
			"code": "GEM",
			"price": 1.12,
			"volume": 21,
			"timestamp": 1718654399000
		},
		{
			"code": "EDGX",
			"price": 1.12,
			"volume": 18,
			"timestamp": 1718654399000
		},
		{
			"code": "EMLD",
			"price": 1.12,
			"volume": 16,
			"timestamp": 1718654399000
		},
		{
			"code": "ISE",
			"price": 1.12,
			"volume": 15,
			"timestamp": 1718654399000
		},
		{
			"code": "C2",
			"price": 1.12,
			"volume": 10,
			"timestamp": 1718654399000
		},
		{
			"code": "BZX",
			"price": 1.12,
			"volume": 10,
			"timestamp": 1718654399000
		},
		{
			"code": "MCRY",
			"price": 1.12,
			"volume": 8,
			"timestamp": 1718654399000
		},
		{
			"code": "AMEX",
			"price": 1.12,
			"volume": 4,
			"timestamp": 1718654400000
		},
		{
			"code": "ARCA",
			"price": 1.12,
			"volume": 4,
			"timestamp": 1718654399000
		},
		{
			"code": "NSDQ",
			"price": 1.12,
			"volume": 4,
			"timestamp": 1718654399000
		},
		{
			"code": "MEMX",
			"price": 0.0,
			"volume": 0,
			"timestamp": 1718654402000
		}],
		"expiry": 1719547200000,
		"right": "PUT",
		"strike": "210.0",
		"timestamp": 1718654402000
	}],
	"message": "success",
	"sign": "tlxKbPzgJBN2Q2oUz8GBwpAJ/aUFlNrM3V/uh1fTWd2r3lHfD2TvTul/i6yBtvxR+G7gwfkpE7yoVVo74JacJPOA724zLdSkkHDuC5K2Q9WzIi/C1z0vdRZYtQSPpKsIrDSGc5g9D6m1IYz7HJNSeDa4a5WwyggDetNO86M1PeE=",
	"success": true,
	"timestamp": 1718712279180
}

Get Option Tick-by-Tick Trade Data

Request class: OptionTradeTickQueryRequest

Description

Get option trade tick data, only supports US market options, batch requests support up to 30 items at once.

Parameters

ParameterTypeRequiredDescription
symbolstringYesStock symbol
rightstringYesCall or Put (call/put)
expirylongYesExpiry time (milliseconds of US NewYork time day 0 o'clock)
strikestringYesStrike price. Decimal places must match the option chain: US options require at least one decimal place and may require two.

Response
com.tigerbrokers.stock.openapi.client.https.response.option.OptionTradeTickResponsesource

Structure:

public class OptionTradeTickResponse extends TigerResponse {

  @JSONField(name = "data")
  private List<OptionTradeTickItem> optionTradeTickItems;
}

Half an hour before market open, you can get all data from the previous trading day. After market open, it's data from the new day.

Return data can be accessed through OptionTradeTickResponse.getOptionTradeTickItems() method, returning a list of OptionTradeTickItem objects. The com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionTradeTickItem properties are:

NameTypeDescription
symbolstringUnderlying stock symbol
expirylongExpiry time
strikestringStrike price
rightstringPUT or CALL
itemsList<TradeTickPoint>List of TradeTickPoint objects, each corresponding to single trade tick data

TradeTickPoint object structure:

NameTypeDescription
pricedoubleTrade price
timelongTrade time
volumelongTrade volume

Specific fields can be accessed through object's get methods, such as getSymbol(), or converted to string through object's toString() method.

Example

List<OptionCommonModel> modelList = new ArrayList<>();
OptionCommonModel model1 = new OptionCommonModel();
model1.setSymbol("AAPL");
model1.setRight("PUT");
model1.setStrike("185.0");
model1.setExpiry("2024-03-08", TimeZoneId.NewYork);
modelList.add(model1);

OptionCommonModel model2 = new OptionCommonModel();
model2.setSymbol("AAPL");
model2.setRight("CALL");
model2.setStrike("185.0");
model2.setExpiry("2024-03-08", TimeZoneId.NewYork);
modelList.add(model2);

OptionTradeTickResponse response = client.execute(OptionTradeTickQueryRequest.of(modelList));

if (response.isSuccess()) {
  System.out.println(JSONObject.toJSONString(response));
} else {
  System.out.println("response error:" + response.getMessage());
}

Example Response

{
	"code": 0,
	"data": [{
		"expiry": 1709874000000,
		"items": [{
			"price": 2.63,
			"time": 1708698601086,
			"volume": 4
		}, {
			"price": 2.62,
			"time": 1708698602594,
			"volume": 6
		}, {
			"price": 2.73,
			"time": 1708698606317,
			"volume": 4
		}, {
			"price": 2.72,
			"time": 1708698607576,
			"volume": 38
		}, {
			"price": 2.72,
			"time": 1708698610488,
			"volume": 7
		}],
		"right": "put",
		"strike": "185.0",
		"symbol": "AAPL"
	}, {
		"expiry": 1709874000000,
		"items": [{
			"price": 2.98,
			"time": 1708698600473,
			"volume": 1
		}, {
			"price": 2.98,
			"time": 1708698601051,
			"volume": 5
		}, {
			"price": 2.98,
			"time": 1708698601051,
			"volume": 23
		}, {
			"price": 2.98,
			"time": 1708698601051,
			"volume": 5
		}, {
			"price": 2.99,
			"time": 1708698601051,
			"volume": 11
		}],
		"right": "call",
		"strike": "185.0",
		"symbol": "AAPL"
	}],
	"message": "success",
	"success": true,
	"timestamp": 1708918385248
}

Get Option K-line Data

Request class: OptionKlineQueryV2Request

Description

Get option candlestick bars (K-line data). Batch requests support a maximum of 30 items per request.

Parameters

ParameterTypeRequiredDescription
marketMarketYesMarket, supports US, HK
option_queryList<OptionKlineModel>YesOption K-line query condition list, max 30

OptionKlineModel parameter structure:

ParameterTypeRequiredDescription
symbolstringYesStock symbol
rightstringYesCall or Put (CALL/PUT)
expirylongYesExpiration time
strikestringYesStrike price. Decimal places must match the option chain: US options require at least one decimal place and may require two; HK stock options use two; HK index options use none.
begin_timelongYesStart time
end_timelongYesEnd time
periodstringNoK-line type, values: (day: daily K, 1min: 1 minute, 5min: 5 minutes, 30min: 30 minutes, 60min: 60 minutes)
limitintNoNumber of recent records returned for minute data, default 300, max 1200. If limit is set greater than 1200, only 1200 records will be returned. Daily K-line does not support this
sort_dirstringNoSort direction, includes: ascending, descending. Sort direction enum: Sort Direction

Response
com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionKlineResponsesource

Structure:

public class OptionKlineResponse extends TigerResponse {

  @JSONField(name = "data")
  private List<OptionKlineItem> klineItems;
}

Access the response through OptionKlineResponse.getKlineItems(), which returns OptionKlineItem objects with the following fields:

NameTypeDescription
symbolstringStock symbol
periodstringPeriod type
rightstringCall or Put, values CALL/PUT
strikestringStrike price
expirylongExpiration time in milliseconds
itemsList<OptionKlinePoint>Candlestick bars represented by OptionKlinePoint objects. See the fields below.

OptionKlinePoint bar fields:

NameTypeDescription
highdoubleHighest price
lowdoubleLowest price
opendoubleOpening price
closedoubleClosing price
timelongK-line time
volumeintVolume
openInterestintOpen interest (only available for daily K-line)

Specific fields can be accessed through the object's get methods, such as getSymbol(), or converted to string through the object's toString() method.

Example

OptionKlineModel model = new OptionKlineModel();
model.setSymbol("AAPL");
model.setRight("CALL");
model.setStrike("170.0");
model.setExpiry("2024-06-28", TimeZoneId.NewYork);
model.setBeginTime("2024-06-26", TimeZoneId.NewYork);
model.setEndTime("2024-06-26 12:59:59", TimeZoneId.NewYork);

model.setPeriod(OptionKType.min1.getValue());
model.setLimit(10);
model.setSortDir(SortDir.SortDir_Descend);
OptionKlineQueryV2Request request = OptionKlineQueryV2Request.of(model).market(Market.US);

OptionKlineResponse response = client.execute(request);
if (response.isSuccess()) {
  System.out.println(JSONObject.toJSONString(response));
} else {
  System.out.println("response error:" + response.getMessage());
}

Example Response

{
    "code": 0,
    "data": [
        {
            "expiry": 1719547200000,
            "items": [
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719419340000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719419280000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719419220000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719419160000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719419100000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719419040000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719418980000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719418920000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719418860000,
                    "volume": 0
                },
                {
                    "close": 43.13,
                    "high": 43.13,
                    "low": 43.13,
                    "open": 43.13,
                    "time": 1719418800000,
                    "volume": 0
                }
            ],
            "period": "1min",
            "right": "CALL",
            "strike": "170.0",
            "symbol": "AAPL"
        }
    ],
    "message": "success",
    "sign": "Hpb51+k2OzC8HmcstBV+bCLTbpflPKpR/AxXwCLd9nhhzuiZquPNGbNOhLYzzihJzRrmfCPWQeXM4ldMGLtbXUluLW79vcKBHdoPghENu+68Zod9dqzsH/InAXt444HOSsRXiubITZ+d9OWil+gvitjn9w7x4kn916KlT6R7hYg=",
    "success": true,
    "timestamp": 1719419362447
}

Get Option Intraday Data

Request class: OptionTimelineRequest

Description

Get option timeline data.

Parameters

ParameterTypeRequiredDescription
optionTimelineModelsList<OptionTimelineModel>YesOption list
marketMarketNoMarket, default HK, only supports HK

OptionTimelineModel parameter structure:

ParameterTypeRequiredDescription
symbolstringYesStock symbol
rightstringYesCall or Put (CALL/PUT)
expirylongYesExpiration time
strikestringYesStrike price. Decimal places must match the option chain: HK stock options use two; HK index options use none.

Response

FieldTypeDescription
symbolstringStock symbol
rightstringCall or Put (CALL/PUT)
expirylongExpiration time
strikestringStrike price
preClosedoublePrevious day's close
openAndCloseTimeListList<List<Long>>Trading time period list
minutesList<OptionTimelinePoint>Timeline array, see field descriptions below

Timeline data OptionTimelinePoint structure:

FieldTypeDescription
volumelongVolume
avgPricedoubleAverage trade price
pricedoubleLatest price
timelongCurrent timeline time

Example

OptionTimelineModel model1 = new OptionTimelineModel();
model1.setSymbol("ALB.HK");
model1.setExpiry(1753878054000L);
model1.setStrike("117.50");
model1.setRight("CALL");

OptionTimelineModel model2 = new OptionTimelineModel();
model2.setSymbol("LNI.HK");
model2.setExpiry(1753878054000L);
model2.setStrike("17.00");
model2.setRight("PUT");

OptionTimelineRequest request = OptionTimelineRequest.of(model1, model2);

OptionTimelineResponse response = client.execute(request);
if (response.isSuccess()) {
    System.out.println(JSONObject.toJSONString(response));
} else {
    System.out.println("response error:" + response.getMessage());
}

Example Response

{
  "code" : 0,
  "message" : "success",
  "timestamp" : 1750822293909,
  "sign" : "rEiaFf1LYv32Kbu8C+AKpJ/Y9pjrux8usbFA3FFJUEP28EXHv+PnKX9RBtVLalkyrULNqDqS29zP9hF1OZAng7U9KWFQ1Gy/FcGdbypXRNeJxPgKefHt/Fe4rLweO/eWKE41ZprPZlUZX0fxfeMwqkwcTMfhpuu+HQ2/ocmMgeg=",
  "timelineItems" : [ {
    "lang" : null,
    "symbol" : "ALB.HK",
    "expiry" : 1753878054000,
    "right" : "CALL",
    "strike" : "117.50",
    "preClose" : 2.72,
    "openAndCloseTimeList" : null,
    "minutes" : [{
      "price" : 3.4,
      "avgPrice" : 3.5235946,
      "time" : 1750822140000,
      "volume" : 29
    }, {
      "price" : 3.4,
      "avgPrice" : 3.5235946,
      "time" : 1750822200000,
      "volume" : 0
    }, {
      "price" : 3.4,
      "avgPrice" : 3.5235946,
      "time" : 1750822260000,
      "volume" : 0
    } ],
    "account" : null
  }, {
    "lang" : null,
    "symbol" : "LNI.HK",
    "expiry" : 1753878054000,
    "right" : "PUT",
    "strike" : "17.00",
    "preClose" : 1.28,
    "openAndCloseTimeList" : null,
    "minutes" : [ {
      "price" : 1.21,
      "avgPrice" : 1.21,
      "time" : 1750822140000,
      "volume" : 0
    }, {
      "price" : 1.21,
      "avgPrice" : 1.21,
      "time" : 1750822200000,
      "volume" : 0
    }, {
      "price" : 1.21,
      "avgPrice" : 1.21,
      "time" : 1750822260000,
      "volume" : 0
    } ],
    "account" : null
  } ],
  "success" : true
}

Get Hong Kong Option Symbol

Request class: OptionSymbolRequest

Description

Get Hong Kong stock option symbols, for example, the symbol for 00700 is TCH.HK.

Parameters

ParameterTypeRequiredDescription
marketMarketYesMarket, only supports HK
langstringNoLanguage support: en_US, zh_CN, zh_TW, default: en_US

Response
com.tigerbrokers.stock.openapi.client.https.response.option.OptionSymbolResponsesource

Structure:

public class OptionSymbolResponse extends TigerResponse {

  @JSONField(name = "data")
  private List<OptionSymbolItem> symbolItems;
}

Returns a collection of all option symbol codes and underlying asset symbols for the Hong Kong market.

Return data can be accessed through the OptionSymbolResponse.getSymbolItems() method, returning a list of OptionSymbolItem objects, where com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionSymbolItem properties are:

NameTypeDescription
symbolstringSymbol of the option four elements
namestringUnderlying name
underlyingSymbolstringUnderlying asset symbol code

Specific fields can be accessed through the object's get methods, such as getSymbol(), or converted to string through the object's toString() method.

Example

OptionSymbolRequest request = OptionSymbolRequest.newRequest(Market.HK, Language.en_US);
OptionSymbolResponse response = client.execute(request);
if (response.isSuccess()) {
  System.out.println(JSONObject.toJSONString(response));
} else {
  System.out.println("response error:" + response.getMessage());
}

Example Response

{
  "code": 0,
  "data": [
    {
      "name": "ALC",
      "symbol": "ALC.HK",
      "underlyingSymbol": "02600"
    },
    {
      "name": "CRG",
      "symbol": "CRG.HK",
      "underlyingSymbol": "00390"
    },
    {
      "name": "PAI",
      "symbol": "PAI.HK",
      "underlyingSymbol": "02318"
    },
    {
      "name": "XCC",
      "symbol": "XCC.HK",
      "underlyingSymbol": "00939"
    },
    {
      "name": "AMC",
      "symbol": "AMC.HK",
      "underlyingSymbol": "03188"
    }
  ],
  "message": "success",
  "sign": "NRvOxhF7cpEM9PS+Hofd6/BduEddep0sUlnYq9o9fPUwcZmAj3spI/D2wXu8L/eZSxvWhSfjnB3BL8y7mrpvqY3m9BGeZhf24ZoA0lbY8YXyQ5JjXa0VHWieUmCItoR9E195Nsr2sWCoawJhz7+yaMFioWEe8VThtGrYMiTYnUE=",
  "success": true,
  "timestamp": 1719401951582
}

Get Option Analysis Data


Request class: OptionAnalysisRequest

Description

Query option analysis data.


Parameters

ParameterTypeRequiredDescription
symbolsList<OptionAnalysisModel>YesList of option analysis query items, maximum 10
marketMarketNoMarket, default is US

Single parameter (OptionAnalysisModel)

ParameterTypeRequiredDescription
symbolstringYesUnderlying code (e.g., AAPL)
periodstringYesPeriod (e.g., 52week, or OptionAnalysisPeriod)
requireVolatilityListBooleanNoWhether to return historical and implied volatility time-series data

Return

OptionAnalysisResponse

As follow:

public class OptionAnalysisResponse extends TigerResponse {

  @JSONField(name = "data")
  private List<OptionAnalysisItem> optionAnalysisItems;
}

public class OptionAnalysisItem extends ApiModel {

  private String symbol;
  private Double impliedVol30Days;
  private Double hisVolatility;
  private Double ivHisVRatio;
  private Double callPutRatio;
  private ImpliedVolMetric impliedVolMetric;
  private List<VolatilityItem> volatilityList;
}

public class ImpliedVolMetric implements Serializable {


  private String period;
  private Double percentile;
  private Double rank;
}

public class VolatilityItem implements Serializable {

  private Double impliedVol;
  private Double percentile;
  private Double rank;
  private Double hisVolatility;
  private Long timestamp;
}

NameTypeDescription
impliedVol30DaysdoubleThe implied volatility of the underlying asset. The value obtained by comprehensively weighted calculation of the implied volatility of some options in the option chain is the IV of the underlying asset. It reflects the overall fluctuation of the option chain in the next 30 days, and this data also has reference value for the underlying stock.
hisVolatilitydoubleHistorical volatility of the underlying asset. It reflects the actual fluctuation of the underlying asset over the past 30 days and is used to measure the extent to which the underlying asset deviates from its average price.
ivHisVRatiodoubleImplied Volatility/Historical Volatility Ratio
callPutRatiodoubleCall/Put Ratio
percentiledoubleImplied Volatility Percentile. IV Percentile is also a relative indicator that counts how many days in the past year had an implied volatility lower than the current one. The calculation formula is:
IV Percentile = Number of days in a year with IV lower than the current IV / Number of trading days
The value range of IV Percentile fluctuates between 0% and 100%; when IV Percentile is 0%, it means that 0% of the trading days in the past year had an IV lower than the current IV; when IV Percentile is 100%, it means that 100% of the trading days in the past year had an IV lower than the current IV.
rankdoubleImplied Volatility Rank. IV Rank is a relative indicator that calculates the current relative position of IV based on the highest and lowest IV values of the underlying asset in the past year. The calculation formula is:
IV Rank = (Current IV - Lowest IV in 1 year) / (Highest IV in 1 year - Lowest IV in 1 year)
The value range of IV Rank fluctuates between 0 and 1; when IV Rank is 0, it means the current IV is in the lower range within the past year; when IV Rank is 1, it means the current IV is in the higher range within the past year

VolatilityItem fields (returned when requireVolatilityList=true):

NameTypeDescription
impliedVolDoubleImplied volatility
percentileDoubleIV percentile
rankDoubleIV rank
hisVolatilityDoubleHistorical volatility
timestampLongTimestamp in milliseconds

Example

List<OptionAnalysisModel> items = new ArrayList<>();
items.add(new OptionAnalysisModel("AAPL", OptionAnalysisPeriod.FIFTY_TWO_WEEK));
items.add(new OptionAnalysisModel("TSLA", OptionAnalysisPeriod.FIFTY_TWO_WEEK));
OptionAnalysisRequest request = OptionAnalysisRequest.newRequest(items, Market.US);
OptionAnalysisResponse response =
      client.execute(request);

// Return volatility time-series data.
OptionAnalysisRequest requestWithVolList =
      OptionAnalysisRequest.of("AAPL", OptionAnalysisPeriod.FIFTY_TWO_WEEK, true, Market.US);
OptionAnalysisResponse responseWithVolList =
      client.execute(requestWithVolList);

Example Response

[
{
"callPutRatio": 0.6,
"hisVolatility": 0.1967,
"impliedVol30Days": 0.3071,
"impliedVolMetric": {
  "percentile": 0.527363184079602,
  "period": "52week",
  "rank": 0.18213875790384876
},
"ivHisVRatio": 1.5617,
"symbol": "AAPL"
},
{
"callPutRatio": 0,
"hisVolatility": 0.3603,
"impliedVol30Days": 0.5162,
"impliedVolMetric": {
  "percentile": 0.08,
  "period": "52week",
  "rank": 0.04194153521422974
},
"ivHisVRatio": 1.4328,
"symbol": "TSLA"
}
]

When requireVolatilityList=true, the response also contains:

[
  {
    "callPutRatio": 0.6,
    "hisVolatility": 0.1967,
    "impliedVol30Days": 0.3071,
    "impliedVolMetric": {
      "percentile": 0.527,
      "period": "52week",
      "rank": 0.182
    },
    "ivHisVRatio": 1.5617,
    "symbol": "AAPL",
    "volatilityList": [
      {"impliedVol": 0.3012, "percentile": 0.512, "rank": 0.175, "hisVolatility": 0.1923, "timestamp": 1709856000000},
      {"impliedVol": 0.2985, "percentile": 0.498, "rank": 0.168, "hisVolatility": 0.1901, "timestamp": 1709769600000}
    ]
  }
]

Option Indicator Calculation

Description

Calculate various indicators for selected options.

Parameters

ParameterTypeRequiredDescription
clientobjectYesSDK HTTP client
symbolstringYesStock symbol
rightstringYesCall or Put option (CALL/PUT)
strikestringYesStrike price
expirylongYesExpiry time (milliseconds corresponding to 0:00 AM New York time)
underlyingSymbolstringNoUnderlying asset symbol, defaults to symbol value

Response

NameTypeDescription
deltadoubleGreek letter delta
gammadoubleGreek letter gamma
thetadoubleGreek letter theta
vegadoubleGreek letter vega
insideValuedoubleIntrinsic value
timeValuedoubleTime value
leveragedoubleLeverage ratio
openInterestintOpen interest
historyVolatilitydoubleHistorical volatility, percentage value
premiumRatedoublePremium rate, percentage value
profitRatedoubleProfit rate from buying, percentage value
volatilitydoubleImplied volatility, percentage value

Example

OptionFundamentals optionFundamentals = OptionCalcUtils.getOptionFundamentals(client,"BABA", "CALL", "205.0", "2019-11-01");
System.out.println(JSONObject.toJSONString(optionFundamentals));

Example Response

{
	"delta": 0.8573062699731591,
	"gamma": 0.05151538284065261,
	"historyVolatility": 24.38,  // Percentage format, represents 24.38%
	"insideValue": 4.550000000000011,
	"leverage": 30.695960907449216,
	"openInterest": 35417.0,
	"premiumRate": 0.18619306788885054, // Percentage format, represents 0.186%
	"profitRate": 47.138051059662665, // Percentage format, represents 47.138%
	"rho": 1.1107261502375654,
	"theta": -0.17927469728943862,
	"timeValue": 0.32499999999998863,
	"vega": 0.034473845504081974,
	"volatility": 28.62548828125  // Percentage format, represents 28.62%
}

Did this page help you?