Hello, since this end of Dec is cooler, I have some time to learn a few things... I d like to price a best of between 2 indices. Mat 1 year, European Call.
so I guess the idea is to make a MC simulation, but where does the correlation gets into the scene ?
Pricing a best of
- Johnny
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
A common way of generating correlated share price paths is to use Cholesky. Any good text book will tell you everything you need. Or a Google search. Or that other place.
Stab Art Radiation Capital Structure Demolition LLC
- Veegan
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
If you are simulating each index as a single variable then the procedure is the following:
1) Draw two independent N(0,1) variables: X1 and X2.
2) Construct two new correlated random variables Y1 and Y2 as:
Y1 = p*X1 Y2 = p*X1 + X2*(1-p^2)^0.5
Where p is the correlation.
3) Use Y1 and Y2 in your MC simulation for each index.
This gives Y1 and Y2 correlation p, mean 0 and variance 1. As Johnny says this is Cholesky decomposition (in 2 dimensions).
If you want to simulate your indices as baskets of correlated underlyings the principle is the same - you generate an (nx1) vector X of independent N(0,1) random variables and multiply the vector by the lower-triangular matrix A:
Y = A * X
The matrix A is produced by the cholesky decomposition of the correlation matrix for your underlyings. It is easily performed in MATLAB using the 'chol()' function, or I think I have some VBA code for it somewhere if you want to go down this route.
V.
1) Draw two independent N(0,1) variables: X1 and X2.
2) Construct two new correlated random variables Y1 and Y2 as:
Y1 = p*X1 Y2 = p*X1 + X2*(1-p^2)^0.5
Where p is the correlation.
3) Use Y1 and Y2 in your MC simulation for each index.
This gives Y1 and Y2 correlation p, mean 0 and variance 1. As Johnny says this is Cholesky decomposition (in 2 dimensions).
If you want to simulate your indices as baskets of correlated underlyings the principle is the same - you generate an (nx1) vector X of independent N(0,1) random variables and multiply the vector by the lower-triangular matrix A:
Y = A * X
The matrix A is produced by the cholesky decomposition of the correlation matrix for your underlyings. It is easily performed in MATLAB using the 'chol()' function, or I think I have some VBA code for it somewhere if you want to go down this route.
V.
"The Stranger within my gates, He may be evil or good, But I cannot tell what powers control-- What reasons sway his mood; Nor when the Gods of his far-off land Shall repossess his blood." ~ Kipling
- Veegan
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
BTW, some analytical formulae for checking your MC output can be found here.
"The Stranger within my gates, He may be evil or good, But I cannot tell what powers control-- What reasons sway his mood; Nor when the Gods of his far-off land Shall repossess his blood." ~ Kipling
- dadeto
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
"Y1 = p*X1
Where p is the correlation.
This gives Y1 and Y2 correlation p, mean 0 and variance 1"
ahem ahem...
Where p is the correlation.
This gives Y1 and Y2 correlation p, mean 0 and variance 1"
ahem ahem...
"You have 24 hours to give us your money. And to show you we're serious, you have 12 hours" Fat Tony
- Veegan
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
Oops. Typo. It should be:
Y1 = X1.
Thanks Dadeto.
Y1 = X1.
Thanks Dadeto.
"The Stranger within my gates, He may be evil or good, But I cannot tell what powers control-- What reasons sway his mood; Nor when the Gods of his far-off land Shall repossess his blood." ~ Kipling
- PanzerMeyer
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
I was reading the Global Derivatives tutorial on Best of option and I was wondering what was the [b]Bivariate Cumulative normal distribution[/b] ?
я, конечно, вернусь
- PanzerMeyer
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
Okay I found out in Hull, in the annex
In fact I don't remember if I can include in VBA a function in a function, or do I have to create one ?
I need to include in the main function (Cumul_biva_Norm) the functon F(X,Y)... any hints ?
---
Function Cumul_biva_Norm(a, b, Rho)
Dim A1, A2, A3, A4, B1, B2, B3, B4, Rho As Single
Dim a, b, a_1, b_1 As Double
Dim i, j As Integer
A1 = 0.325303
A2 = 0.4211071
A3 = 0.1334425
A4 = 0.006374323
B1 = 0.1337764
B2 = 0.6243247
B3 = 1.3425378
B4 = 2.2626645
a_1 = a / ((2 * (1 - Rho ^ 2)) ^ 0.5)
b_1 = b / ((2 * (1 - Rho ^ 2)) ^ 0.5)
F(x,y) = Exp(a_1 * (2 * x - a_1) + b_1 * (2 * y - b_1) + 2 * Rho * (x - a_1) * (y - b_1))
For i = 1 To 4
For j = 1 To 4
Cumul_biva_Norm = (((1 - Rho ^ 2) ^ 0.5) / Pi)*f(X,Y)
Next j
Next i
End Function
In fact I don't remember if I can include in VBA a function in a function, or do I have to create one ?
I need to include in the main function (Cumul_biva_Norm) the functon F(X,Y)... any hints ?
---
Function Cumul_biva_Norm(a, b, Rho)
Dim A1, A2, A3, A4, B1, B2, B3, B4, Rho As Single
Dim a, b, a_1, b_1 As Double
Dim i, j As Integer
A1 = 0.325303
A2 = 0.4211071
A3 = 0.1334425
A4 = 0.006374323
B1 = 0.1337764
B2 = 0.6243247
B3 = 1.3425378
B4 = 2.2626645
a_1 = a / ((2 * (1 - Rho ^ 2)) ^ 0.5)
b_1 = b / ((2 * (1 - Rho ^ 2)) ^ 0.5)
F(x,y) = Exp(a_1 * (2 * x - a_1) + b_1 * (2 * y - b_1) + 2 * Rho * (x - a_1) * (y - b_1))
For i = 1 To 4
For j = 1 To 4
Cumul_biva_Norm = (((1 - Rho ^ 2) ^ 0.5) / Pi)*f(X,Y)
Next j
Next i
End Function
я, конечно, вернусь
- baghead
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
Pricing a best of
when I tested hull, nelken & white's equity vol 2 credit model I used this:
edit: I had to price a compound option I needed the bivariate normal dist for.
http://www.mathfinance.de/FF/vblib.html
edit: I had to price a compound option I needed the bivariate normal dist for.
http://www.mathfinance.de/FF/vblib.html
they don't ring a bell at the bottom - M. Bloomberg, BBC interview, Oct '08