com.opengamma.strata.measure.index.IborFutureOptionMarketData Maven / Gradle / Ivy
/*
* Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.measure.index;
import java.time.LocalDate;
import com.opengamma.strata.basics.index.IborIndex;
import com.opengamma.strata.data.MarketData;
import com.opengamma.strata.data.MarketDataNotFoundException;
import com.opengamma.strata.pricer.index.IborFutureOptionVolatilities;
/**
* Market data for Ibor future options.
*
* This interface exposes the market data necessary for pricing an Ibor future option.
*
* Implementations of this interface must be immutable.
*/
public interface IborFutureOptionMarketData {
/**
* Gets the valuation date.
*
* @return the valuation date
*/
public default LocalDate getValuationDate() {
return getMarketData().getValuationDate();
}
//-------------------------------------------------------------------------
/**
* Gets the lookup that provides access to Ibor future option volatilities.
*
* @return the Ibor future option lookup
*/
public abstract IborFutureOptionMarketDataLookup getLookup();
/**
* Gets the market data.
*
* @return the market data
*/
public abstract MarketData getMarketData();
/**
* Returns a copy of this instance with the specified market data.
*
* @param marketData the market data to use
* @return a market view based on the specified data
*/
public abstract IborFutureOptionMarketData withMarketData(MarketData marketData);
//-------------------------------------------------------------------------
/**
* Gets the volatilities for the specified Ibor index.
*
* If the index is not found, an exception is thrown.
*
* @param index the Ibor index
* @return the volatilities for the index
* @throws MarketDataNotFoundException if the index is not found
*/
public abstract IborFutureOptionVolatilities volatilities(IborIndex index);
}