@Override /** * Computes the Federal Funds future price using average of forward rates (not convexity * adjustment). * * @param future The future security. * @param curves The curves. * @return The price. */ public double price(final FederalFundsFutureSecurity future, final YieldCurveBundle curves) { Validate.notNull(future, "Future"); Validate.notNull(curves, "Curves"); int nbFixing = future.getFixingPeriodAccrualFactor().length; YieldAndDiscountCurve ois = curves.getCurve(future.getOISCurveName()); double[] df = new double[nbFixing + 1]; for (int loopfix = 0; loopfix < nbFixing + 1; loopfix++) { df[loopfix] = ois.getDiscountFactor(future.getFixingPeriodTime()[loopfix]); } double interest = future.getAccruedInterest(); for (int loopfix = 0; loopfix < nbFixing; loopfix++) { interest += df[loopfix] / df[loopfix + 1] - 1.0; } return 1.0 - interest / future.getFixingTotalAccrualFactor(); }