2015-06-30 5 views
0

При определении цены облигаций с плавающей процентной ставкой необходимо работать с экземплярами класса USDLibor и добавлять новые исправления с датой даты (что эквивалентно последней дате сброса минус два рабочих дня). Однако иногда он жалуется на время выполнения, сообщая пользователю, что исправление для указанной даты недоступно (это означает, что он предоставил исправление для неправильной даты).Quantlib USDLibor, как он знает, какая правильная дата фиксации?

Как вы можете узнать, какая дата правильной даты у USDLibor? Я спрашиваю об этом, потому что, может быть, я могу решить эту проблему, получив правильную дату напрямую, поскольку USDLibor заставляет ее работать над проблемой выяснения правильной даты.

ответ

0

Дата фиксации за два рабочих дня до даты сброса, как вы сказали (реализация логики находится в методе FloatingRateCoupon::fixingDate(), если вы хотите его проверить).

Возможно, вы использовали неправильные рабочие дни. USD LIBOR фиксируется в Лондоне, поэтому отпуск определяется в соответствии с британским календарем, а не календарю США.

В любом случае, после того, как вы создали облигацию, вы можете сами спросить о денежных потоках за свои даты фиксации с чем-то вроде этого (который я не тестировал, поэтому он может даже не компилироваться, но вы должны получить идею):

using namespace QuantLib; 

Leg cashflows = bond.cashflows(); 
std::vector<Date> fixingDates; 
for (Size i=0; i<cashflows.size(); ++i) { 
    boost::shared_ptr<FloatingRateCoupon> coupon = 
     boost::dynamic_pointer_cast<FloatingRateCoupon>(cashflows[i]); 
    if (coupon) 
     fixingDates.append(coupon->fixingDate()); 
} 

после чего fixingDates вектора будет содержать (не удивительно) дату крепления.