//! floating reference date, fixed market data
public SwaptionVolatilityMatrix(
Calendar calendar,
BusinessDayConvention bdc,
List <Period> optionTenors,
List <Period> swapTenors,
Matrix vols,
DayCounter dayCounter)
: base(optionTenors, swapTenors, 0, calendar, bdc, dayCounter)
{
volHandles_ = new InitializedList <List <Handle <Quote> > >(vols.rows());
volatilities_ = new Matrix(vols.rows(), vols.columns());
checkInputs(vols.rows(), vols.columns());
// fill dummy handles to allow generic handle-based
// computations later on
for (int i = 0; i < vols.rows(); ++i)
{
volHandles_[i] = new InitializedList <Handle <Quote> >(vols.columns());
for (int j = 0; j < vols.columns(); ++j)
{
volHandles_[i][j] = new Handle <Quote>((new
SimpleQuote(vols[i, j])));
}
}
interpolation_ =
new BilinearInterpolation(swapLengths_, swapLengths_.Count,
optionTimes_, optionTimes_.Count,
volatilities_);
}