public void test_of_String() { ConstantCurve test = ConstantCurve.of(NAME, VALUE); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getYValue()).isEqualTo(VALUE); assertThat(test.getParameterCount()).isEqualTo(1); assertThat(test.getParameter(0)).isEqualTo(VALUE); assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty()); assertThat(test.withParameter(0, 2d)).isEqualTo(ConstantCurve.of(NAME, 2d)); assertThat(test.withPerturbation((i, v, m) -> v + 1d)).isEqualTo(ConstantCurve.of(NAME, VALUE + 1d)); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.withMetadata(METADATA2)).isEqualTo(ConstantCurve.of(METADATA2, VALUE)); }
@Override public ConstantCurve withPerturbation(ParameterPerturbation perturbation) { return new ConstantCurve(metadata, perturbation.perturbParameter(0, yValue, getParameterMetadata(0))); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -450004177: // metadata return ((ConstantCurve) bean).getMetadata(); case -748419976: // yValue return ((ConstantCurve) bean).getYValue(); } return super.propertyGet(bean, propertyName, quiet); }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.shiftCurve == null) { builder.shiftCurve = ConstantCurve.of("Zero shift", 0d); } }
public void test_lookup() { ConstantCurve test = ConstantCurve.of(CURVE_NAME, VALUE); assertThat(test.yValue(0d)).isEqualTo(VALUE); assertThat(test.yValue(-10d)).isEqualTo(VALUE); assertThat(test.yValue(100d)).isEqualTo(VALUE); assertThat(test.yValueParameterSensitivity(0d).getSensitivity().toArray()).containsExactly(1d); assertThat(test.yValueParameterSensitivity(-10d).getSensitivity().toArray()).containsExactly(1d); assertThat(test.yValueParameterSensitivity(100d).getSensitivity().toArray()).containsExactly(1d); assertThat(test.firstDerivative(0d)).isEqualTo(0d); assertThat(test.firstDerivative(-10d)).isEqualTo(0d); assertThat(test.firstDerivative(100d)).isEqualTo(0d); }
/** * Obtains an instance from a curve. * <p> * If the curve is {@code ConstantCurve}, {@code ConstantRecoveryRates} is always instantiated. * * @param legalEntityId the legal entity identifier * @param valuationDate the valuation date for which the curve is valid * @param curve the underlying curve * @return the instance */ public static RecoveryRates of(StandardId legalEntityId, LocalDate valuationDate, Curve curve) { if (curve.getMetadata().getYValueType().equals(ValueType.RECOVERY_RATE)) { ConstantCurve constantCurve = (ConstantCurve) curve; return ConstantRecoveryRates.of(legalEntityId, valuationDate, constantCurve.getYValue()); } throw new IllegalArgumentException("Unknown curve type"); }
@Override public UnitParameterSensitivity yValueParameterSensitivity(double x) { ImmutableList<ParameterMetadata> paramMeta = ImmutableList.of(getParameterMetadata(0)); return UnitParameterSensitivity.of(metadata.getCurveName(), paramMeta, SENSITIVITY); }
/** * Creates a constant curve with a specific value. * * @param metadata the curve metadata * @param yValue the constant y-value * @return the curve */ public static ConstantCurve of(CurveMetadata metadata, double yValue) { return new ConstantCurve(metadata, yValue); }
public void test_getter() { assertEquals(VOLS.getValuationDate(), VAL_DATE); assertEquals(VOLS.getIndex(), GBP_LIBOR_3M); assertEquals(VOLS.getSurface(), SURFACE); assertEquals(VOLS.getParameterCount(), TIME.size()); assertEquals(VOLS.findData(CURVE.getName()).get(), CURVE); assertEquals(VOLS.findData(SURFACE.getName()).get(), SURFACE); assertFalse(VOLS.findData(CurveName.of("foo")).isPresent()); int nParams = VOLS.getParameterCount(); double newValue = 152d; for (int i = 0; i < nParams; ++i) { assertEquals(VOLS.getParameter(i), SURFACE.getParameter(i)); assertEquals(VOLS.getParameterMetadata(i), SURFACE.getParameterMetadata(i)); assertEquals(VOLS.withParameter(i, newValue), ShiftedBlackIborCapletFloorletExpiryStrikeVolatilities.of( GBP_LIBOR_3M, VAL_DATE_TIME, SURFACE.withParameter(i, newValue), CURVE)); assertEquals(VOLS.withPerturbation((n, v, m) -> 2d * v), ShiftedBlackIborCapletFloorletExpiryStrikeVolatilities.of( GBP_LIBOR_3M, VAL_DATE_TIME, SURFACE.withPerturbation((n, v, m) -> 2d * v), CURVE)); } }
/** * Creates a constant curve with a specific value. * * @param name the curve name * @param yValue the constant y-value * @return the curve */ public static ConstantCurve of(String name, double yValue) { return of(CurveName.of(name), yValue); }
@Override public ConstantCurve build() { return new ConstantCurve( metadata, yValue); }
public void test_of_CurveName() { ConstantCurve test = ConstantCurve.of(CURVE_NAME, VALUE); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getYValue()).isEqualTo(VALUE); assertThat(test.getParameterCount()).isEqualTo(1); assertThat(test.getParameter(0)).isEqualTo(VALUE); assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty()); assertThat(test.withParameter(0, 2d)).isEqualTo(ConstantCurve.of(NAME, 2d)); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.withMetadata(METADATA2)).isEqualTo(ConstantCurve.of(METADATA2, VALUE)); }
private Object readResolve() { return new ConstantCurve(metadata, yValue); }
public void test_of_CurveMetadata() { ConstantCurve test = ConstantCurve.of(METADATA, VALUE); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getYValue()).isEqualTo(VALUE); assertThat(test.getParameterCount()).isEqualTo(1); assertThat(test.getParameter(0)).isEqualTo(VALUE); assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty()); assertThat(test.withParameter(0, 2d)).isEqualTo(ConstantCurve.of(NAME, 2d)); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.withMetadata(METADATA2)).isEqualTo(ConstantCurve.of(METADATA2, VALUE)); }
public void test_serialization() { ConstantCurve test = ConstantCurve.of(CURVE_NAME, VALUE); assertSerialization(test); }
/** * Creates a constant curve with a specific value. * * @param name the curve name * @param yValue the constant y-value * @return the curve */ public static ConstantCurve of(CurveName name, double yValue) { return new ConstantCurve(DefaultCurveMetadata.of(name), yValue); }
public void test_ofFixedBeta() { SabrIborCapletFloorletVolatilityBootstrapDefinition test = SabrIborCapletFloorletVolatilityBootstrapDefinition.ofFixedBeta( NAME, USD_LIBOR_3M, ACT_ACT_ISDA, 0.5, LINEAR, FLAT, FLAT, SabrVolatilityFormula.hagan()); assertEquals(test.getDayCount(), ACT_ACT_ISDA); assertEquals(test.getIndex(), USD_LIBOR_3M); assertEquals(test.getInterpolator(), LINEAR); assertEquals(test.getExtrapolatorLeft(), FLAT); assertEquals(test.getExtrapolatorRight(), FLAT); assertEquals(test.getName(), NAME); assertEquals(test.getBetaCurve().get(), ConstantCurve.of(Curves.sabrParameterByExpiry(NAME.getName() + "-Beta", ACT_ACT_ISDA, SABR_BETA), 0.5)); assertFalse(test.getRhoCurve().isPresent()); assertEquals(test.getSabrVolatilityFormula(), SabrVolatilityFormula.hagan()); assertEquals(test.getShiftCurve(), ConstantCurve.of("Zero shift", 0d)); }
@Override public ConstantCurve withParameter(int parameterIndex, double newValue) { Preconditions.checkElementIndex(parameterIndex, 1); return new ConstantCurve(metadata, newValue); }
public void test_ofFixedRho() { SabrIborCapletFloorletVolatilityBootstrapDefinition test = SabrIborCapletFloorletVolatilityBootstrapDefinition.ofFixedRho( NAME, USD_LIBOR_3M, ACT_ACT_ISDA, 0.5, LINEAR, FLAT, FLAT, SabrVolatilityFormula.hagan()); assertEquals(test.getDayCount(), ACT_ACT_ISDA); assertEquals(test.getIndex(), USD_LIBOR_3M); assertEquals(test.getInterpolator(), LINEAR); assertEquals(test.getExtrapolatorLeft(), FLAT); assertEquals(test.getExtrapolatorRight(), FLAT); assertEquals(test.getName(), NAME); assertEquals(test.getRhoCurve().get(), ConstantCurve.of(Curves.sabrParameterByExpiry(NAME.getName() + "-Rho", ACT_ACT_ISDA, SABR_RHO), 0.5)); assertFalse(test.getBetaCurve().isPresent()); assertEquals(test.getSabrVolatilityFormula(), SabrVolatilityFormula.hagan()); assertEquals(test.getShiftCurve(), ConstantCurve.of("Zero shift", 0d)); }