Category

Política Monetária

Análise das Atas do COPOM com text mining

By | Data Science, Política Monetária

Introdução

Mineração de texto, ou text mining, é um tópico muito interessante, pois há um potencial enorme de aplicações para obtenção de insights através dessa técnica envolvendo análise textual. Com a finalidade de demonstrar seu uso, neste post faremos uma breve e introdutória análise das atas do Comitê de Política Monetária - COPOM usando text mining com o auxílio do pacote tidytext.

As atas do COPOM são um caminho natural para qualquer economista em busca de uma fonte de dados para exercitar o text mining, já que a autoridade monetária realiza ajustes (mudanças) no texto a cada reunião, realizada a cada 45 dias. As atas são disponibilizadas publicamente neste link em arquivos PDFs (atualmente há 238 reuniões realizadas). Inicialmente vamos pegar o arquivo da última reunião publicada e importar os dados para o R, fazendo tratamentos e posterior análise. Por fim, vamos coletar os dados de todo o histórico de atas para refazer a análise de forma a incorporar o componente temporal.

Um ponto importante é que utilizaremos as versões em inglês das atas, apesar de o COPOM disponibilizar também em português. Isso se deve ao fato de que as ferramentas aqui utilizadas, para aplicar a técnica de text mining, funcionarem melhor com textos na língua inglesa.

Pacotes

Os pacotes utilizados neste exercício podem ser instalados/carregados com o gerenciador pacman, todos provenientes do CRAN:


# Instalar/carregar pacotes
if(!require("pacman")) install.packages("pacman")
pacman::p_load(
"tidytext",
"pdftools",
"stopwords",
"textdata",
"dplyr",
"tidyr",
"lubridate",
"magrittr",
"knitr",
"ggplot2",
"ggthemes",
"jsonlite",
"purrr",
"stringr",
"scales",
"forcats"
)

Text mining de uma ata do COPOM

Vamos importar a última ata do COPOM para o R. Primeiro criamos um objeto para armazenar o link para o arquivo e, na sequência, usamos a função pdf_text do pacote pdftools para ler cada página do arquivo PDF e transformar os dados em um vetor de caracteres de tamanho igual ao número de páginas.

# URL da última ata do COPOM
www <- "https://www.bcb.gov.br/content/copom/copomminutes/MINUTES%20238.pdf"
# Ler arquivo PDF convertendo para caracter
raw_copom_last <- pdftools::pdf_text(www)

Tratamento de dados

Um primeiro olhar sobre os dados mostrará que há uma série de caracteres especiais "\n" e "\r" que indicam quebras de linhas. Portanto, vamos tratar de forma a obter um objeto tibble com uma coluna (text) com os dados do texto de cada página da ata, outra coluna (meeting) indicando o mês da reunião e a última coluna (page) que informará a página referente ao texto.

# Tratamento de dados
copom_last_clean <- dplyr::tibble(
text = unlist(strsplit(raw_copom_last, "\r"))
) %>% 
dplyr::mutate(
meeting = "May 2021", 
page = dplyr::row_number(),
text = gsub("\n", "", text)
)

Text mining

Agora estamos com os dados quase prontos para uma análise! O que faremos agora é começar a aplicar algumas das técnicas de text mining provenientes do livro Text Mining with R escrito pela Julia Silge e David Robinson.

O primeiro passo é "tokenizar" nossos dados, de forma a obter "unidades do texto" que servirão para a análise. Isso facilitará para realizarmos a contagem de palavras frequentes, filtrar palavras em específico, etc. O processo de "tokenizar" é definido no livro como:

"A token is a meaningful unit of text, most often a word, that we are interested in using for further analysis, and tokenization is the process of splitting text into tokens."

Para utilizar a técnica, usamos a função unnest_tokens do pacote tidytext e na sequência realizamos a contagem das palavras encontradas:

# Text mining - Criar tokens
copom_last <- copom_last_clean %>% 
tidytext::unnest_tokens(word, text)
# Contar palavras
copom_last %>%
dplyr::count(word, sort = TRUE) %>% 
dplyr::slice_head(n = 6) %>% 
knitr::kable()


