【问题标题】:Pricing an FX option using the Garman-Kohlagen Process in QuantLib Python使用 QuantLib Python 中的 Garman-Kohlagen 过程为 FX 期权定价
【发布时间】:2021-05-12 18:45:50
【问题描述】:

我正在尝试使用 Python 中的 QuantLib 为欧洲外汇看涨期权定价。

国内无风险利率为0.16%。 国外无风险利率为-0.46%。 估值日期为 2020 年 6 月 30 日。 交易日期为 2020 年 6 月 25 日。 行权日期为 2020 年 7 月 2 日。 波动率为 9.935%。

行使价为 1.122,即期汇率为 1.12385。

代码如下:

import QuantLib as ql
calculation_date = ql.Date(30, 6, 2020)
ql.Settings.instance().evaluationDate = calculation_date
rf_domestic = 0.16 # in %
rf_foreign = -0.46 # in %
usd_domestic = ql.YieldTermStructureHandle(ql.FlatForward(calculation_date, rf_domestic/100, ql.ActualActual()))
eur_foreign = ql.YieldTermStructureHandle(ql.FlatForward(calculation_date, rf_foreign/100, ql.ActualActual()))
volTS = ql.BlackVolTermStructureHandle(ql.BlackConstantVol(ql.Date(30, 6, 2020), ql.NullCalendar(), 9.935/100, ql.ActualActual()))
gkp = ql.GarmanKohlagenProcess(ql.QuoteHandle(ql.SimpleQuote(1.122)), usd_domestic, eur_foreign, volTS)
engine = ql.BinomialVanillaEngine(gkp, 'crr', 1000)
option = ql.EuropeanOption(ql.PlainVanillaPayoff(ql.Option.Call, 1.12385), ql.EuropeanExercise(ql.Date(2, 7, 2020))) 
option.setPricingEngine(engine)
print('NPV:', option.NPV())
print('Diffusion:', gkp.diffusion(t, x))
print('Drift:', gkp.drift(t, x))
print('Variance:', gkp.variance(t0, x0, dt))
print('Standard Deviation:', gkp.stdDeviation(t0, x0, dt))
print('Expectation:', gkp.expectation(t0, x0, dt))

对于漂移、扩散、方差、标准差和期望的计算(上面代码的最后5行),参数(t,x,dt,t0)应该是什么?

任何帮助将不胜感激。

谢谢, AA

【问题讨论】:

    标签: python option quantlib


    【解决方案1】:

    提供 t 和 x 值。对于 t 或 x 的任何值,输出都是相同的,这有点奇怪。例如

    print('Diffusion:', gkp.diffusion(1, 1))
    print('Diffusion:', gkp.diffusion(2, 2))
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 2020-12-29
      • 2012-02-11
      • 2013-02-22
      • 1970-01-01
      • 2020-10-18
      相关资源
      最近更新 更多