Package com.opengamma.analytics.financial.credit.underlyingpool

Source Code of com.opengamma.analytics.financial.credit.underlyingpool.UnderlyingPoolDummyPool

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

import com.opengamma.analytics.financial.credit.CreditSpreadTenors;
import com.opengamma.analytics.financial.credit.DebtSeniority;
import com.opengamma.analytics.financial.credit.RestructuringClause;
import com.opengamma.analytics.financial.credit.obligor.CreditRating;
import com.opengamma.analytics.financial.credit.obligor.CreditRatingFitch;
import com.opengamma.analytics.financial.credit.obligor.CreditRatingMoodys;
import com.opengamma.analytics.financial.credit.obligor.CreditRatingStandardAndPoors;
import com.opengamma.analytics.financial.credit.obligor.Region;
import com.opengamma.analytics.financial.credit.obligor.Sector;
import com.opengamma.analytics.financial.credit.obligor.definition.Obligor;
import com.opengamma.analytics.financial.credit.underlyingpool.definition.UnderlyingPool;
import com.opengamma.util.money.Currency;

/**
* Dummy pool of obligors used for testing purposes
*/
public class UnderlyingPoolDummyPool {

  //--------------------------------------------------------------------------------------------------------------------------------------------------

  // TODO :

  // --------------------------------------------------------------------------------------------------------------------------------------------------

  // Flag to control if any test results are output to the console
  private static final boolean outputResults = false;

  // --------------------------------------------------------------------------------------------------------------------------------------------------

  // Define the composition of the underlying pool

  private static final String poolName = "Test_1";

  private static final int numberOfObligors = 5;
  private static final int numberOfTenors = 4;

  private static final Obligor[] obligors = new Obligor[numberOfObligors];

  private static final double[] notionals = new double[numberOfObligors];
  private static final double[] coupons = new double[numberOfObligors];
  private static final double[] recoveryRates = new double[numberOfObligors];
  private static final double[] obligorWeights = new double[numberOfObligors];

  private static final Currency[] currency = new Currency[numberOfObligors];
  private static final DebtSeniority[] debtSeniority = new DebtSeniority[numberOfObligors];
  private static final RestructuringClause[] restructuringClause = new RestructuringClause[numberOfObligors];

  private static final double[] obligorNotionals = {10000000.0, 10000000.0, 10000000.0, 5000000.0, 12000000.0 };
  private static final double[] obligorCoupons = {100.0, 100.0, 100.0, 500.0, 25.0 };
  private static final double[] obligorRecoveryRates = {0.36, 0.40, 0.25, 0.76, 0.15 };
  private static final double[] obligorIndexWeights = {1.0 / numberOfObligors, 1.0 / numberOfObligors, 1.0 / numberOfObligors, 1.0 / numberOfObligors, 1.0 / numberOfObligors };

  private static final Currency[] obligorCurrencies = {Currency.USD, Currency.USD, Currency.EUR, Currency.EUR, Currency.JPY };
  private static final DebtSeniority[] obligorDebtSeniorities = {DebtSeniority.SENIOR, DebtSeniority.SENIOR, DebtSeniority.SENIOR, DebtSeniority.SUBORDINATED, DebtSeniority.SUBORDINATED };
  private static final RestructuringClause[] obligorRestructuringClauses = {RestructuringClause.NORE, RestructuringClause.NORE, RestructuringClause.MODRE, RestructuringClause.MODRE,
      RestructuringClause.MODMODRE };

  private static final CreditSpreadTenors[] obligorCreditSpreadTenors = {CreditSpreadTenors._3Y, CreditSpreadTenors._5Y, CreditSpreadTenors._7Y, CreditSpreadTenors._10Y };

  private static final String[] obligorTickers = {"MSFT", "IBM", "BT", "BARC", "NOM" };
  private static final String[] obligorShortName = {"Microsoft", "International Business Machines", "British Telecom", "Barclays", "Nomura" };
  private static final String[] obligorREDCode = {"ABC123", "XYZ321", "123ABC", "XXX999", "AAA111" };

