Tag

coronavírus e ibovespa Archives - Análise Macro

Evolução do coronavírus no Brasil

By | Comentário de Conjuntura

O Brasil chegou hoje aos 291 casos confirmados de Covid-19, o coronavírus. A evolução da doença no Brasil e a comparação com outros países, em particular com a Itália, mostra que o país precisa adotar medidas ainda mais restritivas de afastamento social. Para ilustrar, a seguir importo os dados disponibilizados pelo Ministério da Saúde.


library(tidyverse)
library(scales)

data = read_csv('data.csv') %>%
add_row(Data = '2020-03-17', pos = 291) %>%
mutate(incidence = pos - lag(pos,1)) %>%
mutate(dias = seq(1:length(pos)))

A seguir, nós coletamos os dados referentes à Itália.


italia = read_csv2('italia.csv',
col_types = list(col_date(format='%d/%m/%Y'),
col_double())) %>%
mutate(dias = seq(1:length(confirmados)))

O gráfico abaixo mostra o comportamento dos casos confirmados ao longo do tempo.


ggplot(data, aes(x=Data, y=pos))+
geom_line(size=.8, colour='darkblue')+
geom_point(colour='red', fill='red')+
scale_x_date(breaks = date_breaks("3 day"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=10, face='bold'))+
labs(x='', y='',
title='Casos de Covid-19 confirmados no Brasil',
caption='Fonte: Ministério da Saúde')

A seguir, plotamos a incidência diária.


ggplot(data, aes(x=Data, y=incidence))+
geom_bar(stat='identity', colour='darkblue', fill='darkblue',
width=.8)+
scale_x_date(breaks = date_breaks("2 day"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=10, face='bold'))+
labs(x='', y='',
title='Incidência de Casos de Covid-19 no Brasil',
caption='Fonte: Ministério da Saúde')

Para efeitos de comparação, colocamos abaixo a curva italiana a partir dos 150 casos.

filter(italia, confirmados > 150) %>%
ggplot(aes(x=date, y=confirmados/1000))+
geom_line(size=.8, colour='darkblue')+
geom_hline(yintercept=10, colour='black', linetype='dashed')+
geom_point(colour='red', fill='red')+
scale_x_date(breaks = date_breaks("1 day"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=10, face='bold'))+
labs(x='', y='Mil Casos',
title='Casos de Covid-19 confirmados na Itália',
caption='Fonte: Johns Hopkins CSSE')

A Itália saiu de 155 para 10.149 casos em apenas 16 dias! Em outras palavras, o Brasil precisa urgentemente adotar medidas fortes de isolamento social para que não sigamos a mesma trajetória.

________________________

(*) Na próxima sexta-feira, publico um modelo de ajuste para a propagação do Covid-19 no âmbito do Clube do Código.

(**) Isso e muito mais você aprende nos nossos Cursos Aplicados de R.

(***) O código completo e os datasets estarão disponíveis amanhã no Clube do Código.

(****) Quem quiser reproduzir os códigos acima, pode baixar os datasets aqui e aqui.


Evolução do coronavírus pelo mundo

By | Hackeando o R

Construir um modelo que busque identificar a evolução de casos confirmados de contaminação por vírus não é algo trivial. Basicamente, porque é difícil incluir no modelo contrapartidas que sejam feitas pelos países. Isso dito, uma primeira avaliação passa por verificar a evolução dos casos confirmados pelo mundo. O gráfico abaixo ilustra a evolução na China, que adotou medidas fortes de contenção, na Itália, no mundo e no Brasil.

Maiores detalhes sobre a base de dados podem ser vistos no post anterior. Ao longo dos próximos dias, vou escrever outros textos sobre o assunto, bem como devo colocar algum exercício de modelagem e previsão no Clube do Código.

___________________

(*) Isso e muito mais você aprende nos nossos Cursos Aplicados de R.


Análise do coronavírus com o R

By | Hackeando o R

