function EuropeanTrinomialPrice(T, stock, K, r, sigma, q, n,callput) { N=n; rate = r; div =q; dt = T/N; x = sigma*Math.sqrt(3.0*dt); v = rate - div - sigma*sigma*0.5; dis = Math.exp(-rate*dt); edx = Math.exp(x); pu = 0.5*(dt*(sigma*sigma + v*v*dt)/x/x + (v*dt/x)); //up probability pm = 1.0 - dt*(sigma*sigma + v*v*dt)/x/x; //middle probability pd = 0.5*(dt*(sigma*sigma + v*v*dt)/x/x - (v*dt/x)); //down probability C=new Array; S=new Array; S[N]=new Array; for(i=-N;i<N+1;i++) { S[i]=new Array; } for(i=N;i>=0;i--) { S[i][-i] = stock*Math.exp(-i*x); for(j=-i+1;j<=i;j++) { S[i][j]=S[i][j-1]*edx; } } for(i=-N;i<N+1;i++) { C[i]=new Array; } C[N]=new Array; for(j=-N;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=-i;j<=i;j++) { C[i][j] = dis*(pu*C[i+1][j+1] + pm*C[i+1][j] + pd*C[i+1][j-1]); } } return C; }
Tuesday, June 11, 2013
European trinomial pricing
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment