public static double blackFormulaStdDevDerivative(@Real double strike,@Real double forward,@StdDev final double stddev,@DiscountFactor final double discount,@Real final double displacement){
  QL.require(strike >= 0.0,"strike must be non-negative");
  QL.require(forward > 0.0,"forward must be positive");
  QL.require(stddev >= 0.0,"blackPrice must be non-negative");
  QL.require(discount > 0.0,"discount must be positive");
  QL.require(displacement >= 0.0,"displacement must be non-negative");
  forward=forward + displacement;
  strike=strike + displacement;
  final double d1=Math.log(forward / strike) / stddev + .5 * stddev;
  final CumulativeNormalDistribution cdf=new CumulativeNormalDistribution();
  return discount * forward * cdf.derivative(d1);
}

public static double blackFormulaStdDevDerivative ( @ Real double strike , @ Real double forward , @ StdDev final double stddev , @ DiscountFactor final double discount , @ Real final double displacement ) { QL . require ( strike >= 0.0 , "strike must be non-negative" ) ; QL . require ( forward > 0.0 , "forward must be positive" ) ; QL . require ( stddev >= 0.0 , "blackPrice must be non-negative" ) ; QL . require ( discount > 0.0 , "discount must be positive" ) ; QL . require ( displacement >= 0.0 , "displacement must be non-negative" ) ; forward = forward + displacement ; strike = strike + displacement ; final double d1 = Math . log ( forward / strike ) / stddev + .5 * stddev ; final CumulativeNormalDistribution cdf = new CumulativeNormalDistribution ( ) ; return discount * forward * cdf . derivative ( d1 ) ; }
black 1976 formula for standard deviation derivative < p >
