Tutorials › Stochastic Calculus › Estimating a European Call Price by Monte Carlo

Computational Projects in Stochastic Calculus · Tutorial 596 of 600

Estimating a European Call Price by Monte Carlo

Build a Monte Carlo estimator for a European call under geometric Brownian motion, quantify its sampling error, and compare it with the Black–Scholes price.

Intermediate 12 min read

What You'll Learn

  • Simulate a geometric-Brownian terminal price directly from a standard normal draw
  • Construct the discounted-payoff estimator under the risk-neutral measure
  • Prove the estimator is unbiased and derive its variance
  • Compute the sample standard error from simulated payoffs
  • Compare a Monte Carlo estimate with the Black–Scholes benchmark
  • Use pilot data to plan a simulation size while recognizing its limitations

From Terminal Prices to a Call-Price Estimate

A European call pays \((S_T-K)^+=\max(S_T-K,0)\) at its maturity \(T\). Under the risk-neutral measure, its time-zero price is the expected discounted payoff. Monte Carlo estimation replaces that expectation with the average of finitely many simulated payoffs. The estimate is random: its standard error describes the sampling variability of the average, not the size of the error in any one particular run.

Work on a filtered probability space \((\Omega,\mathcal{F},(\mathcal{F}_t)_{t\ge0},\mathbb{P})\), and let \(\mathbb{Q}\) be the risk-neutral measure, equivalent to \(\mathbb{P}\) on the time interval under consideration. Under \(\mathbb{Q}\), let \(B_t\) be Brownian motion and suppose the stock follows geometric Brownian motion with constant interest rate \(r\) and volatility \(\sigma>0\):

$$ dS_t=rS_t\,dt+\sigma S_t\,dB_t,\qquad S_0>0. $$

Here \(rS_t\) is the drift term and \(\sigma S_t\) is the diffusion coefficient. The stochastic integral is an Ito integral: its integrand is adapted and progressively measurable and belongs to \(\mathcal{L}^2\) on each finite time interval, meaning \(\mathbb{E}^{\mathbb{Q}}\int_0^T H_s^2\,ds<\infty\). In particular, the integral with integrand \(\sigma S_s\) is well-defined, since the geometric-Brownian solution has finite second moments on finite intervals.

Definition: For \(n\) independent standard normal draws \(Z_1,\dots,Z_n\), define simulated terminal prices and discounted call payoffs by \(S_T^{(i)}=S_0\exp((r-\tfrac12\sigma^2)T+\sigma\sqrt{T}\,Z_i)\) and \(Y_i=e^{-rT}(S_T^{(i)}-K)^+\). The Monte Carlo estimator is \(\widehat C_n=\frac1n\sum_{i=1}^nY_i\). Its estimated standard error is \(\widehat{\operatorname{SE}}(\widehat C_n)=s_Y/\sqrt n\), where \(s_Y^2=\frac1{n-1}\sum_{i=1}^n(Y_i-\overline Y)^2\) and \(\overline Y=\frac1n\sum_{i=1}^nY_i\), for \(n\ge2\).

The terminal-price formula follows by applying Ito's formula to the logarithm of \(S_t\), or equivalently by checking the explicit solution in the SDE. In that calculation, the correction from \(dB_t\,dB_t=dt\) is essential; the exponent contains \(-\tfrac12\sigma^2T\), not zero. Direct terminal simulation uses one normal draw per price and does not require simulating all the intermediate points of a Brownian path.

Why the Estimator Works

Theorem: Suppose \(S_0>0\), \(K\ge0\), \(T>0\), \(\sigma>0\), and \(r\) is constant. If \(Y_1,\ldots,Y_n\) are independent discounted call payoffs generated by the risk-neutral geometric-Brownian model, then \(\widehat C_n\) is unbiased for the call price \(C=\mathbb{E}^{\mathbb{Q}}[e^{-rT}(S_T-K)^+]\), and \(\operatorname{Var}^{\mathbb{Q}}(\widehat C_n)=\operatorname{Var}^{\mathbb{Q}}(Y_1)/n\). For \(n\ge2\), \(s_Y^2/n\) is an unbiased estimator of this variance.}

