Category

Clube AM

Modelando o spread bancário no Brasil

By | Clube AM

No próximo dia 15/12, darei uma aula ao vivo sobre como criar scripts de R que automatizam a coleta, o tratamento, a modelagem e a apresentação de dados. A aula faz parte do lançamento do Clube AM, um novo espaço aqui na Análise Macro para compartilhar os scripts de R que produzimos aqui no Blog e internamente na Análise Macro. Para se inscrever na aula, clique aqui. O projeto de compartilhamento de códigos da Análise Macro vai avançar para uma versão 2.0, que incluirá a existência de um grupo fechado no Whatsapp, de modo a reunir os membros do Novo Clube, compartilhando com eles todos os códigos dos nossos posts feitos aqui no Blog, exercícios de análise de dados de maior fôlego, bem como tirar dúvidas sobre todos os nossos projetos, exercícios e nossos Cursos e Formações.

Para ilustrar o que vamos compartilhar lá nesse novo ambiente, estou publicando nesse espaço alguns dos nossos exercícios de análise de dados. Esses exercícios fazem parte do repositório atual do Clube do Código, que deixará de existir. Além de todos os exercícios existentes no Clube do Código, vamos adicionar novos exercícios e códigos toda semana, mantendo os membros atualizados sobre o que há de mais avançado em análise de dados, econometria, machine learning, forecasting e R.

Hoje, vou mostrar os resultados de um modelo que fizemos no âmbito do Clube para explicar o spread bancário. Em termos gerais, chamamos de spread bancário a diferença entre as taxas de empréstimo para clientes e captação de recursos que os bancos fazem.

Como variáveis explicativas para o spread bancário, foram utilizadas as provisões dos bancos, compulsórios bancários, taxa de inadimplência, taxa básica de juros e taxa de desemprego. À exceção das provisões, todas as demais variáveis se mostraram estatisticamente significativas para explicar o spread.

A tabela abaixo resume os resultados encontrados.

Dependent variable:
spread
provisoes 0.869
(0.629)
compulsorio 0.015***
(0.004)
inadimplencia 1.443***
(0.472)
selic 0.500***
(0.038)
desemprego 0.528***
(0.141)
Constant -8.232***
(1.670)
Observations 103
R2 0.912
Adjusted R2 0.907
Residual Std. Error 0.868 (df = 97)
F Statistic 200.607*** (df = 5; 97)
Note: *p<0.1; **p<0.05; ***p<0.01

 

_______________________

Policiais mortos vs. mortes por policiais no Rio de Janeiro

By | Clube AM

No mês de dezembro, iremos lançar uma nova versão do Clube do Código, que se chamará Clube AM. O projeto de compartilhamento de códigos da Análise Macro vai avançar para uma versão 2.0, que incluirá a existência de um grupo fechado no Whatsapp, de modo a reunir os membros do Novo Clube, compartilhando com eles todos os códigos dos nossos posts feitos aqui no Blog, exercícios de análise de dados de maior fôlego, bem como tirar dúvidas sobre todos os nossos projetos, exercícios e nossos Cursos e Formações.

Para ilustrar o que vamos compartilhar lá nesse novo ambiente, estou publicando nesse espaço alguns dos nossos exercícios de análise de dados. Esses exercícios fazem parte do repositório atual do Clube do Código, que deixará de existir. Além de todos os exercícios existentes no Clube do Código, vamos adicionar novos exercícios e códigos toda semana, mantendo os membros atualizados sobre o que há de mais avançado em análise de dados, econometria, machine learning, forecasting e R.

Hoje, dando sequência a análise da base de dados do Instituto de Segurança Pública (ISP) que comecei no post anterior, fiquei curioso para ver a relação entre duas séries: a de homicídios por intervenção policial e a de policiais militares mortos em serviço.

Como de praxe, o script começa com os pacotes que vamos utilizar.


library(readr)
library(forecast)
library(ggplot2)
library(scales)
library(vars)
library(aod)

A partir disso, nós importamos e tratamos os dados disponíveis no site do ISP.


data = read_csv2('DOMensalEstadoDesde1991.csv')

data = ts(data, start=c(1991,01), freq=12)
hip = window(data[,6], start=c(1998,01))
pmms = window(data[,50], start=c(2003,01))

subdata = ts.intersect(hip, pmms)

Um gráfico das séries que vamos utilizar é colocado abaixo.

Há uma leve correlação positiva entre as séries. De forma a investigar uma relação de causalidade no sentido de Granger, apliquei o procedimento proposto por Toda e Yamamoto (1995) às mesmas. Os resultados encontrados sugerem que existe uma causalidade no sentido de policiais militares mortos em serviços para homicídios por intervenção policial, considerando o nível de 5% de significância. Em outras palavras, policiais mortos em serviços tem precedência temporal sobre o número de homicídios por intervenção policial.

______________

Toda H.Y.; Yamamoto T. (1995). Statistical inference in vector autoregressions with possibly integrated processes. Journal of Econometrics, 66, 225–250. 

(*) Cadastre-se aqui na nossa Lista VIP para receber um super desconto na abertura das Turmas 2021.

Violência no Rio: a economia importa?

By | Clube AM

No mês de dezembro, iremos lançar uma nova versão do Clube do Código, que se chamará Clube AM. O projeto de compartilhamento de códigos da Análise Macro vai avançar para uma versão 2.0, que incluirá a existência de um grupo fechado no Whatsapp, de modo a reunir os membros do Novo Clube, compartilhando com eles todos os códigos dos nossos posts feitos aqui no Blog, exercícios de análise de dados de maior fôlego, bem como tirar dúvidas sobre todos os nossos projetos, exercícios e nossos Cursos e Formações.

Para ilustrar o que vamos compartilhar lá nesse novo ambiente, estou publicando nesse espaço alguns dos nossos exercícios de análise de dados. Esses exercícios fazem parte do repositório atual do Clube do Código, que deixará de existir. Além de todos os exercícios existentes no Clube do Código, vamos adicionar novos exercícios e códigos toda semana, mantendo os membros atualizados sobre o que há de mais avançado em análise de dados, econometria, machine learning, forecasting e R.

Hoje, graças à excelente base de dados do Instituto de Segurança Pública (ISP), vamos falar da relação entre violência e desemprego. Quando se trata de violência carioca, uma pergunta imediata é quais seriam os fatores relevantes para explicar os diversos aspectos da criminalidade no Rio de Janeiro. Pensando nisso, resolvemos fazer um exercício empírico no âmbito do Clube do Código.

Becker (1968) define a decisão de cometer um crime como um processo racional, onde o potencial criminoso calcularia custos e benefícios para então decidir se vai em frente ou não. A partir desse trabalho seminal, uma extensa literatura teórica e empírica tem sido desenvolvida, relacionando diversos fatores econômicos que impactam nos custos e benefícios da decisão de cometer um crime.

O script, então, começa com alguns pacotes.


library(readr)
library(lubridate)
library(magrittr)
library(dplyr)
library(ggplot2)
library(scales)
library(sidrar)
library(corrplot)
library(forecast)
library(dplyr)
library(dynlm)
library(lmtest)
library(CADFtest)
library(gridExtra)
library(stargazer)

Na sequência, nós importamos os dados que precisaremos. Vamos basicamente importar uma planilha disponível no ISP que contém diversas séries temporais envolvendo crimes no Rio de Janeiro. Além disso, vamos importar a taxa de desemprego, disponível no site do SIDRA/IBGE.


url = 'http://www.ispdados.rj.gov.br/Arquivos/DOMensalEstadoDesde1991.csv'
download.file(url, destfile='basededados.csv', mode='wb')
data = read_csv2('basededados.csv') %>%
mutate(date = make_datetime(ano, mes))

desemprego = ts(get_sidra(api='/t/6381/n1/all/v/4099/p/all/d/v4099%201')$Valor,
start=c(2012,03), freq=12)

Uma vez que pegamos os dados que precisamos, nós podemos fazer algum tratamento dos mesmos.


data_ts = ts(data[,-c(1,2,57)], start=c(1991,01), freq=12)
data_ts = ts.intersect(data_ts, desemprego)
colnames(data_ts) = c(colnames(data[,-c(1,2,57)]), 'desemprego')

Com os dados tratados, podemos fazer um gráfico de correlação entre a série de desemprego e as séries de total de roubos e homicídios dolosos.

Os gráficos acima relacionam o total de roubos e os homicídios dolosos no Rio de Janeiro à taxa de desemprego medida pela PNAD Contínua. O desemprego funciona como uma proxy para a situação econômica do país. Como é possível ver, há uma diferença importante na correlação entre os dois tipos de crimes. Enquanto os homicídios são apenas levemente correlacionados com o desemprego, há uma correlação mais forte entre esta e o total de roubos.

