Exemple #1
0
        public static double Theta(double S, double X, double t, double s, double r, EPutCall PutCall)
        {
            switch (PutCall)
            {
            case EPutCall.Call:
                return(-S *FinMath.n(FinMath.d1(S, X, t, s, r)) * s / (2.0 * Math.Sqrt(t)) - r * X * Math.Exp(-r * t) * FinMath.N(FinMath.d2(S, X, t, s, r)));

            case EPutCall.Put:
                return(-S *FinMath.n(FinMath.d1(S, X, t, s, r)) * s / (2.0 * Math.Sqrt(t)) + r * X * Math.Exp(-r * t) * FinMath.N(-FinMath.d2(S, X, t, s, r)));

            default:
                return(0.0);
            }
        }
Exemple #2
0
 public static double Vega(double S, double X, double t, double s, double r)
 {
     return(S * Math.Sqrt(t) * FinMath.n(FinMath.d1(S, X, t, s, r)));
 }
Exemple #3
0
 public static double Gamma(double S, double X, double t, double s, double r)
 {
     return(FinMath.n(FinMath.d1(S, X, t, s, r)) / (S * s * Math.Sqrt(t)));
 }