/src/main/java/net/finmath/functions/AnalyticFormulas.java
return + term1 * term2 * term3;
return term1 * term2 * term3;
/ (1 + Math.pow(1-beta,2)/24*Math.pow(Math.log(underlying/strike),2) + Math.pow(1-beta,4)/1920 * Math.pow(Math.log(underlying/strike),4)); final double term2 = (Math.abs(x-z) < 1E-10) ? 1 : z / x; final double term3 = 1 + (Math.pow(1 - beta,2)/24 *Math.pow(alpha, 2)/Math.pow(forwardTimesStrike, 1-beta) + rho*beta*nu*alpha / 4 / Math.pow(forwardTimesStrike, (1-beta)/2) + (2-3*rho*rho)/24 * nu*nu) *maturity; <extra_id_0> } } public static double sabrBerestyckiNormalVolatilityApproximation(final double alpha, final double beta, final double rho, final double nu, final double displacement, double underlying, double strike, final double maturity) { underlying += displacement; strike += displacement;