Como podemos observar, as palavras mais frequentes são palavras comuns como "the", "of", "in", etc. que não servirão muito para nossa análise. Essas palavras são chamadas de "stop words" no mundo do text mining. Vamos fazer uma tratativa para remover essas palavras usando como base o objeto stop_words proveniente do pacote tidytext e, antes, removemos também números que foram apontados como "palavras":

copom_last_sw <- copom_last %>%
# Remover palavras comuns (stop words)
dplyr::anti_join(stop_words)%>%
# Remover números
dplyr::mutate(word = gsub("[^A-Za-z ]", "", word)) %>%
# Contar palavras
dplyr::count(word, sort = TRUE) %>% 
dplyr::filter(word != "")
copom_last_sw %>% 
dplyr::slice_head(n = 6) %>% 
knitr::kable()

Agora sim temos os dados prontos para uma análise de sentimento!

Análise de sentimento

Nosso foco agora é usar ferramentas de análise para tirar informação desses dados, ou seja, queremos saber o que as palavras das atas do COPOM podem indicar com base na tentativa de apontarmos um "score" para cada uma delas, usando datasets e bibliotecas de "sentimento do texto" do tidytext para isso.

Vamos ver quais são as palavras negativas e positivas usadas com mais frequência. A função get_sentiments do tidytext fará isso pra gente, bastando apontar um lexicon, que pode ser "bing", "afinn", "loughran" ou "nrc".

# Obter análise de sentimento das palavras com base em uma biblioteca
copom_last_sw %>%
dplyr::inner_join(tidytext::get_sentiments("bing")) %>% 
dplyr::slice_head(n = 10) %>% 
knitr::kable()

Como resultado, "risks" é a palavra negativa que aparece mais vezes (13 no total) nessa ata do COPOM, e "recovery", uma palavra positiva, é usada 4 vezes no total. Um segundo olhar sobre esse resultado pode levantar uma suspeita, pois "recovery" é apontada como uma palavra positiva (recuperação), no entanto, é razoável supor que pode estar também associada com uma situação anterior negativa. Isso é um possível problema da análise que o leitor pode investigar.
Agora vamos explorar a análise graficamente:

# Análise de sentimento final da ata de Maio/2021
copom_sentiment <- copom_last %>%
dplyr::inner_join(tidytext::get_sentiments("bing")) %>%
dplyr::count(meeting, page, sentiment) %>%
tidyr::pivot_wider(
id_cols = c(meeting, page),
names_from = sentiment, 
values_from = n,
values_fill = 0
) %>%
dplyr::mutate(sentiment = positive - negative)
# Gerar gráfico
copom_sentiment %>% 
ggplot2::ggplot(ggplot2::aes(page, sentiment, fill = sentiment > 0)) +
ggplot2::geom_col(show.legend = FALSE) +
ggplot2::scale_fill_manual(values = c("#b22200", "#282f6b")) +
ggplot2::labs(
x = "Página da ata",
y = "Sentimento",
title = "Análise de sentimento da Ata do COPOM - Maio/2021",
subtitle = "Bing lexicon",
caption = paste0("Elaboração: analisemacro.com.br\nDados: ", www)
)

O gráfico conta uma história interessante. O texto começou negativo na página 3 (sobre atualização de conjuntura, cenário e riscos), mas depois foi "neutro" na página 4 (sentimento positivo - negativo = 0) - onde é discutido a condução da política monetária e -, por fim, na última página o texto fica positivo com a decisão da reunião do COPOM.

Vale enfatizar que a primeira página, referente a capa, não é considerada na análise. Já a página 2, da contracapa, possui igual número de palavras negativas e positivas.

Text mining com todas as atas do COPOM

Agora vamos aplicar a técnica apresentada acima para um conjunto maior de dados, desta vez vamos pegar todas as atas disponíveis no site do Banco Central do Brasil - BCB através deste link.

Vamos expandir nossa análise capturando o texto de cada Ata do COPOM desde sua 42ª reunião, totalizando 198 atas para nossa análise. Faremos a comparação da frequência relativa de palavras e tópicos e veremos como o sentimento (conforme explorado acima) varia entre os relatórios.

Dados

