Fundamental of Derivative Security Pricing

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 )

 

 

 

 

 

 

 

Order a unique copy of this paper
(550 words)

Approximate price: $22

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)

Our guarantees


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

Money-back guarantee

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 more

Zero-plagiarism guarantee

At 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

Free-revision policy

. 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 more

Privacy policy

Popularessawriters.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 more

Fair-cooperation guarantee

Rest 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

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency