Esempio n. 1
0
        public static double beta_black_quick_delta_to_strike(double beta, double F, double T, double sigma, double qd)
        {
            if (qd < -1.0 || qd > 1.0)
            {
                throw FS.FailWith($"delta must be in (-1, 1), got {qd}");
            }
            var qdUsed = qd < 0.0 ? 1.0 + qd : qd;

            return(g(beta, inv_g(beta, F) - SpecialFunction.cdfinv_normal(qdUsed) * sigma * Math.Sqrt(T)));
        }
Esempio n. 2
0
        public static double beta_black_delta_to_strike(double beta, double F, double T, double sigma, double delta)
        {
            if (delta < -1.0 || delta > 1.0)
            {
                throw FS.FailWith($"delta must be in (-1, 1), got {delta}");
            }
            var mu        = inv_m1_beta_black(beta, F, sigma * Math.Sqrt(T));
            var usedDelta = delta < 0.0 ? -delta : 1.0 - delta;

            return(g(beta, SpecialFunction.cdfinv_normal(usedDelta) * sigma * Math.Sqrt(T) + mu));
        }
Esempio n. 3
0
 public static double beta_black_cdfinv(double beta, double mu, double sigma, double p)
 {
     return(g(beta, SpecialFunction.cdfinv_normal(p) * sigma + mu));
 }