Infelizmente, os links para as atas em PDF seguem um padrão irregular, mas felizmente para você, preparei um web-scrapping que automatizará o processo de captura dos links e dados. O código a seguir coletará os arquivos PDF e os deixará prontos para a mineração com o tidytext.

# URL para página com JSON dos links das atas
www_all <- "https://www.bcb.gov.br/api/servico/sitebcb/copomminutes/ultimas?quantidade=2000&filtro="
# Raspagem de dados
raw_copom <- jsonlite::fromJSON(www_all)[["conteudo"]] %>% 
dplyr::as_tibble() %>% 
dplyr::select(meeting = "Titulo", url = "Url") %>% 
dplyr::mutate(url = paste0("https://www.bcb.gov.br", url)) %>% 
dplyr::mutate(text = purrr::map(url, pdftools::pdf_text))
# Tratamento de dados
copom_clean <- raw_copom %>% 
tidyr::unnest(text) %>% 
dplyr::filter(!meeting == "Changes in Copom meetings") %>% 
dplyr::group_by(meeting) %>%
dplyr::mutate(
page = dplyr::row_number(),
text = strsplit(text, "\r") %>% gsub("\n", "", .),
meeting = stringr::str_sub(meeting, 1, 3) %>% 
stringr::str_remove("[:alpha:]") %>% 
as.numeric()
) %>%
dplyr::ungroup() %>% 
tidyr::unnest(text) %>% 
dplyr::arrange(meeting)

Estatística básica dos dados

Vamos ver o que conseguimos obter calculando algumas estatísticas básicas dos textos.

Número de palavras por ata

# Frequência de palavras por ata
copom_words <- copom_clean %>%
tidytext::unnest_tokens(word, text) %>%
dplyr::count(meeting, word, sort = TRUE) %>%
dplyr::ungroup()
# Total de palavras por ata
total_words <- copom_words %>% 
dplyr::group_by(meeting) %>% 
dplyr::summarize(total = sum(n))
# Gerar gráfico
total_words %>% 
ggplot2::ggplot(ggplot2::aes(x = meeting, y = total)) +
ggplot2::geom_line(color = "#282f6b", size = 0.8)+
ggplot2::geom_point(
shape = 21, 
fill = "white", 
color = "#282f6b", 
size = 1.6, 
stroke = 1.1
) +
ggplot2::scale_y_continuous(labels = scales::number_format()) +
ggplot2::labs(
x = "Reunião (nº da ata)", 
y = "Número de palavras",
title = "Número de palavras nas atas do COPOM",
subtitle = "42ª até 238ª reunião",
caption = "Elaboração: analisemacro.com.br\nDados: BCB"
)

Percebe-se algumas mudanças ao longo do tempo, especialmente entre as reuniões número 180 e 181, onde houve remoção considerável de seções do comunicado na gestão Tombini. No mesmo sentido, de redução do total de palavras por comunicado, o início da gestão de Illan Goldfajn marcou mudança no layout e estrutura das seções da ata, alterações essas que permanecem em vigor até hoje.

A redução do tamanho dos comunicados, de forma geral, é certamente um ponto interessante que merece investigação em se tratando de qualidade de comunicação da política monetária.

Sobre o que os diretores discutiram nas reuniões?

Vamos compilar uma lista das palavras usadas com maior frequência em cada ata. Como antes, vamos omitir as "stop words".

# Palavras por ata
copom_text <- copom_clean %>% 
dplyr::select(meeting, page, text) %>%
tidytext::unnest_tokens(word, text)
# Gerar gráfico
copom_text %>% 
dplyr::mutate(word = gsub("[^A-Za-z ]", "", word)) %>%
dplyr::filter(word != "") %>%
dplyr::anti_join(stop_words) %>%
dplyr::group_by(meeting) %>%
dplyr::count(word, sort = TRUE) %>% 
dplyr::mutate(rank = dplyr::row_number()) %>%
dplyr::ungroup() %>% 
dplyr::arrange(rank, meeting) %>%
dplyr::filter(rank < 9, meeting > 230) %>% 
ggplot2::ggplot(ggplot2::aes(y = n, x = forcats::fct_reorder(word, n))) +
ggplot2::geom_col(fill = "#282f6b") +
ggplot2::facet_wrap(~meeting, scales = "free", ncol = 4) +
ggplot2::coord_flip() +
ggplot2::labs(
x = "",
y = "",
title = "Palavras mais frequentes nas atas do COPOM",
subtitle = "Excluídas palavras comuns (stop words) e números.",
caption = "Elaboração: analisemacro.com.br\nDados: BCB"
)