Com base nessas variáveis, nós podemos criar um modelo de regressão linear que relaciona as variáveis de crime à taxa de desemprego. A tabela abaixo traz, por seu turno, os resultados das regressões do total de roubos e dos homicídios dolosos contra a taxa de desemprego. De modo a prevenir regressões espúrias, no exercício completo disponível no repositório do Clube do Código, nós testamos as especificações usando o teste CADF, de onde conseguimos rejeitar a hipótese nula de ausência de cointegração. Os modelos, contudo, são bastante distintos em termos de ajuste. Enquanto o desemprego (e mais uma dummy) explicam parte importante da variação do total de roubos, ele explica muito pouco da variação dos homicídios dolosos. Esses resultados, a propósito, estão em linha com Levitt (1997), que mostrou que a taxa de desemprego afeta os crimes contra a propriedade, mas não os crimes violentos.

Dependent variable:
total_roubos hom_doloso
(1) (2)
desemprego 1,116.398*** 1.425
(125.847) (2.420)
dummy -8,374.023**
(3,193.210)
Constant 3,351.565** 368.084***
(1,294.057) (24.961)
Observations 102 102
R2 0.450 0.003
Adjusted R2 0.439 -0.007
Residual Std. Error 3,151.768 (df = 99) 61.098 (df = 100)
F Statistic 40.484*** (df = 2; 99) 0.347 (df = 1; 100)
Note: *p<0.1; **p<0.05; ***p<0.01

 

__________________

(*) Cadastre-se aqui na nossa Lista VIP para receber um super desconto na abertura das Turmas 2021.

Expectativas do Focus subestimam a inflação

By | Clube AM

No mês de dezembro, iremos lançar uma nova versão do Clube do Código, que se chamará Clube AM. O projeto de compartilhamento de códigos da Análise Macro vai avançar para uma versão 2.0, que incluirá a existência de um grupo fechado no Whatsapp, de modo a reunir os membros do Novo Clube, compartilhando com eles todos os códigos dos nossos posts feitos aqui no Blog, exercícios de análise de dados de maior fôlego, bem como tirar dúvidas sobre todos os nossos projetos, exercícios e nossos Cursos e Formações.

Para ilustrar o que vamos compartilhar lá nesse novo ambiente, estou publicando nesse espaço alguns dos nossos exercícios de análise de dados. Esses exercícios fazem parte do repositório atual do Clube do Código, que deixará de existir. Além de todos os exercícios existentes no Clube do Código, vamos adicionar novos exercícios e códigos toda semana, mantendo os membros atualizados sobre o que há de mais avançado em análise de dados, econometria, machine learning, forecasting e R.

Hoje, nós verificamos se as expectativas de inflação relatadas pelo boletim Focus sofrem de viés sistemático, contrariando assim a hipótese de expectativas racionais. Os resultados encontrados sugerem que as expectativas de inflação do boletim Focus subestimam a inflação efetivamente observada.

Para isso, nós basicamente estimamos a equação abaixo, com base em Kohlscheen (2012):

(1)   \begin{align*} \pi_{t} - E_{t-1}[\pi_{t}] = \alpha_0 + \eta_t \end{align*}

onde \pi_{t} é a inflação mensal em t e E_{t-1}[\pi_{t}] é a expectativa para a inflação em t. A estimação dessa equação visa verificar a ausência de viés sistemático nas projeções contidas no boletim Focus.

Abaixo, carregamos os pacotes necessários para o exercício.


library(rbcb)
library(tidyverse)
library(lubridate)
library(scales)
library(latex2exp)
library(scales)
library(lmtest)
library(sandwich)

Na sequência, nós usamos o pacote rbcb para coletar os dados de expectativas de inflação contidas no boletim Focus e os dados da inflação efetiva.


## Coletar as expectativas de inflação diárias e mensalizar os dados
expectativa = get_monthly_market_expectations('IPCA') %>%
mutate(reference_month = ymd(parse_date_time(reference_month,
orders = '%Y-%m')),
diff_months = round(time_length(reference_month - date,
unit='month'),2)) %>%
filter(base == 0 & diff_months > 0 & diff_months < 1) %>%
group_by(mes=floor_date(date, "month")) %>%
summarize(media=mean(mean))

