European call · S₀ = 100 · r = 5%

√T

Two ways to price an option. One is a formula from 1973. The other throws 100,000 random futures at the problem and averages. Drag the volatility slider and watch them agree.

Surface
Simulations
Volatility σ 20%
computing…
MC price · K=100, T=1
—
± standard error
Black–Scholes
—
exact formula
Gap
—
in standard errors
Worst gap on grid
—
max |MC − BS|, 800 points

Try this: switch to MC − BS, then flip between 10k and 1M simulations. The z-axis stays fixed, so the noise visibly shrinks — by about √100 = 10×.

How it works

Four ideas, each built on the one before. Nothing here needs more than IB Maths AA HL.

1

Randomness grows like √T, not T

Take a random walk of N steps of ±1. Each step has variance 1, and variances of independent steps add, so after N steps the spread is:

This is why the site is called √T. Every bit of uncertainty below scales with the square root of time — the same law as diffusing particles in physics.

2

Stocks move in percentages: geometric Brownian motion

Prices compound, so the randomness goes in the exponent. Summing many small returns gives a normal distribution (central limit theorem), so the whole year collapses into one draw Z:

The −σ²/2 corrects for volatility drag (+10% then −10% leaves you at 0.99), so the expected price grows at exactly erT.

3

Price = discounted average payoff

A call pays max(ST − K, 0). Simulate n futures, pay out in each, average, discount back to today. The law of large numbers does the rest:

The √ law again, now working for you: 100× more simulations buys 10× more accuracy. That's the noise you see shrink in the MC − BS view.

4

Check against the exact answer

For this option there is a closed form, the Black–Scholes formula. If the simulation is right, the gap between the two is pure noise — a flat, fuzzy sheet near zero with no tilt or bump.

Why price rises with σ everywhere: wilder outcomes help on the upside, and the downside is capped at zero. The bulge is biggest near K = 100, where the outcome is most uncertain.

+

Two engineering tricks

Common random numbers. The same Z draws are reused for every σ and every T, so moving the slider changes only σ — the surface morphs smoothly instead of shimmering.

Sort once. ST rises with Z, so sorting Z once sorts every future. With running sums, each of the 800 grid points costs a binary search instead of a pass over all simulations — which is how a million paths per frame fits in your browser.