Wiener Simulation

C++ Monte Carlo Methods Geometric Brownian Motion Black-Scholes Stochastic Calculus Multithreading CMake
View on GitHub
As GBM has a closed-form solution, the pricer samples terminal prices exactly — one normal draw per path, no discretization error — rather than approximating with Euler-Maruyama steps. The Euler-Maruyama implementation is kept in the codebase as the original implementation and as a reference, since models like jump-diffusion don't have clean closed-form solutions and would need it.

Antithetic variates are used throughout: for every random draw Z, a paired path using −Z is also simulated and the two payoffs averaged before discounting. This significantly reduces variance compared to independent sampling — similar accuracy for half the number of random processes.