@Override public int compareKey(PointSensitivity other) { if (other instanceof OvernightRateSensitivity) { OvernightRateSensitivity otherOn = (OvernightRateSensitivity) other; return ComparisonChain.start() .compare(getIndex().toString(), otherOn.getIndex().toString()) .compare(currency, otherOn.currency) .compare(observation.getFixingDate(), otherOn.observation.getFixingDate()) .compare(endDate, otherOn.endDate) .result(); } return getClass().getSimpleName().compareTo(other.getClass().getSimpleName()); }
@ImmutableValidator private void validate() { ArgChecker.inOrderNotEqual(observation.getFixingDate(), endDate, "fixingDate", "endDate"); }
private double pastAccumulation() { double accumulatedInterest = 0.0d; LocalDateDoubleTimeSeries indexFixingDateSeries = rates.getFixings(); while ((fixedPeriod < nbPeriods) && rates.getValuationDate().isAfter(observations.get(fixedPeriod).getPublicationDate())) { OvernightIndexObservation obs = observations.get(fixedPeriod); accumulatedInterest += obs.getYearFraction() * checkedFixing(obs.getFixingDate(), indexFixingDateSeries, index); fixedPeriod++; } return accumulatedInterest; }
@Override public double rate(OvernightIndexObservation observation) { if (!observation.getFixingDate().isAfter(getValuationDate())) { return historicRate(observation); } return rateIgnoringFixings(observation); }
private double valuationDateAccumulation() { double accumulatedInterest = 0.0d; LocalDateDoubleTimeSeries indexFixingDateSeries = rates.getFixings(); boolean ratePresent = true; while (ratePresent && fixedPeriod < nbPeriods && rates.getValuationDate().isEqual(observations.get(fixedPeriod).getPublicationDate())) { OvernightIndexObservation obs = observations.get(fixedPeriod); OptionalDouble fixedRate = indexFixingDateSeries.get(obs.getFixingDate()); if (fixedRate.isPresent()) { accumulatedInterest += obs.getYearFraction() * fixedRate.getAsDouble(); fixedPeriod++; } else { ratePresent = false; } } return accumulatedInterest; }
private double historicRate(OvernightIndexObservation observation) { LocalDate fixingDate = observation.getFixingDate(); OptionalDouble fixedRate = fixings.get(fixingDate); if (fixedRate.isPresent()) { return fixedRate.getAsDouble(); } else if (fixingDate.isBefore(getValuationDate())) { // the fixing is required if (fixings.isEmpty()) { throw new IllegalArgumentException( Messages.format("Unable to get fixing for {} on date {}, no time-series supplied", index, fixingDate)); } throw new IllegalArgumentException(Messages.format("Unable to get fixing for {} on date {}", index, fixingDate)); } else { return rateIgnoringFixings(observation); } }
private double historicRate(OvernightIndexObservation observation) { LocalDate fixingDate = observation.getFixingDate(); OptionalDouble fixedRate = fixings.get(fixingDate); if (fixedRate.isPresent()) { return fixedRate.getAsDouble(); } else if (observation.getPublicationDate().isBefore(getValuationDate())) { // the fixing is required if (fixings.isEmpty()) { throw new IllegalArgumentException( Messages.format("Unable to get fixing for {} on date {}, no time-series supplied", index, fixingDate)); } throw new IllegalArgumentException(Messages.format("Unable to get fixing for {} on date {}", index, fixingDate)); } else { return rateIgnoringFixings(observation); } }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(OvernightIndexObservation beanToCopy) { this.index = beanToCopy.getIndex(); this.fixingDate = beanToCopy.getFixingDate(); this.publicationDate = beanToCopy.getPublicationDate(); this.effectiveDate = beanToCopy.getEffectiveDate(); this.maturityDate = beanToCopy.getMaturityDate(); this.yearFraction = beanToCopy.getYearFraction(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 100346066: // index return ((OvernightIndexObservation) bean).getIndex(); case 1255202043: // fixingDate return ((OvernightIndexObservation) bean).getFixingDate(); case 1470566394: // publicationDate return ((OvernightIndexObservation) bean).getPublicationDate(); case -930389515: // effectiveDate return ((OvernightIndexObservation) bean).getEffectiveDate(); case -414641441: // maturityDate return ((OvernightIndexObservation) bean).getMaturityDate(); case -1731780257: // yearFraction return ((OvernightIndexObservation) bean).getYearFraction(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_of() { OvernightIndexObservation test = OvernightIndexObservation.of(GBP_SONIA, FIXING_DATE, REF_DATA); assertEquals(test.getIndex(), GBP_SONIA); assertEquals(test.getFixingDate(), FIXING_DATE); assertEquals(test.getPublicationDate(), PUBLICATION_DATE); assertEquals(test.getEffectiveDate(), EFFECTIVE_DATE); assertEquals(test.getMaturityDate(), MATURITY_DATE); assertEquals(test.getCurrency(), GBP_SONIA.getCurrency()); assertEquals(test.toString(), "OvernightIndexObservation[GBP-SONIA on 2016-02-22]"); }
OvernightIndexObservation cutoffIndexObs = indexObsList.get(nbPeriods - 1 - i); OvernightIndexObservation updatedIndexObs = cutoffIndexObs.toBuilder() .fixingDate(fixingIndexObs.getFixingDate()) .publicationDate(fixingIndexObs.getPublicationDate()) .build();
@Override public PointSensitivityBuilder ratePointSensitivity(OvernightIndexObservation observation) { LocalDate fixingDate = observation.getFixingDate(); LocalDate valuationDate = getValuationDate(); if (fixingDate.isBefore(valuationDate) || (fixingDate.equals(valuationDate) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } throw new MarketDataNotFoundException("Unable to query forward rate sensitivity for historic index " + index); }
@Override public PointSensitivityBuilder ratePointSensitivity(OvernightIndexObservation observation) { LocalDate valuationDate = getValuationDate(); LocalDate fixingDate = observation.getFixingDate(); LocalDate publicationDate = observation.getPublicationDate(); if (publicationDate.isBefore(valuationDate) || (publicationDate.equals(valuationDate) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } return OvernightRateSensitivity.of(observation, 1d); }