Foi uma semana excepcionalmente complexa para os mercados financeiros globais. Na BOVESPA, houve quatro circuit breakers, algo inédito na história da bolsa. A conjunção do avanço do coronavírus pelo mundo com a tensão no mercado de petróleo estão por trás do abalo sísmico. De forma a compreender o avanço da doença pelo mundo, há uma boa base de dados disponibilizada pelo Center for Systems Science and Engineering da Johns Hopkins University. Os dados estão disponíveis para o período de 22 de janeiro a 12 de março. O repositório pode ser visto aqui.

Para quem tiver interesse em olhar os dados com o R, é possível ainda baixar um guia bem legal produzido pelo Yanchang Zhao. Há um post no R Bloggers sobre o assunto aqui. A seguir, eu ilustro o avanço da doença pelo mundo e o comportamento da taxa de letalidade.

Os casos confirmados de coronavírus chegaram a 128,3 mil casos, com uma taxa de letalidade de 3,67%. Chama atenção a rapidez com que a doença tem se alastrado pelo mundo. Tendência que deve continuar nas próximas semanas.

___________________

(*) Isso e muito mais você aprende nos nossos Cursos Aplicados de R.


A frustrante retomada

By | Comentário de Conjuntura

Amanhã, o IBGE divulga o resultado das Contas Nacionais no 4º trimestre. Se confirmada a expectativa do mercado, o PIB cresceu em torno de 1,1% no ano passado, encerrando dois anos de forte frustração com a retomada cíclica da economia. Para ilustrar o argumento, considere abaixo as expectativas das instituições ouvidas pelo boletim Focus para o crescimento da economia.


library(rbcb)
library(ggplot2)
library(scales)
library(gridExtra)
library(dplyr)
library(magrittr)

pibe = get_annual_market_expectations('PIB Total',
start_date = '2017-01-02')

O código carrega alguns pacotes e pega os dados de expectativa para o PIB a partir de janeiro de 2017. A seguir, filtramos as expectativas ao longo do ano para 2017, 2018 e 2019, já guardando os respectivos gráficos.


