EMCE - Exotic Monte Carlo Engine
Monte Carlo pricers for exotic derivatives in both Python / C++. The reason to code it up in two languages:
- Both are languages commonly used in quantitative finance - implementing a solution in both languages provides a holistic way to learn the intracicies of both languages from bottom-up through comparison.
- The languages themselves boast different benefits - Python allows for a quicker development cycle where C++ provides the raw speed where there is demand for performance.
Contributions are more than welcome!
C++
- The library can be found here.
- Example tests can be found here
- Project to-dos are here.
Features
- Interface fully interporable between CUDA/C++, switching via enum.
Requirements
- CUDA toolkit (tested on 11.7.0) with nvcc compiler.
- CMake (version >= 3.18, as we need CUDA with C++17 standard).
- C++17 compliant compiler.
Install
Build:
cmake -S ./cpp/emce -B build
cmake --build
Run tests:
ctest --test-dir ./build
Python
Exotic Monte Carlo Pricer: An equity/FX exotic Monte Carlo pricer.
- To do: see this link for a list of issues and project info.
- Examples: see unit tests here.
Features (goals)
- advanced smile modelling (LV, SV, LSV)
- coherent multi-asset simulation (hybrid exotic engine)
- support wide range of path-dependent exotics
- advanced variance reduction techniques (control variant, Quasi random numbers)
- risk engine (FDM, AAD)
Python notebooks (analytics):
- Vanilla put/call pricing with flat vol
- Path dependent option pricing with flat vol (tbd)
- Barrier option risk profiles with flat vol (tbd)
- Simle dynamics under BS model with local vol (tbd)
- Smile dynamics under BS model with SV - Heston model (tbd)
- Convergence speed under different RNGs (tbd)
- Rainbow option pricing (tbd)