Package com.opengamma.financial.analytics.fudgemsg

Source Code of com.opengamma.financial.analytics.fudgemsg.CurveResultBuildersTest

/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.fudgemsg;


import static org.testng.AssertJUnit.assertEquals;

import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.testng.annotations.Test;

import com.opengamma.analytics.financial.provider.curve.CurveBuildingBlock;
import com.opengamma.analytics.financial.provider.curve.CurveBuildingBlockBundle;
import com.opengamma.analytics.financial.provider.sensitivity.inflation.InflationSensitivity;
import com.opengamma.analytics.financial.provider.sensitivity.inflation.MultipleCurrencyInflationSensitivity;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.ForwardSensitivity;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MulticurveSensitivity;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MultipleCurrencyMulticurveSensitivity;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MultipleCurrencyParameterSensitivity;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.SimpleParameterSensitivity;
import com.opengamma.analytics.math.matrix.DoubleMatrix1D;
import com.opengamma.analytics.math.matrix.DoubleMatrix2D;
import com.opengamma.util.money.Currency;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.DoublesPair;
import com.opengamma.util.tuple.Pair;

/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class CurveResultBuildersTest extends AnalyticsTestBase {

  @Test
  public void testForwardSensitivity() {
    final ForwardSensitivity forwardSensitivity = new ForwardSensitivity(12., 13., 17., 25.);
    assertEquals(forwardSensitivity, cycleObject(ForwardSensitivity.class, forwardSensitivity));
  }

  @Test
  public void testMulticurveSensitivity() {
    final String name1 = "YC1";
    final String name2 = "YC2";
    final Map<String, List<DoublesPair>> yieldCurveSensitivities = new HashMap<>();
    yieldCurveSensitivities.put(name1, Arrays.asList(new DoublesPair(1., 2.), new DoublesPair(3.5, 6.8)));
    yieldCurveSensitivities.put(name2, Arrays.asList(new DoublesPair(11., 12.), new DoublesPair(13.5, 16.8), new DoublesPair(45., 12.)));
    final Map<String, List<ForwardSensitivity>> forwardCurveSensitivities = new HashMap<>();
    forwardCurveSensitivities.put(name1, Arrays.asList(new ForwardSensitivity(1, 5, 0.25, 10), new ForwardSensitivity(2, 3, 0.215, 20), new ForwardSensitivity(3, 9, 0.225, 30)));
    forwardCurveSensitivities.put(name2, Arrays.asList(new ForwardSensitivity(0.1, 4, 0.5, 10)));
    final MulticurveSensitivity sensitivities = MulticurveSensitivity.of(yieldCurveSensitivities, forwardCurveSensitivities);
    assertEquals(sensitivities, cycleObject(MulticurveSensitivity.class, sensitivities));
  }

  @Test
  public void testMultipleCurrencyMulticurveSensitivity() {
    final String name1 = "YC1";
    final String name2 = "YC2";
    final Map<String, List<DoublesPair>> yieldCurveSensitivities1 = new HashMap<>();
    yieldCurveSensitivities1.put(name1, Arrays.asList(new DoublesPair(1., 2.), new DoublesPair(3.5, 6.8)));
    yieldCurveSensitivities1.put(name2, Arrays.asList(new DoublesPair(11., 12.), new DoublesPair(13.5, 16.8), new DoublesPair(45., 12.)));
    final Map<String, List<ForwardSensitivity>> forwardCurveSensitivities1 = new HashMap<>();
    forwardCurveSensitivities1.put(name1, Arrays.asList(new ForwardSensitivity(1, 5, 0.25, 10), new ForwardSensitivity(2, 3, 0.215, 20), new ForwardSensitivity(3, 9, 0.225, 30)));
    forwardCurveSensitivities1.put(name2, Arrays.asList(new ForwardSensitivity(0.1, 4, 0.5, 10)));
    final MulticurveSensitivity sensitivities1 = MulticurveSensitivity.of(yieldCurveSensitivities1, forwardCurveSensitivities1);
    final String name3 = "YC3";
    final String name4 = "YC4";
    final Map<String, List<DoublesPair>> yieldCurveSensitivities2 = new HashMap<>();
    yieldCurveSensitivities2.put(name3, Arrays.asList(new DoublesPair(10., 20.)));
    yieldCurveSensitivities2.put(name4, Arrays.asList(new DoublesPair(110., 120.), new DoublesPair(13.51, 16.81), new DoublesPair(45.3, 12.3)));
    final Map<String, List<ForwardSensitivity>> forwardCurveSensitivities2 = new HashMap<>();
    forwardCurveSensitivities2.put(name3, Arrays.asList(new ForwardSensitivity(18, 58, 0.258, 108), new ForwardSensitivity(32, 92, 0.2252, 302)));
    forwardCurveSensitivities2.put(name4, Arrays.asList(new ForwardSensitivity(0.18, 48, 0.58, 18)));
    final MulticurveSensitivity sensitivities2 = MulticurveSensitivity.of(yieldCurveSensitivities2, forwardCurveSensitivities2);
    MultipleCurrencyMulticurveSensitivity sensitivities = new MultipleCurrencyMulticurveSensitivity();
    sensitivities = sensitivities.plus(Currency.AUD, sensitivities1);
    sensitivities = sensitivities.plus(Currency.CAD, sensitivities2);
    assertEquals(sensitivities, cycleObject(MultipleCurrencyMulticurveSensitivity.class, sensitivities));
  }

  @Test
  public void testSimpleParameterSensitivity() {
    final String name1 = "YC1";
    final String name2 = "YC2";
    final DoubleMatrix1D sensitivities1 = new DoubleMatrix1D(new double[] {1, 2, 4, 6, 7, 9, 12});
    final DoubleMatrix1D sensitivities2 = new DoubleMatrix1D(new double[] {89, 456, 234, 12});
    final LinkedHashMap<String, DoubleMatrix1D> sensitivities = new LinkedHashMap<>();
    sensitivities.put(name1, sensitivities1);
    sensitivities.put(name2, sensitivities2);
    final SimpleParameterSensitivity sps = new SimpleParameterSensitivity(sensitivities);
    assertEquals(sps, cycleObject(SimpleParameterSensitivity.class, sps));
  }

  @Test
  public void testMultipleCurrencyParameterSensitivity() {
    final String name1 = "YC1";
    final String name2 = "YC2";
    final DoubleMatrix1D sensitivities1 = new DoubleMatrix1D(new double[] {1, 2, 4, 6, 7, 9, 12});
    final DoubleMatrix1D sensitivities2 = new DoubleMatrix1D(new double[] {89, 456, 234, 12});
    final String name3 = "YC3";
    final String name4 = "YC4";
    final DoubleMatrix1D sensitivities3 = new DoubleMatrix1D(new double[] {11, 21, 41, 61, 17, 91, 112});
    final DoubleMatrix1D sensitivities4 = new DoubleMatrix1D(new double[] {891, 4561, 1234, 112});
    final LinkedHashMap<Pair<String, Currency>, DoubleMatrix1D> data = new LinkedHashMap<>();
    data.put(Pair.of(name1, Currency.AUD), sensitivities1);
    data.put(Pair.of(name2, Currency.EUR), sensitivities2);
    data.put(Pair.of(name3, Currency.USD), sensitivities3);
    data.put(Pair.of(name4, Currency.CAD), sensitivities4);
    final MultipleCurrencyParameterSensitivity sensitivities = new MultipleCurrencyParameterSensitivity(data);
    assertEquals(sensitivities, cycleObject(MultipleCurrencyParameterSensitivity.class, sensitivities));
  }

  @Test
  public void testCurveBuildingBlock() {
    final LinkedHashMap<String, Pair<Integer, Integer>> data = new LinkedHashMap<>();
    data.put("YC1", Pair.of(Integer.valueOf(0), Integer.valueOf(20)));
    data.put("YC2", Pair.of(Integer.valueOf(20), Integer.valueOf(30)));
    final CurveBuildingBlock curveBuildingBlock = new CurveBuildingBlock(data);
    assertEquals(curveBuildingBlock, cycleObject(CurveBuildingBlock.class, curveBuildingBlock));
  }

  @Test
  public void testCurveBuildingBlockBundle() {
    final LinkedHashMap<String, Pair<Integer, Integer>> data1 = new LinkedHashMap<>();
    data1.put("YC1", Pair.of(Integer.valueOf(0), Integer.valueOf(2)));
    data1.put("YC2", Pair.of(Integer.valueOf(2), Integer.valueOf(3)));
    final CurveBuildingBlock curveBuildingBlock1 = new CurveBuildingBlock(data1);
    final DoubleMatrix2D matrix1 = new DoubleMatrix2D(new double[][] {new double[] {1, 2, 3, 4}, new double[] {5, 6, 7, 8}});
    final LinkedHashMap<String, Pair<Integer, Integer>> data2 = new LinkedHashMap<>();
    data2.put("YC3", Pair.of(Integer.valueOf(0), Integer.valueOf(1)));
    data2.put("YC4", Pair.of(Integer.valueOf(1), Integer.valueOf(2)));
    final CurveBuildingBlock curveBuildingBlock2 = new CurveBuildingBlock(data2);
    final DoubleMatrix2D matrix2 = new DoubleMatrix2D(new double[][] {new double[] {9, 8, 7}, new double[] {6, 5, 4}});
    final LinkedHashMap<String, Pair<CurveBuildingBlock, DoubleMatrix2D>> data = new LinkedHashMap<>();
    data.put("B1", Pair.of(curveBuildingBlock1, matrix1));
    data.put("B2", Pair.of(curveBuildingBlock2, matrix2));
    final CurveBuildingBlockBundle cbbb = new CurveBuildingBlockBundle(data);
    assertEquals(cbbb, cycleObject(CurveBuildingBlockBundle.class, cbbb));
  }

  @Test
  public void testInflationSensitivity() {
    final String name1 = "YC1";
    final String name2 = "YC2";
    final Map<String, List<DoublesPair>> yieldCurveSensitivities = new HashMap<>();
    yieldCurveSensitivities.put(name1, Arrays.asList(new DoublesPair(1., 2.), new DoublesPair(3.5, 6.8)));
    yieldCurveSensitivities.put(name2, Arrays.asList(new DoublesPair(11., 12.), new DoublesPair(13.5, 16.8), new DoublesPair(45., 12.)));
    final Map<String, List<ForwardSensitivity>> forwardCurveSensitivities = new HashMap<>();
    forwardCurveSensitivities.put(name1, Arrays.asList(new ForwardSensitivity(1, 5, 0.25, 10), new ForwardSensitivity(2, 3, 0.215, 20), new ForwardSensitivity(3, 9, 0.225, 30)));
    forwardCurveSensitivities.put(name2, Arrays.asList(new ForwardSensitivity(0.1, 4, 0.5, 10)));
    final MulticurveSensitivity sensitivities = MulticurveSensitivity.of(yieldCurveSensitivities, forwardCurveSensitivities);
    final String name3 = "PC1";
    final String name4 = "PC2";
    final Map<String, List<DoublesPair>> priceCurveSensitivities = new HashMap<>();
    priceCurveSensitivities.put(name3, Arrays.asList(new DoublesPair(1.2, 2.3), new DoublesPair(3.4, 4.5)));
    priceCurveSensitivities.put(name4, Arrays.asList(new DoublesPair(9.8, 8.7), new DoublesPair(5.4, 3.2), new DoublesPair(2.33, 3.44)));
    final InflationSensitivity is = InflationSensitivity.of(sensitivities, priceCurveSensitivities);
    assertEquals(is, cycleObject(InflationSensitivity.class, is));
  }

  @Test
  public void testMultipleCurrencyInflationSensitivity() {
    final String name1 = "YC1";
    final String name2 = "YC2";
    final Map<String, List<DoublesPair>> yieldCurveSensitivities1 = new HashMap<>();
    yieldCurveSensitivities1.put(name1, Arrays.asList(new DoublesPair(1., 2.), new DoublesPair(3.5, 6.8)));
    yieldCurveSensitivities1.put(name2, Arrays.asList(new DoublesPair(11., 12.), new DoublesPair(13.5, 16.8), new DoublesPair(45., 12.)));
    final Map<String, List<ForwardSensitivity>> forwardCurveSensitivities1 = new HashMap<>();
    forwardCurveSensitivities1.put(name1, Arrays.asList(new ForwardSensitivity(1, 5, 0.25, 10), new ForwardSensitivity(2, 3, 0.215, 20), new ForwardSensitivity(3, 9, 0.225, 30)));
    forwardCurveSensitivities1.put(name2, Arrays.asList(new ForwardSensitivity(0.1, 4, 0.5, 10)));
    final MulticurveSensitivity sensitivities1 = MulticurveSensitivity.of(yieldCurveSensitivities1, forwardCurveSensitivities1);
    final Map<String, List<DoublesPair>> priceCurveSensitivities1 = new HashMap<>();
    priceCurveSensitivities1.put("PC1", Arrays.asList(new DoublesPair(1.2, 2.3), new DoublesPair(3.4, 4.5)));
    priceCurveSensitivities1.put("PC2", Arrays.asList(new DoublesPair(9.8, 8.7), new DoublesPair(5.4, 3.2), new DoublesPair(2.33, 3.44)));
    final InflationSensitivity is1 = InflationSensitivity.of(sensitivities1, priceCurveSensitivities1);
    final String name3 = "YC3";
    final String name4 = "YC4";
    final Map<String, List<DoublesPair>> yieldCurveSensitivities2 = new HashMap<>();
    yieldCurveSensitivities2.put(name3, Arrays.asList(new DoublesPair(10., 20.)));
    yieldCurveSensitivities2.put(name4, Arrays.asList(new DoublesPair(110., 120.), new DoublesPair(13.51, 16.81), new DoublesPair(45.3, 12.3)));
    final Map<String, List<ForwardSensitivity>> forwardCurveSensitivities2 = new HashMap<>();
    forwardCurveSensitivities2.put(name3, Arrays.asList(new ForwardSensitivity(18, 58, 0.258, 108), new ForwardSensitivity(32, 92, 0.2252, 302)));
    forwardCurveSensitivities2.put(name4, Arrays.asList(new ForwardSensitivity(0.18, 48, 0.58, 18)));
    final MulticurveSensitivity sensitivities2 = MulticurveSensitivity.of(yieldCurveSensitivities2, forwardCurveSensitivities2);
    final Map<String, List<DoublesPair>> priceCurveSensitivities2 = new HashMap<>();
    priceCurveSensitivities1.put("PC3", Arrays.asList(new DoublesPair(1.21, 2.31), new DoublesPair(3.41, 4.51)));
    priceCurveSensitivities1.put("PC4", Arrays.asList(new DoublesPair(9.81, 8.71), new DoublesPair(5.41, 3.21), new DoublesPair(2.331, 3.441)));
    final InflationSensitivity is2 = InflationSensitivity.of(sensitivities2, priceCurveSensitivities2);
    MultipleCurrencyInflationSensitivity sensitivities = new MultipleCurrencyInflationSensitivity();
    sensitivities = sensitivities.plus(Currency.AUD, is1);
    sensitivities = sensitivities.plus(Currency.CAD, is2);
    assertEquals(sensitivities, cycleObject(MultipleCurrencyInflationSensitivity.class, sensitivities));
  }
}
TOP

Related Classes of com.opengamma.financial.analytics.fudgemsg.CurveResultBuildersTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.