Tuesday, June 11, 2013

European binomial pricing


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;
 

}

No comments: