Preencher as lacunas entre as cotações
O Tesouro cota dez prazos e tudo o mais é interpolado. O scipy.interpolate oferece as ferramentas padrão. np.interp liga as cotações com retas: é simples e nunca ultrapassa, mas sua inclinação salta a cada cotação. CubicSpline(x, y, bc_type='natural') as liga com uma curva suave cujas derivadas primeira e segunda são contínuas; o preço da suavidade é que ela pode ultrapassar entre cotações e, fora do intervalo cotado, dispara, então não deve ser extrapolada. PchipInterpolator(x, y) também é suave mas preserva a forma: onde os dados sobem, ela sobe, então não pode inventar uma corcova. As três passam por todas as cotações; diferem entre elas e no que fazem com tudo o que deriva da curva.
As diferenças importam porque as grandezas derivadas as amplificam. Um fator de desconto é D(t)=e^(-y(t) t/100), e a taxa a termo entre duas datas é a inclinação do seu logaritmo, f=-Δln D/Δt×100. Uma pequena quebra no rendimento vira um salto visível na taxa a termo. Em 9 de outubro de 2026 o rendimento de 15 anos é 5,445% por interpolação linear, 5,464% por spline cúbica natural e 5,493% por PCHIP, e o maior salto entre taxas a termo vizinhas numa grade de 120 pontos é de 0,91 ponto para a curva linear e cerca de 0,21 para as splines. Na curva invertida de 3 de janeiro de 2000 as taxas a termo das splines caem para 4,76% e 4,63% enquanto as lineares ficam em 5,63%. Não há método melhor, só uma escolha a fazer de propósito: taxas a termo suaves para precificar, preservação de forma para o risco, retas simples quando não se deve inventar nada.
- As três passam pelas cotações: diferem entre elas e nas taxas a termo que implicam.
- As taxas a termo são a inclinação dos log-fatores de desconto: qualquer quebra no rendimento aparece como um salto.
- Não extrapole uma spline cúbica: use-a entre as cotações e em nenhum outro lugar.
Lab: o que é avaliado
- Três interpolações20 pts
- Fatores de desconto10 pts
- A curva de taxas a termo20 pts
- Rugosidade10 pts
- Comparar os métodos15 pts
- Um dia real25 pts