[R-SIG-Finance] Pricing option using Explicit Finite Differencemethod
davidr at rhotrading.com
davidr at rhotrading.com
Tue Jul 17 16:37:08 CEST 2007
Operator precedence strikes again!
> Nj <- 5
> -Nj+1:Nj-1
[1] -5 -4 -3 -2 -1
> (-Nj+1):(Nj-1)
[1] -4 -3 -2 -1 0 1 2 3 4
>
David L. Reiner
Rho Trading Securities, LLC
550 W. Jackson Blvd #1000
Chicago, IL 60661-5704
312-244-4610 direct
312-244-4500 main
312-244-4501 fax
-----Original Message-----
From: r-sig-finance-bounces at stat.math.ethz.ch
[mailto:r-sig-finance-bounces at stat.math.ethz.ch] On Behalf Of Joseph
Khalil
Sent: Tuesday, July 17, 2007 8:56 AM
To: r-sig-finance at stat.math.ethz.ch
Subject: Re: [R-SIG-Finance] Pricing option using Explicit Finite
Differencemethod
I am a new user of R and new to this mailing list. I am using
the book "Implementing Derivatives Models" by Les Clewlow and Chris
Strickland, and I am trying to simulate
the example on pricing options using the explicit finite difference
method in chapter 3. I have tried the following to price plain European
calls but I am getting errors.
K<-100 #Strike price
T<-1 #Time of maturity
t<-0 #Current time
sigma<-0.2 #Volatility
r<-0.06 #Interest rate
div<-0.03 # Dividend yield
S<-100 #Central stock price
dx<-0.02 #Space step around central asset price (logarithmic
measurement exp(dx))
Nj<-30 #Number of space steps
N<-500 #Number of time steps until T
dt<-T/N # Time step
nu<-r-div-0.5*sigma^2
pu<-0.5*dt*((sigma/dx)^2+nu/dx) # Probability for go up
pm<-1-dt*(sigma/dx)^2-r*dt # Probability for stay the same
pd<-0.5*dt*((sigma/dx)^2-nu/dx) # Probability for go down
# Initialise matrices
St<-matrix(data=0,nrow=2*Nj+1,ncol=1)
Call<-matrix(data=0,nrow=2*Nj+1,ncol=N+1)
#Compute independent values
for (j in (-Nj:Nj)) {
St[Nj-j+1,1]<-S*exp(j*dx) # Initialise asset prices at
maturity
Call[Nj-j+1,N+1]<-max(0,St[Nj-j+1,1]-K) } # Initialise option prices at
maturity
#Compute dependent option values
for (i in (N:1)) {
# Explicit compution of option values (backwards)
for (j in (-Nj+1:Nj-1)) {
Call[j+Nj+1,i]<-as.matrix(pu*(as.matrix(Call[j+Nj,i+1])))+as.matrix(pm*C
all[j+Nj+1,i+1])+as.matrix(pd*Call[j+Nj+2,i+1])
}
Call[1,i]<-Call[2,i]+St[1,1]-St[2,1] # Upper boundary condition
Call[2*Nj+1,i]<-Call[2*Nj,i] #Lower boundary condition
}
----- Original Message ----
From: Joseph Khalil <joedtka at yahoo.com>
To: r-sig-finance at stat.math.ethz.ch
Sent: Monday, July 16, 2007 10:01:27 PM
Subject: [R-SIG-Finance] Pricing option using Explicit Finite Difference
method
Hi,
Does anyone have R code to calculate option prices (European, plain
vanilla) using Explicit Finite
Difference method?
Thanks,
Joe
_______________________________________________
R-SIG-Finance at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only.
-- If you want to post, subscribe first.
_______________________________________________
R-SIG-Finance at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only.
-- If you want to post, subscribe first.
More information about the R-SIG-Finance
mailing list