У меня крошечный вопрос относительно функции упреждения даты в C ++ Quantlib. Я хотел использовать смещение платежа (в днях) для продукта с условным обозначением рабочего дня «предшествующий», но дата платежа всегда была установлена на первый день после выходных, когда дата платежа приходилась на выходные. Это связано с тем, что функция «продвижение» игнорирует условные обозначения рабочих дней, когда «дни» передаются функции «заранее», см. Здесь:
Date Calendar::advance(const Date& d,
Integer n, TimeUnit unit,
BusinessDayConvention c,
bool endOfMonth) const {
QL_REQUIRE(d!=Date(), "null date");
if (n == 0) {
return adjust(d,c);
} else if (unit == Days) {
Date d1 = d;
if (n > 0) {
while (n > 0) {
d1++;
while (isHoliday(d1))
d1++;
n--;
}
} else {
while (n < 0) {
d1--;
while(isHoliday(d1))
d1--;
n++;
}
}
return d1;
} else if (unit == Weeks) {
Date d1 = d + n*unit;
return adjust(d1,c);
} else {
Date d1 = d + n*unit;
// we are sure the unit is Months or Years
if (endOfMonth && isEndOfMonth(d))
return Calendar::endOfMonth(d1);
return adjust(d1, c);
}
}
Это сделано специально? Ps "Adjust" -функция правильно использует условные обозначения рабочего дня!