/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.var.parametric; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import java.util.HashMap; import java.util.Map; import org.testng.annotations.Test; import com.opengamma.analytics.math.matrix.ColtMatrixAlgebra; import com.opengamma.analytics.math.matrix.DoubleMatrix1D; import com.opengamma.analytics.math.matrix.DoubleMatrix2D; import com.opengamma.analytics.math.matrix.Matrix; import com.opengamma.analytics.math.matrix.MatrixAlgebra; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class DeltaGammaCovarianceMatrixStandardDeviationCalculatorTest { private static final MatrixAlgebra ALGEBRA = new ColtMatrixAlgebra(); private static final DeltaGammaCovarianceMatrixStandardDeviationCalculator F = new DeltaGammaCovarianceMatrixStandardDeviationCalculator(ALGEBRA); private static final DoubleMatrix1D DELTA_VECTOR = new DoubleMatrix1D(new double[] {1, 5}); private static final DoubleMatrix2D GAMMA_MATRIX = new DoubleMatrix2D(new double[][] {new double[] {25, -7.5}, new double[] {-7.5, 125}}); private static final DoubleMatrix2D COVARIANCE_MATRIX = new DoubleMatrix2D(new double[][] {new double[] {0.0036, -0.0006}, new double[] {-0.0006, 0.0016}}); private static final Map<Integer, Matrix<?>> SENSITIVITIES = new HashMap<>(); private static final Map<Integer, DoubleMatrix2D> COVARIANCES = new HashMap<>(); static { SENSITIVITIES.put(1, DELTA_VECTOR); SENSITIVITIES.put(2, GAMMA_MATRIX); COVARIANCES.put(1, COVARIANCE_MATRIX); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull() { new DeltaGammaCovarianceMatrixStandardDeviationCalculator(null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNullData() { F.evaluate((Map<Integer, ParametricVaRDataBundle>) null); } @Test public void testEqualsAndHashCode() { final DeltaGammaCovarianceMatrixStandardDeviationCalculator f1 = new DeltaGammaCovarianceMatrixStandardDeviationCalculator(ALGEBRA); final DeltaGammaCovarianceMatrixStandardDeviationCalculator f2 = new DeltaGammaCovarianceMatrixStandardDeviationCalculator(new ColtMatrixAlgebra()); assertEquals(f1, F); assertEquals(f1.hashCode(), F.hashCode()); assertFalse(f1.equals(f2)); } @Test public void test() { final ParametricVaRDataBundle deltaData = new ParametricVaRDataBundle(DELTA_VECTOR, COVARIANCE_MATRIX, 1); final ParametricVaRDataBundle gammaData = new ParametricVaRDataBundle(GAMMA_MATRIX, COVARIANCE_MATRIX, 2); Map<Integer, ParametricVaRDataBundle> m = new HashMap<>(); m.put(1, deltaData); assertEquals(F.evaluate(m), Math.sqrt(0.0376), 1e-4); m.put(2, gammaData); assertEquals(F.evaluate(m), 0.256, 1e-3); m = new HashMap<>(); m.put(2, gammaData); assertEquals(F.evaluate(m), Math.sqrt(0.065536 - 0.0376), 1e-3); } }