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