public SwaptionVolatilityMatrix(
Date referenceDate,
Calendar calendar,
BusinessDayConvention bdc,
List<Period> optionTenors,
List<Period> swapTenors,
Matrix vols,
DayCounter dayCounter)
: base(optionTenors, swapTenors, referenceDate, 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()-1; ++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_);
}