@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -496986608: // shortObservation return ((IborInterpolatedRateComputation) bean).getShortObservation(); case -684321776: // longObservation return ((IborInterpolatedRateComputation) bean).getLongObservation(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_of_weekMonthCombination() { IborInterpolatedRateComputation test = IborInterpolatedRateComputation.of(GBP_LIBOR_1W, GBP_LIBOR_1M, FIXING_DATE, REF_DATA); assertEquals(test.getShortObservation(), GBP_LIBOR_1W_OBS); assertEquals(test.getLongObservation(), GBP_LIBOR_1M_OBS); assertEquals(test.getFixingDate(), FIXING_DATE); }
public void test_of_monthly() { IborInterpolatedRateComputation test = IborInterpolatedRateComputation.of(GBP_LIBOR_1M, GBP_LIBOR_3M, FIXING_DATE, REF_DATA); assertEquals(test.getShortObservation(), GBP_LIBOR_1M_OBS); assertEquals(test.getLongObservation(), GBP_LIBOR_3M_OBS); assertEquals(test.getFixingDate(), FIXING_DATE); }
public void test_of_weekly() { IborInterpolatedRateComputation test = IborInterpolatedRateComputation.of(EUR_EURIBOR_1W, EUR_EURIBOR_2W, FIXING_DATE, REF_DATA); assertEquals(test.getShortObservation(), EUR_EURIBOR_1W_OBS); assertEquals(test.getLongObservation(), EUR_EURIBOR_2W_OBS); assertEquals(test.getFixingDate(), FIXING_DATE); }
public void test_of_monthly_byObs() { IborInterpolatedRateComputation test = IborInterpolatedRateComputation.of(GBP_LIBOR_1M_OBS, GBP_LIBOR_3M_OBS); assertEquals(test.getShortObservation(), GBP_LIBOR_1M_OBS); assertEquals(test.getLongObservation(), GBP_LIBOR_3M_OBS); assertEquals(test.getFixingDate(), FIXING_DATE); }
public void test_of_monthly_reverseOrder() { IborInterpolatedRateComputation test = IborInterpolatedRateComputation.of(GBP_LIBOR_3M, GBP_LIBOR_1M, FIXING_DATE, REF_DATA); assertEquals(test.getShortObservation(), GBP_LIBOR_1M_OBS); assertEquals(test.getLongObservation(), GBP_LIBOR_3M_OBS); assertEquals(test.getFixingDate(), FIXING_DATE); }
public void test_of_weekly_reverseOrder() { IborInterpolatedRateComputation test = IborInterpolatedRateComputation.of(EUR_EURIBOR_2W, EUR_EURIBOR_1W, FIXING_DATE, REF_DATA); assertEquals(test.getShortObservation(), EUR_EURIBOR_1W_OBS); assertEquals(test.getLongObservation(), EUR_EURIBOR_2W_OBS); assertEquals(test.getFixingDate(), FIXING_DATE); }
@Override public double rate( IborInterpolatedRateComputation computation, LocalDate startDate, LocalDate endDate, RatesProvider provider) { IborIndexObservation obs1 = computation.getShortObservation(); IborIndexObservation obs2 = computation.getLongObservation(); IborIndexRates rates1 = provider.iborIndexRates(obs1.getIndex()); IborIndexRates rates2 = provider.iborIndexRates(obs2.getIndex()); double rate1 = rates1.rate(obs1); double rate2 = rates2.rate(obs2); DoublesPair weights = weights(obs1, obs2, endDate); return ((rate1 * weights.getFirst()) + (rate2 * weights.getSecond())) / (weights.getFirst() + weights.getSecond()); }
@Override public double explainRate( IborInterpolatedRateComputation computation, LocalDate startDate, LocalDate endDate, RatesProvider provider, ExplainMapBuilder builder) { IborIndexObservation obs1 = computation.getShortObservation(); IborIndexObservation obs2 = computation.getLongObservation(); DoublesPair weights = weights(obs1, obs2, endDate); IborIndexRates rates1 = provider.iborIndexRates(obs1.getIndex()); IborIndexRates rates2 = provider.iborIndexRates(obs2.getIndex()); rates1.explainRate(obs1, builder, child -> child.put(ExplainKey.WEIGHT, weights.getFirst())); rates2.explainRate(obs2, builder, child -> child.put(ExplainKey.WEIGHT, weights.getSecond())); double rate = rate(computation, startDate, endDate, provider); builder.put(ExplainKey.COMBINED_RATE, rate); return rate; }
@Override public PointSensitivityBuilder rateSensitivity( IborInterpolatedRateComputation computation, LocalDate startDate, LocalDate endDate, RatesProvider provider) { // computes the dates related to the underlying deposits associated to the indices IborIndexObservation obs1 = computation.getShortObservation(); IborIndexObservation obs2 = computation.getLongObservation(); DoublesPair weights = weights(obs1, obs2, endDate); double totalWeight = weights.getFirst() + weights.getSecond(); IborIndexRates ratesIndex1 = provider.iborIndexRates(obs1.getIndex()); PointSensitivityBuilder sens1 = ratesIndex1.ratePointSensitivity(obs1) .multipliedBy(weights.getFirst() / totalWeight); IborIndexRates ratesIndex2 = provider.iborIndexRates(obs2.getIndex()); PointSensitivityBuilder sens2 = ratesIndex2.ratePointSensitivity(obs2) .multipliedBy(weights.getSecond() / totalWeight); return sens1.combinedWith(sens2); }