期权
获取期权过期日
对应的请求类:OptionExpirationQueryRequest
说明
获取期权过期日,请求上限为30支股票
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
symbols | array | Yes | 股票代码列表,上限为:30 |
返回com.tigerbrokers.stock.openapi.client.https.response.option.OptionExpirationResponse
source
结构如下:
public class OptionExpirationResponse extends TigerResponse {
@JSONField(name = "data")
private List<OptionExpirationItem> optionExpirationItems;
}
返回数据可通过OptionExpirationResponse.getOptionExpirationItems()
方法访问,返回OptionExpirationItem
对象,其中com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionExpirationItem
属性如下:
名称 | 类型 | 说明 |
---|---|---|
symbol | string | 股票代码 |
count | int | 过期日期个数 |
dates | array | 过期时间,日期格式,如:2018-12-01 |
timestamps | array | 过期日期,时间戳格式,如:1544763600000(美国NewYork时间对应的时间戳) |
periodTags | array | 期权周期标签,m为月期权,w为周期权 |
具体字段可通过对象的get方法,如getSymbol()
进行访问,或通过对象的toString()
方法转换为字符串
示例
OptionExpirationResponse response = client.execute(new OptionExpirationQueryRequest(List.of("AAPL", "GOOG")));
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
} else {
System.out.println("response error:" + response.getMessage());
}
返回示例
{
"code": 0,
"data": [{
"count": 22,
"dates": ["2023-01-13", "2023-01-20", "2023-01-27", "2023-02-03", "2023-02-10", "2023-02-17", "2023-02-24", "2023-03-03", "2023-03-17", "2023-04-21", "2023-05-19", "2023-06-16", "2023-07-21", "2023-08-18", "2023-09-15", "2023-10-20", "2023-12-15", "2024-01-19", "2024-03-15", "2024-06-21", "2025-01-17", "2025-06-20"],
"symbol": "AAPL",
"timestamps": [1673586000000, 1674190800000, 1674795600000, 1675400400000, 1676005200000, 1676610000000, 1677214800000, 1677819600000, 1679025600000, 1682049600000, 1684468800000, 1686888000000, 1689912000000, 1692331200000, 1694750400000, 1697774400000, 1702616400000, 1705640400000, 1710475200000, 1718942400000, 1737090000000, 1750392000000]
}, {
"count": 16,
"dates": ["2023-01-13", "2023-01-20", "2023-01-27", "2023-02-03", "2023-02-10", "2023-02-17", "2023-02-24", "2023-03-03", "2023-03-17", "2023-04-21", "2023-06-16", "2023-09-15", "2024-01-19", "2024-06-21", "2025-01-17", "2025-06-20"],
"symbol": "GOOG",
"timestamps": [1673586000000, 1674190800000, 1674795600000, 1675400400000, 1676005200000, 1676610000000, 1677214800000, 1677819600000, 1679025600000, 1682049600000, 1686888000000, 1694750400000, 1705640400000, 1718942400000, 1737090000000, 1750392000000]
}],
"message": "success",
"sign": "VIXQAvI3HOpmEY2ZO+VO08ECVbKclsYtU980Euac240Bfd......",
"success": true,
"timestamp": 1673513141352
}
获取期权链
对应的请求类:OptionChainQueryV3Request
说明
获取期权链。返回的希腊字母不是最新数据,是上个交易日最后更新的数据,盘中可以用期权指标计算
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
symbol | string | Yes | 股票代码,symbol和expiry组合上限为:30 |
expiry | String | Yes | 期权过期日,示例:'2022-01-01' |
筛选参数:
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
implied_volatility | double | No | 隐含波动率 |
in_the_money | boolean | No | 是否价内 |
open_interest | int | No | 未平仓量 |
delta | double | No | delta |
gamma | double | No | gamma |
theta | double | No | theta |
vega | double | No | vega |
rho | double | No | rho |
返回com.tigerbrokers.stock.openapi.client.https.response.option.OptionChainResponse
source
结构如下:
public class OptionChainResponse extends TigerResponse {
@JSONField(name = "data")
private List<OptionChainItem> optionChainItems;
}
返回数据可通过OptionChainResponse.getOptionChainItems()
方法访问,返回OptionChainItem
对象,其中com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionChainItem
属性如下:
名称 | 类型 | 说明 |
---|---|---|
symbol | string | 标的股票代码 |
expiry | long | 期权过期日 |
items | List<OptionRealTimeQuoteGroup> | 列表,包含OptionRealTimeQuoteGroup对象,保存期权链数据,说明见下文 |
OptionRealTimeQuoteGroup
对象结构:
名称 | 类型 | 说明 |
---|---|---|
put | OptionRealTimeQuote | 看跌期权合约 |
call | OptionRealTimeQuote | 看涨期权合约 |
OptionRealTimeQuote
对象结构:
名称 | 类型 | 说明 |
---|---|---|
identifier | string | 期权标识,如:AAPL 210115C00095000 |
strike | double | 行权价 |
right | string | 期权方向 PUT/CALL |
askPrice | double | 卖盘价格 |
askSize | int | 卖盘数量 |
bidPrice | double | 买盘价格 |
bidSize | int | 买盘数量 |
lastTimestamp | long | 最新成交时间 如:1543343800698 |
latestPrice | double | 最新价 |
multiplier | double | 乘数,美股期权默认100 |
openInterest | int | 未平仓量 |
preClose | double | 前一交易日的收盘价 |
volume | long | 成交量 |
impliedVol | double | 隐含波动率 |
delta | double | delta |
gamma | double | gamma |
theta | double | theta |
vega | double | vega |
rho | double | rho |
具体字段可通过对象的get方法,如getSymbol()
进行访问,或通过json方法转换为字符串
示例
OptionChainModel basicModel = new OptionChainModel("AAPL", "2023-06-30");
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)
);
OptionChainResponse response = client.execute(OptionChainQueryV3Request.of(basicModel, filterModel).setReturnGreekValue(Boolean.FALSE));
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
} else {
System.out.println("response error:" + response.getMessage());
}
返回示例
{
"code":0,
"data":[
{
"expiry":1688097600000,
"items":[
{
"call":{
"askPrice": 15.55,
"askSize": 1,
"bidPrice": 15.45,
"bidSize": 31,
"delta":0.586154,
"gamma":0.0267244,
"identifier":"AAPL 230630C00170000",
"impliedVol":0.269788,
"latestPrice":7.4,
"multiplier":100,
"openInterest":844,
"preClose":6.45,
"rho":0.0922716,
"right":"call",
"strike":"170.0",
"theta":-0.0906834,
"vega":0.210679,
"volume":0
}
},
{
"call":{
"askPrice": 10.6,
"askSize": 91,
"bidPrice": 10.5,
"bidSize": 31,
"delta":0.441268,
"gamma":0.0301519,
"identifier":"AAPL 230630C00175000",
"impliedVol":0.242371,
"latestPrice":4.35,
"multiplier":100,
"openInterest":1312,
"preClose":3.6,
"rho":0.070743,
"right":"call",
"strike":"175.0",
"theta":-0.0812508,
"vega":0.214568,
"volume":0
}
},
{
"call":{
"askPrice": 5.75,
"askSize": 42,
"bidPrice": 5.65,
"bidSize": 31,
"delta":0.282778,
"gamma":0.0283256,
"identifier":"AAPL 230630C00180000",
"impliedVol":0.221261,
"latestPrice":2.01,
"multiplier":100,
"openInterest":3402,
"preClose":1.65,
"rho":0.0460161,
"right":"call",
"strike":"180.0",
"theta":-0.062506,
"vega":0.187295,
"volume":0
}
}
],
"symbol":"AAPL"
}
],
"message":"success",
"sign":"WAmfDX0fBA+PNVeLcrq8aB/p8OTJL9ATbwlLkRpL0KSyT60cYK8WePucYaaem17E7j3v/fsW4RSYm3xFGkGDcelLTCORZonA3jmbeGB9QY10sFuY02rhUUTivxxE4QYYv+ujC3EMF+aBfuDJjvjqXqlvcYE01HY48FhoTH1pfi8=",
"success":true,
"timestamp":1687856340521
}
获取期权行情摘要
对应的请求类:OptionBriefQueryRequest
说明
获取期权行情摘要。批量参数上限为30
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
symbol | string | yes | 股票代码 |
right | string | yes | 看多或看空(CALL/PUT) |
expiry | long | yes | 到期时间(美国NewYork时间当天0点所对应的毫秒值) |
strike | string | yes | 行权价 |
返回com.tigerbrokers.stock.openapi.client.https.request.option.OptionBriefResponse
source
结构如下:
public class OptionBriefResponse extends TigerResponse {
@JSONField(name = "data")
private List<OptionBriefItem> optionBriefItems;
}
返回数据可通过TigerResponse.getOptionBriefItems()
方法访问,返回OptionBriefItem
对象,其中com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionBriefItem
属性如下:
字段 | 类型 | 说明 |
---|---|---|
symbol | string | 股票代码 |
strike | string | 行权价 |
bidPrice | double | 买盘价格 |
bidSize | int | 买盘数量 |
askPrice | double | 卖盘价格 |
askSize | int | 卖盘数量 |
latestPrice | double | 最新价格 |
timestamp | long | 最新成交时间 |
volume | int | 成交量 |
high | double | 最高价 |
low | double | 最低价 |
open | double | 开盘价 |
preClose | double | 前一交易日收盘价 |
openInterest | int | 未平仓量 |
change | double | 涨跌额 |
multiplier | int | 乘数,美股期权默认100 |
ratesBonds | double | 一年期美国国债利率,每天更新一次,如:0.0078 表示实际利率为:0.78% |
right | string | 方向 (PUT/CALL) |
volatility | string | 历史波动率 |
expiry | long | 到期时间(毫秒,当天0点) |
具体字段可通过对象的get方法,如getSymbol()
进行访问, 或通过对象的toString()
方法转换为字符串
示例
OptionCommonModel model = new OptionCommonModel();
model.setSymbol("AAPL");
model.setRight("CALL");
model.setStrike("160.0");
model.setExpiry("2021-12-03", TimeZoneId.NewYork);
OptionBriefResponse response = client.execute(OptionBriefQueryRequest.of(model));
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
} else {
System.out.println("response error:" + response.getMessage());
}
返回示例
{
"code": 0,
"data": [{
"askPrice": 1.53,
"askSize": 128,
"bidPrice": 1.32,
"bidSize": 1,
"change": -2.52,
"expiry": 1638507600000,
"high": 3.12,
"identifier": "AAPL 211203C00160000",
"latestPrice": 1.35,
"low": 1.25,
"multiplier": 100,
"open": 2.74,
"openInterest": 79355,
"preClose": 3.87,
"ratesBonds": 0.002,
"right": "call",
"strike": "160.0",
"symbol": "AAPL",
"timestamp": 1637949599936,
"volatility": "20.43%",
"volume": 113452
}],
"message": "",
"timestamp": 1543831981533
}
获取期权K线
对应的请求类:OptionKlineQueryRequest
说明
获取期权K线。批量参数上限为30
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
symbol | string | yes | 股票代码 |
right | string | yes | 看多或看空(CALL/PUT) |
expiry | long | yes | 到期时间(美国NewYork时间当天0点所对应的毫秒值) |
strike | string | yes | 行权价 |
begin_time | long | yes | 开始时间(美国NewYork时间所对应的毫秒值) |
end_time | long | yes | 结束时间(美国NewYork时间所对应的毫秒值) |
period | string | no | K线类型,取值范围(day:日K,1min:1分钟,5min:5分钟,30min:30分钟,60min:60分钟) |
limit | int | no | 分钟线返回最近记录数,默认300,最大1200。如果limit设置大于1200,只会返回1200条数据。日K线暂不支持 |
sort_dir | string | no | 排序方向,包括:升序,降序,排序方向枚举:排序方向 |
返回com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionKlineResponse
source
结构如下:
public class OptionKlineResponse extends TigerResponse {
@JSONField(name = "data")
private List<OptionKlineItem> klineItems;
}
返回数据可通过OptionKlineResponse.getKlineItems()
方法访问,返回OptionKlineItem
对象,其中com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionKlineItem
属性如下:
名称 | 类型 | 说明 |
---|---|---|
symbol | string | 股票代码 |
period | string | 周期类型 |
right | string | 看多或看空,取值CALL/PUT |
strike | string | 行权价 |
expiry | long | 到期时间,毫秒 |
items | List<OptionKlinePoint> | 包含OptionKlinePoint的List,OptionKlinePoint为k线数组,包含的具体数据见下文 |
OptionKlinePoint对象属性如下:
名称 | 类型 | 说明 |
---|---|---|
high | double | 最高价 |
low | double | 最低价 |
open | double | 开盘价 |
close | double | 收盘价 |
time | long | k线时间 |
volume | int | 成交量 |
openInterest | int | 未平仓量(只有日K线有值) |
具体字段可通过对象的get方法,如getSymbol()
进行访问, 或通过对象的toString()
方法转换为字符串
示例
OptionKlineModel model = new OptionKlineModel();
model.setSymbol("AAPL");
model.setRight("PUT");
model.setStrike("150.0");
model.setExpiry("2023-04-14", TimeZoneId.NewYork);
model.setBeginTime("2023-03-21", TimeZoneId.NewYork);
model.setEndTime("2023-03-24", TimeZoneId.NewYork);
model.setPeriod(OptionKType.min60.getValue());
OptionKlineResponse response = client.execute(OptionKlineQueryRequest.of(model));
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
} else {
System.out.println("response error:" + response.getMessage());
}
返回示例
{"code":0,"data":[{"expiry":1681444800000,"items":[{"close":2.0,"high":2.0,"low":2.0,"open":2.0,"time":1679340600000,"volume":0},{"close":1.86,"high":1.95,"low":1.66,"open":1.8,"time":1679405400000,"volume":183},{"close":1.76,"high":2.02,"low":1.74,"open":1.87,"time":1679409000000,"volume":104},{"close":1.68,"high":1.88,"low":1.67,"open":1.76,"time":1679412600000,"volume":43},{"close":1.53,"high":1.73,"low":1.48,"open":1.68,"time":1679416200000,"volume":175},{"close":1.52,"high":1.53,"low":1.44,"open":1.48,"time":1679419800000,"volume":276},{"close":1.47,"high":1.52,"low":1.41,"open":1.52,"time":1679423400000,"volume":21},{"close":1.35,"high":1.47,"low":1.34,"open":1.47,"time":1679427000000,"volume":119},{"close":1.15,"high":1.35,"low":1.15,"open":1.35,"time":1679491800000,"volume":148},{"close":1.15,"high":1.17,"low":1.12,"open":1.14,"time":1679495400000,"volume":93},{"close":1.23,"high":1.27,"low":1.1,"open":1.13,"time":1679499000000,"volume":62},{"close":1.25,"high":1.29,"low":1.23,"open":1.23,"time":1679502600000,"volume":33},{"close":1.02,"high":1.25,"low":0.96,"open":1.25,"time":1679506200000,"volume":323},{"close":1.12,"high":1.36,"low":0.85,"open":1.02,"time":1679509800000,"volume":180},{"close":1.6,"high":1.6,"low":1.12,"open":1.12,"time":1679513400000,"volume":86},{"close":1.06,"high":1.35,"low":1.06,"open":1.33,"time":1679578200000,"volume":75},{"close":1.02,"high":1.08,"low":0.9,"open":1.08,"time":1679581800000,"volume":127},{"close":1.04,"high":1.05,"low":0.99,"open":1.02,"time":1679585400000,"volume":71},{"close":1.22,"high":1.22,"low":1.01,"open":1.04,"time":1679589000000,"volume":96},{"close":1.48,"high":1.48,"low":1.17,"open":1.22,"time":1679592600000,"volume":33},{"close":1.61,"high":1.8,"low":1.37,"open":1.5,"time":1679596200000,"volume":255},{"close":1.6,"high":1.61,"low":1.6,"open":1.61,"time":1679599800000,"volume":8}],"period":"60min","right":"PUT","strike":"150.0","symbol":"AAPL"}],"message":"success","sign":"BPH1fQ5kt/N2SVuUa2FA+/bsvRzBtZySgefqJ3CdZe51Dyfrllg/9lPhNC9gXcEZidogIMJ7Bu5gYFyPqcfmW9xx0PtWzRxn53LC6hj1z5m0JvLVB9cBUM2S8Q92o3WWhFR+c8qrvQ0xzh8sRPJSHZIHqNWK0umjFSqy3Y1wvBo=","success":true,"timestamp":1679886982705}
获取期权逐笔成交
对应的请求类:OptionTradeTickQueryRequest
说明
获取期权逐笔成交数据。只支持美国市场期权,批量参数上限为30
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
symbol | string | yes | 股票代码 |
right | string | yes | 看多或看空(call/put) |
expiry | long | yes | 到期时间(美国NewYork时间当天0点所对应的毫秒值) |
strike | string | yes | 行权价 |
返回com.tigerbrokers.stock.openapi.client.https.response.option.OptionTradeTickResponse
source
结构如下:
public class OptionTradeTickResponse extends TigerResponse {
@JSONField(name = "data")
private List<OptionTradeTickItem> optionTradeTickItems;
}
开盘前半小时可以取到前一个交易日的全部,开盘后是新一天的数据。
返回数据可通过OptionTradeTickResponse.getOptionTradeTickItems()
方法访问,返回OptionTradeTickItem
对象列表,其中com.tigerbrokers.stock.openapi.client.https.domain.option.item.OptionTradeTickItem
属性如下:
名称 | 类型 | 说明 |
---|---|---|
symbol | string | 标的股票代码 |
expiry | long | 到期时间 |
strike | string | strike price |
right | string | PUT或CALL |
items | List<TradeTickPoint> | TradeTickPoint对象列表,每个TradeTickPoint对象对应单条逐笔成交数据 |
TradeTickPoint对象结构如下:
名称 | 类型 | 说明 |
---|---|---|
price | double | 成交价格 |
time | long | 成交时间 |
volume | long | 成交量 |
具体字段可通过对象的get方法,如getSymbol()
进行访问, 或通过对象的toString()
方法转换为字符串
示例
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());
}
返回示例
{
"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
}
期权指标计算
说明
计算所选期权的各类指标
参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
client | object | yes | SDK Htttp client |
symbol | string | yes | 股票代码 |
right | string | yes | 看多或看空(CALL/PUT) |
strike | string | yes | 行权价 |
expiry | long | yes | 到期时间(美国NewYork时间当天0点所对应的毫秒值) |
underlyingSymbol | string | no | 底层次产标的,默认为symbol的值 |
返回
名称 | 类型 | 说明 |
---|---|---|
delta | double | 希腊字母delta |
gamma | double | 希腊字母gamma |
theta | double | 希腊字母theta |
vega | double | 希腊字母vega |
insideValue | double | 内在价值 |
timeValue | double | 时间价值 |
leverage | double | 杠杆率 |
openInterest | int | 未平仓量 |
historyVolatility | double | 历史波动率,百分比数值 |
premiumRate | double | 溢价率,百分比数值 |
profitRate | double | 买入盈利率,百分比数值 |
volatility | double | 隐含波动率,百分比数值 |
示例
OptionFundamentals optionFundamentals = OptionCalcUtils.getOptionFundamentals(client,"BABA", "CALL", "205.0", "2019-11-01");
System.out.println(JSONObject.toJSONString(optionFundamentals));
返回示例
{
"delta": 0.8573062699731591,
"gamma": 0.05151538284065261,
"historyVolatility": 24.38, //百分比形式,表示为 24.38%
"insideValue": 4.550000000000011,
"leverage": 30.695960907449216,
"openInterest": 35417.0,
"premiumRate": 0.18619306788885054, //百分比形式,表示为 0.186%
"profitRate": 47.138051059662665, //百分比形式,表示为 47.138%
"rho": 1.1107261502375654,
"theta": -0.17927469728943862,
"timeValue": 0.32499999999998863,
"vega": 0.034473845504081974,
"volatility": 28.62548828125 //百分比形式,表示为 28.62%
}