A package for financial modeling, and simulation of stochastic processes such as encountered in finance, e.g. Geometric Brownian Motions (Black-Scholes asset modeling) and Jump Diffusion Processes (Merton asset modeling).
This R-cpp package mostly allows to reproduce the graphics of the blogpost Financial Modeling: A Clean, Short and Simple Statistical Point of View. This blogpost explains how to derive the main results of financial modeling such as option pricing under the Black-Scholes model (European and American exercise styles), hedging, portfolio optimization, jump diffusion asset pricing models, exotic options pricing using simulation ...
To install the R dependencies, run (if needed) from the R command line:
install.packages(c("Rcpp", "RcppArmadillo", "cpp11"))
You need cuda installed (and a GPU of course). Check the CUDA_PATH on your computer in the makefile "./src/Makevars", as well as the R_HOME (this one is left unspecified).
Once you have correct paths specified, install the package from the console:
cd PACKAGE_SOURCE_FOLDER
R CMD INSTALL -l /INSTALL_PATH ./ --preclean
Demos scripts are in the folder ./demos. There are 9 demo scripts which allow to reproduce the graphics of the blog post. Plus two additional demos showing how to use cuda kernels to perform simulation of asset evolution under Black-Scholes and Merton models.
I refer you to the blog for the figures.
- ./demos/gen_fig1.R: Simulations of Brownian Motion over a definite time horizon.
- ./demos/gen_fig2.R: Black-Scholes surface obtained by making vary both the exercise price and the spot price.
- ./demos/gen_fig3.R: Determining numerically the optimal exercise price for American options.
- ./demos/gen_fig4.R: Realization of a jump diffusion process over a definite time horizon.
- ./demos/gen_fig5.R: Log-normal law from trajectory simulations.
- ./demos/gen_fig6.R: Sampling several Geometric Brownian Motion (GBM) trajectories starting from the same spot price.
- ./demos/gen_fig7.R: Estimating the value of a Barrier option under a jumping asset price model using simulation.
-
./demos/sim_cuda_BS.R: Comparison between the European call option value as computed using the BS analytic formula, and the estimated value obtained by GPU simulations.
-
./demos/sim_cuda_JDP.R: GPU sampling of trajectories of a Jump diffusion process (Merton models), and plotting the distribution of realizations at exercise time.