copom-prospective-scenarios.Rmd
Para realizar a interpolação FlatForwardCOPOM utilizamos a função interp_flatforwardcopom
onde defini-se as datas das reuniões futuros do COPOM e atribui-se a curva de juros utilizando o método interpolation
. Um resultado dessa interpolação é um vetor com as mudanças de taxa implícitas na curva de juros considerando as reuniões do COPOM. Diferentemente, a função interp_copomscenarios
constrói um interpolador que utiliza cenários de mudanças de taxa nas datas de reunião do COPOM e realiza a interpolação. Dessa maneira é possível observar a estrutra a termo interpolada e comparar com os pontos da curva. Isso é interessante por que as mudanças implicitas na curva, em geral, veem em números quebrados e as mudanças executadas pelo COPOM, em geral, são múltiplos de 25 bps. Assim é possível visualizar qual conjunto de mudanças múltiplas de 25 bps mais se aproxima da curva de juros.
library(tidyverse)
#> ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
#> ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
#> ✔ tibble 3.1.8 ✔ dplyr 1.0.9
#> ✔ tidyr 1.2.0 ✔ stringr 1.4.0
#> ✔ readr 2.1.2 ✔ forcats 0.5.1
#> ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ dplyr::lag() masks stats::lag()
library(fixedincome)
#>
#> Attaching package: 'fixedincome'
#>
#> The following objects are masked from 'package:dplyr':
#>
#> first, last
library(copom)
#> Loading required package: bizdays
#>
#> Attaching package: 'bizdays'
#>
#> The following object is masked from 'package:stats':
#>
#> offset
refdate <- as.Date("2022-04-29")
terms <- c(1, 23, 44, 65, 88, 109, 129, 149, 171, 193, 211, 234, 252)
rates <- c(
0.1165, 0.1247, 0.1265, 0.1281, 0.1294, 0.1298, 0.1301, 0.1304,
0.1303, 0.1305, 0.1306, 0.1302, 0.1300
)
curve <- spotratecurve(
rates, terms, "discrete", "business/252", "Brazil/ANBIMA",
refdate = refdate
)
copom_dates <- get_copom_dates(refdate, 4)
moves <- c(100, 0, 0, 0) / 1e4
interpolation(curve) <- interp_copomscenarios(copom_dates, copom_moves = moves)
plot(curve, use_interpolation = TRUE)
moves <- c(100, 25, 0, 0) / 1e4
interpolation(curve) <- interp_copomscenarios(copom_dates, copom_moves = moves)
plot(curve, use_interpolation = TRUE)
moves <- c(100, 50, 0, 0) / 1e4
interpolation(curve) <- interp_copomscenarios(copom_dates, copom_moves = moves)
plot(curve, use_interpolation = TRUE)