在计算浮动利率债券时,需要使用USDLibor类的实例并在给定日期(相当于上次重置日期减去两个工作日)的情况下添加新的定价。但是,有时它会抱怨运行时告诉用户指定日期的修复不可用(意味着已经提供了错误日期的修复)。
USDLibor的实例如何知道哪个是正确的日期?我问这个是因为我可以通过直接检索正确的日期来解决这个问题,因为USDLibor可以解决找出正确日期的问题。
答案 0 :(得分:0)
修复日期是重置日期之前的两个工作日,正如您所说的那样(逻辑的实现在FloatingRateCoupon::fixingDate()
方法中,如果您想检查它)。
但是,您可能使用了错误的工作日。美元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
向量将包含(毫不奇怪)固定日期。