Como esperado, muitas discussões sobre inflação. Vamos tentar encontrar algo mais informativo com esses dados.

Conforme Silge e Robinson, podemos usar a função bind_tf_idf para juntar a frequência do termo (tf) e a frequência inversa do documento (idf) ao nosso conjunto de dados. Essa estatística diminuirá o peso em palavras muito comuns e aumentará o peso em palavras que só aparecem em algumas atas. Em essência, extrairemos o que há de especial em cada ata. As atas do COPOM sempre falarão muito sobre inflação e juros, e a estatística "tf-idf" pode nos dizer algo sobre o que é diferente em cada ata.

Também limparemos alguns termos adicionais que o pdftools captou (abreviações e palavras estranhas ou fragmentadas), aumentando nossa lista de "stop words".

# Stop words personalizadas
custom_stop_words <- dplyr::bind_rows(
dplyr::tibble(
word = c(
tolower(month.abb), 
tolower(month.name),
"one","two","three","four","five","six","seven","eight","nine","ten",
"eleven","twelve", "wkh", "ri", "lq", "month", "wr", "dqg",
"hdu", "jurzwk", "zlwk", "zlwk", "hfhpehu", "dqxdu", "kh", "sulfh", "dv",
"kh", "prqwk", "hdu", "shulrg", "dv", "jurzwk", "wkdw", "zdv", "iru", "dw",
"wkdw", "jrrgv", "xqh", "eloolrq", "eloolrq", "iluvw", "dq", "frqvxphu", 
"prqwk", "udwh", "sulo", "rq", "txduwhu", "vhfwru", "pandemic", 
"dffxpxodwhg", "hg", "kdyh", "sdqghg", "sulfhv", "rq", "sdqvlrq", 
"percent", "forvhg", "frpsduhg", "lqgh", "ryhpehu", "wklv", "kdv", "prqwkv",
"bcbgovbr", "banco", "head"
), 
lexicon = c("custom")
),
stop_words
)
# Palavras por ata
copom_text_refined <- copom_text %>% 
dplyr::mutate(word = gsub("[^A-Za-z ]", "", word)) %>%
dplyr::filter(word != "") %>%
dplyr::group_by(meeting) %>% 
dplyr::count(word, sort = TRUE) %>% 
tidytext::bind_tf_idf(word, meeting, n) %>% 
dplyr::arrange(desc(tf_idf))
# Gerar gráfico
copom_text_refined %>% 
dplyr::anti_join(custom_stop_words, by = "word") %>%
mutate(word = factor(word, levels = rev(unique(word)))) %>% 
dplyr::group_by(meeting) %>%
dplyr::mutate(id = dplyr::row_number()) %>%
dplyr::ungroup() %>% 
dplyr::filter(id < 9, meeting > 230) %>% 
ggplot2::ggplot(ggplot2::aes(y = tf_idf, x = word, fill = meeting)) +
ggplot2::geom_col(show.legend = FALSE) +
ggplot2::facet_wrap(~meeting, scales = "free", ncol = 4) +
ggplot2::coord_flip() +
ggplot2::labs(
x = "",
y = "tf-idf",
title = "Palavras mais distintas nas atas do COPOM",
subtitle = "Estatística tf-idf do tidytext",
caption = "Elaboração: analisemacro.com.br\nDados: BCB"
) +
ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, hjust = 1))

Esse gráfico já mostram uma história interessante dessa amostra que escolhemos. Podemos observar preocupações com o BREXIT, reformas e agenda econômica, o surgimento do termo "covid" a partir da ata nº 231 e subsequente adoção do forward guidance e, por fim, também como destaque, a mudança da política para uma "normalização parcial" (termos "partial" e "normalization").

Comparando o sentimento entre as atas
Como o sentimento variou entre as atas? Vamos usar a abordagem que usamos no início para a ata de maio/2021 e aplicá-la a cada ata.

