Salvando histórico da curva de juros PRÉ

Em vários momentos do nosso Curso de Renda Fixa usando o R, usamos a curva de juros PRÉ da B3 no apreçamento de alguns intrumentos de renda fixa. Essa curva é importantíssima para o mercado financeiro brasileiro. Diversos instrumentos financeiros como títulos de dívida e derivativos são apreçados com as taxas de juros dessa curva. Fora a sua importância como fator de risco primário no mercado financeiro.

Neste post vamos ver como salvar um histórico dessa curva com a função `get_curve` utilizada em outros posts.

Vamos começar importando os pacotes necessários e fazendo a configuração do calendário do `bizdays`.


library(glue)
library(xml2)
library(stringr)
library(bizdays)
library(tidyverse)

bizdays.options$set(default.calendar="Brazil/ANBIMA")

Segue a função `get_curve`:


get_curve <- function (refdate, ticker="PRE") {
print(refdate)
refdate <- as.Date(refdate)
url <- "http://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-taxas-referenciais-bmf-ptBR.asp"
url <- glue("{url}?Data={format(refdate, '%d/%m/%Y')}&Data1={format(refdate, '%Y%m%d')}&slcTaxa={ticker}")
doc <- read_html(url)
tbl <- xml_find_all(doc, "//table[contains(@id, 'tb_principal1')]")
if (length(tbl) == 0)
return(NULL)
num <- xml_find_all(tbl[[1]], "td") %>%
xml_text() %>%
str_trim() %>%
str_replace(",", ".") %>%
as.numeric()

dc <- num[c(TRUE, FALSE, FALSE)]
tx_252 <- num[c(FALSE, TRUE, FALSE)]

terms <- bizdayse(refdate, dc)
ix <- (terms %% 21) == 0
terms <- c(terms[1], terms[ix])
rates <- c(tx_252[1], tx_252[ix])/100
log_pu <- log((1 + rates)^(terms/252))
rate <- function(pu, term) pu^(252/term) - 1

log_price_interpolator <- approxfun(terms, log_pu, method="linear")
function (term) {
pu <- exp(log_price_interpolator(term))
rate(pu, term)*100
}
}

É importante notar que essa função retorna outra função, e esta recebe um único argumento que é o prazo para as taxas de juros. Ou seja, a função retornada recebe prazos em dias úteis e retorna as taxas de juros correspondentes a estes prazos.

Vamos fazer o download de diversas curvas para diversas datas, armazenar as funções retornadas por `get_curve` em uma lista e salvar essa lista em um arquivo para que possamos usar posteriormente sem precisar realizar novamente os downloads.


curves <- seq(as.Date("2015-01-01"), as.Date("2021-04-29"), "day") %>%
map(get_curve) %>%
compact()
save(curves, file = "curves.rda")


load("curves.rda")

A variável `curves` é uma lista com todas as curvas baixadas. Uma análise interessante a ser realizada com esse histórico de curvas é avaliar o comportamento dos juros longos, por exemplo, juros de 10 anos, equivalente a 2520 dias úteis.


rates_10Y <- curves %>% map_dbl(~ .x(2520))
dates <- names(rates_10Y) %>% as.Date()
tibble(Dates = dates, Rates = rates_10Y) %>%
ggplot(aes(x = Dates, y = Rates)) +
geom_line()

Como podemos ver, os rentistas já tiveram dias melhores.

____________________________

(*) Conheça nosso Curso de Renda Fixa usando o R.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando um Dashboard de análise de Ações no Python

Um Dashboard é um painel de controle que consolida uma variedade de informações sobre um determinado objeto de estudo em um ou mais painéis. Ele simplifica significativamente o processo de análise de dados, oferecendo uma visão global e fácil de entender. Uma maneira simples de construir um Dashboard para acompanhar uma ação específica é utilizando duas ferramentas: Quarto e Python. Neste post, mostramos o resultado da criação de um Dashboard de Ação.

Analisando séries temporais no Python e esquecendo de vez o Excel

Séries temporais representam uma disciplina extremamente importante em diversas áreas, principalmente na economia e na ciência de dados. Mas, afinal, como lidar com esses dados que se apresentam ao longo do tempo? Neste exercício, demonstraremos como compreender uma série temporal e como o Python se destaca como uma das melhores ferramentas para analisar esse tipo de dado.

Cálculo do Retorno Econômico de uma Política Pública

Como podemos traduzir os efeitos de uma política pública para valores monetários? Essa é uma tarefa árdua que requer algumas premissas, entretanto, com métodos bem definidos, é possível obter estimativas precisas dos ganhos e os gastos de uma política pública.

Neste exercício, demonstramos tal método usando a política hipotética "Mãe Paranense”, um conjunto de ações que visam reduzir a mortalidade materna e infantil no estado. Usamos a linguagem R como ferramenta para analisar os dados.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.