繁体   English   中英

在quantlib-python中计算EuropeanOptionImpliedVolatility

[英]Calculating EuropeanOptionImpliedVolatility in quantlib-python

我有使用RQuantlib库的R代码。 为了从python运行它我使用RPy2。 我知道python有自己的quantlib绑定(quantlib-python)。 我想完全从R切换到python。

请告诉我如何使用quantlib-python运行以下命令

import rpy2.robjects as robjects

robjects.r('library(RQuantLib)')
x = robjects.r('x<-EuropeanOptionImpliedVolatility(type="call", value=11.10, underlying=100,strike=100, dividendYield=0.01, riskFreeRate=0.03,maturity=0.5, volatility=0.4)')
print x

样品运行:

$ python vol.py 
Loading required package: Rcpp
Implied Volatility for EuropeanOptionImpliedVolatility is 0.381

你需要一些设置。 为方便起见,除非您发生名称冲突,否则最好导入所有内容:

from QuantLib import *

然后,创建选项,这需要练习和支付:

exercise = EuropeanExercise(Date(3,August,2011))
payoff = PlainVanillaPayoff(Option.Call, 100.0)
option = EuropeanOption(payoff,exercise)

(请注意,您需要一个锻炼日期,而不是成熟的时间。)

现在,无论您想要定价还是获得其隐含波动率,您都必须设置Black-Scholes流程。 有一些机器涉及,因为你不能只传递一个无风险率的值:你需要一个完整的曲线,所以你将创建一个扁平的,并将其包裹在一个手柄中。 股息收益率和收益率同样如此; 底层价值在报价中。 (我不解释所有对象是什么;如果你需要,请评论。)

S = QuoteHandle(SimpleQuote(100.0))
r = YieldTermStructureHandle(FlatForward(0, TARGET(), 0.03, Actual360()))
q = YieldTermStructureHandle(FlatForward(0, TARGET(), 0.01, Actual360()))
sigma = BlackVolTermStructureHandle(BlackConstantVol(0, TARGET(), 0.20, Actual360()))
process = BlackScholesMertonProcess(S,q,r,sigma)

(波动率实际上不会用于隐含卷计算,但无论如何你需要一个。)

现在,对于隐含波动率,您将调用:

option.impliedVolatility(11.10, process)

和定价:

engine = AnalyticEuropeanEngine(process)
option.setPricingEngine(engine)
option.NPV()

您可以使用其他功能(报价中的汇率以便您可以在以后更改它们等)但这应该可以帮助您入门。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM