Quant Memo
Advanced

Longstaff-Schwartz American Monte Carlo

Monte Carlo runs forward in time, but an early-exercise decision needs to know the value of waiting, which lives in the future. Longstaff-Schwartz breaks the deadlock by regressing what actually happened on simulated paths to estimate that value of waiting.

Prerequisites: Monte Carlo Option Pricing, American Options and Early Exercise, Ordinary Least Squares (OLS)

An American option can be exercised any time up to expiry, so pricing one is not really a valuation problem, it is a decision problem: on every possible day, is cashing in now better than holding on? A tree answers that beautifully because it rolls backwards, already knowing what every future node is worth before it asks. Monte Carlo has the opposite habit: it walks forwards, one random day at a time, and on arriving at a decision date it has no idea what the rest of that path will bring. For years this was taken to mean simulation could not price early exercise — painful, because simulation is the only tool that copes with many risk factors at once.

Think of driving across a country with the tank running low. Every exit shows a fuel price on a board. Fill up here, or gamble that the next one is cheaper? You cannot see down the road. But if you have driven this route a thousand times you can build a rule of thumb from memory: "at this stage of the trip, when the board says 1.60, the best price still ahead is typically about 1.55." Then deciding is easy — compare the board in front of you against that remembered typical outcome.

Longstaff-Schwartz builds exactly that rule of thumb, by regression across simulated journeys: simulate thousands of paths, look at what each actually went on to pay, and fit a curve relating "where I am now" to "what waiting was typically worth".

The regression is not used to price the option. It is used only to decide, at each date, whether to stop. Once the stopping rule is fixed, the price is the plain average of the real cashflows those paths produced.

Setting it up

At an exercise date tt with the underlying at price SS, the option is worth whichever is larger:

Vt(S)=max(g(S),  Ct(S)).V_t(S) = \max\bigl(\,g(S),\; C_t(S)\,\bigr).

Here g(S)g(S) is the immediate exercise payoff — for a put with strike KK that is max(KS,0)\max(K - S, 0) — and Ct(S)C_t(S) is the continuation value, the worth of holding on. In plain English: at every decision date, take the better of cashing in now and carrying on.

The continuation value is the hard part, because it is a conditional expectation:

Ct(S)=E[discounted future cashflow    St=S].C_t(S) = \mathbb{E}\bigl[\,\text{discounted future cashflow} \;\big|\; S_t = S \,\bigr].

In plain English: out of all the futures passing through this price at this date, what does waiting pay on average? A tree reads that off its own future nodes. Monte Carlo cannot — but it can see, after the fact, what each path went on to pay. The move is to treat those realised payoffs as noisy observations of the continuation value and fit a curve through them:

Ct(S)    a0+a1ψ1(S)++aKψK(S).C_t(S) \;\approx\; a_0 + a_1\psi_1(S) + \dots + a_K\psi_K(S).

The ψk\psi_k ("psi") are basis functions — simple shapes of the current price, usually just 11, SS and S2S^2 — and the aka_k are coefficients found by ordinary least squares across paths. In plain English: draw the best-fitting simple curve through the cloud of "price now versus what waiting actually paid", and read the decision off it. Only currently in-the-money paths enter the regression; a path with nothing to exercise has no decision to make and would only add noise.

the decision at one exercise date exercise continue S* = 44.5 exercise value fitted C(S) price now
Each dot is one path: where it stood at this date, and what waiting actually paid it. The green line is the fitted continuation value; the red line is the exercise payoff. Where they cross is the early-exercise boundary — the regression's real output.

Worked example 1 — fitting the rule by hand

An American put with strike $50 reaches a middle exercise date. Five paths are in the money. Column SS is where each stood; column YY is the discounted cashflow that path actually went on to collect.

SS4143454749
YY7.76.25.24.22.7

Fit a straight line by hand. The means are Sˉ=45\bar{S} = 45 and Yˉ=5.2\bar{Y} = 5.2, so the deviations are 4,2,0,+2,+4-4, -2, 0, +2, +4 and +2.5,+1.0,0,1.0,2.5+2.5, +1.0, 0, -1.0, -2.5. Then

  • Sxy=(4)(2.5)+(2)(1.0)+0+(2)(1.0)+(4)(2.5)=24S_{xy} = (-4)(2.5) + (-2)(1.0) + 0 + (2)(-1.0) + (4)(-2.5) = -24,
  • Sxx=16+4+0+4+16=40S_{xx} = 16 + 4 + 0 + 4 + 16 = 40,
  • slope =24/40=0.6= -24/40 = -0.6, intercept =5.2(0.6)(45)=32.2= 5.2 - (-0.6)(45) = 32.2.

So the estimated continuation value is C^(S)=32.20.6S\hat{C}(S) = 32.2 - 0.6\,S. Compare it against exercising, worth 50S50 - S:

SS4143454749
exercise now9.007.005.003.001.00
C^(S)\hat{C}(S)7.606.405.204.002.80
decisionexerciseexerciseholdholdhold

Setting 32.20.6S=50S32.2 - 0.6S = 50 - S gives S=44.5S^{\star} = 44.5. Below $44.50 you exercise, above it you wait — and nobody told the algorithm that boundary, it fell out of five data points and one straight line.

The full backward sweep

