跳转到内容

期权链

期权不能只靠正股 symbol 下单。程序需要先找到正股 conid,再查询到期日、行权价、看涨看跌方向,最后得到具体期权合约。

官方参考:Client Portal API

接口方法用途
/iserver/secdef/searchPOST先找到正股或底层合约。
/iserver/secdef/strikesGET查询期权行权价。
/iserver/secdef/infoGET查询具体期权合约信息。

查询行权价前,先用合约搜索拿到底层合约的 conid

Terminal window
curl -k -X POST "https://localhost:5000/v1/api/iserver/secdef/search" ^
-H "Content-Type: application/json" ^
-d "{\"symbol\":\"AAPL\",\"name\":false}"

示例结构:

Terminal window
curl -k "https://localhost:5000/v1/api/iserver/secdef/strikes?conid=265598&secType=OPT&month=JUN26&exchange=SMART"

参数解释:

参数中文说明
conid底层合约编号,例如 AAPL 正股 conid。
secType合约类型,期权通常为 OPT
month到期月份,格式以接口返回和官方规则为准。
exchange交易所或路由,常见为 SMART
Terminal window
curl -k "https://localhost:5000/v1/api/iserver/secdef/info?conid=265598&secType=OPT&month=JUN26&strike=300&right=C&exchange=SMART"

字段解释:

字段中文说明
strike行权价。
rightC 表示看涨期权,P 表示看跌期权。
maturityDate到期日。
multiplier合约乘数,美股期权常见为 100。
localSymbolIBKR 本地合约代码。
conid具体期权合约的合约 ID,不能继续使用正股 conid
import requests
BASE_URL = "https://localhost:5000/v1/api"
params = {
"conid": "265598",
"secType": "OPT",
"month": "JUN26",
"exchange": "SMART",
}
response = requests.get(
f"{BASE_URL}/iserver/secdef/strikes",
params=params,
verify=False, # 仅限开发调试;正式环境请配置受信任证书
timeout=10,
)
response.raise_for_status()
print(response.json())
问题说明
月份格式不确定先从官方返回和可用合约里确认,不要手写猜测。
正股 conid 不能直接当期权 conid期权有自己的合约编号。
行权价很多前端应提供筛选和分页,不要一次性堆满页面。
权限不足期权行情和期权交易权限可能与股票不同。