期权文档参考
提供天勤SDK官方期权文档参考,帮助用户解决问题并学习期权策略开发的最佳实践。
何时使用
- •用户使用TqSDK开发期权交易策略
- •用户遇到期权相关API调用错误或问题
- •用户需要期权希腊字母、波动率或定价指导
- •用户想学习期权策略实现
- •用户询问TqSDK期权功能
官方文档
主要参考: 天勤SDK期权文档
核心功能
1. 基础期权使用
- •o10: 获取实时期权报价
- •o20: 按特定条件查询期权
- •o30: 查询平值/实值/虚值期权
- •o40: 计算期权希腊字母
- •o41: 计算隐含波动率和历史波动率
- •o60: 获取期权波动率曲面
- •o70: 期权套利策略
- •o71: 获取期权链和行权价
- •o72: 按实值程度分类期权(方法1)
- •o73: 按实值程度分类期权(方法2)
- •o74: 计算ETF期权卖方保证金
2. 常用API调用
查询期权:
python
# 查询标的的所有期权
options = api.query_options("SHFE.au2012")
# 查询看跌期权
options = api.query_options("SHFE.au2012", option_class="PUT")
# 查询未到期期权
options = api.query_options("SHFE.au2012", expired=False)
# 查询特定行权价的期权
options = api.query_options("SHFE.au2012", strike_price=340)
# 查询沪深300指数期权
options = api.query_options("SSE.000300", exchange_id="CFFEX")
# 查询带行权日限制的ETF期权
options = api.query_options("SSE.510300", exchange_id="SSE",
exercise_year=2020, exercise_month=12)
查询平值期权:
python
# 获取平值看涨期权
atm_options = api.query_atm_options("SHFE.au2012", quote.last_price, 0, "CALL")
# 获取实值期权(3、2、1档行权价)
in_money = api.query_atm_options("SHFE.au2012", quote.open, [3, 2, 1], "CALL")
# 获取混合实值程度期权
mixed = api.query_atm_options("SHFE.au2012", quote.open, [1, 0, -1], "CALL")
# 获取虚值期权
out_of_money = api.query_atm_options("SHFE.au2012", quote.last_price, -1, "CALL")
计算希腊字母:
python
from tqsdk.ta import OPTION_GREEKS
# 获取期权报价
quote = api.get_quote("SHFE.cu2006C44000")
# 获取期权和标的的K线数据
klines = api.get_kline_serial(["SHFE.cu2006C44000", "SHFE.cu2006"], 24 * 60 * 60, 30)
# 计算希腊字母
greeks = OPTION_GREEKS(klines, quote, 0.025)
# 访问希腊字母值
print(list(greeks["delta"]))
print(list(greeks["theta"]))
print(list(greeks["gamma"]))
print(list(greeks["vega"]))
print(list(greeks["rho"]))
计算隐含波动率:
python
from tqsdk.ta import OPTION_IMPV
# 获取期权报价
quote = api.get_quote("SHFE.cu2006C50000")
# 获取K线数据
klines = api.get_kline_serial(["SHFE.cu2006C50000", "SHFE.cu2006"], 24 * 60 * 60, 20)
# 计算隐含波动率
impv = OPTION_IMPV(klines, quote, 0.025)
print(list(impv["impv"] * 100))
常见问题解决
1. "contains non-existent instrument" 错误
- •原因: 标的合约代码无效
- •解决: 检查标的期货合约是否存在且活跃交易
- •参考: 参见o20示例了解正确API用法
2. 查询未返回期权
- •原因: 标的资产可能没有期权或期权交易不活跃
- •解决: 尝试不同的到期月份或检查资产是否有期权上市
- •参考: 参见o20了解按到期日过滤期权
3. 希腊字母计算错误
- •原因: K线数据不足或参数值不正确
- •解决: 确保至少30天的历史数据和正确的无风险利率
- •参考: 参见o40了解希腊字母计算示例
4. 保证金计算问题
- •原因: 保证金参数不正确或API使用错误
- •解决: 参考o74了解ETF期权保证金计算
- •参考: 参见o74了解保证金计算示例
最佳实践
- •始终关闭API连接以避免资源泄漏
- •使用try/except块进行健壮的错误处理
- •交易前验证合约存在性
- •执行期权策略前检查流动性
- •监控希腊字母进行风险管理
- •使用适当的数据周期进行波动率计算
- •实盘交易前用模拟测试策略
实现示例
期权日历价差
python
from tqsdk import TqApi, TqAuth
api = TqApi(auth=TqAuth("username", "password"))
# 查询近月和远月期权
near_options = api.query_options("CFFEX.IO2603")
far_options = api.query_options("CFFEX.IO2606")
# 选择匹配的行权价和类型
# 实现价差逻辑
api.close()
波动率策略
python
from tqsdk import TqApi, TqAuth
from tqsdk.ta import OPTION_IMPV
api = TqApi(auth=TqAuth("username", "password"))
# 获取期权和标的数据
option_quote = api.get_quote("CFFEX.IO2603-C-4800")
klines = api.get_kline_serial(["CFFEX.IO2603-C-4800", "CFFEX.IO2603"], 24*60*60, 30)
# 计算隐含波动率
impv = OPTION_IMPV(klines, option_quote, 0.025)
# 实现波动率策略
api.close()
相关技能
- •option-query: 特定期权合约查询
- •risk-management: 期权风险评估
- •backtesting: 测试期权策略
- •futures-trading: 相关期货合约