Options
Get Option Expiration Dates
Corresponding Request Class: OptionExpirationQueryRequest
Description
Get option expiration date information for specified stocks. Maximum of 30 requests per batch.
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| symbols | Yes | array | List of stock symbols, limit: 30 |
| market | Yes | string | US / 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:
| Name | Type | Description |
|---|---|---|
| symbol | string | Stock symbol |
| count | int | Number of expiration dates |
| dates | array | Expiration dates in date format, e.g.: 2024-06-28 |
| timestamps | array | Expiration dates in timestamp format, e.g.: 1544763600000 (US New York time timestamp) |
| periodTags | array | Option period tags, m for monthly options, w for weekly options |
| optionSymbols | array | Symbol 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());
}Response Example
{
"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
}Get Option Chain
Corresponding Request Class: OptionChainQueryV3Request
Description
Get option chain data. Note: The returned Greek values are not real-time data, but the last updated values at the close of the previous trading day. During trading hours, you can use Option Indicator Calculation.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Stock symbol, symbol and expiry combination limit: 30 |
| expiry | String | Yes | Option expiration date, example: '2022-01-01' |
| market | string | Yes | US/HK for Hong Kong stocks |
Filter Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| implied_volatility | double | No | Implied volatility |
| in_the_money | boolean | No | Whether in the money |
| open_interest | int | No | Open interest |
| delta | double | No | delta |
| gamma | double | No | gamma |
| theta | double | No | theta |
| vega | double | No | vega |
| rho | double | No | rho |
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:
| Name | Type | Description |
|---|---|---|
| symbol | string | Underlying stock symbol |
| expiry | long | Option expiration date |
| items | List<OptionRealTimeQuoteGroup> | List containing OptionRealTimeQuoteGroup objects, saves option chain data, details below |
OptionRealTimeQuoteGroup object structure:
| Name | Type | Description |
|---|---|---|
| put | OptionRealTimeQuote | Put option |
| call | OptionRealTimeQuote | Call option |
OptionRealTimeQuote object structure:
| Name | Type | Description |
|---|---|---|
| identifier | string | Option identifier, e.g.: AAPL 210115C00095000 |
| strike | double | Strike price |
| right | string | Option direction, PUT/CALL |
| askPrice | double | Ask price |
| askSize | int | Ask size |
| bidPrice | double | Bid price |
| bidSize | int | Bid size |
| lastTimestamp | long | Last trade timestamp, e.g.: 1543343800698 |
| latestPrice | double | Latest price |
| multiplier | double | Multiplier, US options default 100 |
| openInterest | int | Open interest |
| preClose | double | Previous trading day's closing price |
| volume | long | Volume |
| impliedVol | double | Implied volatility |
| delta | double | delta |
| gamma | double | gamma |
| theta | double | theta |
| vega | double | vega |
| rho | double | rho |
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)
.greeks(new OptionChainFilterModel.Greeks()
.delta(-0.8, 0.6)
.gamma(0.024, 0.30)
.vega(0.019, 0.343)
.theta(-0.1, 0.1)
.rho(-0.096, 0.101)
);
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());
}Response Example
{
"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
Corresponding Request Class: OptionBriefQueryV2Request
Description
Get option real-time quote interface. Maximum of 30 requests per batch.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| market | Market | Yes | Market, supports US, HK |
| option_basic | List<OptionCommonModel> | Yes | List of option four elements, max 30 |
OptionCommonModel parameter structure:
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Stock symbol, for Hong Kong stocks refer to "Get Hong Kong Option Names" interface return symbol |
| right | string | Yes | Call or put (CALL/PUT) |
| expiry | long | Yes | Expiration time |
| strike | string | Yes | Strike price |
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:
| Field | Type | Description |
|---|---|---|
| symbol | string | Stock symbol |
| strike | string | Strike price |
| bidPrice | double | Bid price |
| bidSize | int | Bid size |
| askPrice | double | Ask price |
| askSize | int | Ask size |
| latestPrice | double | Latest price |
| timestamp | long | Latest trade time |
| volume | int | Volume |
| high | double | High price |
| low | double | Low price |
| open | double | Open price |
| preClose | double | Previous trading day's closing price |
| openInterest | int | Open interest |
| change | double | Price change |
| multiplier | int | Multiplier, US options default 100 |
| ratesBonds | double | One-year US Treasury rate, updated daily, e.g.: 0.0078 means actual rate is: 0.78% |
| right | string | Direction (PUT/CALL) |
| volatility | string | Historical volatility |
| expiry | long | Expiration time (milliseconds, 0 o'clock of the day) |
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("BRK.B");
model.setRight("CALL");
model.setStrike("400.0");
model.setExpiry("2024-06-28", 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());
}Response Example
{
"code": 0,
"data": [
{
"askPrice": 10.65,
"askSize": 29,
"bidPrice": 7.7,
"bidSize": 32,
"change": 0,
"expiry": 1719547200000,
"high": 14.1,
"identifier": "BRKB 240628C00400000",
"latestPrice": 14.1,
"low": 14.1,
"multiplier": 100,
"open": 14.1,
"openInterest": 28,
"preClose": 14.1,
"ratesBonds": 0.051339,
"right": "call",
"strike": "400.0",
"symbol": "BRK.B",
"volatility": "0.00%",
"volume": 0
}
],
"message": "success",
"sign": "QIP1Jd9BraCJLMhGxKn3mpefuMA6USHdb9K6iibwBZFBnBNSrsmuMnkpzdA0aF+yj7urKFXm/m2Uwvd8kVJLJVi/ExKlHJV6EojVPw8OaZgEwNh7pe+7/thRBorPRYNZgSA0mBTCi9Ud6aSIhYgeLcTWLMci4++T+D8rWtIApxU=",
"success": true,
"timestamp": 1719416337924
}Get Option Depth Market Data
Corresponding 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| market | Market | Yes | Market, US/HK |
| option_basic | List<OptionCommonModel> | Yes | Option four-element list, max 30 |
OptionCommonModel parameter structure:
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Stock symbol |
| right | string | Yes | Call or Put (CALL/PUT) |
| expiry | long | Yes | Expiry time (milliseconds of day 0 o'clock) |
| strike | string | Yes | Strike price |
Return
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:
| Name | Type | Description |
|---|---|---|
| symbol | string | Underlying stock symbol |
| expiry | long | Expiry time |
| strike | string | Strike price |
| right | string | PUT or CALL |
| timestamp | long | Data timestamp |
| ask | List<OptionDepthOrderBook> | Ask order book data |
| bid | List<OptionDepthOrderBook> | Bid order book data |
OptionDepthOrderBook object structure:
| Name | Type | Description |
|---|---|---|
| price | double | Order price |
| code | string | Option exchange code |
| timestamp | long | Exchange time |
| volume | int | Order 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());
}Return Example
{
"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 Trade Tick Data
Corresponding Request Class: OptionTradeTickQueryRequest
Description
Get option trade tick data, only supports US market options, batch requests support up to 30 items at once.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Stock symbol |
| right | string | Yes | Call or Put (call/put) |
| expiry | long | Yes | Expiry time (milliseconds of US NewYork time day 0 o'clock) |
| strike | string | Yes | Strike price |
Return
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:
| Name | Type | Description |
|---|---|---|
| symbol | string | Underlying stock symbol |
| expiry | long | Expiry time |
| strike | string | Strike price |
| right | string | PUT or CALL |
| items | List<TradeTickPoint> | List of TradeTickPoint objects, each corresponding to single trade tick data |
TradeTickPoint object structure:
| Name | Type | Description |
|---|---|---|
| price | double | Trade price |
| time | long | Trade time |
| volume | long | Trade 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());
}Return Example
{
"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
Corresponding Request Class: OptionKlineQueryV2Request
Description
Get option K-line data. Batch requests support a maximum of 30 items per request.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| market | Market | Yes | Market, supports US, HK |
| option_query | List<OptionKlineModel> | Yes | Option K-line query condition list, max 30 |
OptionKlineModel parameter structure:
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Stock symbol |
| right | string | Yes | Call or Put (CALL/PUT) |
| expiry | long | Yes | Expiration time |
| strike | string | Yes | Strike price |
| begin_time | long | Yes | Start time |
| end_time | long | Yes | End time |
| period | string | No | K-line type, values: (day: daily K, 1min: 1 minute, 5min: 5 minutes, 30min: 30 minutes, 60min: 60 minutes) |
| limit | int | No | Number 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_dir | string | No | Sort direction, includes: ascending, descending. Sort direction enum: Sort Direction |
Return
com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionKlineResponsesource
Structure:
public class OptionKlineResponse extends TigerResponse {
@JSONField(name = "data")
private List<OptionKlineItem> klineItems;
}Return data can be accessed through the OptionKlineResponse.getKlineItems() method, returning OptionKlineItem objects, where com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionKlineItem properties are:
| Name | Type | Description |
|---|---|---|
| symbol | string | Stock symbol |
| period | string | Period type |
| right | string | Call or Put, values CALL/PUT |
| strike | string | Strike price |
| expiry | long | Expiration time in milliseconds |
| items | List<OptionKlinePoint> | List containing OptionKlinePoint, which are k-line arrays containing specific data as described below |
OptionKlinePoint object properties:
| Name | Type | Description |
|---|---|---|
| high | double | Highest price |
| low | double | Lowest price |
| open | double | Opening price |
| close | double | Closing price |
| time | long | K-line time |
| volume | int | Volume |
| openInterest | int | Open 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());
}Return Example
{
"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 Timeline Data
Corresponding Request Class: OptionTimelineRequest
Description
Get option timeline data.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| optionTimelineModels | List<OptionTimelineModel> | Yes | Option list |
| market | Market | No | Market, default HK, only supports HK |
OptionTimelineModel parameter structure:
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbol | string | Yes | Stock symbol |
| right | string | Yes | Call or Put (CALL/PUT) |
| expiry | long | Yes | Expiration time |
| strike | string | Yes | Strike price |
Return
| Field | Type | Description |
|---|---|---|
| symbol | string | Stock symbol |
| right | string | Call or Put (CALL/PUT) |
| expiry | long | Expiration time |
| strike | string | Strike price |
| preClose | double | Previous day's close |
| openAndCloseTimeList | List<List<Long>> | Trading time period list |
| minutes | List<OptionTimelinePoint> | Timeline array, see field descriptions below |
Timeline data OptionTimelinePoint structure:
| Field | Type | Description |
|---|---|---|
| volume | long | Volume |
| avgPrice | double | Average trade price |
| price | double | Latest price |
| time | long | Current 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());
}Return Example
{
"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 Stock Option Symbols
Corresponding Request Class: OptionSymbolRequest
Description
Get Hong Kong stock option symbols, for example, the symbol for 00700 is TCH.HK.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| market | Market | Yes | Market, only supports HK |
| lang | string | No | Language support: en_US, zh_CN, zh_TW, default: en_US |
Return
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:
| Name | Type | Description |
|---|---|---|
| symbol | string | Symbol of the option four elements |
| name | string | Underlying name |
| underlyingSymbol | string | Underlying 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());
}Return Example
{
"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": "XTW",
"symbol": "XTW.HK",
"underlyingSymbol": "00788"
},
{
"name": "SHL",
"symbol": "SHL.HK",
"underlyingSymbol": "00968"
},
{
"name": "GHL",
"symbol": "GHL.HK",
"underlyingSymbol": "00868"
},
{
"name": "HEX",
"symbol": "HEX.HK",
"underlyingSymbol": "00388"
},
{
"name": "ACC",
"symbol": "ACC.HK",
"underlyingSymbol": "00914"
},
{
"name": "STC",
"symbol": "STC.HK",
"underlyingSymbol": "02888"
},
{
"name": "VNK",
"symbol": "VNK.HK",
"underlyingSymbol": "02202"
},
{
"name": "CLI",
"symbol": "CLI.HK",
"underlyingSymbol": "02628"
},
{
"name": "LNK",
"symbol": "LNK.HK",
"underlyingSymbol": "00823"
},
{
"name": "SMC",
"symbol": "SMC.HK",
"underlyingSymbol": "00981"
},
{
"name": "BEA",
"symbol": "BEA.HK",
"underlyingSymbol": "00023"
},
{
"name": "TRP",
"symbol": "TRP.HK",
"underlyingSymbol": "09961"
},
{
"name": "GWM",
"symbol": "GWM.HK",
"underlyingSymbol": "02333"
},
{
"name": "NBM",
"symbol": "NBM.HK",
"underlyingSymbol": "03323"
},
{
"name": "ANA",
"symbol": "ANA.HK",
"underlyingSymbol": "02020"
},
{
"name": "CMB",
"symbol": "CMB.HK",
"underlyingSymbol": "03968"
},
{
"name": "HNP",
"symbol": "HNP.HK",
"underlyingSymbol": "00902"
},
{
"name": "HEH",
"symbol": "HEH.HK",
"underlyingSymbol": "00006"
},
{
"name": "MET",
"symbol": "MET.HK",
"underlyingSymbol": "03690"
},
{
"name": "SHZ",
"symbol": "SHZ.HK",
"underlyingSymbol": "02313"
},
{
"name": "SNP",
"symbol": "SNP.HK",
"underlyingSymbol": "01099"
},
{
"name": "INB",
"symbol": "INB.HK",
"underlyingSymbol": "01801"
},
{
"name": "CRL",
"symbol": "CRL.HK",
"underlyingSymbol": "01109"
},
{
"name": "ALH",
"symbol": "ALH.HK",
"underlyingSymbol": "00241"
},
{
"name": "AAC",
"symbol": "AAC.HK",
"underlyingSymbol": "02018"
},
{
"name": "WWC",
"symbol": "WWC.HK",
"underlyingSymbol": "00151"
},
{
"name": "CTB",
"symbol": "CTB.HK",
"underlyingSymbol": "00998"
},
{
"name": "NWD",
"symbol": "NWD.HK",
"underlyingSymbol": "00017"
},
{
"name": "HSB",
"symbol": "HSB.HK",
"underlyingSymbol": "00011"
},
{
"name": "LEN",
"symbol": "LEN.HK",
"underlyingSymbol": "00992"
},
{
"name": "COS",
"symbol": "COS.HK",
"underlyingSymbol": "01919"
},
{
"name": "HDO",
"symbol": "HDO.HK",
"underlyingSymbol": "06862"
},
{
"name": "BOC",
"symbol": "BOC.HK",
"underlyingSymbol": "02388"
},
{
"name": "CSA",
"symbol": "CSA.HK",
"underlyingSymbol": "02822"
},
{
"name": "XAB",
"symbol": "XAB.HK",
"underlyingSymbol": "01288"
},
{
"name": "CKH",
"symbol": "CKH.HK",
"underlyingSymbol": "00001"
},
{
"name": "MIU",
"symbol": "MIU.HK",
"underlyingSymbol": "01810"
},
{
"name": "AIR",
"symbol": "AIR.HK",
"underlyingSymbol": "00753"
},
{
"name": "CKP",
"symbol": "CKP.HK",
"underlyingSymbol": "01113"
},
{
"name": "CHU",
"symbol": "CHU.HK",
"underlyingSymbol": "00762"
},
{
"name": "GLI",
"symbol": "GLI.HK",
"underlyingSymbol": "01772"
},
{
"name": "LNI",
"symbol": "LNI.HK",
"underlyingSymbol": "02331"
},
{
"name": "LAU",
"symbol": "LAU.HK",
"underlyingSymbol": "02015"
},
{
"name": "BYD",
"symbol": "BYD.HK",
"underlyingSymbol": "01211"
},
{
"name": "ZSH",
"symbol": "ZSH.HK",
"underlyingSymbol": "00881"
},
{
"name": "CGN",
"symbol": "CGN.HK",
"underlyingSymbol": "01816"
},
{
"name": "MOL",
"symbol": "MOL.HK",
"underlyingSymbol": "03993"
},
{
"name": "CPA",
"symbol": "CPA.HK",
"underlyingSymbol": "00293"
},
{
"name": "KLE",
"symbol": "KLE.HK",
"underlyingSymbol": "00135"
},
{
"name": "CPI",
"symbol": "CPI.HK",
"underlyingSymbol": "02601"
},
{
"name": "CTC",
"symbol": "CTC.HK",
"underlyingSymbol": "00728"
},
{
"name": "MTR",
"symbol": "MTR.HK",
"underlyingSymbol": "00066"
},
{
"name": "PEC",
"symbol": "PEC.HK",
"underlyingSymbol": "00857"
},
{
"name": "PEN",
"symbol": "PEN.HK",
"underlyingSymbol": "09868"
},
{
"name": "MEN",
"symbol": "MEN.HK",
"underlyingSymbol": "02319"
},
{
"name": "TCH",
"symbol": "TCH.HK",
"underlyingSymbol": "00700"
},
{
"name": "SUN",
"symbol": "SUN.HK",
"underlyingSymbol": "01918"
},
{
"name": "PHT",
"symbol": "PHT.HK",
"underlyingSymbol": "01833"
},
{
"name": "CTS",
"symbol": "CTS.HK",
"underlyingSymbol": "06030"
},
{
"name": "BCM",
"symbol": "BCM.HK",
"underlyingSymbol": "03328"
},
{
"name": "A50",
"symbol": "A50.HK",
"underlyingSymbol": "02823"
},
{
"name": "RFP",
"symbol": "RFP.HK",
"underlyingSymbol": "02777"
},
{
"name": "COL",
"symbol": "COL.HK",
"underlyingSymbol": "00688"
},
{
"name": "CDA",
"symbol": "CDA.HK",
"underlyingSymbol": "01359"
},
{
"name": "BYE",
"symbol": "BYE.HK",
"underlyingSymbol": "00285"
},
{
"name": "JDH",
"symbol": "JDH.HK",
"underlyingSymbol": "06618"
},
{
"name": "CCE",
"symbol": "CCE.HK",
"underlyingSymbol": "01898"
},
{
"name": "CRC",
"symbol": "CRC.HK",
"underlyingSymbol": "01186"
},
{
"name": "HCF",
"symbol": "HCF.HK",
"underlyingSymbol": "02828"
},
{
"name": "HKG",
"symbol": "HKG.HK",
"underlyingSymbol": "00003"
},
{
"name": "XBC",
"symbol": "XBC.HK",
"underlyingSymbol": "03988"
},
{
"name": "XPB",
"symbol": "XPB.HK",
"underlyingSymbol": "01658"
},
{
"name": "WEB",
"symbol": "WEB.HK",
"underlyingSymbol": "09898"
},
{
"name": "GAH",
"symbol": "GAH.HK",
"underlyingSymbol": "00175"
},
{
"name": "CPC",
"symbol": "CPC.HK",
"underlyingSymbol": "00386"
},
{
"name": "EVG",
"symbol": "EVG.HK",
"underlyingSymbol": "03333"
},
{
"name": "PIC",
"symbol": "PIC.HK",
"underlyingSymbol": "02328"
},
{
"name": "SAN",
"symbol": "SAN.HK",
"underlyingSymbol": "01928"
},
{
"name": "BUD",
"symbol": "BUD.HK",
"underlyingSymbol": "01876"
},
{
"name": "HKB",
"symbol": "HKB.HK",
"underlyingSymbol": "00005"
},
{
"name": "MGM",
"symbol": "MGM.HK",
"underlyingSymbol": "02282"
},
{
"name": "CHT",
"symbol": "CHT.HK",
"underlyingSymbol": "00941"
},
{
"name": "PIN",
"symbol": "PIN.HK",
"underlyingSymbol": "01339"
},
{
"name": "XIC",
"symbol": "XIC.HK",
"underlyingSymbol": "01398"
},
{
"name": "GAC",
"symbol": "GAC.HK",
"underlyingSymbol": "02238"
},
{
"name": "KDS",
"symbol": "KDS.HK",
"underlyingSymbol": "00268"
},
{
"name": "COG",
"symbol": "COG.HK",
"underlyingSymbol": "02007"
},
{
"name": "SBO",
"symbol": "SBO.HK",
"underlyingSymbol": "01177"
},
{
"name": "WHL",
"symbol": "WHL.HK",
"underlyingSymbol": "00004"
},
{
"name": "CSE",
"symbol": "CSE.HK",
"underlyingSymbol": "01088"
},
{
"name": "SET",
"symbol": "SET.HK",
"underlyingSymbol": "00020"
},
{
"name": "SWA",
"symbol": "SWA.HK",
"underlyingSymbol": "00019"
},
{
"name": "ZJM",
"symbol": "ZJM.HK",
"underlyingSymbol": "02899"
},
{
"name": "MSB",
"symbol": "MSB.HK",
"underlyingSymbol": "01988"
},
{
"name": "GLX",
"symbol": "GLX.HK",
"underlyingSymbol": "00027"
},
{
"name": "DFM",
"symbol": "DFM.HK",
"underlyingSymbol": "00489"
},
{
"name": "CIT",
"symbol": "CIT.HK",
"underlyingSymbol": "00267"
},
{
"name": "CNC",
"symbol": "CNC.HK",
"underlyingSymbol": "00883"
},
{
"name": "BIU",
"symbol": "BIU.HK",
"underlyingSymbol": "09888"
},
{
"name": "CCC",
"symbol": "CCC.HK",
"underlyingSymbol": "01800"
},
{
"name": "HGN",
"symbol": "HGN.HK",
"underlyingSymbol": "01044"
},
{
"name": "NTE",
"symbol": "NTE.HK",
"underlyingSymbol": "09999"
},
{
"name": "SNO",
"symbol": "SNO.HK",
"underlyingSymbol": "02382"
},
{
"name": "TRF",
"symbol": "TRF.HK",
"underlyingSymbol": "02800"
},
{
"name": "HAI",
"symbol": "HAI.HK",
"underlyingSymbol": "06837"
},
{
"name": "WHG",
"symbol": "WHG.HK",
"underlyingSymbol": "00288"
},
{
"name": "HLD",
"symbol": "HLD.HK",
"underlyingSymbol": "00012"
},
{
"name": "CSP",
"symbol": "CSP.HK",
"underlyingSymbol": "01093"
},
{
"name": "KSO",
"symbol": "KSO.HK",
"underlyingSymbol": "03888"
},
{
"name": "YZC",
"symbol": "YZC.HK",
"underlyingSymbol": "01171"
},
{
"name": "SHK",
"symbol": "SHK.HK",
"underlyingSymbol": "00016"
},
{
"name": "JXC",
"symbol": "JXC.HK",
"underlyingSymbol": "00358"
},
{
"name": "ALB",
"symbol": "ALB.HK",
"underlyingSymbol": "09988"
},
{
"name": "BLI",
"symbol": "BLI.HK",
"underlyingSymbol": "09626"
},
{
"name": "CLP",
"symbol": "CLP.HK",
"underlyingSymbol": "00002"
},
{
"name": "ZAO",
"symbol": "ZAO.HK",
"underlyingSymbol": "06060"
},
{
"name": "JDC",
"symbol": "JDC.HK",
"underlyingSymbol": "09618"
},
{
"name": "NFU",
"symbol": "NFU.HK",
"underlyingSymbol": "09633"
},
{
"name": "AIA",
"symbol": "AIA.HK",
"underlyingSymbol": "01299"
},
{
"name": "KST",
"symbol": "KST.HK",
"underlyingSymbol": "01024"
},
{
"name": "NCL",
"symbol": "NCL.HK",
"underlyingSymbol": "01336"
},
{
"name": "TIC",
"symbol": "TIC.HK",
"underlyingSymbol": "00669"
},
{
"name": "WXB",
"symbol": "WXB.HK",
"underlyingSymbol": "02269"
},
{
"name": "AMC",
"symbol": "AMC.HK",
"underlyingSymbol": "03188"
}
],
"message": "success",
"sign": "NRvOxhF7cpEM9PS+Hofd6/BduEddep0sUlnYq9o9fPUwcZmAj3spI/D2wXu8L/eZSxvWhSfjnB3BL8y7mrpvqY3m9BGeZhf24ZoA0lbY8YXyQ5JjXa0VHWieUmCItoR9E195Nsr2sWCoawJhz7+yaMFioWEe8VThtGrYMiTYnUE=",
"success": true,
"timestamp": 1719401951582
}Option Indicator Calculation
Description
Calculate various indicators for selected options.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client | object | Yes | SDK HTTP client |
| symbol | string | Yes | Stock symbol |
| right | string | Yes | Call or Put option (CALL/PUT) |
| strike | string | Yes | Strike price |
| expiry | long | Yes | Expiry time (milliseconds corresponding to 0:00 AM New York time) |
| underlyingSymbol | string | No | Underlying asset symbol, defaults to symbol value |
Returns
| Name | Type | Description |
|---|---|---|
| delta | double | Greek letter delta |
| gamma | double | Greek letter gamma |
| theta | double | Greek letter theta |
| vega | double | Greek letter vega |
| insideValue | double | Intrinsic value |
| timeValue | double | Time value |
| leverage | double | Leverage ratio |
| openInterest | int | Open interest |
| historyVolatility | double | Historical volatility, percentage value |
| premiumRate | double | Premium rate, percentage value |
| profitRate | double | Profit rate from buying, percentage value |
| volatility | double | Implied volatility, percentage value |
Example
OptionFundamentals optionFundamentals = OptionCalcUtils.getOptionFundamentals(client,"BABA", "CALL", "205.0", "2019-11-01");
System.out.println(JSONObject.toJSONString(optionFundamentals));Return Example
{
"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%
}Updated 1 day ago