Proof. Set \(m=\mathbb{E}^{\mathbb{Q}}[Y_1]\) and \(v=\operatorname{Var}^{\mathbb{Q}}(Y_1)\). These quantities are finite: \(0\le (S_T-K)^+\le S_T\), and the lognormal terminal price has finite second moment. Independence gives \(\mathbb{E}^{\mathbb{Q}}[\widehat C_n]=\frac1n\sum_i\mathbb{E}^{\mathbb{Q}}[Y_i]=m=C\). Also, the covariance of distinct \(Y_i,Y_j\) is zero, so expanding the variance of the sum gives \(\operatorname{Var}^{\mathbb{Q}}(\widehat C_n)=n^{-2}\sum_i v=v/n\). For the sample variance, write \(\overline Y-m=\frac1n\sum_i(Y_i-m)\). Expanding squares gives \(\sum_i(Y_i-\overline Y)^2=\sum_i(Y_i-m)^2-n(\overline Y-m)^2\). Taking expectations yields \(nv-n(v/n)=(n-1)v\). Dividing by \(n-1\) shows \(\mathbb{E}^{\mathbb{Q}}[s_Y^2]=v\), and hence \(\mathbb{E}^{\mathbb{Q}}[s_Y^2/n]=v/n\). \(\square\)

The theorem establishes the estimator’s mean and variance; it does not assert that a particular estimate must be close to the price. The reported standard error estimates the standard deviation of repeated estimates of the same size. In a large sample, an approximate interval is often reported as \(\widehat C_n\pm1.96\,\widehat{\operatorname{SE}}\). This is a normal approximation, not an exact finite-sample guarantee; it is most useful when the sample is sufficiently large and the payoff distribution is not too skewed.

The benchmark for comparison is the Black–Scholes call formula, a standard result for this constant-parameter model: \(C_{\mathrm{BS}}=S_0\Phi(d_1)-Ke^{-rT}\Phi(d_2)\), where \(d_1=(\log(S_0/K)+(r+\tfrac12\sigma^2)T)/(\sigma\sqrt T)\) and \(d_2=d_1-\sigma\sqrt T\), for \(K>0\). The Monte Carlo result should fluctuate around this benchmark, with typical sampling fluctuations decreasing in proportion to \(1/\sqrt n\). This comparison is a diagnostic, not a proof that a particular simulation is correctly implemented.

Worked Calculations

Worked Example: Simulating One Terminal Price

Take \(S_0=100\), \(K=100\), \(r=0\), \(\sigma=0.2\), and \(T=1\). Suppose one standard normal draw is \(Z=1\). Compute the simulated terminal price and discounted payoff.

The exponent in the terminal-price formula is \((0-\tfrac12(0.2)^2)1+0.2\sqrt1(1)=-0.02+0.2=0.18\). Thus \(S_T^{(1)}=100e^{0.18}=119.72\) to four significant digits. The payoff is \((119.72-100)^+=19.72\), and because \(r=0\), discounting leaves it at \(Y_1=19.72\).

Check: Substitution into the payoff definition gives \(e^0\max(100e^{0.18}-100,0)=100(e^{0.18}-1)=19.72\), consistent with the terminal-price calculation. This is one simulated payoff, not yet a price estimate with a meaningful estimated standard error.

Worked Example: Estimating the Price and Standard Error

Use the same parameters as above, and suppose four independent standard normal draws are \(-1,0,1,2\). These fixed values illustrate the calculations; they are not a claim about a typical random sample. Find the four payoffs, the Monte Carlo estimate, its estimated standard error, and the Black–Scholes benchmark.

The log-price exponent is \(-0.02+0.2Z_i\). For \(Z_i=-1\), the terminal price is \(100e^{-0.22}=80.25\), giving payoff \(0\). For \(Z_i=0\), it is \(100e^{-0.02}=98.02\), also giving payoff \(0\). For \(Z_i=1\), it is \(100e^{0.18}=119.72\), giving payoff \(19.72\). For \(Z_i=2\), it is \(100e^{0.38}=146.23\), giving payoff \(46.23\). The discount factor is \(e^0=1\), so the discounted payoffs are the same.

