🚀 AI 一键生成 qmt 策略代码
立即体验

qmt 期权理论定价:如何使用 bsm_price 函数计算欧式期权价值?

qmt | 发布时间: 2026/7/23
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: qmt 期权理论定价:bsm_price 函数计算欧式期权价值

Question: 如何使用 qmt 内置的 BSM 模型计算期权理论价格?

解决方案

qmt 期权理论定价:如何使用 bsm_price 函数计算欧式期权价值?

在期权量化交易与定价套利策略中,Black-Scholes-Merton (BSM) 模型是计算欧式期权理论价格的标准工具。QMT (迅投 Quant Trading) 平台提供了便捷的内置函数 ContextInfo.bsm_price(),使投资者能够高效地计算单个价格或标的价格序列下的期权理论价值。


1. ContextInfo.bsm_price 函数语法

接口定义

ContextInfo.bsm_price(optionType, objectPrices, strikePrice, riskFree, sigma, days, dividend)

参数说明

参数名 类型 说明
optionType str 期权类型:认购期权填 'C',认沽期权填 'P'
objectPrices floatlist 期权标的资产价格,可以是单个价格或标的价格列表
strikePrice float 期权行权价
riskFree float 无风险年化收益率(如 3% 填 0.03
sigma float 标的资产年化波动率(如 23% 填 0.23
days int / float 距离期权到期的剩余天数
dividend float 标的资产年化分红率(如无分红填 0

返回值

  • objectPricesfloat 时,返回 float(期权理论价格)。
  • objectPriceslist 时,返回 list(期权理论价格列表)。
  • 计算结果最小值默认为 0.0001,保留 4 位小数。若传入非法参数则返回 nan

2. 核心使用示例

以下是在 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}")

3. 注意事项与应用技巧

  1. 无风险利率与波动率:可配合 ContextInfo.get_risk_free_rate() 获取十年期国债收益率作为无风险利率,或者结合 ContextInfo.get_option_iv() 获取实时隐含波动率进行相对价值评估。
  2. 套利策略结合:在实际交易中,可以通过对比市场实时报价(ContextInfo.get_full_tick())与 bsm_price() 计算出的理论价格,来发现市场中被高估或低估的期权合约,构建多空套利组合。