expectativa$mes = expectativa$mes %m+% months(1)

## Coletar os dados de inflação mensal
inflacao = get_series(433, start_date = '2000-04-01') %>%
rename(mes = date, value=`433`)

## Juntar os dados
names = c('date', 'expectativa', 'inflacao')
data = inner_join(expectativa, inflacao, by='mes') %>%
`colnames<-`(names) %>%
mutate(erro = inflacao - expectativa)

Abaixo, um gráfico que contém o erro nas previsões contidas no boletim Focus em relação à inflação mensal efetiva.

Na sequência, nós verificamos se o erro de previsão contém viés, conforme a equação acima.

Dependent variable:
erro
Constant 0.067***
(0.020)
Observations 247
R2 0.000
Adjusted R2 0.000
Residual Std. Error 0.310 (df = 246)
Note: *p<0.1; **p<0.05; ***p<0.01

Isto é, as expectativas do boletim Focus subestimam a inflação mensal em 7 pontos-base, mostrando assim presença de viés nas mesmas. Os resultados encontrados, diga-se, estão em linha com Kohlscheen (2012).

_________________

Kohlscheen, E. 2012. “Uma Nota Sobre Erros de Previsão Da Inflação de Curto Prazo.” Revista Brasileira de Economia 66 (3): 289–97.

(*) Cadastre-se aqui na nossa Lista VIP para receber um super desconto na abertura das Turmas 2021.

Volatilidade da taxa de câmbio e o índice VIX

By | Clube AM

No mês de dezembro, iremos lançar uma nova versão do Clube do Código, que se chamará Clube AM. O projeto de compartilhamento de códigos da Análise Macro vai avançar para uma versão 2.0, que incluirá a existência de um grupo fechado no Whatsapp, de modo a reunir os membros do Novo Clube, compartilhando com eles todos os códigos dos nossos posts feitos aqui no Blog, exercícios de análise de dados de maior fôlego, bem como tirar dúvidas sobre todos os nossos projetos, exercícios e nossos Cursos e Formações.

Para ilustrar o que vamos compartilhar lá nesse novo ambiente, estou publicando nesse espaço alguns dos nossos exercícios de análise de dados. Esses exercícios fazem parte do repositório atual do Clube do Código, que deixará de existir. Além de todos os exercícios existentes no Clube do Código, vamos adicionar novos exercícios e códigos toda semana, mantendo os membros atualizados sobre o que há de mais avançado em análise de dados, econometria, machine learning, forecasting e R.

Hoje, vou mostrar um exercício que fizemos  que buscava relacionar o índice VIX com a volatilidade da taxa de câmbio. Como de praxe, o script começa com alguns pacotes que utilizamos no exercício.


library(BETS)
library(xts)
library(fGarch)
library(scales)
library(quantmod)
library(xts)
library(gridExtra)
library(tidyverse)
library(timetk)

Na sequência, pegamos os dados do câmbio diretamente do site do Banco Central e estimamos a volatilidade da mesma a partir de um modelo GARCH.


cambio = BETSget(1, from='2014-01-01')
cambiod = xts(cambio$value, order.by = cambio$date)
dcambio = diff(log(cambiod))
dcambio = dcambio[complete.cases(dcambio)]
m1=garchFit(~1+garch(1,1),data=dcambio,trace=F)
vol = fBasics::volatility(m1)
vol = xts(vol, order.by = cambio$date[-1])
volatilidade = tk_tbl(vol,
preserve_index = TRUE, rename_index = 'date')

Na sequência, pegamos o índice VIX, utilizando para isso o pacote quantmod. Com as duas séries em mãos, nós podemos juntá-las em um único tibble.


getSymbols('VIXCLS', src='FRED')
vix = tibble(date=as.Date(time(VIXCLS)),
vix = VIXCLS)

data = inner_join(vix, volatilidade, by='date') %>%
drop_na()
colnames(data) = c('date', 'vix', 'volcambio')

De posse dos dados, podemos gerar um gráfico como abaixo.

As séries costumam apresentar alguma correlação positiva. Mas é possível observar na ponta um descolamento das mesmas. Enquanto o VIX está indo para baixo, a volatilidade da taxa de câmbio USD/BRL apresentou uma alta considerável nos últimos dias.

_________________

(*) Cadastre-se aqui na nossa Lista VIP para receber um super desconto na abertura das Turmas 2021.

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":""}