# Análise de sentimento das atas
copom_sentiment_all <- copom_text %>%
dplyr::anti_join(stop_words) %>%
dplyr::inner_join(tidytext::get_sentiments("bing")) %>%
dplyr::count(meeting, page, sentiment) %>%
tidyr::pivot_wider(
id_cols = c(meeting, page),
names_from = sentiment, 
values_from = n,
values_fill = 0
) %>%
dplyr::mutate(sentiment = positive - negative)
# Gerar gráfico
copom_sentiment_all %>% 
dplyr::filter(meeting > 230) %>% 
ggplot2::ggplot(ggplot2::aes(page, sentiment, fill = sentiment > 0)) +
ggplot2::geom_col(show.legend = FALSE) +
ggplot2::scale_fill_manual(values = c("#b22200", "#282f6b")) +
ggplot2::facet_wrap(~meeting, ncol = 4, scales = "free_x") +
ggplot2::annotate("segment", x = -Inf, xend = Inf, y = -Inf, yend = -Inf)+
ggplot2::annotate("segment", x = -Inf, xend = -Inf, y = -Inf, yend = Inf) +
ggplot2::labs(
x = "Página da ata",
y = "Sentimento",
title = "Análise de sentimento das Ata do COPOM",
subtitle = "Bing lexicon, amostra das últimas 8 atas",
caption = "Elaboração: analisemacro.com.br\nDados: BCB"
)

O resultado mostra que o sentimento mudou consideravelmente no texto das atas da amostra das últimas 8 reuniões, com forte predominância "negativa" desde o advento da pandemia da Covid-19.

Conclusão

Isso é tudo por hoje. Essas técnicas são muito interessantes e promissoras, merecendo exploração aprofundada. Certamente o exercício aqui apresentado possui falhas e pontos de melhoria, mas serve como uma introdução ao tema. Espero que goste, caro leitor!

Possui interesse no tema de política monetária? A Análise Macro disponibiliza o curso de Teoria da Política Monetária dentro da temática de Central Banking. Aproveite!

_____________

O papel das expectativas na condução da política monetária

By | Política Monetária

A introdução da hipótese de expectativas racionais por Muth (1961) e a nova versão da Curva de Phillips apresentada por Friedman (1968) e Phelps (1967) modificaram de forma sensível a teoria econômica. Antes, os modelos da síntese neoclássica tinham como ponto pacífico que a política econômica deveria ser discricionária, definindo a cada ponto do tempo a melhor forma de intervir no organismo econômico, dado um conjunto de informações disponíveis. Reconhecido, porém, o papel reservado às expectativas dos agentes privados, de forma geral, e das expectativas racionais, em particular, a política discricionária se mostraria inconsistente no tempo. Era preciso, desse modo, construir um novo arcabouço teórico e prático para condução da política econômica.

Muth (1961, pg. 316) define o conceito de expectativas racionais da seguinte forma: “(…) the subjective probability distribution of outcomes tend to be distributed, for the same information set, about the ‘objective’ probability distributions of outcomes)”. Isso não implica que as previsões dos agentes privados não contenham erros ou que não haja dispersão entre elas; apenas que os agentes não desperdiçam informação, bem como que a formação de expectativas depende da estrutura da economia. Desse modo, as expectativas de inflação dos agentes privados para o próximo período, por exemplo, levam em consideração toda a informação disponível, inclusive aquelas referentes às decisões passadas de política monetária, como mostra a equação a seguir.

(1)   \begin{align*} \pi_{t+1}^e = E[\pi_{t+1} | I_t] \end{align*}

A forma de modelar as expectativas dos agentes privados teve impacto direto na construção de modelos macroeconômicos e, portanto, na condução da política monetária. Phelps (1967) não faz uso de expectativas racionais, mas ao considerar que os agentes podem alterar suas expectativas de inflação de acordo com novas informações sobre o estado da economia – inclusive da política econômica – propõe uma nova versão da Curva de Phillips.[1] Nessa, o trade-off de curto prazo entre inflação e desemprego se modifica: ele passa a ser entre desemprego abaixo da taxa natural e inflação em aceleração.

