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.
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×.
Four ideas, each built on the one before. Nothing here needs more than IB Maths AA HL.
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.
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.
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.
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.
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.