/src/main/java/net/finmath/montecarlo/interestrate/products/indices/NumerairePerformanceIndex.java
final DiscountCurve modelDisountCurve = model.getModel ( ) .getDiscountCurve ( ) ; final double forwardBondOnIndexCurve = indexDiscountCurve.getDiscountFactor ( analyticModel, fixingTime ) /indexDiscountCurve.getDiscountFactor ( analyticModel, paymentTime ) ;
final RandomVariable numeraireAtStart = model.getNumeraire(fixingTime); final RandomVariable numeraireAtEnd = model.getNumeraire(paymentTime); RandomVariable numeraireRatio = numeraireAtEnd.div(numeraireAtStart); if(getName() != null && !model.getModel().getDiscountCurve().getName().equals(getName())) { final AnalyticModel analyticModel = model.getModel().getAnalyticModel(); final DiscountCurve indexDiscountCurve = analyticModel.getDiscountCurve(getName()); <extra_id_0> final double forwardBondOnModelCurve = modelDisountCurve.getDiscountFactor(analyticModel, fixingTime)/modelDisountCurve.getDiscountFactor(analyticModel, paymentTime); final double adjustment = forwardBondOnModelCurve/forwardBondOnIndexCurve; numeraireRatio = numeraireRatio.mult(adjustment); } final RandomVariable forwardRate = numeraireRatio.sub(1.0).div(periodLength); return forwardRate;