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))); }
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)); }
public static double beta_black_cdfinv(double beta, double mu, double sigma, double p) { return(g(beta, SpecialFunction.cdfinv_normal(p) * sigma + mu)); }