function DownAndOutCall(S,K,r,sigma,q,barrier,T,t) { alpha=0.5*(1-(r-q)*0.5/Math.sqrt(sigma*sigma)); if (barrier<=K) { value=CallBlackScholes(S,K,r,sigma,q,T,t)-Math.pow(S/barrier,2*alpha)*CallBlackScholes(barrier*barrier/S,K,r,sigma,q,T,t); } else { value=CallBlackScholes(S,barrier,r,sigma,q,T,t)+(barrier-K)*CallBlackScholesDigit(S,barrier,r,sigma,q,T,t)-Math.pow(S/barrier,2*alpha)*(CallBlackScholes(barrier*barrier/S,barrier,r,sigma,q,T,t)+(barrier-K)*CallBlackScholesDigit(barrier*barrier/S,barrier,r,sigma,q,T,t)); } return value; } function DownAndOutPut(S,K,r,sigma,q,barrier,T,t) { alpha=0.5*(1-(r-q)*0.5/Math.sqrt(sigma*sigma)); value=PutBlackScholes(S,K,r,sigma,q,T,t)-PutBlackScholes(S,barrier,r,sigma,q,T,t)-(K-barrier)*PutBlackScholesDigit(S,barrier,r,sigma,q,T,t)-Math.pow(S/barrier,2*alpha)*(PutBlackScholes(barrier*barrier/S,K,r,sigma,q,T,t)-PutBlackScholes(barrier*barrier/S,barrier,r,sigma,q,T,t)+(K-barrier)*PutBlackScholesDigit(barrier*barrier/S,barrier,r,sigma,q,T,t)); return value; }
function DownAndInCall(S,K,r,sigma,q,barrier,T,t) { return CallBlackScholes(S,K,r,sigma,q,T,t)-DownAndOutCall(S,K,r,sigma,q,barrier,T,t); } function DownAndInPut(S,K,r,sigma,q,barrier,T,t) { return PutBlackScholes(S,K,r,sigma,q,T,t)-DownAndOutPut(S,K,r,sigma,q,barrier,T,t); }
function UpAndOutCall(S,K,r,sigma,q,barrier,T,t) { alpha=0.5*(1-(r-q)*0.5/Math.sqrt(sigma*sigma)); value=CallBlackScholes(S,K,r,sigma,q,T,t)-CallBlackScholes(S,barrier,r,sigma,q,T,t)-(barrier-K)*CallBlackScholesDigit(S,barrier,r,sigma,q,T,t)-Math.pow(S/barrier,2*alpha)*(CallBlackScholes(barrier*barrier/S,K,r,sigma,q,T,t)-CallBlackScholes(barrier*barrier/S,barrier,r,sigma,q,T,t)+(barrier-K)*CallBlackScholesDigit(barrier*barrier/S,barrier,r,sigma,q,T,t)); return value; }
function UpAndOutPut(S,K,r,sigma,q,barrier,T,t) { alpha=0.5*(1-(r-q)*0.5/Math.sqrt(sigma*sigma)); if (barrier>K) value=PutBlackScholes(S,K,r,sigma,q,T,t)-Math.pow(S/barrier,2*alpha)*PutBlackScholes(barrier*barrier/S,K,r,sigma,q,T,t); else value=PutBlackScholes(S,K,r,sigma,q,T,t)+(K-barrier)*PutBlackScholesDigit(S,barrier,r,sigma,q,T,t)-Math.pow(S/barrier,2*alpha)*(PutBlackScholes(barrier*barrier/S,barrier,r,sigma,q,T,t)+(K-barrier)*PutBlackScholesDigit(barrier*barrier/S,barrier,r,sigma,q,T,t)); return value; }
function UpAndInCall(S,K,r,sigma,q,barrier,T,t) { return CallBlackScholes(S,K,r,sigma,q,T,t)-UpAndOutCall(S,K,r,sigma,q,barrier,T,t); } function UpAndInPut(S,K,r,sigma,q,barrier,T,t) { return PutBlackScholes(S,K,r,sigma,q,T,t)-UpAndOutPut(S,K,r,sigma,q,barrier,T,t); }
No comments:
Post a Comment