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`.

1
2
3
4
5
6
7
library(glue)
library(xml2)
library(stringr)
library(bizdays)
library(tidyverse)
 
bizdays.options$set(default.calendar="Brazil/ANBIMA")

Segue a função `get_curve`:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
get_curve <- function (refdate, ticker="PRE") {
print(refdate)
refdate <- as.Date(refdate)
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.

1
2
3
4
curves <- seq(as.Date("2015-01-01"), as.Date("2021-04-29"), "day") %>%
map(get_curve) %>%
compact()
save(curves, file = "curves.rda")
1
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.

1
2
3
4
5
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

Quais são as ferramentas de IA?

Um aspecto crucial dos Agentes de IA é a sua capacidade de tomar ações, que acontecem por meio do uso de Ferramentas (Tools). Neste artigo, vamos aprender o que são Tools, como defini-las de forma eficaz e como integrá-las ao seu Agente por meio da System Prompt. Ao fornecer as Tools certas para o seu Agente — e ao descrever claramente como essas Tools funcionam — você pode aumentar drasticamente o que sua IA é capaz de realizar.

Otimizando um Portfólio de Investimentos com Machine Learning

A construção de portfólio ótimo refere-se ao processo de alocar eficientemente capital entre um conjunto predefinido de ativos ou títulos. O campo da construção de portfólio tem sido extensivamente estudado por acadêmicos e profissionais desde a década de 1950, quando Markowitz introduziu sua inovadora abordagem de média-variância para a construção de portfólio. Diante disso, podemos melhorar o processo de alocação de peso de um investimento em um portfólio através do Aprendizado não supervisionado com a aplicação do Hierarchical Risk Parity (HRP). Neste exercício, realizamos uma introdução ao método e mostramos os resultados de um exemplo criado através do Python.

Como usar IA + Python para o Mercado Financeiro?

Neste post, mostramos como a Inteligência Artificial, aliada à linguagem Python, está revolucionando o mercado financeiro. Exploramos as principais áreas onde essa tecnologia pode ser aplicada — como gestão de carteiras, análise de demonstrações contábeis, estratégias quantitativas, trading e análise macroeconômica — com foco em aplicações práticas e exemplos voltados para o contexto brasileiro.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de 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.