質問

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)

(成熟する時間ではなく、運動日が必要であることに注意してください。)

今、あなたがそれを価格設定したいか、その暗黙のボラティリティを取得するかにかかわらず、あなたは黒い彫刻のプロセスをセットアップする必要があります。たとえば、リスクのないレートの値を渡すことはできないため、少しの機械が関係しています。完全な曲線が必要なので、フラットな曲線を作成してハンドルに包みます。配当利回りとvolの同上。根本的な価値は見積もりになります。 (私はすべてのオブジェクトが何であるかを説明していません。必要な場合はコメントしています。)

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帰属
所属していません StackOverflow
scroll top