Friedman (1968) reforça a ideia contida na nova versão da Curva de Phillips proposta por Phelps (1967) ao argumentar que a política monetária está limitada a controlar apenas, ao menos no longo prazo, variáveis nominais, não tendo efeito sobre variáveis reais. Lucas (1972, 1973) faz uso da hipótese de expectativas racionais para construir uma Curva de Oferta que relaciona o produto efetivo ao produto natural mais desvios entre a inflação observada e as expectativas de inflação. Desse modo, políticas monetárias que tentem manter a taxa de desemprego abaixo da natural desencadearão uma correção nas expectativas de inflação, o que ao fim não só não terá efeito, como produzirá menos crescimento.

Lucas (1976) fez uma crítica econométrica aos modelos da síntese neoclássica, que davam suporte à discricionariedade na condução da política econômica. Para o autor, sob expectativas racionais, os parâmetros da estrutura econômica não são estáveis, como pensavam os autores da síntese. Desse modo, mudanças nos instrumentos de política levam a mudanças nos parâmetros, o que gera resultados diferentes dos previstos pelo policymaker.[2] A política monetária expansionista não terá, nesse contexto, qualquer efeito sobre o produto.[3]

Dois outros aspectos são derivados da hipótese de expectativas racionais. O primeiro deles é o conceito de inconsistência intertemporal.[4] Dada uma função objetivo que envolve decisões de política para o período 1 a T e decisões de agentes privados para o mesmo período, Kydland e Prescott (1977) definem que uma política será intertemporalmente consistente se levar em consideração tanto as decisões passadas dos agentes econômicos, quanto as futuras decisões de política.

Nesse contexto, afirmam os autores, os modelos normativos de política econômica da síntese neoclássica, que estavam baseados na teoria de controle ótimo, não levariam a uma posição de maximização do bem estar social. Isto porque, políticas intertemporalmente consistentes são necessariamente subótimas. Desse modo, calibrar o instrumento de política a cada ponto do tempo, de acordo com o ambiente econômico, como previsto em Tinbergen (1952) e Theil (1961), resultaria apenas em mais inflação e nenhum efeito sobre o desemprego.

Para esses autores, os modelos da síntese neoclássica só levam ao ótimo social se as expectativas dos agentes forem estáticas. Em um ambiente de expectativas racionais, os agentes levam em consideração toda a informação disponível, logo não há por que duvidar do fato deles levarem em consideração as decisões passadas de política monetária. Uma vez incorporadas essas decisões, as expectativas de inflação se elevam, o que reduz ou mesmo anula os ganhos das políticas discricionárias em termos de emprego e crescimento.

A introdução da hipótese de expectativas racionais altera sensivelmente os objetivos a serem perseguidos pela autoridade monetária. Blinder (1999) sintetiza essa mudança na seguinte passagem:

“Se as expectativas são racionais, as pessoas entendem o padrão de comportamento do banco central e a política monetária não pode produzir diferenças sistemáticas entre inflação real e esperada. Então, um banco central que regularmente se atenha aos ganhos de curto prazo irá, na média, produzir mais inflação, mas não mais emprego que um banco central mais resoluto”(pg. 59).

O corolário imediato da hipótese de expectativas racionais é, nesse aspecto, que a política monetária deva perseguir, apenas, a estabilidade de preços. Tentar explorar o trade-off de curto prazo entre inflação e desemprego só causará inflação em aceleração.

(*) Isso e muito mais você aprende em nosso curso de Teoria da Política Monetária.

_______________________

[1] A versão anterior remonta a Phillips (1958).

[2] Tecnicamente, , onde é um vetor de instrumentos e um vetor de parâmetros.

[3] Salvo no caso de restrição de informação.

[4] O outro é o viés inflacionário de políticas discricionárias, que será abordado na próxima seção.

_______________________

