Exemplo n.º 1
0
 public double CallPremium(CalculatorValues Values)
 {
     Values.CalcForwardPrice();
     return((Values.ForwardPrice * NormDistZ(D1(Values))
             - Values.Strike * NormDistZ(D2(Values)))
            * Values.Interest);
 }
Exemplo n.º 2
0
        public double D1(CalculatorValues Values)
        {
            double pt1 = (Math.Log(Values.ForwardPrice / Values.Strike) + Math.Pow(Values.Volatility, 2) * (Values.QtdDaysExpire / 252.0) / 2.0);
            double pt2 = Values.Volatility * Math.Pow(Values.QtdDaysExpire / 252, (1.0 / 2.0));

            return(pt1 / pt2);
        }
Exemplo n.º 3
0
 public double CallPremium(CalculatorValues Values)
 {
     return(Math.Exp(-Values.Dividend * Values.TimeAnually) *
            Values.UnderlinePrice * NormDistZ(D1(Values)) -
            Values.Strike * Math.Exp(-Values.RiskFreeRate * Values.TimeAnually) *
            NormDistZ(D1(Values) - Values.Volatility * Math.Sqrt(Values.TimeAnually)));
 }
Exemplo n.º 4
0
        public double PutPremium(CalculatorValues Values)
        {
            double d2 = D2(Values);

            //  optionValue = X * Math.Exp(-r * T) * CumulativeNormalDistributionFun(-d2) - S * CumulativeNormalDistributionFun(-d1);
            return((Values.Strike * Math.Exp(-Values.RiskFreeRate * Values.TimeAnually) * NormDistZ(-D2(Values))) -
                   (Math.Exp(-Values.Dividend * Values.TimeAnually) * Values.UnderlinePrice * NormDistZ(-D1(Values))));
        }
Exemplo n.º 5
0
 public double D2(CalculatorValues Values)
 {
     return(D1(Values) - Values.Volatility * Math.Pow((Values.QtdDaysExpire / 252.0), (1.0 / 2.0)));
 }
Exemplo n.º 6
0
 double NdD1(CalculatorValues Values)
 {
     return(Math.Exp(-Math.Pow(D1(Values), 2) / 2) / (Math.Sqrt(2 * Math.PI)));
 }
Exemplo n.º 7
0
 public double D2(CalculatorValues Values)
 {
     return(D1(Values) - Values.Volatility * Math.Sqrt(Values.TimeAnually));
 }
Exemplo n.º 8
0
 public double D1(CalculatorValues Values)
 {
     return((Math.Log(Values.UnderlinePrice / Values.Strike) +
             (Values.RiskFreeRate - Values.Dividend + 0.5 * Math.Pow(Values.Volatility, 2)) * Values.TimeAnually) /
            (Values.Volatility * (Math.Sqrt(Values.TimeAnually))));
 }