/**
* 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.equity.variance.EquityVarianceSwapDefinition;
import com.opengamma.core.holiday.HolidaySource;
import com.opengamma.financial.convention.HolidaySourceCalendarAdapter;
import com.opengamma.financial.convention.calendar.Calendar;
import com.opengamma.financial.security.FinancialSecurityVisitorAdapter;
import com.opengamma.financial.security.equity.EquityVarianceSwapSecurity;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.money.Currency;
/**
* Converts {@link EquityVarianceSwapSecurity} to {@link EquityVarianceSwapDefinition}, which is required
* for use in the analytics library.
*/
public class EquityVarianceSwapConverter extends FinancialSecurityVisitorAdapter<EquityVarianceSwapDefinition> {
/** The holiday source */
private final HolidaySource _holidaySource;
/**
* @param holidaySource Source for good business day information, not null
*/
public EquityVarianceSwapConverter(final HolidaySource holidaySource) {
ArgumentChecker.notNull(holidaySource, "holiday source");
_holidaySource = holidaySource;
}
@Override
public EquityVarianceSwapDefinition visitEquityVarianceSwapSecurity(final EquityVarianceSwapSecurity security) {
final Currency currency = security.getCurrency();
final Calendar calendar = new HolidaySourceCalendarAdapter(_holidaySource, currency);
if (security.isParameterizedAsVariance()) {
return EquityVarianceSwapDefinition.fromVarianceParams(security.getFirstObservationDate(), security.getLastObservationDate(), security.getSettlementDate(), security.getCurrency(), calendar,
security.getAnnualizationFactor(), security.getStrike(), security.getNotional(), true);
}
return EquityVarianceSwapDefinition.fromVegaParams(security.getFirstObservationDate(), security.getLastObservationDate(), security.getSettlementDate(), security.getCurrency(), calendar,
security.getAnnualizationFactor(), security.getStrike(), security.getNotional(), true);
}
}