
Overview of the Monte Carlo logic used to estimate option prices.
Quantitative Finance · C++ · Pricing
Academic group project in financial engineering using C++. The goal was to build an option-pricing base that combines several complementary approaches: the CRR binomial model, the closed-form Black-Scholes formula for European options, and Monte Carlo simulation. My main focus was the Monte Carlo block: improving numerical precision, handling large simulation volumes under time constraints, and making the calculations more reliable through payoff controls, bounds, and confidence intervals.
What this project demonstrates
Ability to implement quantitative pricers in C++ with an object-oriented design, and to optimize a Monte Carlo engine for both robustness and performance.

My role
Group project. My main contribution was the development and improvement of the Monte Carlo pricer, including path generation, numerical stability, 95% confidence intervals, high-path-count handling under runtime constraints, and integration of the Mersenne Twister random generator.
Context
The project sits in a market-finance context focused on option pricing. Team work was organized around a shared foundation for options and pricers, then deeper ownership of specific modules.
Objective
Compare several valuation methods in a single codebase, validate their consistency on standard cases, and deliver a usable Monte Carlo implementation for a high number of simulations.
Deep dive
The project combines three pricing approaches, CRR, Black-Scholes, and Monte Carlo, inside an object-oriented C++ architecture. My main contribution focuses on the Monte Carlo engine and its robustness under load.
Gallery

Overview of the Monte Carlo logic used to estimate option prices.
Architecture
Abstract Option class and specialized European, American, and Asian option types, each with polymorphic payoff logic.
Separate pricers by method, such as CRRPricer, BlackScholesPricer, and BlackScholesMCPricer, to keep valuation assumptions clearly isolated.
Singleton MT generator based on Mersenne Twister, used as a shared source for uniform and Gaussian draws.
Main executable used to compare pricer outputs under common parameters such as spot, strike, volatility, maturity, and rate.
Pipeline
Technical choices
The Monte Carlo engine reuses path buffers to limit repeated allocations and remain efficient at high simulation counts.
Safeguards were added for non-finite and negative values, as well as variance stability, to avoid unstable outputs under heavy computation.
The pricer does not stop at a point estimate: it also returns a statistical range to judge simulation precision.
The CRR, Black-Scholes, and Monte Carlo split makes comparisons easier and lets each engine evolve independently.
Reliability
Limitations
Roadmap
Challenges
Design a reusable option and pricer architecture for different payoff families such as vanilla, digital, Asian, and American options.
Run a large number of Monte Carlo simulations while keeping the code readable and latency acceptable.
Limit numerical drift such as non-finite values, negative variances caused by rounding, and confidence-interval edge cases.
Preserve financial consistency between the different pricing approaches: CRR, Black-Scholes, and Monte Carlo.
Outcomes and learnings
C++ pricing framework covering European, American, and Asian options.
Monte Carlo pricer with statistical accumulation logic for mean, variance, and 95% confidence intervals.
Targeted performance improvements for Monte Carlo, including memory reuse and high-path execution under time constraints.
Mersenne Twister singleton integrated to standardize random-number generation across the project.
Other projects

Personal Finance · Python · PyQt6
PyQt6 + SQLite desktop application to centralize multi-asset accounts, rebuild weekly history, and analyze portfolio performance.
View this project
Quantitative Finance · Analysis · Python
Python environment to backtest strategies, compare risk and return metrics, and analyze portfolio behavior.
View this projectDiscuss
If this project is relevant for you, I can detail the initial need, data structure, assumptions, challenges encountered, and analysis limitations.