All Posts By

Vitor Wilher

Estimando a volatilidade do câmbio

By | Clube AM

A taxa de câmbio BRL/USD tem sofrido forte deterioração ao longo dos últimos anos. Em grande medida, isso reflete uma piora no cenário doméstico. De forma a verificar se os níveis de volatilidade verificados nesses anos são, de fato, maiores do que aqueles observados na média histórica, vamos estimar um modelo GARCH, como é visto no nosso Curso de Econometria Financeira usando o R. A partir desse modelo, podemos obter a volatilidade da taxa de câmbio.

Uma importante medida em finanças é o risco associado a um ativo e a volatilidade de ativos é talvez a medida de risco mais utilizada. Ainda que a volatilidade seja bem definida, ela não é diretamente observada na prática. Nós observamos os preços dos ativos e seus derivativos. A volatilidade deve ser, então, estimada com base nesses preços observados. Ainda que a volatilidade não seja diretamente observada, ela apresenta algumas características comuns associadas aos retornos dos ativos. Listamos abaixo algumas delas:

  • A volatilidade é alta em certos períodos e baixa em outros, configurando o que a literatura chama de volatility clusters;
  • A volatilidade evolui de maneira contínua, de modo que saltos não são comuns;
  • A volatilidade costuma variar em um intervalo fixo;
  • A volatilidade costuma reagir de forma diferente a um aumento muito grande nos preços e a um decréscimo igualmente muito grande, com o último representando maior impacto.

Essas características implicam que, de modo geral, a volatilidade é uma série estacionária. Ademais, essas características determinam a forma como os modelos serão construídos. De fato, alguns modelos de volatilidade são formatados justamente para corrigir a inabilidade dos atualmente existentes em capturar algumas das características mencionadas acima. Na prática, estima-se a volatilidade de um ativo com base nos seus preços ou derivativos. Tipicamente, três tipos de volatilidade são consideradas:

  • Volatilidade como o desvio-padrão condicional dos retornos diários;
  • Volatilidade implícita, obtida a partir de fórmulas de precificação (como Black-Scholes), com base nos preços do mercado de opções, é possível deduzir a volatilidade do preço da ação. Um exemplo desse tipo de procedimento é o VIX Index;
  • Volatilidade realizada, obtida com base em dados financeiros de alta frequência, como, por exemplo, retornos intraday de 5 minutos.

# Modelagem

Com efeito, para estimar a volatilidade da taxa de câmbio BRL/USD, primeiro, precisamos pegar a série via pacote rbcb no Sistema de Séries Temporais do Banco Central. Feito isso, podemos calcular o log retorno da série, estimar um modelo GARCH(1,1) para os mesmos, extraindo assim a série de volatilidade. O gráfico abaixo ilustra o comportamento da volatilidade ao longo do tempo. A série de câmbio é diária, para o intervalo de 1 de janeiro de 2014 a 5 de outubro de 2018.

A seguir, verificamos o log retorno do câmbio.

E, por fim, obtemos a volatilidade do câmbio.

Para quem deseja se aprofundar nesse tipo de análise de séries temporais financeiras, recomendo o nosso Curso de Econometria Financeira usando o R. Para interessados em econometria de modo geral, veja também nossos Cursos Aplicados de R.

__________________

Membros do Clube AM têm acesso a todos os códigos desse e de vários outros exercícios.

Juro real vs. juro neutro: qual o efeito da política monetária no Brasil?

By | Comentário de Conjuntura

Essa semana, o Banco Central decide o patamar da taxa básica de juros no país. O consenso de mercado indica mais uma alta de 75 pontos-base, o que levaria a Selic para a casa dos 3,5% ao ano. Com efeito, haverá uma pressão adicional na taxa de juros real da economia. A pergunta que fica é se a política monetária ainda continuará no terreno expansionista ou se mudará o sentido para contracionista. Nesse Comentário de Conjuntura, mostramos como avaliar esse ponto na prática com o R.

Membros do Clube AM, por suposto, têm acesso a todos os códigos desse exercício. Esse tipo de tema é ensinado nos nossos Cursos de Análise de Conjuntura usando o R e de Política Monetária

