25 May 2025 · Andreas Mitillos

European Option Pricing

We price European options using the Black-Scholes model, the Binomial model (CRR), and Monte Carlo simulations with variance reduction techniques. This project demonstrates the application of these models through an interactive pricing tool.

European option background

The Black Scholes Model.

We consider a frictionless financial market consisting of:

  • A risky asset (stock) S=(St)t0S = (S_t)_{t \geq 0}, which follows a Geometric Brownian Motion dSt=μdt+σdWtdS_t = \mu dt + \sigma dW_t
  • A riskless asset (bond) B=(Bt)t0B = (B_t)_{t \geq 0}, growing at a constant risk-free rate rr dBt=rBtdtdB_t = r B_t dt

Here, μ\mu is the drift (expected return of the asset), σ\sigma is the volatility and (Wt)t0(W_t)_{t \geq 0} is a standard Brownian motion. Under the risk-neutral measure Q\mathbb Q, we have:dSt=rStdt+σStdWtQdS_t = rS_t dt + \sigma S_t dW_t^{\mathbb Q}The European call option price at time t=0t=0 with strike KK and maturity T is given by:C0=erTEQ[max(STK,0)] C_0 = e^{-rT} \mathbb E^{\mathbb Q} [\max (S_T - K,0)] Using the Black-Scholes closed-form solution, this simplifies to:C0=S0Φ(d1)KerTΦ(d2)P0=KerTΦ(d2)S0Φ(d1) \begin{align*} C_0 &= S_0 \Phi(d_1) - K e^{-rT} \Phi(d_2) \\ P_0 &= Ke^{-rT} \Phi(-d_2) - S_0 \Phi(-d_1) \end{align*} whered1=ln(S0/K)+(r+12σ2)TσT,d2=d1σT d_1 = \frac{\ln(S_0 / K) + (r + \frac{1}{2} \sigma^2) T}{\sigma \sqrt{T}}, \quad d_2 = d_1 - \sigma \sqrt{T}and Φ()\Phi(\cdot) is the standard normal cumulative distribution function.

The Binomial Model.

In the Cox-Ross-Rubinstein (CRR) binomial model:

  • We discretize time into NN steps of length Δt=T/N\Delta t = T / N
  • The stock price can move up by a factor of u=eσΔtu = e^{\sigma \sqrt{\Delta t}} or down by a factor of d=eσΔt=1/ud = e^{-\sigma \sqrt{\Delta t}} = 1/u

The risk neutral probability is:p=erΔtdud p = \frac{e^{r \Delta t} - d}{u - d} At maturity TT, the stock can end up in one of N+1N + 1 possible states. The stock price at node (i,N)(i,N) is:Si,N=S0uidNi=S0u2iN S_{i,N} = S_0 \cdot u^i \cdot d^{N - i} = S_0 \cdot u^{2i - N} The option payoff at each terminal node depends on whether it's a call or put:

  • Call Option Payoff: Ci,N=max(Si,NK,0) C_{i,N} = \max(S_{i,N} - K, 0)
  • Put Option Payoff: Pi,N=max(KSi,N,0) P_{i,N} = \max(K - S_{i,N}, 0)

We calculate the option value at each earlier node by working backwards from maturity. The value at node (i,j)(i,j) is given by the risk-neutral expectation:Vi,j=erΔt[pVi+1,j+1+(1p)Vi,j+1] V_{i,j} = e^{-r \Delta t} \left [ p \cdot V_{i + 1, j + 1} + (1-p) \cdot V_{i, j + 1} \right ] This process continues until we reached the root node (0,0)(0,0), giving us the fair price of the option today.

  • For a call, we use terminal payoffs Ci,NC_{i,N}
  • For a put, we use terminal payoffs Pi,NP_{i,N}

Monte Carlo Simulation.

In the Monte Carlo framework, we simulate multiple paths of the underlying asset under the risk-neutral measure Q\mathbb Q and estimate the option price by averaging the discounted payoffs. We assume the risk-neutral dynamic of asset (St)t0(S_t)_{t \geq 0} follow:ST=S0exp((r12σ2)T+σTZ),ZN(0,1) S_T = S_0 \exp \left (\left (r - \frac{1}{2}\sigma^2 \right )T + \sigma \sqrt{T} Z \right ), \quad Z \sim \mathcal N(0,1)

