/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.provider.description;
import static com.opengamma.util.money.Currency.EUR;
import static com.opengamma.util.money.Currency.GBP;
import static com.opengamma.util.money.Currency.USD;
import static com.opengamma.util.money.Currency.JPY;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.Sets;
import com.opengamma.analytics.financial.instrument.index.IborIndex;
import com.opengamma.analytics.financial.instrument.index.IndexIborMaster;
import com.opengamma.analytics.financial.legalentity.CreditRating;
import com.opengamma.analytics.financial.legalentity.LegalEntity;
import com.opengamma.analytics.financial.legalentity.LegalEntityCombiningFilter;
import com.opengamma.analytics.financial.legalentity.LegalEntityCreditRatings;
import com.opengamma.analytics.financial.legalentity.LegalEntityFilter;
import com.opengamma.analytics.financial.legalentity.LegalEntityRegion;
import com.opengamma.analytics.financial.legalentity.LegalEntityShortName;
import com.opengamma.analytics.financial.legalentity.Region;
import com.opengamma.analytics.financial.legalentity.Sector;
import com.opengamma.analytics.financial.model.interestrate.curve.YieldAndDiscountCurve;
import com.opengamma.analytics.financial.model.interestrate.curve.YieldCurve;
import com.opengamma.analytics.financial.provider.description.interestrate.IssuerProviderDiscount;
import com.opengamma.analytics.financial.provider.description.interestrate.MulticurveProviderDiscount;
import com.opengamma.analytics.math.curve.ConstantDoublesCurve;
import com.opengamma.analytics.math.curve.InterpolatedDoublesCurve;
import com.opengamma.analytics.math.interpolation.CombinedInterpolatorExtrapolatorFactory;
import com.opengamma.analytics.math.interpolation.Interpolator1D;
import com.opengamma.analytics.math.interpolation.Interpolator1DFactory;
import com.opengamma.util.i18n.Country;
import com.opengamma.util.money.Currency;
import com.opengamma.util.tuple.Pair;
import com.opengamma.util.tuple.Pairs;
/**
* Sets of market data used in tests. With issuers.
*/
public class IssuerProviderDiscountDataSets {
/** A linear interpolator with flat extrapolation */
private static final Interpolator1D LINEAR_FLAT = CombinedInterpolatorExtrapolatorFactory.getInterpolator(
Interpolator1DFactory.LINEAR, Interpolator1DFactory.FLAT_EXTRAPOLATOR, Interpolator1DFactory.FLAT_EXTRAPOLATOR);
/** Australian government issuer name */
private static final String AUS_NAME = "AUSTRALIAN GOVT";
/** Belgian government issuer name */
private static final String BEL_NAME = "BELGIUM GOVT";
/** German government issuer name */
private static final String GER_NAME = "GERMANY GOVT";
/** ITALY government issuer name */
private static final String IT_NAME = "IT GOVT";
/** UK government issuer name */
private static final String UK_NAME = "UK GOVT";
/** US government issuer name */
private static final String US_NAME = "US GOVT";
/** US government issuer name */
private static final String JP_NAME = "JP GOVT";
/** US government legal entity */
private static final LegalEntity AUS_GOVT = new LegalEntity(AUS_NAME, AUS_NAME, Sets.newHashSet(CreditRating.of("AAA", "S&P", true)), Sector.of("Government"),
Region.of("Australia", Country.AU, Currency.AUD));
/** US government legal entity */
private static final LegalEntity US_GOVT = new LegalEntity(US_NAME, US_NAME, Sets.newHashSet(CreditRating.of("AA", "S&P", true)), Sector.of("Government"), Region.of("United States", Country.US,
Currency.USD));
/** Belgian government legal entity */
private static final LegalEntity BEL_GOVT = new LegalEntity(BEL_NAME, BEL_NAME, Sets.newHashSet(CreditRating.of("A", "S&P", true)), Sector.of("Government"), Region.of("Belgium", Country.BE,
Currency.EUR));
/** German government legal entity */
private static final LegalEntity GER_GOVT = new LegalEntity(GER_NAME, GER_NAME, Sets.newHashSet(CreditRating.of("AAA", "S&P", true)), Sector.of("Government"), Region.of("Germany", Country.DE,
Currency.EUR));
/** UK government legal entity */
private static final LegalEntity UK_GOVT = new LegalEntity(UK_NAME, UK_NAME, Sets.newHashSet(CreditRating.of("B", "S&P", true)), Sector.of("Government"), Region.of("Great Britain", Country.GB,
Currency.GBP));
/** Italy government legal entity */
private static final LegalEntity IT_GOVT = new LegalEntity(IT_NAME, IT_NAME, Sets.newHashSet(CreditRating.of("B", "S&P", true)), Sector.of("Government"), Region.of("Italy", Country.IT,
Currency.EUR));
/** Japan government legal entity */
public static final LegalEntity JP_GOVT = new LegalEntity(JP_NAME, JP_NAME,
Sets.newHashSet(CreditRating.of("B", "S&P", true)), Sector.of("Government"), Region.of("Japan", Country.JP,
Currency.JPY));
private static final IndexIborMaster MASTER_IBOR_INDEX = IndexIborMaster.getInstance();
private static final IborIndex EURIBOR3M = MASTER_IBOR_INDEX.getIndex("EURIBOR3M");
private static final IborIndex USDLIBOR1M = MASTER_IBOR_INDEX.getIndex("USDLIBOR1M");
private static final double[] USD_DSC_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 5.0, 10.0 };
private static final double[] USD_DSC_RATE = new double[] {0.0120, 0.0120, 0.0120, 0.0140, 0.0140, 0.0140 };
private static final String USD_DSC_NAME = "USD Dsc";
private static final YieldAndDiscountCurve USD_DSC = new YieldCurve(USD_DSC_NAME, new InterpolatedDoublesCurve(USD_DSC_TIME, USD_DSC_RATE, LINEAR_FLAT, true, USD_DSC_NAME));
private static final double[] USD_FWD1_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0 };
private static final double[] USD_FWD1_RATE = new double[] {0.0150, 0.0125, 0.0150, 0.0175, 0.0175, 0.0190, 0.0200, 0.0210 };
private static final String USD_FWD1_NAME = "USD LIBOR 3M";
private static final YieldAndDiscountCurve USD_FWD1 = new YieldCurve(USD_FWD1_NAME, new InterpolatedDoublesCurve(USD_FWD1_TIME, USD_FWD1_RATE, LINEAR_FLAT, true, USD_FWD1_NAME));
private static final double[] EUR_DSC_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 5.0, 10.0 };
private static final double[] EUR_DSC_RATE = new double[] {0.0150, 0.0125, 0.0150, 0.0175, 0.0150, 0.0150 };
private static final String EUR_DSC_NAME = "EUR Dsc";
private static final YieldAndDiscountCurve EUR_DSC = new YieldCurve(EUR_DSC_NAME, new InterpolatedDoublesCurve(EUR_DSC_TIME, EUR_DSC_RATE, LINEAR_FLAT, true, EUR_DSC_NAME));
private static final double[] EUR_FWD3_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0 };
private static final double[] EUR_FWD3_RATE = new double[] {0.0150, 0.0125, 0.0150, 0.0175, 0.0175, 0.0190, 0.0200, 0.0210 };
private static final String EUR_FWD3_NAME = "EUR EURIBOR 3M";
private static final YieldAndDiscountCurve EUR_FWD3 = new YieldCurve(EUR_FWD3_NAME, new InterpolatedDoublesCurve(EUR_FWD3_TIME, EUR_FWD3_RATE, LINEAR_FLAT, true, EUR_FWD3_NAME));
private static final double[] GBP_DSC_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 5.0, 10.0 };
private static final double[] GBP_DSC_RATE = new double[] {0.0150, 0.0125, 0.0150, 0.0175, 0.0150, 0.0150 };
private static final String GBP_DSC_NAME = "GBP Dsc";
private static final YieldAndDiscountCurve GBP_DSC = new YieldCurve(GBP_DSC_NAME, new InterpolatedDoublesCurve(GBP_DSC_TIME, GBP_DSC_RATE, LINEAR_FLAT, true, GBP_DSC_NAME));
private static final double[] JPY_DSC_TIME =
new double[] {0.003, 0.25, 0.5, 1.0, 2.0, 5.0, 10.0};
private static final double[] JPY_DSC_RATE =
new double[] {0.0006, 0.0006, 0.0006, 0.0006, 0.0007, 0.0020, 0.0050 };
private static final String JPY_DSC_NAME = "JPY Dsc";
private static final YieldAndDiscountCurve JPY_DSC = new YieldCurve(JPY_DSC_NAME,
new InterpolatedDoublesCurve(JPY_DSC_TIME, JPY_DSC_RATE, LINEAR_FLAT, true, JPY_DSC_NAME));
private static final double[] USD_US_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 5.0, 10.0 };
private static final double[] USD_US_RATE = new double[] {0.0100, 0.0100, 0.0100, 0.0120, 0.0120, 0.0120 };
private static final String USD_US_CURVE_NAME = "USD " + US_NAME;
private static final YieldAndDiscountCurve US_USD_CURVE = new YieldCurve(USD_US_CURVE_NAME, new InterpolatedDoublesCurve(USD_US_TIME, USD_US_RATE, LINEAR_FLAT, true, USD_US_CURVE_NAME));
private static final YieldAndDiscountCurve US_USD_CURVE_6 = new YieldCurve(USD_US_CURVE_NAME, new ConstantDoublesCurve(0.06, USD_US_CURVE_NAME));
private static final double[] EUR_BEL_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 5.0, 10.0 };
private static final double[] EUR_BEL_RATE = new double[] {0.0250, 0.0225, 0.0250, 0.0275, 0.0250, 0.0250 };
private static final String EUR_BEL_CURVE_NAME = "EUR " + BEL_NAME;
private static final YieldAndDiscountCurve BEL_EUR_CURVE = new YieldCurve(EUR_BEL_CURVE_NAME,
new InterpolatedDoublesCurve(EUR_BEL_TIME, EUR_BEL_RATE, LINEAR_FLAT, true, EUR_BEL_CURVE_NAME));
private static final double[] EUR_GER_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 5.0, 10.0 };
private static final double[] EUR_GER_RATE = new double[] {0.0250, 0.0225, 0.0250, 0.0275, 0.0250, 0.0250 };
private static final String GER_EUR_CURVE_NAME = "EUR " + GER_NAME;
private static final YieldAndDiscountCurve GER_EUR_CURVE = new YieldCurve(GER_EUR_CURVE_NAME,
new InterpolatedDoublesCurve(EUR_GER_TIME, EUR_GER_RATE, LINEAR_FLAT, true, GER_EUR_CURVE_NAME));
private static final double[] UK_GBP_TIME = new double[] {0.0, 0.5, 1.0, 2.0, 5.0, 10.0 };
private static final double[] UK_GBP_RATE = new double[] {0.0250, 0.0225, 0.0250, 0.0275, 0.0250, 0.0250 };
private static final String UK_GBP_CURVE_NAME = "GBP " + UK_NAME;
private static final YieldAndDiscountCurve UK_GBP_CURVE = new YieldCurve(UK_GBP_CURVE_NAME,
new InterpolatedDoublesCurve(UK_GBP_TIME, UK_GBP_RATE, LINEAR_FLAT, true, UK_GBP_CURVE_NAME));
private static final double[] JPY_JP_TIME =
new double[] {0.5, 1.0, 2.0, 5.0, 7.0, 10.0, 20.0 };
private static final double[] JPY_JP_RATE =
new double[] {-0.0001, -0.0002, -0.0002, 0.0012, 0.0030, 0.0045, 0.0115 };
private static final String JPY_JP_CURVE_NAME = "JPY " + JP_NAME;
private static final YieldAndDiscountCurve JPY_JP_CURVE = new YieldCurve(JPY_JP_CURVE_NAME,
new InterpolatedDoublesCurve(JPY_JP_TIME, JPY_JP_RATE, LINEAR_FLAT, true, JPY_JP_CURVE_NAME));
// AUD
private static final String AUD_DSC_NAME = "AUD Dsc";
private static final YieldAndDiscountCurve AUD_DSC = new YieldCurve(AUD_DSC_NAME, new InterpolatedDoublesCurve(USD_DSC_TIME, USD_DSC_RATE, LINEAR_FLAT, true, AUD_DSC_NAME));
private static final String AUS_AUD_CURVE_NAME = "EUR " + AUS_NAME;
private static final YieldAndDiscountCurve AUS_AUD_CURVE = new YieldCurve(AUS_AUD_CURVE_NAME, new InterpolatedDoublesCurve(EUR_GER_TIME, EUR_GER_RATE, LINEAR_FLAT, true, AUS_AUD_CURVE_NAME));
/** Extracts the short name (i.e. issuer name) from a legal entity */
private static final LegalEntityFilter<LegalEntity> SHORT_NAME_FILTER = new LegalEntityShortName();
/** A set of discounting curves for EUR, USD and GBP */
private static final MulticurveProviderDiscount DISCOUNTING_CURVES = new MulticurveProviderDiscount();
static {
DISCOUNTING_CURVES.setCurve(USD, USD_DSC);
DISCOUNTING_CURVES.setCurve(USDLIBOR1M, USD_FWD1);
DISCOUNTING_CURVES.setCurve(EUR, EUR_DSC);
DISCOUNTING_CURVES.setCurve(EURIBOR3M, EUR_FWD3);
DISCOUNTING_CURVES.setCurve(GBP, GBP_DSC);
}
/** A set of issuer-specific curves for US GOVT, BELGIUM GOVT, GERMANY GOVT and UK GOVT */
private static final Map<Pair<Object, LegalEntityFilter<LegalEntity>>, YieldAndDiscountCurve> ISSUER_SPECIFIC = new LinkedHashMap<>();
static {
ISSUER_SPECIFIC.put(Pairs.of((Object) US_NAME, SHORT_NAME_FILTER), US_USD_CURVE);
ISSUER_SPECIFIC.put(Pairs.of((Object) BEL_NAME, SHORT_NAME_FILTER), BEL_EUR_CURVE);
ISSUER_SPECIFIC.put(Pairs.of((Object) GER_NAME, SHORT_NAME_FILTER), GER_EUR_CURVE);
ISSUER_SPECIFIC.put(Pairs.of((Object) UK_NAME, SHORT_NAME_FILTER), UK_GBP_CURVE);
ISSUER_SPECIFIC.put(Pairs.of((Object) IT_NAME, SHORT_NAME_FILTER), BEL_EUR_CURVE);
}
/** A set of discounting curves for JPY */
private static final MulticurveProviderDiscount DISCOUNTING_CURVES_JPY = new MulticurveProviderDiscount();
static {
DISCOUNTING_CURVES_JPY.setCurve(JPY, JPY_DSC);
}
/** A set of issuer-specific curves for JP GOVT */
private static final Map<Pair<Object, LegalEntityFilter<LegalEntity>>, YieldAndDiscountCurve> ISSUER_SPECIFIC_JP =
new LinkedHashMap<>();
static {
ISSUER_SPECIFIC_JP.put(Pairs.of((Object) JP_NAME, SHORT_NAME_FILTER), JPY_JP_CURVE);
}
private static final MulticurveProviderDiscount DISCOUNTING_CURVES_AUD = new MulticurveProviderDiscount();
static {
DISCOUNTING_CURVES_AUD.setCurve(Currency.AUD, AUD_DSC);
}
/** A set of issuer-specific curves for AUS */
private static final Map<Pair<Object, LegalEntityFilter<LegalEntity>>, YieldAndDiscountCurve> ISSUER_SPECIFIC_AUS = new LinkedHashMap<>();
static {
ISSUER_SPECIFIC_AUS.put(Pairs.of((Object) AUS_NAME, SHORT_NAME_FILTER), AUS_AUD_CURVE);
}
/** Extracts the country from a legal entity */
private static final LegalEntityRegion COUNTRY_FILTER;
/** A set of country-specific curves for US, DE, UK and GB */
private static final Map<Pair<Object, LegalEntityFilter<LegalEntity>>, YieldAndDiscountCurve> COUNTRY_SPECIFIC = new LinkedHashMap<>();
static {
COUNTRY_FILTER = new LegalEntityRegion();
COUNTRY_FILTER.setUseCountry(true);
COUNTRY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(Country.US), (LegalEntityFilter<LegalEntity>) COUNTRY_FILTER), US_USD_CURVE);
COUNTRY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(Country.BE), (LegalEntityFilter<LegalEntity>) COUNTRY_FILTER), BEL_EUR_CURVE);
COUNTRY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(Country.DE), (LegalEntityFilter<LegalEntity>) COUNTRY_FILTER), GER_EUR_CURVE);
COUNTRY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(Country.GB), (LegalEntityFilter<LegalEntity>) COUNTRY_FILTER), UK_GBP_CURVE);
COUNTRY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(Country.IT), (LegalEntityFilter<LegalEntity>) COUNTRY_FILTER), BEL_EUR_CURVE);
}
/** Extracts the currency from a legal entity */
private static final LegalEntityRegion CURRENCY_FILTER;
/** A set of currency-specific curves for USD, EUR and GBP */
private static final Map<Pair<Object, LegalEntityFilter<LegalEntity>>, YieldAndDiscountCurve> CURRENCY_SPECIFIC = new LinkedHashMap<>();
static {
CURRENCY_FILTER = new LegalEntityRegion();
CURRENCY_FILTER.setUseCurrency(true);
CURRENCY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(USD), (LegalEntityFilter<LegalEntity>) CURRENCY_FILTER), US_USD_CURVE);
CURRENCY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(EUR), (LegalEntityFilter<LegalEntity>) CURRENCY_FILTER), GER_EUR_CURVE);
CURRENCY_SPECIFIC.put(Pairs.of((Object) Collections.singleton(GBP), (LegalEntityFilter<LegalEntity>) CURRENCY_FILTER), UK_GBP_CURVE);
}
/** Extracts the country and rating from a legal entity */
private static final LegalEntityCombiningFilter COUNTRY_RATING_FILTER;
/** A set of country and rating-specific curves for US, BE, DE and GB */
private static final Map<Pair<Object, LegalEntityFilter<LegalEntity>>, YieldAndDiscountCurve> COUNTRY_RATING_SPECIFIC = new LinkedHashMap<>();
static {
COUNTRY_RATING_FILTER = new LegalEntityCombiningFilter();
final LegalEntityCreditRatings ratingsFilter = new LegalEntityCreditRatings();
ratingsFilter.setUseRating(true);
final Set<LegalEntityFilter<LegalEntity>> underlyingFilters = new HashSet<>();
underlyingFilters.add(COUNTRY_FILTER);
underlyingFilters.add(ratingsFilter);
COUNTRY_RATING_FILTER.setFiltersToUse(underlyingFilters);
final Set<Object> us = new HashSet<>();
us.add(Country.US);
us.add(Pairs.of("S&P", "AA"));
final Set<Object> be = new HashSet<>();
be.add(Country.BE);
be.add(Pairs.of("S&P", "A"));
final Set<Object> de = new HashSet<>();
de.add(Country.DE);
de.add(Pairs.of("S&P", "AAA"));
final Set<Object> gb = new HashSet<>();
gb.add(Country.GB);
gb.add(Pairs.of("S&P", "B"));
final Set<Object> it = new HashSet<>();
gb.add(Country.IT);
gb.add(Pairs.of("S&P", "B"));
COUNTRY_RATING_SPECIFIC.put(Pairs.of((Object) us, (LegalEntityFilter<LegalEntity>) COUNTRY_RATING_FILTER), US_USD_CURVE);
COUNTRY_RATING_SPECIFIC.put(Pairs.of((Object) be, (LegalEntityFilter<LegalEntity>) COUNTRY_RATING_FILTER), BEL_EUR_CURVE);
COUNTRY_RATING_SPECIFIC.put(Pairs.of((Object) de, (LegalEntityFilter<LegalEntity>) COUNTRY_RATING_FILTER), GER_EUR_CURVE);
COUNTRY_RATING_SPECIFIC.put(Pairs.of((Object) gb, (LegalEntityFilter<LegalEntity>) COUNTRY_RATING_FILTER), UK_GBP_CURVE);
COUNTRY_RATING_SPECIFIC.put(Pairs.of((Object) it, (LegalEntityFilter<LegalEntity>) COUNTRY_RATING_FILTER), BEL_EUR_CURVE);
}
/** US GOVT curve with constant 6% rate */
private static final Map<Pair<Object, LegalEntityFilter<LegalEntity>>, YieldAndDiscountCurve> USD_GOVT_6PC = new LinkedHashMap<>();
static {
USD_GOVT_6PC.put(Pairs.of((Object) US_NAME, SHORT_NAME_FILTER), US_USD_CURVE_6);
}
/** Curves for pricing bonds with issuer-specific risky curves */
private static final IssuerProviderDiscount ISSUER_SPECIFIC_MULTICURVE =
new IssuerProviderDiscount(DISCOUNTING_CURVES, ISSUER_SPECIFIC);
/** Curves for pricing bonds with issuer-specific risky curves */
public static final IssuerProviderDiscount ISSUER_SPECIFIC_MULTICURVE_JP =
new IssuerProviderDiscount(DISCOUNTING_CURVES_JPY, ISSUER_SPECIFIC_JP);
/** Curves for pricing bonds with country-specific risky curves */
private static final IssuerProviderDiscount COUNTRY_SPECIFIC_MULTICURVE = new IssuerProviderDiscount(DISCOUNTING_CURVES, COUNTRY_SPECIFIC);
/** Curves for pricing bonds with currency-specific risky curves */
private static final IssuerProviderDiscount CURRENCY_SPECIFIC_MULTICURVE = new IssuerProviderDiscount(DISCOUNTING_CURVES, CURRENCY_SPECIFIC);
/** Curves for pricing bonds with country and rating-specific risky curves */
private static final IssuerProviderDiscount COUNTRY_RATING_SPECIFIC_MULTICURVE = new IssuerProviderDiscount(DISCOUNTING_CURVES, COUNTRY_RATING_SPECIFIC);
/** Curves for pricing bonds with issuer-specific risky curves AUS*/
private static final IssuerProviderDiscount ISSUER_SPECIFIC_MULTICURVE_AUS = new IssuerProviderDiscount(DISCOUNTING_CURVES_AUD, ISSUER_SPECIFIC_AUS);
/**
* Returns a multi-curves provider with three discounting currencies (USD, EUR, GBP), one Ibor (EURIBOR3M) and five issuers
* (US GOVT, BELGIUM GOVT, GERMAN GOVT, UK GOVT, ITALY GOVT).
* @return The provider.
*/
public static IssuerProviderDiscount getIssuerSpecificProvider() {
return ISSUER_SPECIFIC_MULTICURVE;
}
/**
* Returns a multi-curves provider with a discounting currency (AUD) and an issuers (AUS Govt).
* @return The provider.
*/
public static IssuerProviderDiscount getIssuerSpecificProviderAus() {
return ISSUER_SPECIFIC_MULTICURVE_AUS;
}
/**
* Returns a multi-curves provider with three discounting currencies (USD, EUR, GBP), one Ibor (EURIBOR3M) and four countries
* (US, BE, DE, UK, IT)
* @return The provider
*/
public static IssuerProviderDiscount getCountrySpecificProvider() {
return COUNTRY_SPECIFIC_MULTICURVE;
}
/**
* Returns a multi-curves provider with three discounting currencies (USD, EUR, GBP) and one Ibor (EURIBOR3M)
* @return The provider
*/
public static IssuerProviderDiscount getCurrencySpecificProvider() {
return CURRENCY_SPECIFIC_MULTICURVE;
}
/**
* Returns a multi-curves provider with three discounting currencies (USD, EUR, GBP) and one Ibor (EURIBOR3M) and
* a combined rating for S&P and Moody's of AA for each country.
* @return The provider
*/
public static IssuerProviderDiscount getCountryRatingSpecificProvider() {
return COUNTRY_RATING_SPECIFIC_MULTICURVE;
}
/**
* Returns a multi-curves provider with one currency (USD) and one issuer (US GOVT). The issuer curve is at 6% (useful for futures).
* @return The provider.
*/
public static IssuerProviderDiscount createIssuerProvider6() {
return new IssuerProviderDiscount(DISCOUNTING_CURVES, USD_GOVT_6PC);
}
/**
* Gets the issuer names.
* @return The issuer names
*/
public static String[] getIssuerNames() {
return new String[] {US_NAME, BEL_NAME, GER_NAME, UK_NAME, IT_NAME };
}
/**
* Gets the issuers.
* @return The issuers
*/
public static LegalEntity[] getIssuers() {
return new LegalEntity[] {US_GOVT, BEL_GOVT, GER_GOVT, UK_GOVT, IT_GOVT };
}
/**
* Gets the issuers Australia
* @return The issuers AUS
*/
public static LegalEntity getIssuersAUS() {
return AUS_GOVT;
}
}