This software differs from my previous MLMC software in separating the computations from the plotting of the results. Each application code has two parts, a high-level part which calls "mlmc_test" to perform the MLMC tests, using the routine "mlmc", and a low-level part which is called by both "mlmc_test" and "mlmc" to compute the MLMC differences for one particular level of correction.

The application codes produce one or more output text files. The MATLAB routine "mlmc_plot" can then be used to generate the standard set of figures which I use in most of my papers.

- mlmc.m -- main MLMC driver routine
- mlmc_test.m -- routine for MLMC tests
- mlmc_plot.m -- routine for plotting results
- mlmc_test_100.m -- routine performing 100 MLMC calcs
- mlmc_plot_100.m -- routine for plotting results

opre -- financial options based on scalar geometric Brownian motion and Heston models, similar to my original 2008 Operations Research paper, using an Euler-Maruyama discretisation

mcqmc06 -- financial options based on scalar geometric Brownian motion, similar to my MCQMC06 paper, using a Milstein discretisation

- mcqmc06.m -- application code
- mcqmc06_spmd.m -- second version using spmd parallelism
- mcqmc06.tex -- LaTeX file for output
- mcqmc06.pdf -- PDF results

basket -- basket options based on 5 underlying assets, similar to my 2009 Winter Simulation Conference paper, using a Milstein discretisation

- basket.m -- application code
- basket.tex -- LaTeX file for output
- basket.pdf -- PDF results

reflected -- 1D reflected diffusions, giving results for a conference presentation at SciCADE 2015

- reflected.m -- application code
- reflected.tex -- LaTeX file for output
- reflected.pdf -- PDF results

- mlmc.cpp -- main MLMC driver routine
- mlmc_test.cpp -- routine for MLMC tests
- mlmc_plot.m -- MATLAB routine for plotting results
- mlmc_test_100.cpp -- routine performing 100 MLMC calcs
- mlmc_plot_100.m -- MATLAB routine for plotting results

mcqmc06 -- financial options based on scalar geometric Brownian motion, similar to MCQMC06 paper, using a Milstein discretisation and the default C++11 random number generator

- mcqmc06.cpp -- application code
- Makefile -- uses g++ for compilation
- mcqmc06.m -- MATLAB code to plot results using mlmc_plot.m
- mcqmc06.tex -- LaTeX file for output
- mcqmc06.pdf -- PDF results

mcqmc06_omp -- OpenMP version of mcqmc06 application using Intel's MKL random number generators

- mcqmc06_omp.cpp -- application code
- Makefile -- uses Intel's icpc for compilation
- mcqmc06_omp.m -- MATLAB code to plot results using mlmc_plot.m
- mcqmc06_omp.tex -- LaTeX file for output
- mcqmc06_omp.pdf -- PDF results

The software is based on the research reported in the papers listed here. If you find it helpful in your research, the papers there can be cited in any publications. I would also be interested to hear about it, particularly if it is used for novel applications.

The underlying research has been supported by

- EPSRC, through a Springboard Fellowship and project funding
- Oxford-Man Institute of Quantitative Finance