O dia depois do fim

Pela terceira vez nesse século, a Bovespa acionou o circuit breaker, mecanismo que paralisa os negócios por 30 minutos após uma queda de 10% no índice. O movimento refletiu o aumento da incerteza nos mercados globais, por conta da guerra no mercado de petróleo entre a Arábia Saudita e a Rússia. Eventos como esse são raros de ocorrer, de modo que é possível dizer que o mercado financeiro passou ontem por um forte teste de estresse.

Para ilustrar, vamos considerar a variação percentual entre a mínima do dia e o fechamento no pregão anterior. Para isso, vamos carregar alguns pacotes e pegar os dados que precisaremos para esse comentário.


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

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

## Maiores quedas no BOVESPA
first.date = as.Date('2007-01-01')
last.date = as.Date('2020-03-09')
my.assets = c('CSNA3.SA','PETR4.SA', 'MRFG3.SA', 'PETR3.SA')
my.l = BatchGetSymbols(tickers = my.assets,
first.date = first.date,
last.date = last.date)

Uma vez que pegamos os dados, nós fazemos a criação das métricas que precisaremos.


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

E a seguir, plotamos o gráfico com especial atenção para os eventos de circuit breaker.


ggplot(df_ibov, aes(x=time, y=variacao))+
geom_line()+
geom_hline(yintercept=-10, colour='red', linetype='dashed')+
annotate('text', x=as.Date('2017-05-18'), y=-11,
label='Joesley Day',
colour='darkblue', size=4.5)+
annotate('text', x=as.Date('2020-03-09'), y=-13,
label='Petróleo',
colour='darkblue', size=4)+
annotate('text', x=as.Date('2008-09-15'), y=-16,
label='Subprime',
colour='darkblue', size=4)+
scale_x_date(breaks = date_breaks("6 months"),
labels = date_format("%b/%Y"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='%',
title='Variação do Ibovespa: Mínima do pregão sobre fechamento do pregão anterior (%)',
caption='Fonte: analisemacro.com.br')

Quedas de mais de 10% em um pregão são raras, como é possível ver na amostra acima. Para um total de 3.268 pregões, apenas em três deles tivemos uma queda maior do que 10%. Foram causados pela crise do subprime nos Estados Unidos em 2008, pelo Joesley Day doméstico e agora pela crise entre os membros da Opep. A seguir, listamos as maiores quedas dentro da BOVESPA.


filter(my.l$df.tickers, ref.date > '2019-01-01') %>%
ggplot(aes(x = ref.date, y = price.close))+
geom_line()+facet_wrap(~ticker, scales = 'free_y')+
scale_x_date(breaks = date_breaks("30 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1))

As ações da Petrobras foram as que mais sofreram no pregão de ontem. A PETR3 e a PETR4 caíram 29,68% e 29,70%, respectivamente. Também sofreram perdas grandes a CSNA3 e a MRFG3, com quedas de 25,29% e 23,89%, respectivamente. Em termos gerais, o Ibovespa caiu 12,17% e a taxa de câmbio já é cotado hoje acima de 4,70 R$/US$. Ilustramos a seguir o comportamento das duas séries.


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

g1 = filter(df_ibov, time > '2019-05-01') %>%
drop_na() %>%
ggplot(aes(x=time, y=ibov/1000))+
annotate("rect", fill = "orange", alpha = 0.3,
xmin = as.Date('2020-01-23'),
xmax = as.Date('2020-03-09'),
ymin = -Inf, ymax = Inf)+
geom_line()+
scale_x_date(breaks = date_breaks("30 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='Mil Pontos',
title='Índice Bovespa')

g2 = filter(df_cambio, time > '2019-05-01') %>%
drop_na() %>%
ggplot(aes(x=time, y=cambio))+
annotate("rect", fill = "blue", alpha = 0.3,
xmin = as.Date('2020-01-01'),
xmax = as.Date('2020-03-10'),
ymin = -Inf, ymax = Inf)+
geom_line()+
scale_x_date(breaks = date_breaks("30 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='',
title='Taxa de Câmbio R$/US$')

grid.arrange(g1, g2, ncol=2, nrow=1)

E, por fim, ilustramos o comportamento da volatilidade de ações, com base no índice VIX.


df_vix = tibble(time=as.Date(time(VIXCLS)),
vix = VIXCLS)

filter(df_vix, time > '2018-01-01') %>%
ggplot(aes(x=time, y=vix))+
geom_line()+
scale_x_date(breaks = date_breaks("30 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='',
title='VIX Index')

O cenário externo virou de vez. A volatilidade está em níveis bastante elevados. Nesse quadro, é preciso que os poderes Legislativo e Executivo se entendam e deem cabo das reformas que faltam para destravar o ambiente de negócios. Sem isso, corremos um sério risco de cair em uma nova recessão.

___________________

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

(**) Aprenda a analisar dados financeiros em nosso curso de  Econometria Financeira usando o R.

___________________


Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Análise exploratória para modelagem preditiva no Python

Antes de desenvolver bons modelos preditivos é necessário organizar e conhecer muito bem os dados. Neste artigo, damos algumas dicas de recursos, como gráficos, análises e estatísticas, que podem ser usados para melhorar o entendimento sobre os dados usando Python.

Como usar modelos do Sklearn para previsão? Uma introdução ao Skforecast

Prever séries temporais é uma tarefa frequente em diversas áreas, porém exige conhecimento e ferramentas específicas. Os modelos de machine learning do Sklearn são populadores, porém são difíceis de aplicar em estruturas temporais de dados. Neste sentido, introduzimos a biblioteca Skforecast, que integra os modelos do Sklearn e a previsão de séries temporais de forma simples.

Boletim AM

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

Boletim AM

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

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.