Afim de obter o sentido da política monetária, devemos basicamente comparar o juro real com o juro de equilíbrio da economia brasileira. A diferença entre os dois vai nos dizer se a política monetária está em sentido expansionista (juro real menor que o juro neutro) ou contracionista (juro real maior que o juro neutro).

O juro real que considerei aqui é o juro real ex-ante, obtido a partir do juro do swap DI 360 deflacionado pela expectativa de inflação para os próximos 12 meses. Já o juro de equilíbrio segue uma proxy definida no Relatório de Inflação de dezembro de 2019, dada pela Selic esperada para t+3 deflacionada pela inflação espera para t+3.

Uma vez definidas as variáveis e como obter o sentido da política monetária, chegamos ao gráfico abaixo.

A área azul representa uma política monetária expansionista enquanto a área vermelha representa uma política monetária contracionista. Como se pode ver, a política monetária vem sendo expansionista desde 2017. Além disso, dado que o juro real está próximo da nulidade e o juro neutro encontra-se, por essa proxy, próximo de 3% a.a., ainda há bastante espaço até que haja uma mudança de sentido na política monetária.

Será que o Banco Central está disposto a promover essa mudança em meio a uma crise sanitária sem precedentes? A conferir...

_________________________

Membros do Clube AM, por suposto, têm acesso a todos os códigos desse exercício. Esse tipo de tema é ensinado nos nossos Cursos de Análise de Conjuntura usando o R e de Política Monetária

Salvando histórico da curva de juros PRÉ

By | mercado financeiro

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.

NTN-F 2031 vs. Treasury US 10 anos: spread entre taxas de juros aumenta

By | Comentário de Conjuntura

Tem chamado atenção do mercado o aumento da diferença entre as taxas de juros da NTN-F de 10 anos, com vencimento em 2031 e o Treasury de 10 anos dos Estados Unidos. O aumento do spread entre as taxas têm sido associado ao risco fiscal, expresso na discussão do Orçamento no Congresso. Nesse Comentário de Conjuntura, mostramos como se coleta e se visualiza as taxas diretamente do Tesouro Direto e do FRED St. Louis com o R.

Membros do Clube AM, por suposto, têm acesso a todos os códigos desse exercício.

O início do script que coleta os dados é colocado abaixo. Os dados da NTN-F 10 anos são coletados a partir do pacote GetTDData, enquanto os dados do Treasury de 10 anos são coletados a partir do pacote quantmod. Também coletamos os dados das expectativas fiscais contidas no boletim Focus através do pacote rbcb.

#########################################################
########## NTN-F 10 anos vs. Treasury 10 anos ###########

library(GetTDData)
library(quantmod)
library(timetk)
library(tidyverse)
library(scales)
library(ggcorrplot)
library(vars)
library(aod)
library(rbcb)

### NTN-F 10 anos
download.TD.data("NTN-F")
ntnf31 = read.TD.files(dl.folder = 'TD Files',
maturity = '010131')

### Treasury 10 anos
getSymbols('DGS10', src='FRED')
treasury10 = tk_tbl(`DGS10`, preserve_index = TRUE, rename_index = 'date')

### Expectativas fiscais
fiscal = get_annual_market_expectations('Fiscal',
start_date = '2020-01-01')

fiscal$indic_detail = ifelse(fiscal$indic_detail == "Resultado Primário",
'Resultado Primário', fiscal$indic_detail)

fiscal = fiscal %>%
filter(reference_year == '2021' &
base == 0 & indic_detail %in% c('Resultado Primário', 'Resultado Nominal')) %>%
dplyr::select(date, indic_detail, mean) %>%
spread(indic_detail, mean)

### Data
data = ntnf31 %>%
dplyr::select(ref.date, yield.bid) %>%
rename(date = ref.date, ntnf31 = yield.bid) %>%
mutate(ntnf31 = ntnf31*100) %>%
inner_join(treasury10, by='date') %>%
rename(treasury10 = DGS10) %>%
inner_join(fiscal, by='date') %>%
as_tibble() %>%
drop_na()

Com os dados disponíveis, podemos visualizar a seguir o comportamento das taxas de juros associadas aos títulos do BR e do US, a partir do início do ano.

