@Override public double zValue(double x, double y) { return deformationFunction.apply(DoublesPair.of(x, y)).getValue(); }
/** * Parses the quantity. * * @param row the CSV row to parse * @return the quantity, long first, short second * @throws IllegalArgumentException if the row cannot be parsed */ public static DoublesPair parseQuantity(CsvRow row) { Optional<Double> quantityOpt = row.findValue(QUANTITY_FIELD).map(s -> LoaderUtils.parseDouble(s)); if (quantityOpt.isPresent()) { double quantity = quantityOpt.get(); return DoublesPair.of(quantity >= 0 ? quantity : 0, quantity >= 0 ? 0 : -quantity); } Optional<Double> longQuantityOpt = row.findValue(LONG_QUANTITY_FIELD).map(s -> LoaderUtils.parseDouble(s)); Optional<Double> shortQuantityOpt = row.findValue(SHORT_QUANTITY_FIELD).map(s -> LoaderUtils.parseDouble(s)); if (!longQuantityOpt.isPresent() && !shortQuantityOpt.isPresent()) { throw new IllegalArgumentException( Messages.format("Security must contain a quantity column, either '{}' or '{}' and '{}'", QUANTITY_FIELD, LONG_QUANTITY_FIELD, SHORT_QUANTITY_FIELD)); } double longQuantity = ArgChecker.notNegative(longQuantityOpt.orElse(0d), LONG_QUANTITY_FIELD); double shortQuantity = ArgChecker.notNegative(shortQuantityOpt.orElse(0d), SHORT_QUANTITY_FIELD); return DoublesPair.of(longQuantity, shortQuantity); }
public void coverage() { DoublesPair test = DoublesPair.of(1d, 2.0d); TestHelper.coverImmutableBean(test); }
public void test_jodaConvert() { assertJodaConvert(DoublesPair.class, DoublesPair.of(1d, 1.7d)); }
public void test_serialization() { assertSerialization(DoublesPair.of(1d, 1.7d)); }
@Override public UnitParameterSensitivity zValueParameterSensitivity(double x, double y) { return getMetadata().getParameterMetadata().isPresent() ? UnitParameterSensitivity.of( getMetadata().getSurfaceName(), getMetadata().getParameterMetadata().get(), deformationFunction.apply(DoublesPair.of(x, y)).getDerivatives()) : UnitParameterSensitivity.of( getMetadata().getSurfaceName(), deformationFunction.apply(DoublesPair.of(x, y)).getDerivatives()); }
@Test(dataProvider = "factory") public void test_sizeElements(double first, double second) { DoublesPair test = DoublesPair.of(first, second); assertEquals(test.size(), 2); assertEquals(test.elements(), ImmutableList.of(first, second)); }
@Test(dataProvider = "factory") public void test_of_getters(double first, double second) { DoublesPair test = DoublesPair.of(first, second); assertEquals(test.getFirst(), first, TOLERANCE); assertEquals(test.getSecond(), second, TOLERANCE); }
@Test(dataProvider = "factory") public void test_toString(double first, double second) { DoublesPair test = DoublesPair.of(first, second); String str = "[" + first + ", " + second + "]"; assertEquals(test.toString(), str); assertEquals(DoublesPair.parse(str), test); }
@Test(dataProvider = "factory") public void test_toPair(double first, double second) { DoublesPair test = DoublesPair.of(first, second); assertEquals(test.toPair(), Pair.of(first, second)); }
public void test_equals_bad() { DoublesPair a = DoublesPair.of(1.1d, 1.7d); assertEquals(a.equals(null), false); assertEquals(a.equals(ANOTHER_TYPE), false); Object unrelatedPair = Pair.of(Double.valueOf(1.1d), Double.valueOf(1.7d)); assertEquals(a.equals(unrelatedPair), false); }
public void test_compareTo() { DoublesPair p12 = DoublesPair.of(1d, 2d); DoublesPair p13 = DoublesPair.of(1d, 3d); DoublesPair p21 = DoublesPair.of(2d, 1d); assertTrue(p12.compareTo(p12) == 0); assertTrue(p12.compareTo(p13) < 0); assertTrue(p12.compareTo(p21) < 0); assertTrue(p13.compareTo(p12) > 0); assertTrue(p13.compareTo(p13) == 0); assertTrue(p13.compareTo(p21) < 0); assertTrue(p21.compareTo(p12) > 0); assertTrue(p21.compareTo(p13) > 0); assertTrue(p21.compareTo(p21) == 0); }
public void test_lookup_byPair() { ConstantSurface test = ConstantSurface.of(SURFACE_NAME, VALUE); assertThat(test.zValue(DoublesPair.of(0d, 0d))).isEqualTo(VALUE); assertThat(test.zValue(DoublesPair.of(-10d, 10d))).isEqualTo(VALUE); assertThat(test.zValue(DoublesPair.of(100d, -100d))).isEqualTo(VALUE); assertThat(test.zValueParameterSensitivity(DoublesPair.of(0d, 0d)).getSensitivity().get(0)).isEqualTo(1d); assertThat(test.zValueParameterSensitivity(DoublesPair.of(-10d, 10d)).getSensitivity().get(0)).isEqualTo(1d); assertThat(test.zValueParameterSensitivity(DoublesPair.of(100d, -100d)).getSensitivity().get(0)).isEqualTo(1d); }
public void test_equals() { DoublesPair a = DoublesPair.of(1d, 2.0d); DoublesPair a2 = DoublesPair.of(1d, 2.0d); DoublesPair b = DoublesPair.of(1d, 3.0d); DoublesPair c = DoublesPair.of(2d, 2.0d); DoublesPair d = DoublesPair.of(2d, 3.0d); assertEquals(a.equals(a), true); assertEquals(a.equals(b), false); assertEquals(a.equals(c), false); assertEquals(a.equals(d), false); assertEquals(a.equals(a2), true); assertEquals(b.equals(a), false); assertEquals(b.equals(b), true); assertEquals(b.equals(c), false); assertEquals(b.equals(d), false); assertEquals(c.equals(a), false); assertEquals(c.equals(b), false); assertEquals(c.equals(c), true); assertEquals(c.equals(d), false); assertEquals(d.equals(a), false); assertEquals(d.equals(b), false); assertEquals(d.equals(c), false); assertEquals(d.equals(d), true); }
private DoublesPair weights(IborIndexObservation obs1, IborIndexObservation obs2, LocalDate endDate) { // weights: linear interpolation on the number of days between the fixing date and the maturity dates of the // actual coupons on one side and the maturity dates of the underlying deposit on the other side. long fixingEpochDay = obs1.getFixingDate().toEpochDay(); double days1 = obs1.getMaturityDate().toEpochDay() - fixingEpochDay; double days2 = obs2.getMaturityDate().toEpochDay() - fixingEpochDay; double daysN = endDate.toEpochDay() - fixingEpochDay; double weight1 = (days2 - daysN) / (days2 - days1); double weight2 = (daysN - days1) / (days2 - days1); return DoublesPair.of(weight1, weight2); }
public void test_zValue() { double tol = 1.0e-14; double x = 2.5; double y = 1.44; DeformedSurface test = DeformedSurface.of(METADATA, SURFACE_ORG, FUNCTION); double computedValue1 = test.zValue(x, y); double computedValue2 = test.zValue(DoublesPair.of(x, y)); UnitParameterSensitivity computedSensi1 = test.zValueParameterSensitivity(x, y); UnitParameterSensitivity computedSensi2 = test.zValueParameterSensitivity(DoublesPair.of(x, y)); ValueDerivatives expected = FUNCTION.apply(DoublesPair.of(x, y)); assertEquals(computedValue1, expected.getValue()); assertEquals(computedValue2, expected.getValue()); assertTrue(DoubleArrayMath.fuzzyEquals( computedSensi1.getSensitivity().toArray(), expected.getDerivatives().toArray(), tol)); assertTrue(DoubleArrayMath.fuzzyEquals( computedSensi2.getSensitivity().toArray(), expected.getDerivatives().toArray(), tol)); }
double volDw = provDw.volatility(TEST_OPTION_EXPIRY[i], TEST_TENOR, TEST_STRIKE[i], TEST_FORWARD); double fd = 0.5 * (volUp - volDw) / eps; map.put(DoublesPair.of(TIME.get(j), STRIKE.get(j)), fd); SwaptionSurfaceExpiryStrikeParameterMetadata metadata = (SwaptionSurfaceExpiryStrikeParameterMetadata) list.get(i); double expected = map.get(DoublesPair.of(metadata.getYearFraction(), metadata.getStrike())); assertEquals(computed.get(i), expected, eps);
double volDw = provDw.volatility(TEST_OPTION_EXPIRY[i], TEST_TENOR, TEST_STRIKE[i], TEST_FORWARD[i]); double fd = 0.5 * (volUp - volDw) / eps; map.put(DoublesPair.of(TIME.get(j), SIMPLE_MONEYNESS.get(j)), fd); SwaptionSurfaceExpirySimpleMoneynessParameterMetadata metadata = (SwaptionSurfaceExpirySimpleMoneynessParameterMetadata) list.get(i); double expected = map.get(DoublesPair.of(metadata.getYearFraction(), metadata.getSimpleMoneyness())); assertEquals(computed.get(i), expected, eps);
double volDw = provDw.volatility(TEST_OPTION_EXPIRY[i], TEST_TENOR[i], TEST_STRIKE, TEST_FORWARD); double fd = 0.5 * (volUp - volDw) / eps; map.put(DoublesPair.of(TIME.get(j), TENOR.get(j)), fd); SwaptionSurfaceExpiryTenorParameterMetadata metadata = (SwaptionSurfaceExpiryTenorParameterMetadata) list.get(i); double expected = map.get(DoublesPair.of(metadata.getYearFraction(), metadata.getTenor())); assertEquals(computed.get(i), expected, eps);