/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.instrument.index; import org.threeten.bp.ZonedDateTime; import com.opengamma.analytics.financial.instrument.bond.BillSecurityDefinition; import com.opengamma.analytics.financial.instrument.bond.BillTransactionDefinition; import com.opengamma.analytics.financial.schedule.ScheduleCalculator; import com.opengamma.util.ArgumentChecker; /** * Class use to generate Bill transactions. */ public class GeneratorBill extends GeneratorInstrument<GeneratorAttributeET> { /** * The underlying bill security. */ private final BillSecurityDefinition _security; /** * Constructor. * @param name Generator name. * @param security The underlying bill security. */ public GeneratorBill(final String name, final BillSecurityDefinition security) { super(name); ArgumentChecker.notNull(security, "Bill security"); _security = security; } /** * {@inheritDoc} * Generate a bill transaction from the bill (market quote) yield. */ @Override public BillTransactionDefinition generateInstrument(final ZonedDateTime date, final double marketQuote, final double notional, final GeneratorAttributeET attribute) { ArgumentChecker.notNull(date, "Reference date"); final int quantity = (int) Math.round(notional / _security.getNotional()); final ZonedDateTime settleDate = ScheduleCalculator.getAdjustedDate(date, _security.getSettlementDays(), _security.getCalendar()); return BillTransactionDefinition.fromYield(_security, quantity, settleDate, marketQuote, _security.getCalendar()); } }