Barro, R. J. and Gordon, D. B. A positive theory of monetary policy in a natural rate model. The Journal of Political Economy, 91(4):589610, 1983a.
Barro, R. J. and Gordon, D. B. Rules, discretion and reputation in a model of monetary policy. Journal of monetary economics, 12(7):101121, 1983b.
Blinder, A. S. Bancos Centrais: teoria e prática. São Paulo: Editora 34, 1999.
Friedman, M. (1968). “The role of monetary policy.” The American Economic Review, 58(1), 1-17.
Kydland, F. E. and Prescott, E. C. Rules rather than discretion: the inconsistency of optimal plans. The Journal of Political Economy, 85(3):473492, 1977.
Larrain, F. and Sachs, J. D. Macroeconomia em uma Economia Global. Editora Pearson Makron Books, 2000.
Licha, A. L. Teoria da Política Monetária - Uma abordagem de nível intermediário. Alta Books, 2015.
Lima, V. W. R. Clareza da Comunicação do Banco Central e Expectativas de Inflação: evidências para o Brasil. PPGE-UFF, Faculdade de Economia, Universidade Federal Fluminense, Dissertação de Mestrado, 2015.
Lucas, R. E. Econometric policy evaluation: A Critique. Carnegie-Rochester Conference Series on Public Policy, 1:1946, 1976.
Muth, J. F. Rational expectations and the theory of price movements. Econometrica, 29(3):315335, 1961.
Phelps, E. S. (1967). “Phillips Curves, Expectations of Inflation and Optimal Unemployment over Time.” Economica, New Series, 34(135), 254-281.
Phillips, A. W. (1958). “The relation between unemployment and the rate of change of money wage rates in the United Kingdow, 1861-1957.” Economica, 25(100), 283-299.
Theil, H. A Note on Certainty Equivalence in Dynamic Planning. Econometrica, 25:April:346349, 1957.
Tinbergen, J. On the Theory of Economic Policy. North-Holland, Amsterdam, 1952.

Ibovespa vs. Juro Real ex-ante

By | Política Monetária

Na sexta-feira, escrevi sobre a queda do juro real ex-ante para abaixo de 2% a.a. Esse comportamento do juro, a propósito, pode estar associado à valorização do índice Bovespa, uma vez que existe uma correlação negativa entre as variáveis. Para ilustrar essa correlação, basta tomarmos o juro real ex-ante, isto é, o Swap DI 360 deflacionado pela expectativa de inflação contra o Ibovespa em um gráfico como o abaixo.

A correlação entre as variáveis é de impressionantes 0,94 negativos. Os dados são diários.

__________________________

Quer aprender a fazer gráficos como esse usando o R? Conheça nossos Cursos!

Juro Real abaixo de 2%

By | Política Monetária

Na próxima semana, o Comitê de Política Monetária (COPOM) se reúne para decidir sobre a trajetória da taxa básica de juros, a Selic, em meio a uma guinada no juro real ex-ante. O Swap DI 360 deflacionado pela expectativa de inflação 12 meses à frente está hoje abaixo de 2% a.a, como mostra o gráfico abaixo.

Ao que parece, o cenário convergiu para uma redução na taxa básica de juros, a começar na próxima semana. Dado o comportamento da inflação condicionada, há espaço para corte até, pelo menos, 5,5% a.a.

_____________________________

Quer entender mais sobre isso? Conheça nosso Curso de Teoria da Política Monetária.

Crescimento esperado segue em queda livre

By | Política Monetária

Amanhã, o Banco Central divulga a ata da última reunião do COPOM. O que se sabe até aqui, porém, é que o crescimento esperado para 2019 segue em queda livre. Na última leitura do boletim Focus, divulgada hoje pela manhã, a mediana das instituições consultadas espera agora crescimento de 0,87%. Além disso, houve redução pela primeira vez na inflação esperada para 2020: antes em 4%, agora caiu para 3,95%. Isto é, levemente abaixo da meta estipulada pelo CMN para o próximo ano. O gráfico abaixo, por suposto, sintetiza a expectativa para as quatro variáveis macroeconômicas mais relevantes da economia.

Vai se consolidando um cenário de baixo crescimento e inflação abaixo da meta, o que levará o Banco Central a puxar a taxa básica de juros para baixo. A depender, obviamente, dos desdobramentos da reforma da previdência.

Uma apresentação RMarkdown automática do boletim Focus está disponível aqui.

Quer aprender a coletar e tratar dados com o R? Veja nossos Cursos!

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

Assinar Gratuitamente
{"cart_token":"","hash":"","cart_data":""}