3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在期权量化交易与定价套利策略中,Black-Scholes-Merton (BSM) 模型是计算欧式期权理论价格的标准工具。QMT (迅投 Quant Trading) 平台提供了便捷的内置函数 ContextInfo.bsm_price(),使投资者能够高效地计算单个价格或标的价格序列下的期权理论价值。
ContextInfo.bsm_price(optionType, objectPrices, strikePrice, riskFree, sigma, days, dividend)
| 参数名 | 类型 | 说明 |
|---|---|---|
optionType |
str |
期权类型:认购期权填 'C',认沽期权填 'P' |
objectPrices |
float 或 list |
期权标的资产价格,可以是单个价格或标的价格列表 |
strikePrice |
float |
期权行权价 |
riskFree |
float |
无风险年化收益率(如 3% 填 0.03) |
sigma |
float |
标的资产年化波动率(如 23% 填 0.23) |
days |
int / float |
距离期权到期的剩余天数 |
dividend |
float |
标的资产年化分红率(如无分红填 0) |
objectPrices 为 float 时,返回 float(期权理论价格)。objectPrices 为 list 时,返回 list(期权理论价格列表)。0.0001,保留 4 位小数。若传入非法参数则返回 nan。以下是在 QMT 策略中的典型调用代码,展示如何计算平值期权的单点理论价以及不同标的价格下期权理论价值的变化序列。
#coding:gbk
import numpy as np
def init(ContextInfo):
pass
def handlebar(ContextInfo):
# 仅在最后一根 Bar 执行,避免重复输出
if not ContextInfo.is_last_bar():
return
# 1. 计算单个标的价格下的平值认购期权理论价格
# 参数:认购期权('C'),标的价格 3.51,行权价 3.50,无风险利率 3%,波动率 23%,剩余 15 天,分红率 0
single_price = ContextInfo.bsm_price('C', 3.51, 3.5, 0.03, 0.23, 15, 0)
print("标的价格为 3.51 时,认购期权理论价格:", single_price)
# 2. 计算标的价格序列从 3.0 到 4.0 变化时,期权理论价格序列
object_prices = list(np.arange(3.0, 4.0, 0.1))
price_list = ContextInfo.bsm_price('C', object_prices, 3.5, 0.03, 0.23, 15, 0)
for spot, p in zip(object_prices, price_list):
print(f"标的价: {spot:.2f} | 理论期权价: {p}")
ContextInfo.get_risk_free_rate() 获取十年期国债收益率作为无风险利率,或者结合 ContextInfo.get_option_iv() 获取实时隐含波动率进行相对价值评估。ContextInfo.get_full_tick())与 bsm_price() 计算出的理论价格,来发现市场中被高估或低估的期权合约,构建多空套利组合。