g1 = filter(pibe, reference_year == '2017' & date > '2017-01-03' &
date <= '2018-03-31') %>%
mutate(crescimento_efetivo = rep(1, length(mean))) %>%
ggplot(aes(x=date))+
geom_line(aes(y=mean), size=.8, colour='darkblue')+
geom_line(aes(y=crescimento_efetivo), size=.8, colour='red',
linetype='dashed')+
theme(plot.title = element_text(size=13,
face='bold'))+
scale_x_date(breaks = date_breaks("1 month"),
labels = date_format("%b/%Y"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='% a.a.',
title='2017')

g2 = filter(pibe, reference_year == '2018' & date > '2018-01-03' &
date <= '2019-03-31') %>%
mutate(crescimento_efetivo = rep(1.1, length(mean))) %>%
ggplot(aes(x=date))+
geom_line(aes(y=mean), size=.8, colour='darkblue')+
geom_line(aes(y=crescimento_efetivo), size=.8, colour='red',
linetype='dashed')+
theme(plot.title = element_text(size=13,
face='bold'))+
scale_x_date(breaks = date_breaks("1 month"),
labels = date_format("%b/%Y"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='% a.a.',
title='2018')

g3 = filter(pibe, reference_year == '2019' & date > '2019-01-03' &
date <= '2020-03-31') %>%
mutate(crescimento_efetivo = rep(1.1, length(mean))) %>%
ggplot(aes(x=date))+
geom_line(aes(y=mean, colour='Expectativa Focus',
linetype='Expectativa Focus'), size=.8)+
geom_line(aes(y=crescimento_efetivo, colour='Crescimento Efetivo',
linetype='Crescimento Efetivo'), size=.8)+
scale_colour_manual('',
values=c('Expectativa Focus'='darkblue',
'Crescimento Efetivo'='red'))+
scale_linetype_manual('',
values=c('Expectativa Focus'='solid',
'Crescimento Efetivo'='dashed'))+
theme(legend.position = c(.7,.6),
plot.title = element_text(size=13,
face='bold'))+
scale_x_date(breaks = date_breaks("1 month"),
labels = date_format("%b/%Y"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='% a.a.',
title='2019')

A seguir, usamos a função grid.arrange para construir um layout que inclua os três gráficos.


grid.arrange(g1, g2, g3,
layout_matrix=rbind(c(1,3), c(2,3)),
ncol=2)

Após uma expectativa pessimista para o crescimento em 2017, os agentes do mercado começaram 2018 prevendo um crescimento em torno de 2,5%. A greve dos caminhoneiros em maio iniciou uma sequência de revisões na expectativa de crescimento, levando-a para 1,2% ao final de fevereiro de 2018. O crescimento ficaria em 1,1% (revisado posteriormente para 1,3%).

Em 2019, o enredo foi basicamente o mesmo: a expectativa de crescimento começou acima de 2,5% e foi sendo sistematicamente corrigida para baixo ao longo do ano. Ao final de fevereiro desse ano, a expectativa convergiu para 1,1%.

Diante desse preâmbulo, o medo que domina o mercado é a repetição do enredo em 2020. Após um terceiro trimestre com crescimento acima do esperado, houve correção altista na expectativa de crescimento para esse ano. Os dados de nível de atividade do quatro trimestre, porém, provocaram redução baixista nas últimas semanas. Colabora para agravar esse quadro, os ventos do cenário externo, fortemente abalado pelo coronavírus.


filter(pibe, reference_year == '2020' & date > '2019-10-03') %>%
ggplot(aes(x=date))+
geom_line(aes(y=mean), size=.8)+
theme(plot.title = element_text(size=13,
face='bold'))+
scale_x_date(breaks = date_breaks("15 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='% a.a.',
title='Crescimento esperado para 2020')

Se não bastasse tudo isso, o executivo não ajuda, forçando uma queda de braço desnecessária com o Congresso.

Simplesmente frustrante, para dizer o mínimo.

___________________

(*) O código completo desse comentário estará disponível logo mais no Clube do Código.

(**) Aprenda a analisar dados em nossos Cursos Aplicados de R.

___________________


Todo carnaval tem seu fim

By | Comentário de Conjuntura

A volta do carnaval foi marcada por forte correção no índice Bovespa. Ao longo do período de recesso no Brasil, as bolsas no exterior refletiam o mau humor com o alastramento do coronavírus pela Europa. A queda sofrida ontem pelo Ibovespa é comparável ao famoso Joesley Day, em 18 de maio de 2017, quando o índice caiu quase 9% em um único pregão. A taxa de câmbio também renovou máxima histórica, se aproximando de 4,44 R$/US$.

Abaixo, ilustramos o comportamento do Ibovespa e da taxa de câmbio a partir dos dados contidos no yahoo finance, que podem ser coletados com o pacote quantmod. Antes de mais nada, carregamos alguns pacotes.


library(quantmod)
library(ggplot2)
library(scales)
library(forecast)
library(readr)
library(xts)
library(gridExtra)
library(tidyverse)

E agora podemos pegar as séries que queremos.


## Pegar dados
getSymbols("BRL=X",src="yahoo")
getSymbols("^BVSP",src="yahoo")

Nós tratamos as séries, de modo a criar variações diárias para o IBOV e os log retornos para a taxa de câmbio.


df_ibov = tibble(time=as.Date(time(BVSP)),
ibov=BVSP$BVSP.Close) %>%
mutate(dibov = (BVSP$BVSP.Close/lag(BVSP$BVSP.Close,1)-1)*100)

df_cambio = tibble(time=as.Date(time(`BRL=X`)),
cambio = `BRL=X`[,4]) %>%
mutate(log_cambio = diff(log(cambio)))

De posse dos dados tratados, podemos gerar o gráfico abaixo.

O índice Bovespa caiu 7% em relação ao nível obtido no último pregão, fechando aos 105,7 mil pontos. Uma baita ressaca pós-carnaval...

___________________

(*) O código completo desse comentário estará disponível logo mais no Clube do Código.

(**) Aprenda a analisar dados em nossos Cursos Aplicados de R.

___________________


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

Assinar Gratuitamente