python-3.x - 使用 Heston 模型的 QuantLib-python 定价障碍选项
问题描述
我最近开始探索 Python 的 QuantLib 选项定价库,遇到了一个我似乎不明白的错误。基本上,我正在尝试使用 Heston 模型为 Up&Out Barrier 选项定价。我编写的代码取自网上的示例,并根据我的具体情况进行了调整。本质上,问题是当我运行下面的代码时,我得到一个错误,我认为该错误是在代码的最后一行触发的,即European_option.NPV()函数
*** RuntimeError: 错误的参数类型
有人可以解释一下我做错了什么吗?
# option inputs
maturity_date = ql.Date(30, 6, 2020)
spot_price = 969.74
strike_price = 1000
volatility = 0.20
dividend_rate = 0.0
option_type = ql.Option.Call
risk_free_rate = 0.0016
day_count = ql.Actual365Fixed()
calculation_date = ql.Date(26, 6, 2020)
ql.Settings.instance().evaluationDate = calculation_date
# construct the option payoff
european_option = ql.BarrierOption(ql.Barrier.UpOut, Barrier, Rebate,
ql.PlainVanillaPayoff(option_type, strike_price),
ql.EuropeanExercise(maturity_date))
# set the Heston parameters
v0 = volatility*volatility # spot variance
kappa = 0.1
theta = v0
hsigma = 0.1
rho = -0.75
spot_handle = ql.QuoteHandle(ql.SimpleQuote(spot_price))
# construct the Heston process
flat_ts = ql.YieldTermStructureHandle(ql.FlatForward(calculation_date,
risk_free_rate, day_count))
dividend_yield = ql.YieldTermStructureHandle(ql.FlatForward(calculation_date,
dividend_rate, day_count))
heston_process = ql.HestonProcess(flat_ts, dividend_yield,
spot_handle, v0, kappa,
theta, hsigma, rho)
# run the pricing engine
engine = ql.AnalyticHestonEngine(ql.HestonModel(heston_process),0.01, 1000)
european_option.setPricingEngine(engine)
h_price = european_option.NPV()
解决方案
问题是 AnalyticHestonEngine 无法为障碍期权定价。
在此处查看https://www.quantlib.org/reference/group__barrierengines.html以获取障碍期权定价引擎列表。
推荐阅读
- batch-file - 为什么 PATH 的值没有保留在 if 块中
- excel - 循环收集动态列上的标签和公式
- firebase - 火库;安全规则模拟通过但实际上失败(uid 作为映射键)
- python - 在 python 中与 Windows CMD 交互
- netsuite - 自由标记错误:左手操作数需要一个数字,但这已评估为 sequence + has+ string
- c# - 如何覆盖!= 运算符?
- php - 如何使用 optgroup 将类别和子类别放在选择框上,只需使用 PHP 进行一次查询?
- subdomain - 使用子域重定向
- c++ - QPlainText 的子类不会扩展以填充布局
- javascript - 根据时间戳删除数组中的“类似项目”对象