SABRNonLinearLeastSquareFitter extends LeastSquareSmileFitter { @Override public LeastSquareResultsWithTransform getFitResult(final EuropeanVanillaOption[] options, final BlackFunctionData[] data, final double[] initialFitParameters, final BitSet fixed) { return getFitResult(options, data, initialFitParameters, fixed, 0, false); } SABRNonLinearLeastSquareFitter(final VolatilityFunctionProvider<SABRFormulaData> formula); static NonLinearLeastSquare getSolver(); @Override LeastSquareResultsWithTransform getFitResult(final EuropeanVanillaOption[] options, final BlackFunctionData[] data, final double[] initialFitParameters, final BitSet fixed); @Override LeastSquareResultsWithTransform getFitResult(final EuropeanVanillaOption[] options, final BlackFunctionData[] data, final double[] errors, final double[] initialFitParameters,
      final BitSet fixed); LeastSquareResultsWithTransform getFitResult(final EuropeanVanillaOption[] options, final BlackFunctionData[] data, final double[] initialFitParameters, final BitSet fixed,
      final double atmVol, final boolean recoverATMVol); LeastSquareResultsWithTransform getFitResult(final EuropeanVanillaOption[] options, final BlackFunctionData[] data, final double[] errors, final double[] initialFitParameters,
      final BitSet fixed, final double atmVol, final boolean recoverATMVol);  }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNegativeATMVol() { FITTER.getFitResult(OPTIONS, FLAT_DATA, ERRORS, INITIAL_VALUES, FIXED, -0.4, true); }