簡體   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