Naive Monte Carlo

We simulate NN independent samples Z1,,ZNN(0,1)Z_1, \ldots, Z_N \sim \mathcal N(0,1), compute the terminal stock price for each:ST(i)=S0exp((r12σ2)T+σTZi) S_T^{(i)} = S_0 \exp \left (\left (r - \frac{1}{2}\sigma^2 \right )T + \sigma \sqrt{T} Z_i \right )The European option payoff for each sample depends on whether it's a call or a put:

  • Call Option Payoff:fi=max(ST(i)K,0) f_i = \max \left ( S_T^{(i)} - K, 0 \right )
  • Put Option Payoff:fi=max(KST(i),0) f_i = \max \left (K - S_T^{(i)}, 0 \right )

The Monte Carlo estimator for the option price is then:V^N=erT1Ni=1Nfi \widehat V_N = e^{-rT} \cdot \frac{1}{N} \sum_{i = 1}^N f_i By the Central Limit Theorem, for large NN, the estimator V^N\widehat V_N is approximately normally distributedV^NN(V,σf2N) \widehat V_N \sim \mathcal N \left (V, \frac{\sigma^2_f}{N} \right ) where σf2\sigma^2_f is the variance of the discounted payoffs. The 95% confidence interval is:V^N±1.96σ^fN, where σ^f2=1N1i=1N(fif)2 \widehat V_N \pm 1.96 \cdot \frac{\widehat \sigma_f}{\sqrt{N}}, \quad \text{ where } \quad \widehat \sigma^2_f = \frac{1}{N-1} \sum_{i = 1}^N \left (f_i - \overline f \right )^2

Antithetic Variates

We simulate NN standard normal variables Z1,,ZNN(0,1)Z_1, \ldots, Z_N \sim \mathcal N(0,1), and also use their negatives, Z1,,ZNN(0,1)-Z_1, \ldots, -Z_N \sim \mathcal N(0,1). For each ii, we compute:ST(+)=S0exp((r12σ2)T+σTZi)ST()=S0exp((r12σ2)TσTZi) \begin{align*} S_T^{(+)} &= S_0 \exp \left ( \left (r - \frac{1}{2} \sigma^2 \right ) T + \sigma \sqrt{T}Z_i \right ) \\ S_T^{(-)} &= S_0 \exp \left ( \left (r - \frac{1}{2} \sigma^2 \right ) T - \sigma \sqrt{T}Z_i \right ) \end{align*} The European option payoff is given by:

  • Call Option Payoff:fi=12[max(ST(+)K,0)+max(ST()K,0)] f_i = \frac{1}{2} \left [\max \left ( S_T^{(+)} - K, 0 \right ) + \max \left ( S_T^{(-)} - K, 0 \right ) \right ]
  • Put Option Payoff:fi=12[max(KST(+),0)+max(KST(),0)] f_i = \frac{1}{2} \left [\max \left ( K - S_T^{(+)}, 0 \right ) + \max \left ( K - S_T^{(-)} , 0 \right ) \right ]

The estimator for the option price is then:V^Nanti=erT1Ni=1Nfi \widehat V_N^\text{anti} = e^{-rT} \cdot \frac{1}{N} \sum_{i = 1}^N f_i The confidence interval is given by:V^Nanti±1.96σ^antiN, where σ^anti2=1N1i=1N(fif)2 \widehat V_N^\text{anti} \pm 1.96 \cdot \frac{\widehat \sigma_\text{anti}}{\sqrt{N}}, \quad \text{ where } \quad \widehat \sigma_\text{anti}^2 = \frac{1}{N - 1} \sum_{i = 1}^N \left ( f_i - \overline f \right )^2 The variance decomposition of the estimator is given byVar(f^i)=Var(f(Zi)+f(Zi)2)=12Var(f)+12Cov(f(Zi),f(Zi)) \text{Var} (\widehat f_i) = \text{Var} \left ( \frac{f(Z_i) + f(-Z_i)}{2} \right ) = \frac{1}{2} \text{Var}(f) + \frac{1}{2} \text{Cov} \left (f(Z_i), f(-Z_i) \right ) where ff is the payoff function of the option. Thus, variance reduction is achieved ifCov(f(Zi),f(Zi))<0 \text{Cov} \left (f(Z_i), f(-Z_i) \right ) < 0

