function pollarMethod() { do{ U1=Math.random(); U2=Math.random(); V1=2*U1-1.0; V2=2*U2-1.0; S=V1*V1+V2*V2; } while(S>=1); X=V1*Math.sqrt((-2*ln(S))/S); return X; } function callMontecarloEuropean(time,S,K,r,sigma,q,nbSim) { var res=new Array; R=(r-q-0.5*sigma*sigma)*time; SD=sigma*Math.sqrt(time); sumPayof=0; for (i=0;i<nbSim;i++) { ST=S*Math.exp(R+SD*pollarMethod()); res[i]=ST; if ((ST-K)>=0) sumPayof=sumPayof+(ST-K); } //Discounting res[nbSim]=Math.exp(-r*time)*(sumPayof/nbSim); return res; } function putMontecarloEuropean(time,S,K,r,sigma,q,nbSim) { var res=new Array; R=(r-q-0.5*sigma*sigma)*time; SD=sigma*Math.sqrt(time); sumPayof=0; for (i=0;i<nbSim;i++) { ST=S*Math.exp(R+SD*pollarMethod()); res[i]=ST; if ((K-ST)>=0) sumPayof=sumPayof+(K-ST); } //Discounting res[nbSim]=Math.exp(-r*time)*(sumPayof/nbSim); return res; }
Tuesday, June 11, 2013
Monte carlo option pricing
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment