Example #1
0
 //Payoff condition
 private void TerminalCondition()
 {
     for (int idx = 0; idx < Steps; idx++)
     {
 
     switch (SPay.ToUpper())
     {
         case "C":
         _v.Add(Math.Max(Math.Exp(_x[idx]) - Strike, 0.0));
         break;
         case "P":
         _v.Add(Math.Max(Strike - Math.Exp(_x[idx]), 0.0));
         break;
         case "A":
         _v.Add(((Math.Exp(_x[idx]) > Strike) ? 1.0 : 0.0));
         break;
         case "B":
         _v.Add(((Math.Exp(_x[idx]) > Strike) ? 0.0 : 1.0));
         break;
         case "T":
         _v.Add(1.0);
         break;
     }
     }
 }
Example #2
0
        private double MakeUpperBC(double tau, double S, double domRbc, double DiscDiv)
        {
            double temp = 0.0; 
            if (UbFlag) return 0.0;
            switch (SPay.ToUpper())
            {
            case "C":
                temp = (S - DiscDiv - Math.Exp(-domRbc * tau) * Strike);
                temp = (SStyle.ToUpper().Equals("A")) ? Math.Max(temp, S - Strike) : temp;
                break;
            case "P":
                break;
            case "A":
                temp = Math.Exp(-domRbc * tau);
                break;
            case "B":       
                break;
            case "T":
                break;
            default:
                break;
            }

            return temp;
        }
Example #3
0
        //apply the BC
        private double MakeLowerBC(double tau, double S, double domRbc, double discDiv)
        {
            double temp = 0.0;

            if (LbFlag)
            {
                return(0.0);
            }
            switch (SPay.ToUpper())
            {
            case "C":
                break;

            case "P":
                temp = (SStyle.ToUpper().Equals("E")) ? Math.Exp(-domRbc * tau) * Strike - Math.Max(S - discDiv, 0.0) :
                       Strike - S;
                break;

            case "A":
                break;

            case "B":
                temp = Math.Exp(-domRbc * tau);
                break;

            case "T":
                break;
            }

            return(temp);
        }
Example #4
0
 private double AmPay(int idx)
 {
     return (SPay.ToUpper().Equals("C")) ? Math.Exp(_x[idx]) - Strike : Strike - Math.Exp(_x[idx]);
 }