# simByMilstein2

Simulate `CIR`

process sample paths by second order Milstein
approximation

*Since R2023a*

## Syntax

## Description

`[`

simulates `Paths`

,`Times`

,`Z`

] = simByMilstein2(`MDL`

,`NPeriods`

)`NTrials`

sample paths of `NVARS`

state
variables driven by the `CIR`

process sources of risk over
`NPeriods`

consecutive observation periods, approximating
continuous-time Cox-Ingersoll-Ross (CIR) by the second order Milstein
approximation.

`simByMilstein2`

provides a discrete-time approximation of the
underlying generalized continuous-time process. The simulation is derived directly
from the stochastic differential equation of motion; the discrete-time process
approaches the true continuous-time process only in the limit as
`DeltaTime`

approaches zero.

`simByMilstein2`

is only valid for diagonal diffusion SDE
models.

`[`

specifies options using one or more name-value pair arguments in addition to the
input arguments in the previous syntax.`Paths`

,`Times`

,`Z`

] = simByMilstein2(___,`Name=Value`

)

You can perform quasi-Monte Carlo simulations using the name-value arguments for
`MonteCarloMethod`

, `QuasiSequence`

, and
`BrownianMotionMethod`

. For more information, see Quasi-Monte Carlo Simulation.

## Examples

## Input Arguments

## Output Arguments

## More About

## Algorithms

This function simulates any vector-valued SDE of the form

$$d{X}_{t}=F(t,{X}_{t})dt+G(t,{X}_{t})d{W}_{t}$$

where:

*X*is an*NVars*-by-`1`

state vector of process variables (for example, short rates or equity prices) to simulate.*W*is an*NBrowns*-by-`1`

Brownian motion vector.*F*is an*NVars*-by-`1`

vector-valued drift-rate function.*G*is an*NVars*-by-*NBrowns*matrix-valued diffusion-rate function.

`simByEuler`

simulates `NTrials`

sample
paths of `NVars`

correlated state variables driven by
`NBrowns`

Brownian motion sources of risk over
`NPeriods`

consecutive observation periods, using the Euler
approach to approximate continuous-time stochastic processes.

Consider the process *X* satisfying a stochastic differential
equation of the form.

$$d{X}_{t}=\mu ({X}_{t})dt+\sigma ({X}_{t})d{W}_{t}$$

The attempt of including a term of *O*(*dt*) in the
drift refines the Euler scheme and results in the algorithm derived by Milstein [1].

$${X}_{t+1}={X}_{t}+\mu ({X}_{t})dt+\sigma ({X}_{t})d{W}_{t}+\frac{1}{2}\sigma ({X}_{t}){\sigma}^{/}({X}_{t})(d{W}_{t}^{2}-dt)$$

Further refining of the Euler scheme gives out a metho with a weak order 2:

$$\begin{array}{l}{X}_{t+1}={X}_{t}+\mu ({X}_{t})dt+\sigma ({X}_{t})d{W}_{t}+\frac{1}{2}\sigma ({X}_{t}){\sigma}^{/}({X}_{t})(d{W}_{t}^{2}-dt)+{\mu}^{/}({X}_{t})\sigma ({X}_{t})dI\\ +\frac{1}{2}\left(\frac{1}{2}{\sigma}^{2}({X}_{t}){\mu}^{//}({X}_{t})+\mu ({X}_{t}){\mu}^{/}({X}_{t})\right)d{t}^{2}+\left(\frac{1}{2}{\sigma}^{2}({X}_{t}){\sigma}^{//}({X}_{t})+\mu ({X}_{t}){\sigma}^{/}({X}_{t})\right)(d{W}_{t}dt-dI)\end{array}$$

where *dI* is given by the area of the triangle with base
*dt* and height *dW*.

## References

[1] Milstein, G.N. "A Method of
Second-Order Accuracy Integration of Stochastic Differential
Equations."*Theory of Probability and Its Applications*, 23,
1978, pp. 396–401.

## Version History

**Introduced in R2023a**