Control Variates

We simulate NN standard normal variables Z1,,ZNN(0,1)Z_1, \ldots, Z_N \sim \mathcal N(0,1), and for each ii, compute the terminal asset value:ST(i)=S0exp((r12σ2)T+σTZi) S_T^{(i)} = S_0 \exp \left (\left (r - \frac{1}{2}\sigma^2 \right )T + \sigma \sqrt{T} Z_i \right ) We also define a control variate Yi=ST(i)Y_i = S_T^{(i)}, whose expected value is:E[Yi]=E[ST(i)]=S0erT \mathbb E[Y_i] = \mathbb E \left [S_T^{(i)} \right ] = S_0 e^{rT} For a constant cRc \in \mathbb R, we define the adjusted payoff using:ficv=fic(YiE[Yi]) f_i^\text{cv} = f_i - c(Y_i - \mathbb E[Y_i]) where fif_i is the discounted option payoff. The European option payoff is given by:

  • Call Option Payoff:fi=max(ST(i)K,0),ficv=fic(ST(i)S0erT) f_i = \max \left ( S_T^{(i)} - K, 0 \right ), \quad f_i^\text{cv} = f_i - c \left (S_T^{(i)} - S_0e^{rT} \right )
  • Put Option Payoff:fi=max(KST(i),0),ficv=fic(ST(i)S0erT) f_i = \max \left ( K - S_T^{(i)}, 0 \right ), \quad f_i^\text{cv} = f_i - c \left (S_T^{(i)} - S_0e^{rT} \right )

The estimator of the option price is then:V^Ncv=erT1Ni=1Nficv \widehat V_N^\text{cv} = e^{-rT} \cdot \frac{1}{N} \sum_{i = 1}^N f_i^\text{cv} The confidence interval is given by:V^Ncv±1.96σ^cvN, where σ^cv2=1N1i=1N(ficvfcv)2 \widehat V_N^\text{cv} \pm 1.96 \cdot \frac{\widehat \sigma_\text{cv}}{\sqrt{N}}, \quad \text{ where } \quad \widehat \sigma_\text{cv}^2 = \frac{1}{N - 1} \sum_{i = 1}^N \left ( f_i^\text{cv} - \overline f^\text{cv} \right )^2 The variance decomposition of the estimator is given by:Var(ficv)=Var(fic(YiE[Y]))=Var(f)+c2Var(Y)2cCov(f,Y) \text{Var} (f_i^\text{cv}) = \text{Var} \left (f_i - c(Y_i - \mathbb E[Y]) \right ) = \text{Var}(f) + c^2 \text{Var}(Y) - 2c \text{Cov} (f,Y) This is minimised by choosing:c=Cov(f,Y)Var(Y) c^* = \frac{\text{Cov}(f,Y)}{\text{Var}(Y)} In this case, the variance becomesVar(ficv)=Var(f)(1ρ2),ρ=Corr(f,Y) \text{Var} \left (f_i^\text{cv} \right ) = \text{Var}(f) \cdot (1-\rho^2), \quad \rho = \text{Corr}(f,Y) Thus, variance reduction is achieved when ρ2>0\rho^2 > 0, i.e., when ff and YY are positively correlated. The higher the correlation, the higher the variance reduction.

Stratified Sampling

We divide the interval [0,1][0,1] into NN equal-width strata and draw one uniform sample per stratum:UiU(i1N,iN), for i=1,,N U_i \sim \mathcal U \left ( \frac{i - 1}{N}, \frac{i}{N} \right ), \quad \text{ for } i = 1,\ldots,N We then transform this using Zi=Φ1(Ui)Z_i = \Phi^{-1} (U_i) where Φ1\Phi^{-1} is the inverse standard normal CDF and simulateST(i)=S0exp((r12σ2)T+σTZi) S_T^{(i)} = S_0 \cdot \exp \left ( \left ( r - \frac{1}{2} \sigma^2 \right )T + \sigma \sqrt{T} Z_i \right ) The European option payoff is given by:

  • Call Option Payoff:fi=max(ST(i)K,0) f_i = \max \left ( S_T^{(i)} - K, 0 \right )
  • Put Option Payoff:fi=max(KST(i),0) f_i = \max \left ( K - S_T^{(i)}, 0 \right )

