function EuropeanBinomialPrice(T, stock, K, r, sigma, q, n,callput)
{
N=n;
rate = r;
S =new Array;
dt = T/N;
u = Math.exp(sigma * Math.sqrt(dt));
d = 1/u;
dis = Math.exp(-rate*dt);
p = (Math.exp((rate-q)*dt)-d)/(u-d);
C=new Array;
st = 1.0;
for ( i=0;i<N;i++)
st = st*d;
S[0] = stock*st;
udivd=u/d;
for( i=1;i<N+1;i++)
{
S[i] = S[i-1]*udivd;
}
for( j=0;j<=N;j++)
{
C[j]=new Array;
}
for( j=0;j<=N;j++)
{
if (callput=="c")
{
C[N][j] = max(S[j]-K,0);
}
else
{
C[N][j] = max(K-S[j],0);
}
}
for( i=N-1;i>=0;i--)
{
for( j=0;j<=i;j++)
{
C[i][j] = dis*(p*C[i+1][j+1] + (1.0-p)*C[i+1][j]);
}
}
return C;
}
Tuesday, June 11, 2013
European binomial pricing
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment