Ao precificar títulos de taxa flutuante, é precisotrabalhe com instâncias da classe USDLibor e adicione novas correções com uma data (equivalente à última data de redefinição menos dois dias úteis). No entanto, às vezes, reclama no tempo de execução, informando ao usuário que a correção para uma data especificada não está disponível (o que significa que a correção foi feita em uma data errada).
Como as instâncias do USDLibor sabem qual édata correta? Eu pergunto isso, porque talvez eu possa resolver esse problema recuperando a data correta diretamente, já que o USDLibor resolve o problema de descobrir a data correta.
Respostas:
0 para resposta № 1A data de fixação é de dois dias úteis antes da data de redefinição, como você disse (a implementação da lógica está no FloatingRateCoupon::fixingDate()
método, se você quiser verificá-lo).
No entanto, você pode estar usando os dias úteis incorretos. O USD LIBOR é fixado em Londres, portanto, os feriados são determinados de acordo com o calendário do Reino Unido, não o calendário dos EUA.
De qualquer forma, depois de criar o vínculo, vocêpode solicitar aos próprios fluxos de caixa suas datas de fixação com algo assim (que eu não testei, por isso pode nem ser compilado, mas você deve ter a idéia):
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());
}
após o qual o fixingDates
O vetor conterá (sem surpresa) as datas de fixação.