double indexRatio(ResolvedCapitalIndexedBond bond, RatesProvider ratesProvider, LocalDate settlementDate) { LocalDate endReferenceDate = settlementDate.isBefore(ratesProvider.getValuationDate()) ? ratesProvider.getValuationDate() : settlementDate; RateComputation modifiedComputation = bond.getRateCalculation().createRateComputation(endReferenceDate); return 1d + periodPricer.getRateComputationFn().rate( modifiedComputation, bond.getUnadjustedStartDate(), // dates not used bond.getUnadjustedEndDate(), ratesProvider); }
PointSensitivityBuilder indexRatioSensitivity( ResolvedCapitalIndexedBond bond, RatesProvider ratesProvider, LocalDate settlementDate) { LocalDate endReferenceDate = settlementDate.isBefore(ratesProvider.getValuationDate()) ? ratesProvider.getValuationDate() : settlementDate; RateComputation modifiedComputation = bond.getRateCalculation().createRateComputation(endReferenceDate); return periodPricer.getRateComputationFn().rateSensitivity( modifiedComputation, bond.getUnadjustedStartDate(), // dates not used bond.getUnadjustedEndDate(), ratesProvider); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(ResolvedCapitalIndexedBond beanToCopy) { this.securityId = beanToCopy.getSecurityId(); this.nominalPayment = beanToCopy.getNominalPayment(); this.periodicPayments = beanToCopy.getPeriodicPayments(); this.frequency = beanToCopy.getFrequency(); this.rollConvention = beanToCopy.getRollConvention(); this.dayCount = beanToCopy.getDayCount(); this.yieldConvention = beanToCopy.getYieldConvention(); this.legalEntityId = beanToCopy.getLegalEntityId(); this.settlementDateOffset = beanToCopy.getSettlementDateOffset(); this.rateCalculation = beanToCopy.getRateCalculation(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 1574023291: // securityId return ((ResolvedCapitalIndexedBond) bean).getSecurityId(); case -44199542: // nominalPayment return ((ResolvedCapitalIndexedBond) bean).getNominalPayment(); case -367345944: // periodicPayments return ((ResolvedCapitalIndexedBond) bean).getPeriodicPayments(); case -70023844: // frequency return ((ResolvedCapitalIndexedBond) bean).getFrequency(); case -10223666: // rollConvention return ((ResolvedCapitalIndexedBond) bean).getRollConvention(); case 1905311443: // dayCount return ((ResolvedCapitalIndexedBond) bean).getDayCount(); case -1895216418: // yieldConvention return ((ResolvedCapitalIndexedBond) bean).getYieldConvention(); case 866287159: // legalEntityId return ((ResolvedCapitalIndexedBond) bean).getLegalEntityId(); case 135924714: // settlementDateOffset return ((ResolvedCapitalIndexedBond) bean).getSettlementDateOffset(); case -521703991: // rateCalculation return ((ResolvedCapitalIndexedBond) bean).getRateCalculation(); } return super.propertyGet(bean, propertyName, quiet); }
if (yieldConvention.equals(CapitalIndexedBondYieldConvention.GB_IL_FLOAT)) { RateComputation obs = period.getRateComputation(); LocalDateDoubleTimeSeries ts = ratesProvider.priceIndexValues(bond.getRateCalculation().getIndex()).getFixings(); YearMonth lastKnownFixingMonth = YearMonth.from(ts.getLatestDate()); double indexRatio = ts.getLatestValue() / bond.getFirstIndexValue();