/src/main/java/net/finmath/functions/AnalyticFormulas.java
final double sigma = term1 * ( 1.0 + maturity * ( ( -beta*( 2-beta) *alpha*alpha) /( 24*Math.pow( beta,2.0*( 1.0-beta) ) ) + forwardStrikeAverage*alpha*rho*nu / ( 4*Math.pow( forwardStrikeAverage,( 1.0-beta) ) ) + ( 2.0 -3.0*rho*rho) *nu*nu/24) ) ;
final double sigma = term1 * ( 1.0 + maturity * ( ( -beta* ( 2-beta ) *alpha*alpha ) / ( 24*Math.pow ( forwardStrikeAverage,2.0* ( 1.0-beta ) ) ) + beta*alpha*rho*nu / ( 4*Math.pow ( forwardStrikeAverage, ( 1.0-beta ) ) ) + ( 2.0 -3.0*rho*rho ) *nu*nu/24 ) ) ;
term1 = alpha * Math.pow(underlying, beta); } else { final double z2 = (1.0 - beta) / (Math.pow(underlying, 1.0-beta) - Math.pow(strike, 1.0-beta)); term1 = alpha * z2 * z * (underlying-strike) / x; } <extra_id_0> return Math.max(sigma, 0.0); } public static double sabrAlphaApproximation(final double normalVolatility, final double beta, final double rho, final double nu, final double displacement, double underlying, final double maturity) { underlying += displacement; final double forwardStrikeAverage = underlying;