public SwaptionVolatilityMatrix(Date today,
List<Date> optionDates,
List<Period> swapTenors,
Matrix vols,
DayCounter dayCounter)
: base(optionDates, swapTenors, today, new Calendar(), BusinessDayConvention.Following, 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_);
}