@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -731183871: // seasonalityMonthOnMonth return ((SeasonalityDefinition) bean).getSeasonalityMonthOnMonth(); case -1002343865: // adjustmentType return ((SeasonalityDefinition) bean).getAdjustmentType(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_builder1() { SeasonalityDefinition test = SeasonalityDefinition.of(SEASONALITY_ADDITIVE, ADDITIVE); assertEquals(test.getSeasonalityMonthOnMonth(), SEASONALITY_ADDITIVE); assertEquals(test.getAdjustmentType(), ADDITIVE); }
@Override public SeasonalityDefinition build() { return new SeasonalityDefinition( seasonalityMonthOnMonth, adjustmentType); }
private void assertDefinition(RatesCurveGroupDefinition defn) { assertEquals(defn.getName(), CurveGroupName.of("Default")); assertEquals(defn.getEntries().size(), 3); assertEquals(defn.getSeasonalityDefinitions().size(), 1); assertEquals(defn.getSeasonalityDefinitions().get(CurveName.of("USD-CPI")).getAdjustmentType(), ShiftType.SCALED); RatesCurveGroupEntry entry0 = findEntry(defn, "USD-Disc"); RatesCurveGroupEntry entry1 = findEntry(defn, "USD-3ML"); RatesCurveGroupEntry entry2 = findEntry(defn, "USD-CPI"); CurveDefinition defn0 = defn.findCurveDefinition(entry0.getCurveName()).get(); CurveDefinition defn1 = defn.findCurveDefinition(entry1.getCurveName()).get(); CurveDefinition defn2 = defn.findCurveDefinition(entry2.getCurveName()).get(); assertEquals(entry0.getDiscountCurrencies(), ImmutableSet.of(Currency.USD)); assertEquals(entry0.getIndices(), ImmutableSet.of()); assertEquals(defn0.getName(), CurveName.of("USD-Disc")); assertEquals(defn0.getYValueType(), ValueType.ZERO_RATE); assertEquals(defn0.getParameterCount(), 17); assertEquals(entry1.getDiscountCurrencies(), ImmutableSet.of()); assertEquals(entry1.getIndices(), ImmutableSet.of(IborIndices.USD_LIBOR_3M)); assertEquals(defn1.getName(), CurveName.of("USD-3ML")); assertEquals(defn1.getYValueType(), ValueType.ZERO_RATE); assertEquals(defn1.getParameterCount(), 27); assertEquals(entry2.getDiscountCurrencies(), ImmutableSet.of()); assertEquals(entry2.getIndices(), ImmutableSet.of(PriceIndices.US_CPI_U)); assertEquals(defn2.getName(), CurveName.of("USD-CPI")); assertEquals(defn2.getYValueType(), ValueType.PRICE_INDEX); assertEquals(defn2.getParameterCount(), 2); }
public void test_serialization() { SeasonalityDefinition test = SeasonalityDefinition.of(SEASONALITY_ADDITIVE, ADDITIVE); assertSerialization(test); }
/** * Parses the seasonality definition CSV file. * * @param charSource the seasonality CSV character source * @return the map of seasonality definitions */ public static Map<CurveName, SeasonalityDefinition> parseSeasonalityDefinitions(CharSource charSource) { ImmutableMap.Builder<CurveName, SeasonalityDefinition> builder = ImmutableMap.builder(); CsvFile csv = CsvFile.of(charSource, true); for (CsvRow row : csv.rows()) { String curveNameStr = row.getField(CURVE_NAME); String shiftTypeStr = row.getField(SHIFT_TYPE); DoubleArray values = DoubleArray.of(12, i -> Double.parseDouble(row.getField(MONTH_PAIRS.get(i)))); CurveName curveName = CurveName.of(curveNameStr); ShiftType shiftType = ShiftType.valueOf(shiftTypeStr.toUpperCase(Locale.ENGLISH)); builder.put(curveName, SeasonalityDefinition.of(values, shiftType)); } return builder.build(); }
public void test_loadSeasonalityDefinition() { Map<CurveName, SeasonalityDefinition> defns = SeasonalityDefinitionCsvLoader.loadSeasonalityDefinitions(ResourceLocator.of(GROUPS_1)); assertEquals(defns.size(), 1); SeasonalityDefinition defn = defns.get(CurveName.of("USD-CPI")); assertEquals(defn.getAdjustmentType(), ShiftType.SCALED); assertEquals(defn.getSeasonalityMonthOnMonth().size(), 12); }
public void test_of() { SeasonalityDefinition test = SeasonalityDefinition.of(SEASONALITY_ADDITIVE, ADDITIVE); assertEquals(test.getSeasonalityMonthOnMonth(), SEASONALITY_ADDITIVE); assertEquals(test.getAdjustmentType(), ADDITIVE); }
public void coverage() { SeasonalityDefinition test = SeasonalityDefinition.of(SEASONALITY_ADDITIVE, ADDITIVE); coverImmutableBean(test); DoubleArray seasonalityMultiplicative = DoubleArray.of( 1.0, 1.0, 1.1d, 1.0, 1.0, 1.0, 1.0d / 1.1d, 1.0, 1.0, 1.0, 1.0, 1.0); SeasonalityDefinition test2 = SeasonalityDefinition.of(seasonalityMultiplicative, ShiftType.SCALED); coverBeanEquals(test, test2); }
/** * Obtains an instance of the seasonality. * * @param seasonalityMonthOnMonth the month-on-month seasonality * @param adjustmentType the adjustment type * @return the instance */ public static SeasonalityDefinition of(DoubleArray seasonalityMonthOnMonth, ShiftType adjustmentType) { ArgChecker.isTrue(seasonalityMonthOnMonth.size() == 12, "seasonality must be of length 12"); return new SeasonalityDefinition(seasonalityMonthOnMonth, adjustmentType); }
int lastMonthIndex = lastMonth.getMonth().getValue() - 1; seasonalityCompoundedArray[(int) ((nbMonth + 12 + 1) % 12)] = seasonalityDefinition.getSeasonalityMonthOnMonth().get(lastMonthIndex % 12); for (int i = 1; i < 12; i++) { int j = (int) ((nbMonth + 12 + 1 + i) % 12); seasonalityCompoundedArray[j] = seasonalityDefinition.getAdjustmentType().applyShift( seasonalityCompoundedArray[(j - 1 + 12) % 12], seasonalityDefinition.getSeasonalityMonthOnMonth().get((lastMonthIndex + i) % 12)); seasonalityDefinition.getAdjustmentType());
public void coverage() { InflationNodalCurveDefinition test = new InflationNodalCurveDefinition( UNDERLYING_DEF, LAST_FIX_MONTH, LAST_FIX_VALUE, SEASONALITY_DEF); coverImmutableBean(test); InterpolatedNodalCurveDefinition underlyingDef2 = InterpolatedNodalCurveDefinition.builder() .name(CurveName.of("foo")) .xValueType(ValueType.YEAR_FRACTION) .yValueType(ValueType.ZERO_RATE) .dayCount(ACT_365F) .nodes(NODES) .interpolator(CurveInterpolators.LINEAR) .extrapolatorLeft(CurveExtrapolators.FLAT) .extrapolatorRight(CurveExtrapolators.FLAT) .build(); SeasonalityDefinition seasonalityDef2 = SeasonalityDefinition.of(SEASONALITY_ADDITIVE, ShiftType.SCALED); InflationNodalCurveDefinition test2 = new InflationNodalCurveDefinition( underlyingDef2, LAST_FIX_MONTH.plus(Period.ofMonths(1)), LAST_FIX_VALUE + 1.0d, seasonalityDef2); coverBeanEquals(test, test2); }
public void test_bind_no_seasonality() { RatesCurveGroupDefinition test = RatesCurveGroupDefinition.builder() .name(CurveGroupName.of("Test")) .addCurve(CURVE_DEFN1, GBP, GBP_LIBOR_1M, GBP_LIBOR_3M) .addForwardCurve(CURVE_DEFN_I, GB_RPI) .build(); LocalDate valuationDate = LocalDate.of(2015, 11, 10); LocalDate lastFixingDate = LocalDate.of(2015, 10, 31); LocalDate otherFixingDate = LocalDate.of(2015, 9, 30); double lastFixingValue = 234.56; Map<Index, LocalDateDoubleTimeSeries> map = ImmutableMap.of(GB_RPI, LocalDateDoubleTimeSeries.builder() .put(lastFixingDate, 234.56).put(otherFixingDate, lastFixingValue - 1).build()); RatesCurveGroupDefinition testBound = test.bindTimeSeries(valuationDate, map); List<CurveDefinition> list = testBound.getCurveDefinitions(); assertEquals(list.size(), 2); assertTrue(list.get(0) instanceof InterpolatedNodalCurveDefinition); assertTrue(list.get(1) instanceof InflationNodalCurveDefinition); InflationNodalCurveDefinition seasonDef = (InflationNodalCurveDefinition) list.get(1); assertEquals(seasonDef.getCurveWithoutFixingDefinition(), CURVE_DEFN_I); assertEquals(seasonDef.getLastFixingMonth(), YearMonth.from(lastFixingDate)); assertEquals(seasonDef.getLastFixingValue(), lastFixingValue); assertEquals(seasonDef.getName(), CURVE_NAME_I); assertEquals(seasonDef.getYValueType(), ValueType.PRICE_INDEX); // Check the default assertTrue(seasonDef.getSeasonalityDefinition().getSeasonalityMonthOnMonth() .equalWithTolerance(DoubleArray.filled(12, 1d), 1.0E-10)); assertEquals(seasonDef.getSeasonalityDefinition().getAdjustmentType(), ShiftType.SCALED); }