De fato, existe uma correlação positiva forte entre as séries ao longo desse ano, de 0,91. Essa correlação, entretanto, não implica em causalidade. O teste de Wald, seguindo o procedimento de Toda-Yamamoto, não indica causalidade em nenhuma direção, considerando o nível de significância de 5% para a amostra restrita a 2021. Para uma amostra maior, que contém dados desde fevereiro de 2020, o teste sugere que há causalidade em ambas as direções.

Como se pode observar pelos gráficos acima, tem ocorrido um aumento da taxa de juros associada ao Treasury de 10 anos desde julho do ano passado. A seguir, colocamos o spread entre as taxas de juros de ambos os títulos.

A área hachurada traz o aumento do spread entre as taxas a partir do início de 2021. Abaixo, por suposto, colocamos as expectativas coletadas pelo boletim Focus para as variáveis de fluxo do resultado fiscal esse ano.

Como se vê, existe uma percepção de recrudescimento do resultado primário e do nominal ao longo de 2021. De fato, encontramos evidências de que existe uma precedência temporal entre o resultado nominal e o spread de taxas de juros BR/US.

_________________________

Membros do Clube AM, por suposto, têm acesso a todos os códigos desse exercício.

 

Como foi o impacto da 2ª onda da pandemia sobre o nível de atividade?

By | Comentário de Conjuntura

No ano passado, de modo a inferir o que poderia ocorrer com o PIB em 2020 por causa da pandemia, fiz um exercício da relação entre o mesmo e o Consumo de Energia. Os resultados encontrados sugeriam que a elasticidade entre uma série e outra era de 1,1, indicando que os estragos no nível de atividade seriam grandes, visto o que estava ocorrendo com o consumo de energia. Nesse Comentário de Conjuntura, nós analisamos novamente a série de consumo de energia, disponível na ONS, de modo a vislumbrar o que ocorrerá com o nível de atividade no primeiro trimestre, dada a 2ª onda da pandemia no país.

Membros do Clube AM, por suposto, têm acesso a todos os códigos desse exercício.

Os dados do Consumo de Energia podem ser obtidos no site da ONS. A seguir, colocamos os dados da carga de energia, em MWmed e a tendência da série, obtida através de uma decomposição STL.

Os dados revelam que, de fato, houve um vale na tendência da série em 2020, seguido de uma recuperação no final do ano, que permaneceu em 2021. O mesmo comportamento pode ser visto nos dados mensalizados, quando colocamos a carga contra a carga com ajuste sazonal.

Os dados na margem do IBC-Br, o índice de nível de atividade do Banco Central, corroboram a ideia de que houve crescimento ao longo dos primeiros dois meses do primeiro tri de 2021. A tabela abaixo ilustra.

Índice de Nível de Atividade do Banco Central
Data IBC-Br IBC_sa Margem Interanual Trimestral Anual
2020-09-01 137.06 135.40 1.68 -0.89 8.20 -3.56
2020-10-01 139.45 136.94 1.14 -2.31 6.57 -3.94
2020-11-01 138.01 138.03 0.80 -0.60 4.65 -4.06
2020-12-01 139.69 139.11 0.78 1.56 3.63 -4.00
2021-01-01 132.90 140.85 1.25 -0.53 3.08 -4.05
2021-02-01 135.96 143.24 1.70 0.98 3.13 -4.02

A incógnita fica, evidentemente, sobre o mês de março, quando houve uma série de restrições nos Estados, por conta do avanço da 2ª onda da pandemia no país. Dando um zoom sobre os últimos dados do consumo de energia, observamos um comportamento de normalidade na série, considerando o ajuste sazonal.


A verificar o que, de fato, ocorreu com o PIB no primeiro tri de 2021, mas tudo indica que o buraco vai ser bem menor do que o de 2020. Tudo isso, claro, considerando que o organismo econômico aprendeu a conviver com a pandemia, principalmente pela adesão em massa da economia ao e-commerce. O impacto sobre o nível de atividade, se houve, fica restrito aos meses de março e abril, mas nada comparável ao que houve no ano passado.

____________________________

(*) O exercício entre consumo de energia e PIB pode ser visto aqui.

Seja avisado da nossa próxima aula ao vivo de R para Análise de Dados, toda terça-feira, às 21h!

Quero ser avisado
{"cart_token":"","hash":"","cart_data":""}