The real algorithm repeats that step, latest date first:

  1. Simulate all paths forward once and store them.
  2. At expiry, record each path's payoff.
  3. Step back one exercise date. Take the in-the-money paths, regress their discounted realised future cashflow on 1,S,S21, S, S^2, and read off C^\hat{C}.
  4. If exercising beats C^\hat{C} on a path, overwrite that path's cashflow with the exercise value and erase everything later on it — you can only exercise once.
  5. Repeat back to the first exercise date, then discount every surviving cashflow to today and average.

Simulate forward once, decide backward once. Run the explorer below and picture step 3 at each vertical slice: the algorithm only ever asks "given where these paths stand now, what did waiting typically pay?"

Path explorer
13055time →
end (bold path) 100.38spread of ends 58.966 independent paths, same settings

Worked example 2 — the classic eight-path put

This is Longstaff and Schwartz's own illustration: an American put, strike K=1.10K = 1.10, spot 1.00, three annual exercise dates, interest rate 6 percent, so one period of discounting is e0.06=0.94176e^{-0.06} = 0.94176.

patht=1t{=}1t=2t{=}2t=3t{=}3payoff at 3
11.091.081.340.00
21.161.261.540.00
31.221.071.030.07
40.930.970.920.18
51.111.561.520.00
60.760.770.900.20
70.920.841.010.09
80.881.221.340.00

At t=2t = 2. Five paths are in the money (1, 3, 4, 6, 7). Their YY values are the t=3t=3 payoffs pulled back one period: path 4 gives 0.18×0.94176=0.16950.18 \times 0.94176 = 0.1695, path 6 gives 0.20×0.94176=0.18840.20 \times 0.94176 = 0.1884, and so on. Regressing those on 1,S,S21, S, S^2 gives C^(S)=1.070+2.983S1.814S2\hat{C}(S) = -1.070 + 2.983S - 1.814S^2. For path 6, sitting at S=0.77S = 0.77:

C^=1.070+2.983(0.77)1.814(0.5929)=0.152.\hat{C} = -1.070 + 2.983(0.77) - 1.814(0.5929) = 0.152 .

Exercising path 6 now pays 1.100.77=0.331.10 - 0.77 = 0.33, comfortably more than 0.152, so it exercises. Doing the same for all five: paths 4, 6 and 7 exercise; paths 1 and 3 hold.

At t=1t = 1. Now paths 1, 4, 6, 7, 8 are in the money, and their YY values reflect the decisions just made (path 6 now carries 0.33×0.94176=0.31080.33 \times 0.94176 = 0.3108). The fit is C^(S)=2.0383.335S+1.356S2\hat{C}(S) = 2.038 - 3.335S + 1.356S^2. For path 8 at S=0.88S = 0.88 that gives 0.153, against an exercise value of 1.100.88=0.221.10 - 0.88 = 0.22, so path 8 exercises too. Paths 4, 6, 7 and 8 all exercise at t=1t=1; path 1 holds and ends worthless.

where each path stops t=0 t=1 t=2 t=3 1 0 2 0 3 0.07 4 0.17 5 0 6 0.34 7 0.18 8 0.22 dashed = path already exercised, cashflow erased
The output of the backward sweep is one cashflow per path and the date it arrives. Four paths stop early at t=1, one runs to expiry, and three finish worthless. Discount that column and average it.

Discounting the surviving cashflows to today: 0.07×0.83527=0.05850.07 \times 0.83527 = 0.0585 for path 3, and 0.941760.94176 applied to the four t=1t=1 payments gives 0.16010.1601, 0.32020.3202, 0.16950.1695 and 0.20720.2072. The eight paths sum to 0.91550.9155, so the American put is worth 0.9155/8=0.11440.9155/8 = 0.1144. The same paths held to expiry give a European value of 0.54×0.83527/8=0.05640.54 \times 0.83527 / 8 = 0.0564. The gap, 0.058, is the early-exercise premium — and it is larger than the European option itself, which is precisely why you cannot ignore it.

What this means in practice

Nearly everything genuinely callable is priced this way: Bermudan swaptions, callable and convertible bonds, mortgage prepayment models, employee options with vesting, commodity storage and swing contracts, real options in project finance. Each is an optimal stopping decision sitting on top of several correlated risk drivers — too many for a lattice, natural for simulation. The regression state need not be the spot price either; for a swaption it might be two swap rates, for a mortgage a rate level plus a burnout variable.

Two habits matter. Keep the basis small — three or four functions is usually enough, since you only need the crossing point right, not the whole curve. And watch the error bar: early exercise concentrates the cashflows, which makes variance reduction more valuable here, not less.

The most common mistake is to price the option with the fitted values. The regression is a decision device only; using C^\hat{C} as a value double-counts the fitting noise and biases the answer upward. Always price from the realised cashflows the stopping rule produces, exactly as in the eight-path walkthrough above.

Because the fitted rule is never the perfect exercise policy, Longstaff-Schwartz undervalues slightly — it delivers a lower bound. Reusing the same paths to fit the rule and price it leaks a little foresight the other way, so production code fits coefficients on one set of paths and prices on a fresh, independent set.

Related concepts

Practice in interviews

Further reading

  • Longstaff and Schwartz (2001), Valuing American Options by Simulation
  • Glasserman, Monte Carlo Methods in Financial Engineering (Ch. 8)
  • Clément, Lamberton and Protter (2002), An Analysis of a Least Squares Regression Method
ShareTwitterLinkedIn