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