Package com.opengamma.financial.analytics.conversion

Source Code of com.opengamma.financial.analytics.conversion.ISDACDSSecurityConverter

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

import com.opengamma.analytics.financial.instrument.Convention;
import com.opengamma.analytics.financial.instrument.InstrumentDefinition;
import com.opengamma.analytics.financial.instrument.cds.ISDACDSDefinition;
import com.opengamma.analytics.financial.instrument.cds.ISDACDSPremiumDefinition;
import com.opengamma.core.holiday.HolidaySource;
import com.opengamma.financial.convention.calendar.Calendar;
import com.opengamma.financial.security.FinancialSecurityVisitorAdapter;
import com.opengamma.financial.security.cds.CDSSecurity;
import com.opengamma.util.ArgumentChecker;

/**
* Build the ISDA definition for a CDS security object
*
* @author Martin Traverse, Niels Stchedroff (Riskcare)
* @see CDSSecurity
* @see ISDACDSDefinition
*/
public class ISDACDSSecurityConverter extends FinancialSecurityVisitorAdapter<InstrumentDefinition<?>> {

  private static final boolean ACCRUAL_ON_DEFAULT = true;
  private static final boolean PAY_ON_DEFAULT = true;
  private static final boolean PROTECT_START = true;

  private final HolidaySource _holidaySource;

  public ISDACDSSecurityConverter(final HolidaySource holidaySource) {
    ArgumentChecker.notNull(holidaySource, "holiday source");
    _holidaySource = holidaySource;
  }

  /**
   * Convert a CDS security in to an ISDA definition object
   *
   * @param cds The CDS security to convert
   * @return An ISDA definition object for the CDS, suitable for use by the ISDA pricer
   */
  @Override
  public InstrumentDefinition<?> visitCDSSecurity(final CDSSecurity cds) {

    // TODO: Does convention name matter? ISDA code never uses it
    final Calendar calendar = CalendarUtils.getCalendar(_holidaySource, cds.getCurrency());
    final Convention convention = new Convention(
      cds.getSettlementDays(), cds.getDayCount(), cds.getBusinessDayConvention(), calendar, cds.getName() + "_convention"); // TODO: Is convention name important?

    final ISDACDSPremiumDefinition premiumPayments = ISDACDSPremiumDefinition.from(
      cds.getStartDate(), cds.getMaturity(), cds.getPremiumFrequency(),
      convention, cds.getStubType(), PROTECT_START,
      cds.getNotional(), cds.getSpread(), cds.getCurrency(), calendar);

    return new ISDACDSDefinition(cds.getStartDate(), cds.getMaturity(), premiumPayments,
      cds.getNotional(), cds.getSpread(), cds.getRecoveryRate(), ACCRUAL_ON_DEFAULT,
      PAY_ON_DEFAULT, PROTECT_START, cds.getPremiumFrequency(), convention, cds.getStubType());
  }
}
TOP

Related Classes of com.opengamma.financial.analytics.conversion.ISDACDSSecurityConverter

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.