com.opengamma.examples.simulated.convention.SyntheticEUConventions.java Source code

Java tutorial

Introduction

Here is the source code for com.opengamma.examples.simulated.convention.SyntheticEUConventions.java

Source

/**
 * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
 * 
 * Please see distribution for license.
 */
package com.opengamma.examples.simulated.convention;

import static com.opengamma.core.id.ExternalSchemes.syntheticSecurityId;
import static com.opengamma.financial.convention.InMemoryConventionBundleMaster.simpleNameSecurityId;

import org.apache.commons.lang.Validate;
import org.threeten.bp.Period;

import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.financial.convention.ConventionBundleMaster;
import com.opengamma.financial.convention.ConventionBundleMasterUtils;
import com.opengamma.financial.convention.businessday.BusinessDayConvention;
import com.opengamma.financial.convention.businessday.BusinessDayConventionFactory;
import com.opengamma.financial.convention.daycount.DayCount;
import com.opengamma.financial.convention.daycount.DayCountFactory;
import com.opengamma.financial.convention.frequency.Frequency;
import com.opengamma.financial.convention.frequency.SimpleFrequencyFactory;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;

/**
 * Standard conventions for EUR.
 */
public class SyntheticEUConventions {

    public static synchronized void addFixedIncomeInstrumentConventions(
            final ConventionBundleMaster conventionMaster) {
        Validate.notNull(conventionMaster, "convention master");
        final BusinessDayConvention modified = BusinessDayConventionFactory.INSTANCE
                .getBusinessDayConvention("Modified Following");
        final BusinessDayConvention following = BusinessDayConventionFactory.INSTANCE
                .getBusinessDayConvention("Following");
        final DayCount act360 = DayCountFactory.INSTANCE.getDayCount("Actual/360");
        final DayCount thirty360 = DayCountFactory.INSTANCE.getDayCount("30/360");
        final Frequency annual = SimpleFrequencyFactory.INSTANCE.getFrequency(Frequency.ANNUAL_NAME);
        final Frequency semiAnnual = SimpleFrequencyFactory.INSTANCE.getFrequency(Frequency.SEMI_ANNUAL_NAME);
        final Frequency quarterly = SimpleFrequencyFactory.INSTANCE.getFrequency(Frequency.QUARTERLY_NAME);

        //TODO holiday associated with EUR swaps is TARGET
        final ExternalId eu = ExternalSchemes.financialRegionId("EU");
        final ConventionBundleMasterUtils utils = new ConventionBundleMasterUtils(conventionMaster);
        //EURO LIBOR
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EURLIBORP3M"), simpleNameSecurityId("EUR LIBOR 3m")),
                "EUR LIBOR 3m", act360, modified, Period.ofMonths(3), 2, false, eu);
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EURLIBORP6M"), simpleNameSecurityId("EUR LIBOR 6m")),
                "EUR LIBOR 6m", act360, modified, Period.ofMonths(6), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURLIBORP12M")), "EUR LIBOR 12m", act360,
                modified, Period.ofMonths(12), 2, false, eu);

        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EUREURIBORP7D"), simpleNameSecurityId("EURIBOR 7d")),
                "EURIBOR 7d", act360, modified, Period.ofDays(7), 2, false, eu);
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EUREURIBORP14D"), simpleNameSecurityId("EURIBOR 14d")),
                "EURIBOR 14d", act360, modified, Period.ofDays(14), 2, false, eu);
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EUREURIBORP1M"), simpleNameSecurityId("EURIBOR 1m")),
                "EURIBOR 1m", act360, modified, Period.ofMonths(1), 2, false, eu);
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EUREURIBORP2M"), simpleNameSecurityId("EURIBOR 2m")),
                "EURIBOR 2m", act360, modified, Period.ofMonths(2), 2, false, eu);
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EUREURIBORP3M"), simpleNameSecurityId("EURIBOR 3m")),
                "EURIBOR 3m", act360, modified, Period.ofMonths(3), 2, false, eu);
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EUREURIBORP6M"), simpleNameSecurityId("EURIBOR 6m")),
                "EURIBOR 6m", act360, modified, Period.ofMonths(6), 2, false, eu);
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EUREURIBORP12M"), simpleNameSecurityId("EURIBOR 12m")),
                "EURIBOR 12m", act360, modified, Period.ofMonths(12), 2, false, eu);

        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP1D")), "EURCASHP1D", act360,
                following, Period.ofDays(1), 0, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP2D")), "EURCASHP2D", act360,
                following, Period.ofDays(2), 0, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP1M")), "EURCASHP1M", act360,
                modified, Period.ofMonths(1), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP2M")), "EURCASHP2M", act360,
                modified, Period.ofMonths(2), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP3M")), "EURCASHP3M", act360,
                modified, Period.ofMonths(3), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP4M")), "EURCASHP4M", act360,
                modified, Period.ofMonths(4), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP5M")), "EURCASHP5M", act360,
                modified, Period.ofMonths(5), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP6M")), "EURCASHP6M", act360,
                modified, Period.ofMonths(6), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP7M")), "EURCASHP7M", act360,
                modified, Period.ofMonths(7), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP8M")), "EURCASHP8M", act360,
                modified, Period.ofMonths(8), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP9M")), "EURCASHP9M", act360,
                modified, Period.ofMonths(9), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP10M")), "EURCASHP10M", act360,
                modified, Period.ofMonths(10), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP11M")), "EURCASHP11M", act360,
                modified, Period.ofMonths(11), 2, false, eu);
        utils.addConventionBundle(ExternalIdBundle.of(syntheticSecurityId("EURCASHP12M")), "EURCASHP12M", act360,
                modified, Period.ofMonths(12), 2, false, eu);

        final DayCount swapFixedDayCount = thirty360;
        final BusinessDayConvention swapFixedBusinessDay = modified;
        final Frequency swapFixedPaymentFrequency = annual;
        final DayCount euriborDayCount = act360;

        // IRS
        utils.addConventionBundle(ExternalIdBundle.of(simpleNameSecurityId("EUR_SWAP")), "EUR_SWAP",
                swapFixedDayCount, swapFixedBusinessDay, swapFixedPaymentFrequency, 2, eu, euriborDayCount,
                modified, semiAnnual, 2, simpleNameSecurityId("EURIBOR 6m"), eu, true);
        utils.addConventionBundle(ExternalIdBundle.of(simpleNameSecurityId("EUR_3M_SWAP")), "EUR_3M_SWAP",
                swapFixedDayCount, swapFixedBusinessDay, swapFixedPaymentFrequency, 2, eu, act360, modified,
                quarterly, 2, simpleNameSecurityId("EURIBOR 3m"), eu, true);
        utils.addConventionBundle(ExternalIdBundle.of(simpleNameSecurityId("EUR_6M_SWAP")), "EUR_6M_SWAP",
                swapFixedDayCount, swapFixedBusinessDay, swapFixedPaymentFrequency, 2, eu, act360, modified,
                semiAnnual, 2, simpleNameSecurityId("EURIBOR 6m"), eu, true);

        // IR FUTURES
        utils.addConventionBundle(ExternalIdBundle.of(simpleNameSecurityId("EUR_IR_FUTURE")), "EUR_IR_FUTURE",
                euriborDayCount, modified, Period.ofMonths(3), 2, true, null);

        final int publicationLagON = 0;
        utils.addConventionBundle(
                ExternalIdBundle.of(syntheticSecurityId("EONIA"), simpleNameSecurityId("EUR EONIA")), "EUR EONIA",
                act360, modified, Period.ofDays(1), 0, false, eu, publicationLagON);
        // OIS - EONIA
        utils.addConventionBundle(ExternalIdBundle.of(simpleNameSecurityId("EUR_OIS_SWAP")), "EUR_OIS_SWAP", act360,
                modified, annual, 2, eu, act360, modified, annual, 2, simpleNameSecurityId("EUR EONIA"), eu, true,
                publicationLagON);

        utils.addConventionBundle(ExternalIdBundle.of(simpleNameSecurityId("EUR_3M_FRA")), "EUR_3M_FRA", thirty360,
                modified, quarterly, 2, eu, act360, modified, quarterly, 2, simpleNameSecurityId("EURIBOR 3m"), eu,
                true);
        utils.addConventionBundle(ExternalIdBundle.of(simpleNameSecurityId("EUR_6M_FRA")), "EUR_6M_FRA", thirty360,
                modified, annual, 2, eu, act360, modified, semiAnnual, 2, simpleNameSecurityId("EURIBOR 6m"), eu,
                true);

    }

}