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