function D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t) { sigma2=sigma*sigma; TT=T-t; F=S*Math.exp((rd-q)*TT); r1=ln(S/K)+TT*(rd-rf+sigma2*0.5); r2=sigma*Math.sqrt(TT); return r1/r2; //value=1/(sigma*Math.sqrt(T-t))* } function D2GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t) { return D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t)-sigma*Math.sqrt(T-t); } function CallGarmanKohlhagen(S,K,rd,rf,sigma,q,T,t) { return NCDF(D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1)*S*Math.exp(-rf*(T-t))-(NCDF(D2GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1)*K*Math.exp(rd*(T-t)*-1.0)); } function PutGarmanKohlhagen(S,K,rd,rf,sigma,q,T,t) { return (NCDF(-D2GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1)*K*Math.exp(rd*(T-t)*-1.0))-NCDF(-D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1)*S*Math.exp(-rf*(T-t)); } function CallGarmanKohlhagenDelta(S,K,rd,rf,sigma,q,T,t) { return NCDF(D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1); } function PutGarmanKohlhagenDelta(S,K,rd,rf,sigma,q,T,t) { return NCDF(D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1)-1; } function CallGarmanKohlhagenGamma(S,K,rd,rf,sigma,q,T,t) { return NormalDens(D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t))/(S*sigma*Math.sqrt(T-t)); } function PutGarmanKohlhagenGamma(S,K,rd,rf,sigma,q,T,t) { return CallGarmanKohlhagenGamma(S,K,rd,rf,sigma,q,T,t); } function CallGarmanKohlhagenVega(S,K,rd,rf,sigma,q,T,t) { return NormalDens(D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t))*(S*Math.sqrt(T-t)); } function PutGarmanKohlhagenVega(S,K,rd,rf,sigma,q,T,t) { return CallGarmanKohlhagenVega(S,K,rd,rf,sigma,q,T,t); } function CallGarmanKohlhagenTheta(S,K,rd,rf,sigma,q,T,t) { return (S*NormalDens(D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t))*sigma/(2*Math.sqrt(T-t)))-(rd*K*Math.exp(-rd*(T-t))*NCDF(D2GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1)); } function PutGarmanKohlhagenTheta(S,K,rd,rf,sigma,q,T,t) { return (S*NormalDens(D1GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t))*sigma/(2*Math.sqrt(T-t)))+(rd*K*Math.exp(-rd*(T-t))*NCDF(-D2GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1)); } function CallGarmanKohlhagenRho(S,K,rd,rf,sigma,q,T,t) { return K*(T-t)*Math.exp(-rd*(T-t))*NCDF(D2GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1); } function PutGarmanKohlhagenRho(S,K,rd,rf,sigma,q,T,t) { return -K*(T-t)*Math.exp(-rd*(T-t))*NCDF(-D2GarmanKohlhagen(S,K,rd,rf,sigma,q,T,t),0,1); }
Tuesday, June 11, 2013
the Garman–Kohlhagen model
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment