Quantitative Finance · CQF Module 3
Exotic Options
Lab
Where the Black-Scholes closed form runs out. This page prices Asian, barrier, lookback, and American-exercise options under GBM using Monte Carlo path-dependence and the Longstaff-Schwartz regression, with a live path-explorer to show what each exotic payoff actually depends on.
Abstract
The Black-Scholes-Merton closed form prices vanilla European calls and binary cash-or-nothings. Anything else, Asian, barrier, lookback, or American exercise, breaks the assumption that only the terminal stock matters. This paper develops the four representative exotic payoffs and the numerical machinery they require: Monte Carlo over discretely monitored paths for Asian, barrier, and lookback options, and the Longstaff-Schwartz (2001) regression for American-exercise options. Each engine is tied to the corresponding CQF JA263.5 lecture and to the supporting textbook literature [5, 6, 8].
Part I · Why the closed form runs out
1.Path dependence
Under risk-neutral GBM, the BSM formula prices any payoff that depends only on the terminal stock value, because the lognormal density of integrates against in closed form. A path-dependent claim, whose payoff depends on the entire trajectory through some functional , has no such single-density representation. The four payoffs this paper covers are:
Asian payoffs depend on the running mean, lookbacks on the running extremum, barriers on a first-passage event, and Americans on an over stopping times. None of these collapse to a function of alone, so the BSM formula is silent. The natural replacement is Monte Carlo on a discretised path, plus, for American payoffs, a regression that estimates the continuation value at each candidate exercise date.
2.Discrete monitoring bias
Barrier and lookback contracts are typically continuously monitored in their term sheets, but simulated paths sample only at the grid points . A path that pierces the barrier between two grid points and returns below contributes to the simulated price even though it should have knocked out. The bias scales as and shrinks as grows. Broadie, Glasserman, and Kou (1997) [12] give an explicit continuity correction that shifts the simulated barrier by with , recovering near-continuous-monitoring accuracy at coarse grids.
Interactive · One path, four payoffs
Below: drag the seed to redraw the path, slide vol up to widen excursions, move the strike and barrier to see how each exotic responds to the same trajectory. Knock-outs flash red the moment they fire.
Studio · Path Explorer
One path, four payoffs
Drag the controls and watch the four exotic payoffs respond on the same simulated path. The cards below are the headline numbers: read off the running mean for Asian, the running max for lookback, the barrier event for up-and-out, and only the terminal value for European.
European
0.00
max(S_T - K, 0) with S_T = 77.4, K = 100
Asian (arith)
5.68
max(mean(S_t) - K, 0) with mean = 105.7
Lookback (max)
22.03
max(max_t S_t - K, 0) with max = 122.0
Up-and-out
0.00
max(S_T - K, 0) if max_t S_t < B = 130
live
Path controls
Path under the four payoffs
Part II · Monte Carlo with variance reduction
3.Geometric Asian as a control variate
The arithmetic Asian call has no closed form. Its geometric counterpart, with payoff , does, because the geometric mean of a lognormal sequence is itself lognormal. Kemna and Vorst (1990) [13] derive the closed form: with and a matching drift adjustment ,
with the obvious analogues of BSM's. The arithmetic and geometric Asians track each other closely path by path, so
with the known closed-form value, removes most of the arithmetic estimator's variance for free. Variance reduction factors of 50× or more at coarse are routine [6, §4.5].
4.Longstaff-Schwartz for American exercise
The American put is . Backward induction on a grid would normally require the conditional distribution of future cash flows, which Monte Carlo does not have. Longstaff and Schwartz (2001) [14] observed that the continuation value at time is a function of alone (under Markovian GBM), so it can be estimated by regression:
- Simulate paths forward. Initialise the cash-flow vector .
- Step backward from to . At each , take the subset of paths that are in-the-money and regress their discounted future cash flow on a polynomial basis in (typically ).
- Use the fitted continuation value to decide exercise: if , set ; else carry the discounted cash flow.
- The price is .
Restricting the regression to in-the-money paths is the key insight: out-of-the-money continuation values are never compared against an exercise decision, so including them only adds noise to the fit. The Python implementation below reproduces Longstaff and Schwartz's Table 1 reference case (, , , , ) to within Monte Carlo error of the published value 4.478.
Part III · Conclusion & references
5.Conclusion
Exotics are a study in how much the payoff structure constrains the available numerical tools. When the payoff depends on a path average, an extremum, or a first-passage event, Monte Carlo with sufficient time-discretisation accuracy is almost always the right answer, and a closely related closed-form payoff on the same paths serves as a near-perfect control variate. When the payoff depends on an optimal stopping decision, Longstaff-Schwartz turns the intractable conditional expectation into a sequence of in-the-money regressions on a low-order polynomial basis. Both methods are conceptually simple, both reduce to vector operations on a matrix of simulated paths, and both transfer almost verbatim to local volatility, stochastic volatility, or any other model that admits forward path simulation.
6.References
- [5]Albrecher, H., Mayer, P., Schoutens, W. & Tistaert, J. (2007). The Little Heston Trap. Wilmott Magazine, January 2007.
- [6]Glasserman, P. (2004). Monte Carlo Methods in Financial Engineering. Springer.
- [8]Hull, J. C. (2018). Options, Futures, and Other Derivatives (10th ed.). Pearson.
- [12]Broadie, M., Glasserman, P. & Kou, S. (1997). A Continuity Correction for Discrete Barrier Options. Mathematical Finance, 7(4), 325-349.
- [13]Kemna, A. & Vorst, T. (1990). A Pricing Method for Options Based on Average Asset Values. Journal of Banking and Finance, 14(1), 113-129.
- [14]Longstaff, F. A. & Schwartz, E. S. (2001). Valuing American Options by Simulation: A Simple Least-Squares Approach. Review of Financial Studies, 14(1), 113-147.
- [10]Ahmad, R. (2026). CQF Module 3, JA263.5 Exotic Options. Certificate in Quantitative Finance.
Python code
Copy-pasteable pricers
Each tab is a self-contained NumPy-only pricer. No external state, no framework. Drop into a notebook and the __main__ block reproduces the reference number printed in the comment.
import numpy as npfrom scipy.stats import norm def asian_arithmetic_mc(S0, K, r, sigma, T, M, N, q=0.0, seed=None): 300/85">"""Arithmetic Asian call by Monte Carlo, exact log-Euler GBM. Parameters ---------- S0, K : spot, strike r, sigma, T : risk-free rate, vol, maturity (years) M : number of equally-spaced averaging dates N : number of MC paths 300/85">""" rng = np.random.default_rng(seed) dt = T / M drift = (r - q - 0.5 * sigma ** 2) * dt diff = sigma * np.sqrt(dt) Z = rng.standard_normal((N, M)) log_paths = np.log(S0) + np.cumsum(drift + diff * Z, axis=1) S = np.exp(log_paths) # shape (N, M) A = S.mean(axis=1) # arithmetic average payoff = np.maximum(A - K, 0.0) disc_payoff = np.exp(-r * T) * payoff price = disc_payoff.mean() stderr = disc_payoff.std(ddof=1) / np.sqrt(N) return price, stderr def geometric_asian_call_closed_form(S0, K, r, sigma, T, M, q=0.0): 300/85">""300/85">"Kemna-Vorst (1990) closed form. Useful as a control variate."300/85">"" sigma_g = sigma * np.sqrt((2 * M + 1) / (6 * (M + 1))) mu_g = ( 0.5 * sigma_g ** 2 + ((r - q - 0.5 * sigma ** 2) * (M + 1)) / (2 * M) ) d1 = (np.log(S0 / K) + (mu_g + 0.5 * sigma_g ** 2) * T) / (sigma_g * np.sqrt(T)) d2 = d1 - sigma_g * np.sqrt(T) return np.exp(-r * T) * ( S0 * np.exp(mu_g * T) * norm.cdf(d1) - K * norm.cdf(d2) ) if __name__ == 300/85">"__main__": price, se = asian_arithmetic_mc( S0=100, K=100, r=0.05, sigma=0.20, T=1.0, M=50, N=100_000, seed=42, ) print(f300/85">"Asian arithmetic call = {price:.4f} +/- {1.96 * se:.4f}") Mickias Ambaye · 2026