Simulating systems of SDEs

Setup

Assume that a general two dimensional system of SDE is given by

σσμ

σσμ

++=

++=

)(),,()(),,(),,(

)(),,()(),,(),,(

tdztYXtdztYXdttYXdY

tdztYXtdztYXdttYXdX

2121111

ttttttt

2221212

ttttttt

With starting values

)0(

)0(

=

=

YY

XX

where

X

0

0

0

and Y

could possibly be stochastic variables, we will here assume that they

are real numbers.

The Wiener processes z

0

1

and z

are possibly correlated according to

dtdzdzE ρ=][

21

2

where we here assume that ρ is a real constant (which cannot have absolute value

greater than 1, by definition of correlation).

The Euler-Maryama Method

The Euler-Maryama Method is a basic method of simulating SDEs. The idea is

simple. It is in essence the same as the Euler method for ODEs, that is the simulation

starts at the starting points and walks stepwise to the endpoint. The important

difference here is how the noise term dz is interpreted in this situation.

Say that you want to simulate your system of SDEs on an interval [0,T]. First the

interval is discretized into N (positive integer) number of time steps, ie Δt = T/N. We

will only consider equally spaced time steps. The interpretation of the noise term dz is

due to Ito stochastic integral in which the forward increment of the standard Wiener

process is considered. Regarding our simulation the noise increment is simulated by

Δ=Δ

)1,0()( NisZwheretZtz

ji

(For more information about Ito integral go to any book treating stochastic calculus.)

The system is therefore discretisized according to

Δ+Δ+Δ=Δ

Δ+Δ+Δ=Δ

σσμ

σσμ

)(),,()(),,(),,(

)(),,()(),,(),,(

tztYXtztYXttYXY

tztYXtztYXttYXX

2121111

ttttttt

2221212

ttttttt

We will here denote the simulated values of X(t

j

) and Y(t

j

) as x

j

and y

. The iteration

scheme will look like

YYXXtSet

ttt

loopNjfor

jj

1

)1,0()(

tztyxtztyxttyxxx

NisZwheretZtz

ji

−=

===

jjjjjjjjjjjjj

tztyxtztyxttyxyy

jjjjjjjjjjjjj

loopend

1…0

)0(,)0(,0

000

Δ=Δ

Δ+=

+

+

Δ+Δ+Δ+=

Δ+Δ+Δ+=

)(),,()(),,(),,(

)(),,()(),,(),,(

21211111

+

σσμ

σσμ

22212121

Here it is important to recall that when generating random numbers should be

adjusted to incorporate possible correlation. Normally a computer generates

independent variables and in that case an easy way of transforming independent

random variables Δw

1

and Δw

2

into correlated Δz

is

Δ−+Δ=Δ

Δ=Δ

1 wwz

wz

11

ρρ

12

2

2

1

and Δz

2

One simulation only give you one possible path on [0,T] and so doesn’t yield much

information. To be able to extract some useful information about the statistical

properties of the model a large number of simulations are made, we will denote the

number of simulations by M,

j

Example with Matlab code: A stochastic volatility model

Setup of the model

As an example of a two dimensional system of SDE consider the stochastic volatility

model given by

+−=

⋅+−=

)0(

)0(

υκ

dzrdtrrdr

υυ

)2()(

)1()(

υσυυκυ

rr

dzdtd

=

=

rr

υυυ

0

0

In this model r is the short rate and

υ

is the instantaneous variance of the short rate

process,

υ will then of course be the instantaneous correlation. Equation (1) can

therefore be viewed as

υσσκ =+−=

dzrdtrrdr ,)(

rrrr

Where

υσ =

and υ is stochastic according to SDE (2).

r

A little bit about Matlab

Matlab is an interactive environment for numerical computing. The programming in

Matlab is done is what is referred to as m-files, which is textfiles with the extension

.m. There are two types of M-files, script-files and functions. The most important

difference is how they treat variables. Script-files use global variables defined in the

workspace. A function-file has local variables and therefore input and output

parameters need to be specified. There is no need to compile m-files since Matlab

interpret the code (m-files can compiled by using a separate toolbox). Running scriptfiles

are the

same

as writing

the

commands

directly

in

the

command

window.

Executing

a script-file

is done

by

having

the

current

directory

containing

the

file

and

typing

the name

of the

file

(without

the

extension

.m)

in

the

command

window.

The

example

program

containing

the

volatility

model

is a

script-file.

The

file the

stochastic

volatility

model

is

called ‘Simulating_SV_model’.

This file

contains

the

programme

and

sufficient comments

so that

the

code

should be

reasonably

easy

to

understand

for

someone

used

to reading

code

in any

common

language.

A

few

comments

regarding

the

syntax

might

be useful

though

randn(‘state’,101)

Sets the state for the random number generator. This means

that the same random numbers will be generated every time

the simulation is repeated for the same state.

randn(N,M)

Generates a NxM random matrix with independent N(0,1)

variables.

A(X,:)

Given a matrix A the command A(N,:) = X will give the

value X to all elements on row N.

zeros(N,M)

Creates a NxM matrix with all elements equal zero. In

Matlab it is important to preallocate arrays for efficiency.

for m = 1:M

For loop, i.e. makes a loop repeated M times with the value

m will have the value of the current loop. Suitable in

situations where a vector or matrix is indexed within the

loop, see code for example of this.

A note on computational efficiency in Matlab. For loops is not the most

computationally efficient way of doing simulations in MATLAB. It’s actually quite

slow, vectorized code is usually much faster in MATLAB. But the code is often easier

to read with loops rather than vectorized code and that is the reason it has been kept

that way in the example here. Especially those who are used to read code from some

other common language such as C/C++, FORTRAN etc would normally find loops

easier to read. Often it is possible to vectorize code in situations like this simulation.

Matlab code for the stochastic volatility model

% ——————————–

% – Simulating_SV_model –

% ———————————

%

% This program shows the simulated distribution of the stochastic

% volatility model given by:

%

% dr = K(r_bar – r(t))dt + sqrt(v(t)*r(t))*dz1

% r(0) = r0

%

% dv = K_sig(v_bar – v(t))dt + sig_v*sqrt(v(t))*dz2

% v(0) = v0

%

% E[dz1*dz2] = rho*dt

%

% This program is now setup for graphing process r(t) and

% volatility process v(t) respectively and their simulated distributions.

% USER DEFINED: General simulation parameters

T = 1; % End time

N = 200; % Number of time steps

M = 10000; % Number of simulations

randn(‘state’,101) % Setting the seed for the random number generator

% USER DEFINED: Model parameters for short rate processes r(t)

r0 = 0.03; % Starting value

K = 0.6;

r_bar = 0.07; % Long run level

% USER DEFINED: Parameter for volatility process v(t) and correlation coeff

v0 = 0.01; % Starting value

K_sig = 2;

v_bar = 0.01; % Long run level

sig_v = 0.03; % Standard deviation

rho = 0.5; % Instantaneous correlation

% Setting parameters, generate random numbers

dt = T/N;

sqrtdt = sqrt(dt);

dw_setup = randn(N,2*M); % Generates normally distributed RVs

% Transforming independent random varibales to correlated

dz_1 = dw_setup(:,1:M);

dz_2 = rho*dw_setup(:,1:M) + sqrt(1-rho^2)*dw_setup(:,M+1:2*M);

% Simulating the volatility SDE volatility and short rate

% Allocating memory space for SDE v(t) and r(t) paths

% Each column represents one simulated path

sde_v = zeros(N+1,M);

sde_r = zeros(N+1,M);

% Setting initial value for each simulation in first row

sde_v(1,:) = v0;

sde_r(1,:) = r0;

%Generates the M paths for volatility and short rate v(t) and r(t)

for m = 1:M

for n = 1:N

v = sde_v(n,m); % Set new variable for readability in loop

r = sde_r(n,m); % Set new variable for readability in loop`

sde_v(n+1,m) = v + K_sig*(v_bar-v)*dt+sig_v*sqrt(v)*dz_2(n,m)*sqrtdt;

sde_r(n+1,m) = r + K*(r_bar-r)*dt+sqrt(v*r)*dz_1(n,m)*sqrtdt;

end;

end;

Example output from the simulated stochastic volatility model

r(t)

0.2

Sample paths of r(t)

0.15

0.1

0.05

0 0.5 1

0

t

v(t)

Freq

150

Sample distribution of r(t)

100

50

0

0 0.05 0.1 0.15 0.2

r(t)

Freq

0.02

Sample paths of v(t)

0.015

0.01

0.005

0 0.5 1

0

100

50

0

t

150

Sample distribution of v(t)

0.005 0.01 0.015 0.02

v(t )

Basic features

- Free title page and bibliography
- Unlimited revisions
- Plagiarism-free guarantee
- Money-back guarantee
- 24/7 support

On-demand options

- Writer’s samples
- Part-by-part delivery
- Overnight delivery
- Copies of used sources
- Expert Proofreading

Paper format

- 275 words per page
- 12 pt Arial/Times New Roman
- Double line spacing
- Any citation style (APA, MLA, Chicago/Turabian, Harvard)

We value our customers, and so ensure that our papers are 100 percent original. Our Team of professionals does not miss the mark; they ensure that step by step each paper is written uniquely. We never duplicate or work as we compare papers rest assured. We deliver our work a day before time to ensure that you don’t miss your deadlines. It is not only doing the work but delivering it at the right time. We capture the consequences of late remittances. .

We value customer satisfaction here at popularessaywriters.com and make sure that you get the best value for your Money. It happens that sometimes you can pay twice for your order or may want to cancel it, or you feel that it doesn’t meet your requirements; our money back guarantee will give you the opportunity to get back your money. We will also refund 100% of money paid double. In case your paper does not satisfy your requirements , we request that you notify us via writing within 2 days otherwise on the third day we will assume that you have been satisfied. Do all your correspondences through our email address popularessaywriters@gmail.com.

Read moreAt popularessaywriters.com, our professional writers know the consequence plagiarism does for our clients. We have updated software’s such as article checker and copyscape to check for originality of the custom papers before submission of the final paper to the you. Our guarantee to the customer is that we will write 100% original papers for them that are quality, timely and of low cost. We have experienced professional and competent PhD writers who will write quality custom papers for you..

Read more. At popularessaywriters.com, we are proud to provide top-quality Essay writing service to our esteemed customers. We are ready to take up that challenging academic assignment that is giving you sleepless nights and simplify it for you according to your desired requirements. We are willing to revise your paper if it does not meet your requirements. At popularessaywriters.com, we do not compromise with quality; thus, we offer unlimited free revisions until the customer is satisfied with their custom paper. Our unlimited free revision services are provided under the following terms:.. .

Read morePopularessawriters.com knows that client’s information is an essential tool for our company. It means that whatever the client requests from our service is kept strictly confidential. It means that whoever writes for this company understands the terms and conditions hence you should not be worried because you will never see your work somewhere else...

Read moreRest assured that we will always be attentive to your needs and requirements. We belief in the phrase treat your neighbour as you would want them to treat you. We leave nothing to chance and always look forward to a good interaction with each other.. .

Read more
The price is based on these factors:

Academic level

Number of pages

Urgency