/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.tutorial.analysis.inflation;
import java.io.File;
import org.testng.annotations.Test;
import org.threeten.bp.ZonedDateTime;
import org.threeten.bp.temporal.TemporalAdjusters;
import com.opengamma.analytics.financial.instrument.index.GeneratorSwapFixedInflationMaster;
import com.opengamma.analytics.financial.instrument.index.GeneratorSwapFixedInflationZeroCoupon;
import com.opengamma.analytics.financial.instrument.index.IndexPrice;
import com.opengamma.analytics.financial.interestrate.datasets.StandardDataSetsInflationUSD;
import com.opengamma.analytics.financial.provider.curve.CurveBuildingBlockBundle;
import com.opengamma.analytics.financial.provider.curve.CurveCalibrationTestsUtils;
import com.opengamma.analytics.financial.provider.description.inflation.InflationProviderDiscount;
import com.opengamma.analytics.util.export.ExportUtils;
import com.opengamma.util.money.Currency;
import com.opengamma.util.time.DateUtils;
import com.opengamma.util.tuple.Pair;
/**
* Examples of risk analysis for inflation swaps in USD.
* Those examples can be used for tutorials.
*/
public class SwapZeroCouponInflationUsdAnalysis {
private static final ZonedDateTime CAlIBRATION_DATE = DateUtils.getUTCDate(2014, 10, 9);
private static final Currency USD = Currency.USD;
private static final GeneratorSwapFixedInflationZeroCoupon GENERATOR_ZCINFLATION_US =
GeneratorSwapFixedInflationMaster.getInstance().getGenerator("USCPI");
private static final IndexPrice US_CPI = GENERATOR_ZCINFLATION_US.getIndexPrice();
/** Curves */
private static final Pair<InflationProviderDiscount, CurveBuildingBlockBundle> MULTICURVE_INFL_1_PAIR =
StandardDataSetsInflationUSD.getCurvesUsdOisUsCpi(CAlIBRATION_DATE);
private static final InflationProviderDiscount MULTICURVE_INFL_1 = MULTICURVE_INFL_1_PAIR.getFirst();
private static final Pair<InflationProviderDiscount, CurveBuildingBlockBundle> MULTICURVE_INFL_2_PAIR =
StandardDataSetsInflationUSD.getCurvesUsdOisUsCpiSeasonality(CAlIBRATION_DATE);
private static final InflationProviderDiscount MULTICURVE_INFL_2 = MULTICURVE_INFL_2_PAIR.getFirst();
private static final Pair<InflationProviderDiscount, CurveBuildingBlockBundle> MULTICURVE_INFL_3_PAIR =
StandardDataSetsInflationUSD.getCurvesUsdOisUsCpiCurrent(CAlIBRATION_DATE);
private static final InflationProviderDiscount MULTICURVE_INFL_3 = MULTICURVE_INFL_3_PAIR.getFirst();
private static final Pair<InflationProviderDiscount, CurveBuildingBlockBundle> MULTICURVE_INFL_4_PAIR =
StandardDataSetsInflationUSD.getCurvesUsdOisUsCpiCurrentSeasonality(CAlIBRATION_DATE);
private static final InflationProviderDiscount MULTICURVE_INFL_4 = MULTICURVE_INFL_4_PAIR.getFirst();
@Test(enabled = true)
public void graphCurves() {
int nbYear = 30;
int nbStep = nbYear * 12;
ZonedDateTime calibrationMinusEom = CAlIBRATION_DATE.minusMonths(7).with(TemporalAdjusters.lastDayOfMonth());
CurveCalibrationTestsUtils.exportInflationCurve(CAlIBRATION_DATE, calibrationMinusEom, MULTICURVE_INFL_1, US_CPI,
new File("demo-test-inflation-1.csv"), nbStep, 1);
CurveCalibrationTestsUtils.exportInflationCurve(CAlIBRATION_DATE, calibrationMinusEom, MULTICURVE_INFL_2, US_CPI,
new File("demo-test-inflation-2.csv"), nbStep, 1);
CurveCalibrationTestsUtils.exportInflationCurve(CAlIBRATION_DATE, calibrationMinusEom, MULTICURVE_INFL_3, US_CPI,
new File("demo-test-inflation-3.csv"), nbStep, 1);
CurveCalibrationTestsUtils.exportInflationCurve(CAlIBRATION_DATE, calibrationMinusEom, MULTICURVE_INFL_4, US_CPI,
new File("demo-test-inflation-4.csv"), nbStep, 1);
}
@Test(enabled = true)
public void exportCurves() {
ExportUtils.exportInflationProviderDiscount(MULTICURVE_INFL_1, "infl_1.csv");
}
}