我使用QuantLib为各种股票期权定价。 我正在使用Python和QuantLib XL。 在Python中,很容易构建一个选项,创建一个Black Scholes过程,然后根据价格计算价格或计算隐含波动率。
只是:
from QuantLib import *
exercise = EuropeanExercise(Date(3,August,2019))
payoff = PlainVanillaPayoff(Option.Call, 105.0)
option = EuropeanOption(payoff,exercise)
#spot
S = QuoteHandle(SimpleQuote(100.0))
#risk free
r = YieldTermStructureHandle(FlatForward(0, TARGET(), 0.03,
Actual360()))
#dividend
q = YieldTermStructureHandle(FlatForward(0, TARGET(), 0.01,
Actual360()))
#vol handle
sigma = BlackVolTermStructureHandle(BlackConstantVol(0,
TARGET(), 0.20,
Actual360()))
#BS process
process = BlackScholesMertonProcess(S,q,r,sigma)
#Now calculate implied volatility
option.impliedVolatility(25.0, process)
#Alternatively,
engine = AnalyticEuropeanEngine(process)
option.setPricingEngine(engine)
option.NPV()
这可以使用=qlGeneralizedBlackScholesProcess()以类似的方式在XL中完成。 定价和希腊人使用=qlInstrumentNPV()和qlVega()等是直截了当的。但是,目前尚不清楚如何根据价格计算隐含波动率。 做这个的最好方式是什么?