Skip to content

Pricing Asian and Barrier Options With Monte Carlo

Original question

Can you explain how Monte Carlo simulation is used to price path-dependent options like Asian and barrier options?
Simulate asset paths under a pricing measure, evaluate the contract’s payoff on each path, and average the discounted payoffs. For an Asian option, compute the average at the contract’s fixing dates. For a barrier option, determine whether the barrier was crossed under the contract’s monitoring convention. Continuous monitoring generally needs information about what can happen between simulated endpoints.

Simulate at the dates the contract actually uses

Under risk-neutral geometric Brownian motion with rate rr and no dividends, use independent Zi∼N(0,1)Z_i\sim N(0,1) and exact log increments
log⁡(Si+1/Si)=(r−σ2/2)Δt+σΔtZi.\log(S_{i+1}/S_i)=(r-\sigma^2/2)\Delta t+\sigma\sqrt{\Delta t}Z_i.
For an equally weighted Asian call with mm fixings, calculate H=(m−1∑j=1mStj−K)+H=(m^{-1}\sum_{j=1}^m S_{t_j}-K)^+. For a discretely monitored up-and-out call with no rebate, use H=(ST−K)+1{max⁡jStj<B}H=(S_T-K)^+\mathbf 1_{\{\max_j S_{t_j}<B\}}, assuming the contract knocks out on touching BB. For nn independent discounted payoffs, the sample standard deviation divided by n\sqrt n estimates Monte Carlo standard error.

For a continuously monitored up barrier with both log endpoints x,yx,y below b=log⁡Bb=\log B, the Brownian-bridge crossing probability on an interval is exp⁡[−2(b−x)(b−y)/(σ2Δt)]\exp[-2(b-x)(b-y)/(\sigma^2\Delta t)] under this GBM model. Multiplying conditional survival probabilities across intervals gives a path weight for a no-rebate terminal payoff. It accounts for crossings a grid-only check would miss.

Suppose two paths have fixings (95,105,110)(95,105,110) and (122,98,110)(122,98,110). An arithmetic Asian call struck at 100100 pays 3.333.33 and 10.0010.00 respectively. A discretely monitored up-and-out call struck at 100100 with barrier 120120 pays 10.0010.00 and zero. Each contract needs the three observations, but the Asian records their average while the barrier records whether any fixing hit the threshold.
The barrier example is also a test of your implementation. With an up-and-out barrier, adding intermediate monitoring dates can only leave the payoff unchanged or knock out another path if you use the same nested paths and other terms. That statement does not apply to an Asian option when adding fixings changes the average specified by the contract. For continuously monitored GBM, a Brownian bridge can estimate a crossing probability between two simulated log prices. Increasing only the number of paths shrinks the sampling error and leaves any monitoring bias in place.

Split the error budget into two questions. How variable is the average discounted payoff across independent paths, and how accurately did each simulated path represent the contract? For a discretely fixed Asian option under GBM, simulating the exact transition from one fixing date to the next can remove time-discretisation error at those dates. For a continuously monitored barrier, exact endpoint transitions still leave unobserved crossings inside an interval. Use nested monitoring grids or a bridge correction to diagnose that bias separately from the confidence interval for the average.

Simulating both payoff rules

import numpy as np rng = np.random.default_rng(27) paths, fixings = 60_000, 12 spot, strike, barrier = 100, 100, 120 rate, vol = 0.03, 0.20 dt = 1 / fixings shocks = rng.standard_normal((paths, fixings)) increments = (rate - vol**2 / 2) * dt + vol * np.sqrt(dt) * shocks prices = spot * np.exp(increments.cumsum(axis=1)) asian = np.maximum(prices.mean(axis=1) - strike, 0) barrier_call = np.maximum(prices[:, -1] - strike, 0) * (prices.max(axis=1) < barrier) for payoffs in (asian, barrier_call): discounted = np.exp(-rate) * payoffs print(discounted.mean(), discounted.std(ddof=1) / np.sqrt(paths))

Interactive example

Change the drift and volatility of geometric Brownian motion

The three paths reuse seeded Gaussian shocks. The orange curve shows the theoretical mean.

Expected terminal price 108.33 · terminal standard deviation 27.51
Three simulated stock price paths and the theoretical mean8010012000.250.50.751YearsPrice
  • Path A
  • Path B
  • Path C
  • Expected price

References and next steps