@Override public void calibrate(final DATA_TYPE data) { computeCalibrationPrice(data); _calibrationObjective.setMulticurves(data.getMulticurveProvider()); final int nbInstruments = getBasket().size(); final RidderSingleRootFinder rootFinder = new RidderSingleRootFinder( _calibrationObjective.getFunctionValueAccuracy(), _calibrationObjective.getVariableAbsoluteAccuracy()); final BracketRoot bracketer = new BracketRoot(); for (int loopins = 0; loopins < nbInstruments; loopins++) { final InstrumentDerivative instrument = getBasket().get(loopins); _calibrationObjective.setInstrument(instrument); _calibrationObjective.setPrice(getCalibrationPrices().get(loopins)); final double[] range = bracketer.getBracketedPoints( _calibrationObjective, _calibrationObjective.getMinimumParameter(), _calibrationObjective.getMaximumParameter()); rootFinder.getRoot(_calibrationObjective, range[0], range[1]); if (loopins < nbInstruments - 1) { ((SuccessiveRootFinderHullWhiteCalibrationObjective) _calibrationObjective) .setNextCalibrationTime(_calibrationTimes.get(loopins)); } } }
/** * Constructor of the calibration engine. * * @param calibrationObjective The calibration objective. */ public SuccessiveRootFinderHullWhiteCalibrationEngine( final SuccessiveRootFinderCalibrationObjectiveWithMultiCurves calibrationObjective) { super(calibrationObjective.getFXMatrix(), calibrationObjective.getCcy()); _calibrationObjective = calibrationObjective; }