The estimator of the option price is thenV^Nstrat=erT1Ni=1Nfi \widehat V_N^\text{strat} = e^{-rT} \cdot \frac{1}{N} \sum_{i = 1}^N f_i The confidence interval is given byV^Nstrat±1.96σ^stratN, where σ^strat2=1N1i=1N(fif)2 \widehat V_N^\text{strat} \pm 1.96 \cdot \frac{\widehat \sigma_\text{strat}}{\sqrt{N}}, \quad \text{ where } \widehat \sigma^2_\text{strat} = \frac{1}{N - 1} \sum_{i = 1}^N \left ( f_i - \overline f \right )^2 Variance reduction is achieved because, due to more uniform coverage of the sample space. Stratification reduces the chance of oversampling or undersampling extreme regions.

Importance Sampling

We simulate NN standard uniform random variables Y1,,YNU(yK,1)Y_1, \ldots, Y_N \sim \mathcal U(y_K, 1), where the truncation point yK(0,1)y_K \in (0,1) is computed such that:ST(yK)=K    yK=Φ(log(K/S0)(r12σ2)TσT) S_T (y_K) = K \quad \implies \quad y_K = \Phi \left ( \frac{\log(K/S_0) - \left (r - \frac{1}{2} \sigma^2 \right )T}{\sigma \sqrt{T}} \right ) For each ii, we compute:Zi=Φ1(Yi),ST(i)=S0exp((r12σ2)T+σTZi) Z_i = \Phi^{-1} (Y_i), \quad S_T^{(i)} = S_0 \cdot \exp \left (\left (r - \frac{1}{2} \sigma^2 \right )T + \sigma \sqrt{T} Z_i \right ) We apply the transformation:gi=(1yK)f(ST(i)), with f(S)=max(SK,0) or max(KS,0) g_i = (1 - y_K) \cdot f \left (S_T^{(i)} \right ), \quad \text{ with } f(S) = \max(S-K,0) \text{ or } \max(K - S,0) The European option payoff is given by:

  • Call Option Payoff:fi=max(ST(i)K,0),gi=(1yK)fi f_i = \max \left ( S_T^{(i)} - K, 0 \right ), \quad g_i = (1 - y_K) \cdot f_i
  • Put Option Payoff:fi=max(KST(i),0),gi=(1yK)fi f_i = \max \left ( K - S_T^{(i)}, 0 \right ), \quad g_i = (1 - y_K) \cdot f_i

The estimator for the option price is then:V^NIS=erT1Ni=1Ngi \widehat V_N^\text{IS} = e^{-rT} \cdot \frac{1}{N} \sum_{i = 1}^N g_i The confidence interval is given by:V^NIS±1.96σ^ISN, where σ^IS2=1N1i=1N(gig)2 \widehat V_N^\text{IS} \pm 1.96 \cdot \frac{\widehat \sigma_\text{IS}}{\sqrt{N}}, \quad \text{ where } \widehat \sigma_\text{IS}^2 = \frac{1}{N - 1} \sum_{i = 1}^N \left (g_i - \overline g \right )^2 The variance reduction is achieved because we avoid simulating paths where ST<KS_T < K, which yield zero payoff for a call option, or where ST>KS_T > K for a put. By concentrating simulations on the effective region of integration YiU[yK,1]Y_i \sim \mathcal U[y_K,1], we eliminate variance from regions that contribute nothing to the expectation.

Pricing Tool.

Use the interactive tool below to experiment with the Black-Scholes, Binomial (CRR), and Monte Carlo models for pricing European options. You may adjust the parameters to see how each model responds, and compare their approaches in practice.

Pricing Model

© 2025Made by Andreas Mitillos