The sample mean is \(\overline Y=(0+0+19.7217+46.2285)/4=16.4875\), or \(16.49\) to four significant digits. Using the sample-variance identity \(s_Y^2=[\sum_iY_i^2-(\sum_iY_i)^2/4]/3\), the sum of squares is \(19.7217^2+46.2285^2=2526.02\), and \((\sum_iY_i)^2/4=1087.36\). Therefore \(s_Y^2=(2526.02-1087.36)/3=479.55\), \(s_Y=21.90\), and the estimated standard error is \(21.90/\sqrt4=10.95\).

For the benchmark, \(d_1=(0+\tfrac12(0.2)^2)/0.2=0.1\) and \(d_2=0.1-0.2=-0.1\). The formula gives \(C_{\mathrm{BS}}=100[\Phi(0.1)-\Phi(-0.1)]=100(0.5398-0.4602)=7.966\). The estimate differs from the benchmark by \(16.4875-7.9656=8.5219\), which is about \(8.5219/10.9494=0.7783\) estimated standard errors.

Check: The estimated standard error is the sample standard deviation divided by \(\sqrt4=2\), not by \(4\). The estimate’s difference from the benchmark is less than one estimated standard error, which is plausible for this small sample; it does not establish that the simulation is accurate.

Worked Example: Using a Pilot Estimate to Plan Sample Size

Use the sample standard deviation \(s_Y=21.8987\) from the four-payoff example as a pilot value. Approximately how many simulations would be needed for a standard error of \(2\) or less, if the pilot variability were representative?

The standard-error relation is approximately \(s_Y/\sqrt n\le2\). Squaring both positive sides gives \(n\ge(s_Y/2)^2\). Substituting the pilot value gives \(n\ge(21.8987/2)^2=119.89\), so the smallest integer meeting this pilot calculation is \(n=120\). At this size the predicted standard error is \(21.8987/\sqrt{120}=1.999\) to four significant digits.

Check: For \(n=119\), the pilot prediction is \(21.8987/\sqrt{119}=2.007\), which is greater than \(2\); for \(n=120\), it is \(1.999\), which is below \(2\). This is only a planning estimate: the true payoff standard deviation is not known in advance, and the four-observation pilot itself is highly uncertain.

Implementation Checks and Common Mistakes

In a simulation, generate independent standard normal draws and use the exact terminal transition. For every draw, compute the exponential, apply the positive-part operation, discount the payoff, and then calculate the mean and sample standard deviation of the discounted payoffs. The order matters: the standard error is computed from the \(Y_i\), so both the payoff transformation and discounting must occur before calculating it.

Common mistake: using the physical drift in a risk-neutral price. A simulation under the physical measure \(\mathbb{P}\) may use a different drift, such as an expected stock return \(\mu\). Substituting \(\mu\) for \(r\) in the risk-neutral terminal-price formula generally estimates a different expectation. For the no-dividend model here, pricing uses the risk-neutral measure \(\mathbb{Q}\), under which the drift is \(r\), and discounts by \(e^{-rT}\).

Common mistake: reporting the payoff standard deviation as the standard error. The standard deviation \(s_Y\) measures the spread of individual discounted payoffs. The estimated standard error of their mean is \(s_Y/\sqrt n\). Confusing the two overstates the estimated uncertainty in the mean by a factor of \(\sqrt n\).

A useful implementation check is to compare the Monte Carlo estimate with \(C_{\mathrm{BS}}\) for a case where the benchmark is available. Also check basic constraints: each simulated payoff is nonnegative, and the call price cannot exceed the discounted stock value \(S_0\) in this model. A mismatch may reflect ordinary sampling variation, a coding error, an incorrect discount factor, or use of the wrong drift; the benchmark comparison alone does not identify which one.

Check Your Understanding

Use the definitions and calculations in this tutorial to answer the following.

  1. For \(S_0=80\), \(K=85\), \(r=0.03\), \(\sigma=0.25\), and \(T=2\), write the terminal-price expression corresponding to a standard normal draw \(Z\).
  2. Why does the sample standard error use the sample standard deviation of discounted payoffs rather than undiscounted terminal prices?
  3. State the assumptions that make the Monte Carlo estimator unbiased for the risk-neutral call price.
  4. If the estimated standard deviation of discounted payoffs is \(12\), what sample size does the pilot calculation suggest for a standard error of at most \(0.5\)?
  5. Explain why agreement between one Monte Carlo estimate and the Black–Scholes benchmark does not, by itself, verify the simulation code.