Mathematica doesn't have built-in functions to compute things around Ito integrals.
I know two authors who have done packages around this, I've never used them though.
From Mark Fisher (see the stochastic calculus paragraph for ItosLemma and EulerSimulate packages)
http://www.markfisher.net/~mefisher/mma/mathematica.html
From Wilfrid Kendall
http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic-research/kendall/personal/ca/
Here's an example of how you could generate paths of a Black-Scholes process. You can generalize this example to more complex cases (if you look for optimizations you'll find that inverting the FoldList and Map leads to a better speed but the code is less readable.)
SimpleBSPaths[S0_,r_,sigma_,nPaths_,dt_,nTimeSteps_,seed_:1] :=
Module[ {randomNumbers},
SeedRandom[seed];
randomNumbers = RandomReal[NormalDistribution[],{nPaths,nTimeSteps-1}];
Map[ (*equivalent to a loop for each path*)
FoldList[ (*equivalent to a loop for each timestep*)
(#1 Exp[(r-1./2 sigma^2) dt + sigma Sqrt[dt] #2])& (*#1= St-1, #2=n01 for this path and timestep*)
,
S0
,
# (*all random numbers for this path, has dimension {nTimeSteps-1}*)
]& (*produced path of dimension {nTimeSteps}*)
,
randomNumbers (*all random numbers for all paths, has dimension {nPaths,nTimeSteps-1}*)
] (*produced paths of dimension {nPaths,nTimeSteps}*)
];
Example
S0=100;
r=0.03;
sigma=0.2;
nPaths=5;
dt=1;
nTimeSteps=20;
SimpleBSPaths[S0,r,sigma,nPaths,dt,nTimeSteps]//ListLinePlot
Similarly for correlated Black-Scholes paths
SimpleMultiBSPaths[S0_,r_,sigma_,correlMatrix_,nPaths_,dt_,nTimeSteps_,seed_:1] :=
Module[ {randomNumbers,sigmaDiag,covar,A, numberOfUnderlyings},
SeedRandom@seed;
sigmaDiag = DiagonalMatrix@sigma;
covar = sigmaDiag.correlMatrix.sigmaDiag;
A = Transpose@CholeskyDecomposition@covar;
numberOfUnderlyings=Length@S0;
randomNumbers = RandomReal[NormalDistribution[],{nPaths,nTimeSteps-1,numberOfUnderlyings}];
Map[ (*equivalent to a loop for each path*)
FoldList[ (*equivalent to a loop for each timestep*)
(#1 Exp[(r-1./2 sigma^2) dt + Sqrt[dt] A.#2])& (*#1= St-1, #2=n01s for this path and timestep*)
,
S0
,
# (*all random numbers for this path, has dimension {nTimeSteps-1,numberOfUnderlyings}*)
]& (*produced path of dimension {nTimeSteps,numberOfUnderlyings}*)
,
randomNumbers (*all random numbers for all paths, has dimension {nPaths,nTimeSteps-1,numberOfUnderlyings}*)
] (*produced paths of dimension {nPaths,nTimeSteps,numberOfUnderlyings}*)
];
Example:
S0 = {100, 105};
r = 0.03;
sigma = {0.2, 0.3};
correlMatrix = {{1., 0.8}, {0.8, 1.}};
nPaths = 5;
dt = 1/12.;
nTimeSteps = 24;
paths = SimpleMultiBSPaths[S0, r, sigma, correlMatrix, nPaths, dt, nTimeSteps];
(*Displays two correlated underlyings on one path*)
paths[[1]] // Transpose // ListLinePlot