# Calculating the Option price using Quantlib

I can calculate the fair price of a European Option using Quantlib as below -

import QuantLib as ql
maturity_date = ql.Date(15, 1, 2016)
spot_price = 127.62
strike_price = 130
volatility = 0.20
dividend_rate =  0.0163
option_type = ql.Option.Call

risk_free_rate = 0.001
day_count = ql.Actual365Fixed()
calendar = ql.UnitedStates()

calculation_date = ql.Date(8, 5, 2015)
ql.Settings.instance().evaluationDate = calculation_date

payoff = ql.PlainVanillaPayoff(option_type, strike_price)
settlement = calculation_date
eu_exercise = ql.EuropeanExercise(maturity_date)
european_option = ql.VanillaOption(payoff, eu_exercise)

spot_handle = ql.QuoteHandle(
ql.SimpleQuote(spot_price)
)
flat_ts = ql.YieldTermStructureHandle(
ql.FlatForward(calculation_date, risk_free_rate, day_count)
)
dividend_yield = ql.YieldTermStructureHandle(
ql.FlatForward(calculation_date, dividend_rate, day_count)
)
flat_vol_ts = ql.BlackVolTermStructureHandle(
ql.BlackConstantVol(calculation_date, calendar, volatility, day_count)
)
bsm_process = ql.BlackScholesMertonProcess(spot_handle,
dividend_yield,
flat_ts,
flat_vol_ts)


This is perfect. However I want to see the actual calculation engine to look into the actual formula being used for the calculation.

Can you please help me to find the actual file location to see the formula being used? I have searched various files in my local file-system of ~ql and also online resources like https://rkapl123.github.io/QLAnnotatedSource/d2/d98/analyticeuropeanengine_8hpp_source.html, but failed to find such.

Your help will be highly appreciated.

• Not familiar with it, but based on naming seems likely simply a BSM implementation. What details are you looking for? – Chris Aug 24 '20 at 0:57

But assuming your ql.VanillaOption and your ql.BlackScholesMertonProcess are connected with a ql.AnalyticEuropeanEngine pricing engine, the engine's code is here and you will see that on Line 71 it calls the Black Calculator here which is doing the calculations.