  private static final CreditRating[] obligorCompositeRating = {CreditRating.AA, CreditRating.AA, CreditRating.AA, CreditRating.AA, CreditRating.AA };
  private static final CreditRating[] obligorImpliedRating = {CreditRating.AA, CreditRating.AA, CreditRating.AA, CreditRating.AA, CreditRating.AA };
  private static final CreditRatingMoodys[] obligorCreditRatingMoodys = {CreditRatingMoodys.AA, CreditRatingMoodys.AA, CreditRatingMoodys.AA, CreditRatingMoodys.AA, CreditRatingMoodys.AA };
  private static final CreditRatingStandardAndPoors[] obligorCreditRatingStandardAndPoors = {CreditRatingStandardAndPoors.AA, CreditRatingStandardAndPoors.AA, CreditRatingStandardAndPoors.AA,
      CreditRatingStandardAndPoors.AA, CreditRatingStandardAndPoors.AA };
  private static final CreditRatingFitch[] obligorCreditRatingFitch = {CreditRatingFitch.AA, CreditRatingFitch.AA, CreditRatingFitch.AA, CreditRatingFitch.AA, CreditRatingFitch.AA };

  private static final boolean[] obligorHasDefaulted = {false, false, false, false, false };

  private static final Sector[] obligorSector = {Sector.INDUSTRIALS, Sector.INDUSTRIALS, Sector.INDUSTRIALS, Sector.FINANCIALS, Sector.FINANCIALS };
  private static final Region[] obligorRegion = {Region.NORTHAMERICA, Region.NORTHAMERICA, Region.EUROPE, Region.EUROPE, Region.ASIA };
  private static final String[] obligorCountry = {"United States", "United States", "United Kingdom", "United Kingdom", "Japan" };

  // --------------------------------------------------------------------------------------------------------------------------------------------------

  //Initialise the obligors in the pool
  private static void initialiseObligorsInPool() {

    // Loop over each of the obligors in the pool
    for (int i = 0; i < numberOfObligors; i++) {

      // Build obligor i
      final Obligor obligor = new Obligor(
          obligorTickers[i],
          obligorShortName[i],
          obligorREDCode[i],
          obligorCompositeRating[i],
          obligorImpliedRating[i],
          obligorCreditRatingMoodys[i],
          obligorCreditRatingStandardAndPoors[i],
          obligorCreditRatingFitch[i],
          obligorHasDefaulted[i],
          obligorSector[i],
          obligorRegion[i],
          obligorCountry[i]);

      // Assign obligor i
      obligors[i] = obligor;

      // Assign the currency of obligor i
      currency[i] = obligorCurrencies[i];

      // Assign the debt seniority of obligor i
      debtSeniority[i] = obligorDebtSeniorities[i];

      // Assign the restructuring clause of obligor i
      restructuringClause[i] = obligorRestructuringClauses[i];

      // Assign the notional amount for obligor i
      notionals[i] = obligorNotionals[i];

      // Assign the coupon for obligor i
      coupons[i] = obligorCoupons[i];

      // Assign the recovery rate for obligor i
      recoveryRates[i] = obligorRecoveryRates[i];

      // Assign the weight of obligor i in the index
      obligorWeights[i] = obligorIndexWeights[i];
    }
  }

  // --------------------------------------------------------------------------------------------------------------------------------------------------

  // Assign the credit spread tenors
  public static final CreditSpreadTenors[] assignCreditSpreadTenors() {

    CreditSpreadTenors[] creditSpreadTenors = new CreditSpreadTenors[numberOfTenors];

    for (int m = 0; m < numberOfTenors; m++) {
      creditSpreadTenors[m] = obligorCreditSpreadTenors[m];
    }

    return creditSpreadTenors;
  }

  // --------------------------------------------------------------------------------------------------------------------------------------------------

  // Assign the credit spread term structures for each obligor in the underlying pool
  public static final double[][] assignCreditSpreadTermStructures() {

    double[][] spreadTermStructures = new double[numberOfObligors][numberOfTenors];

    for (int i = 0; i < numberOfObligors; i++) {
      for (int j = 0; j < numberOfTenors; j++) {
        spreadTermStructures[i][j] = (j + 1) * 100.0 + (i + 1) * 100.0;
      }
    }

    return spreadTermStructures;
  }

  // --------------------------------------------------------------------------------------------------------------------------------------------------

  // Build the underlying pool
  public static final UnderlyingPool constructPool() {

    // Initialise the obligors in the pool
    initialiseObligorsInPool();

    // Call the UnderlyingPool constructor
    final UnderlyingPool underlyingPool = new UnderlyingPool(
        poolName,
        obligors,
        currency,
        debtSeniority,
        restructuringClause,
        notionals,
        coupons,
        recoveryRates,
        obligorWeights);

    return underlyingPool;
  }

  // --------------------------------------------------------------------------------------------------------------------------------------------------
}
TOP

Related Classes of com.opengamma.analytics.financial.credit.underlyingpool.UnderlyingPoolDummyPool

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.