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 2008 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

ctmp -- continuous time Markov process, giving results for a testcase in a 2012 paper by Anderson and Higham

spde -- SPDE arising from modelling of credit derivatives, giving results similar to those in a 2012 paper with Christoph Reisinger

antithetic -- Heston SDE example using the Milstein discretisation without the simulation of Levy areas, showing the benefits of the antithetic treatment analysed in a 2014 Annals of Applied Probability paper with Lukasz Szpruch

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

adapted -- non-standard SDE calculation with an adapted timestep, giving results for a testcase in a 2015 MCQMC14 paper

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

reflected1D -- 1D reflected diffusions of particles with and without mass, giving results for a presentation at SciCADE 2015

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

reflected -- 3D reflected diffusions using adaptive timesteps, giving similar results to a presentation at MCQMC16

- reflected.m -- application code with reflection, projection or penalisation at boundaries
- reflected.tex -- LaTeX file for output
- reflected.pdf -- PDF results

nested -- a very simple nested expectation testcase for estimating EVPPI from a 2019 paper with Takashi Goda

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

EVPPI -- a set of 3 medical decision making EVPPI test problems from the same 2019 paper with Takashi Goda

- test1.m, test2.m, test3.m -- application codes
- EVPPI.tex -- LaTeX file for output
- EVPPI.pdf -- PDF results

- a single-threaded executable using the standard C++11 random number generators
- a multi-threaded executable using OpenMP and Intel's MKL/VSL random number generators

Common routines used by all applications:

- mlmc.cpp -- main MLMC driver routine
- mlmc_test.cpp -- routine for MLMC tests
- mlmc_test_100.cpp -- routine performing 100 MLMC calcs
- mlmc_rng.cpp -- routines for random number generation using either the standard C++11 functions or Intel's MKL/VSL library
- mlmc_plot.m -- MATLAB routine for plotting results
- mlmc_plot_100.m -- MATLAB routine for plotting results

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

- mcqmc06.cpp -- application code
- Makefile -- uses g++ or Intel's icpc for compilation
- mcqmc06.m -- MATLAB code to plot results using mlmc_plot.m and mlmc_plot_100.m
- mcqmc06.tex -- LaTeX file for output
- mcqmc06.pdf -- PDF results

ctmp -- continuous time Markov process, giving results for a testcase in a 2012 paper by Anderson and Higham

- ctmp.cpp -- single-threaded application code
- poissinv.h -- Poisson inverse CDF function
- Makefile -- uses g++ for compilation
- ctmp.m -- MATLAB code to plot results using mlmc_plot.m
- ctmp.tex -- LaTeX file for output
- ctmp.pdf -- PDF results

adapted -- non-standard SDE calculation with an adapted timestep, giving results for a testcase in a 2015 MCQMC14 paper

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

reflected -- 3D reflected diffusions using adaptive timesteps, giving similar results to a presentation at MCQMC16

- reflected.cpp -- application code with reflection, projection or penalisation at boundaries
- Makefile -- uses either g++ or Intel's icpc for compilation
- reflected.m -- MATLAB code to plot results using mlmc_plot.m
- reflected.tex -- LaTeX file for output
- reflected.pdf -- PDF results

feynman-kac -- stopped diffusions, giving very similar results to a 2018 paper with Francisco Bernal

- fk1.cpp -- application code with/without path-splitting
- Makefile -- uses either g++ or Intel's icpc for compilation
- fk1.m, mlmc_read.m -- MATLAB codes to plot results
- fk1.tex -- LaTeX file for output
- fk1.pdf -- PDF results

nested -- a very simple nested expectation testcase for estimating EVPPI from a 2019 paper with Takashi Goda

- nested.cpp -- application code
- Makefile -- uses g++ or Intel's icpc for compilation
- nested.m -- MATLAB code to plot results using mlmc_plot.m
- nested.tex -- LaTeX file for output
- nested.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 ICONIC programme grant project funding
- Oxford-Man Institute of Quantitative Finance