Mode:
Duration:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
spot = 100
strike = 100
maturity = ql.Date(1,12,2026)
vol = 0.2
risk_free = 0.01
calendar = ql.TARGET()
day_count = ql.Actual360()
option_type = ql.Option.Call
payoff = ql.PlainVanillaPayoff(option_type, strike)
exercise = ql.EuropeanExercise(maturity)
option = ql.VanillaOption(payoff, exercise)
spot_handle = ql.QuoteHandle(ql.SimpleQuote(spot))
dividend_yield = ql.YieldTermStructureHandle(ql.FlatForward(date, 0.0, day_count))
risk_free_rate = ql.YieldTermStructureHandle(ql.FlatForward(date, risk_free, day_count))
volatility = ql.BlackVolTermStructureHandle(ql.BlackConstantVol(date, calendar, vol, day_count))
process = ql.BlackScholesMertonProcess(spot_handle, dividend_yield, risk_free_rate, volatility)
engine = ql.AnalyticEuropeanEngine(process)
option.setPricingEngine(engine)
npv = option.NPV()Coding works best on desktop or with an external keyboard.