/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.timeseries.util; import org.testng.annotations.Test; import org.threeten.bp.LocalDate; import com.opengamma.timeseries.date.DateDoubleTimeSeries; import com.opengamma.timeseries.date.localdate.ImmutableLocalDateDoubleTimeSeries; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class TimeSeriesOperatorTest { @Test public void testWeightedVol() { DateDoubleTimeSeries<?> priceSeries = getTestPriceSeries(); TimeSeriesWeightedVolatilityOperator weightedVolOperator = TimeSeriesWeightedVolatilityOperator.relative(0.94); DateDoubleTimeSeries<?> weightedVolSeries = weightedVolOperator.evaluate(priceSeries); DateDoubleTimeSeries<?> expectedWeightedVolSeries = ImmutableLocalDateDoubleTimeSeries.of(new LocalDate[] {ld(2), ld(3), ld(4), ld(5), ld(6), ld(7), ld(8), ld(9), ld(10)}, new double[] {0.010840108, 0.012469726, 0.012089848, 0.011794118, 0.011732656, 0.012375053, 0.013438035, 0.013028659, 0.013433833}); TimeSeriesDataTestUtils.testCloseEquals(expectedWeightedVolSeries, weightedVolSeries, 0.000000001); } @Test public void testRelativeVolatilityWeighting() { DateDoubleTimeSeries<?> priceSeries = getTestPriceSeries(); TimeSeriesWeightedVolatilityOperator weightedVolOperator = TimeSeriesWeightedVolatilityOperator.relative(0.94); DateDoubleTimeSeries<?> weightedVolSeries = weightedVolOperator.evaluate(priceSeries); TimeSeriesRelativeWeightedDifferenceOperator relativeWeightedDifferenceOperator = new TimeSeriesRelativeWeightedDifferenceOperator(); DateDoubleTimeSeries<?> relativeWeightedDifferenceSeries = relativeWeightedDifferenceOperator.evaluate(priceSeries, weightedVolSeries); DateDoubleTimeSeries<?> expectedRelativeWeightedDifferenceSeries = ImmutableLocalDateDoubleTimeSeries.of(new LocalDate[] {ld(2), ld(3), ld(4), ld(5), ld(6), ld(7), ld(8), ld(9), ld(10)}, new double[] {-9.914168489, 21.546315757, 0, -4.556112623, 9.159959999, 16.283363544, -18.994057616, 0, 14}); TimeSeriesDataTestUtils.testCloseEquals(expectedRelativeWeightedDifferenceSeries, relativeWeightedDifferenceSeries, 0.000000001); } private static DateDoubleTimeSeries<?> getTestPriceSeries() { DateDoubleTimeSeries<?> returnSeries = ImmutableLocalDateDoubleTimeSeries.of(new LocalDate[] {ld(1), ld(2), ld(3), ld(4), ld(5), ld(6), ld(7), ld(8), ld(9), ld(10)}, new double[] {738, 730, 750, 750, 746, 754, 769, 750, 750, 764}); return returnSeries; } private static LocalDate ld(long day) { return LocalDate.ofEpochDay(day); } }