其他示例

Python SDK 的示例代码在 GitHub 仓库中持续更新。使用中如有疑问,见联系我们

期权计算工具

SDK 在 tigeropen/examples/option_helpers/helpers.py 提供期权计算工具,可计算希腊字母、期权价格和隐含波动率。

该工具依赖 quantlib 库,使用前先安装:pip install quantlib==1.40

用法一:在代码中导入

美式期权(美股、港股期权及 ETF 期权)用 FDAmericanDividendOptionHelper;欧式期权(指数期权)用 FDEuropeanDividendOptionHelper

import QuantLib as ql
from tigeropen.examples.option_helpers.helpers import FDAmericanDividendOptionHelper


# 由期权价格计算隐含波动率
ql.Settings.instance().evaluationDate = ql.Date(19, 4, 2022)
helper = FDAmericanDividendOptionHelper(option_type=ql.Option.Call,
                                        underlying=985,
                                        strike=990,
                                        risk_free_rate=0.017,
                                        dividend_rate=0,
                                        volatility=0,  # 隐含波动率算出前先传 0
                                        settlement_date=ql.Date(14, 4, 2022),
                                        expiration_date=ql.Date(22, 4, 2022))

# 传入期权价格(例如买卖价中位数)计算隐含波动率
volatility = helper.implied_volatility(33.6148)
helper.update_implied_volatility(volatility)

print(f'implied volatility:{volatility}')
print(f'value:{helper.NPV()}')
print(f'delta:{helper.delta()}')
print(f'gamma:{helper.gamma()}')
print(f'theta:{helper.theta()}')
print(f'vega:{helper.vega()}')
print(f'rho:{helper.rho()}')


# 由隐含波动率计算期权价格
ql.Settings.instance().evaluationDate = ql.Date(19, 4, 2022)
helper = FDAmericanDividendOptionHelper(option_type=ql.Option.Call,  # PUT/CALL
                                        underlying=985,  # 结算日标的价格
                                        strike=990,      # 行权价
                                        risk_free_rate=0.017,  # 无风险利率
                                        dividend_rate=0,       # 股息率
                                        volatility=0.6153,     # 隐含波动率
                                        settlement_date=ql.Date(14, 4, 2022),  # 结算日
                                        expiration_date=ql.Date(22, 4, 2022))  # 期权到期日
print(f'value:{helper.NPV()}')
print(f'delta:{helper.delta()}')
print(f'gamma:{helper.gamma()}')
print(f'theta:{helper.theta()}')
print(f'vega:{helper.vega()}')
print(f'rho:{helper.rho()}')

用法二:作为脚本运行

以下命令假设 tigeropen/examples/option_helpers/helpers.py 位于当前目录。

# 计算期权价格
python helpers.py -t PUT -e '2022-05-20' -s 2022-04-24 -p 215 -u 215.52 -r 0.0078 -v 0.5919

# 由期权价格计算隐含波动率,-n 指定价格
python helpers.py -t CALL -e '2022-04-22' -s 2022-04-14 -p 990 -u 985 -r 0.017 -n 33.6148
# 由买卖价中位数计算隐含波动率
python helpers.py -t CALL -e '2022-04-22' -s 2022-04-14 -p 990 -u 985 -r 0.017 -a 35 -b 36

# 查看命令帮助
python helpers.py -h

期权指标计算工具

该工具封装了 SDK 请求,传入期权标识即可计算希腊字母、买入盈利概率、卖出年化收益率等指标。

代码路径:tigeropen/examples/option_helpers/util.py

get_option_metricsreturn_type 支持 'dataframe'(默认)和 'list',后者返回 OptionMetric 对象列表。

import QuantLib as ql
from tigeropen.tiger_open_config import TigerOpenClientConfig
from tigeropen.quote.quote_client import QuoteClient
from tigeropen.trade.trade_client import TradeClient
from tigeropen.examples.option_helpers.util import OptionUtil

client_config = TigerOpenClientConfig(props_path='your_config_directory_path')
quote_client = QuoteClient(client_config)
trade_client = TradeClient(client_config)

option_util = OptionUtil(quote_client, trade_client)

# 计算指定期权的指标
identifiers = ['TSLA 260220C00385000']

# 示例 1:返回 DataFrame
print("示例 1:返回 DataFrame")
metrics_df = option_util.get_option_metrics(identifiers, return_type='dataframe')
print(f"\n{metrics_df}")

# 示例 2:返回 OptionMetric 对象列表
print("示例 2:返回 OptionMetric 对象列表")
metrics_list = option_util.get_option_metrics(identifiers, return_type='list')
for metric in metrics_list:
    print(metric)
    print(f"  Greeks: delta={metric.delta}, gamma={metric.gamma}, "
                    f"theta={metric.theta}, vega={metric.vega}")
    print(f"  Risk: implied_vol={metric.implied_vol}, leverage={metric.leverage_ratio}")
    print(f"  Probability: profit_prob={metric.profit_probability}")

Did this page help you?