Tag

yahoo finance Archives - Análise Macro

Coletando e visualizando preços de commodities no R

By | mercado financeiro

No Brasil, é comum acompanhar preços de commodities, afinal, qualquer mudança desses ativos afeta a vida dos brasileiros, seja diretamente ou indiretamente, mesmo para quem não atue no mercado financeiro. No post de hoje, vamos mostrar como é possível coletar dados de commodities e visualizá-los no R.

library(quantmod)
library(tidyverse)
library(timetk)

Após o carregamento dos pacotes, iremos criar os vetores com os tickers dos ativos que iremos coletar. Utilizaremos como fonte o Yahoo Finance, portanto, devemos encontrar os símbolos para a coleta no site.

# Define os tickers que iremos coletar

tickers <- c("KC=F", "NG=F", "CL=F", "SB=F")

Com os símbolos em mãos, podemos retirar os preços a partir do ano de interesse (aqui a partir de 2019), utilizando a função getSymbols(). Em seguida, podemos tratar os dados pegando somente os dados de fechamento e juntando em um só tibble os preços das quatro commodities.

Após isso, transformamos nosso conjunto de dados no formato long, de forma que fique mais fácil utilizar o ggplot para a visualiza-los.

# Retira os preços do Yahoo Finance e realiza o tratamento

prices <- getSymbols(tickers, src = "yahoo",
                     from = "2019-01-01") %>%
  map(~Cl(get(.))) %>% 
  reduce(merge) %>% 
  `colnames<-` (c("Coffee Mar 22", "Natural Gas Dec 21", "Crude Oil", "Sugar #11 Mar 22")) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  drop_na()

# Transforma em formato long

prices_long <- prices %>% 
  pivot_longer(cols = -date,
               values_to = "price")


# Plota os preços

prices_long %>% 
ggplot(aes(x = date, y = price, colour = name))+
  geom_line()+
  labs(title = "Preços de Commodities em US$",
       x = "$",
       y = "",
       caption = "Fonte: Yahoo Finance")

Como podemos ver, houve uma escalada de preços do café no ano de 2021. Também é possível notar o momento em que o preço do petróleo cru ficou negativo em abril de 2020.

________________________

(*) Para entender mais sobre Mercado Financeiro e aprender como realizar a coleta, tratamento e visualização de dados financeiros, confira nosso curso R para o Mercado Financeiro.

O sofrimento da Petrobras no R

By | Comentário de Conjuntura

Bolsonaro, enfim, fez o que dele se esperava desde o início do mandato: "dilmou". A demissão do presidente da principal estatal brasileira foi um banho de água fria para investidores domésticos e estrangeiros. O problema aqui vai além da Petrobras em si e afeta praticamente toda a política econômica do atual governo. Em campanha, Bolsonaro flertou com o liberalismo, alimentando-se de um sentimento "antiestadismo" pós-operação Lava Jato. Eleito, porém, era visível o desconforto do Presidente da República com a agenda liberal. Era, portanto, questão de tempo que o seu passado intervencionista desse o ar da graça.

Investidores domésticos e estrangeiros, por óbvio, irão colocar isso no preço. Para ilustrar, vamos nesse Comentário de Conjuntura olhar as ações de três empresas estatais: Banco do Brasil, Eletrobras e Petrobras. Além disso, vamos ver o que aconteceu com o Ibovespa, dados os eventos recentes.

Os membros do Clube AM, como sempre, têm acesso aos códigos completos desse Comentário e também a um vídeo explicativo sobre como rodar os códigos.

Vamos começar, como de praxe, carregando alguns pacotes de R.


library(tidyverse)
library(quantmod)
library(timetk)
library(scales)
library(tidyquant)

Feito isso, podemos pegar os dados de ações dessas três estatais a partir da base de dados do yahoo finance.


symbols = c('PETR4.SA', 'BBAS3.SA', 'ELET6.SA')

prices = getSymbols(symbols, src='yahoo', from='2020-01-01') %>%
map(~Ad(get(.))) %>%
reduce(merge) %>%
`colnames<-` (symbols) %>%
tk_tbl(preserve_index = TRUE, rename_index = 'date') %>%
drop_na() %>%
gather(variavel, valor, -date)

Com os dados carregados, nós podemos gerar um gráfico da ação da Petrobras.

A ação da Petrobras sofreu uma queda de 21,5% nessa segunda-feira, mostrando o descontentamento do mercado com a interferência política do Palácio do Planalto sobre a estatal. Para além da Petrobras, será que tivemos queda nas outras estatais? O gráfico abaixo ilustra.

O Banco do Brasil também parece ter sofrido com o "efeito Petrobras": a ação do Banco teve queda de 11,6% nessa segunda-feira. A Eletrobrás, por outro lado, não parece ter sentido impacto relevante, ao menos por enquanto.

E o IBOVESPA?

O Índice Bovespa acabou sendo levado pelo mau humor dos investidores com a interferência política e fechou com queda de quase 5% nessa segunda-feira.

Difícil dizer como acabará o governo Bolsonaro, mas uma coisa parece cada vez mais clara para quem acompanha a política econômica: o flerte com o liberalismo está sepultado.

___________________

(*) Conheça o Clube AM e faça parte de um grupo exclusivo de compartilhamento de códigos e troca de informações entre os membros;

(**) Uma introdução à análise de dados no mercado financeiro é feita no nosso Curso de Mercado Financeiro e Gestão de Portfólios. As inscrições estão abertas para a Turma de Verão: aproveite!

Visualizando os preços de ações com o R

By | mercado financeiro

Nosso objetivo no Curso Mercado Financeiro e Gestão de Portfólios é o de proporcionar tanto uma introdução dos alunos ao mercado financeiro quanto o de munir os mesmos com ferramentas analíticas para gestão de portfólios e tratamento/visualização de dados. Para ilustrar, vamos ver como é possível coletar dados de preços de ações a partir da base de dados online do Yahoo Finance e visualizar os mesmos com o pacote ggplot2.

Com o código a seguir, nós estamos pegando os preços das ações da Petrobras, Ambev, Magazine Luíza e Via Varejo.


library(tidyverse)
library(tidyquant)
library(timetk)
library(scales)
library(quantmod)

symbols = c('PETR4.SA', 'ABEV3.SA', 'MGLU3.SA', 'VVAR3.SA')
prices = getSymbols(symbols, src='yahoo',
from='2019-01-01',
to='2020-04-20',
warning=FALSE) %>%
map(~Cl(get(.))) %>%
reduce(merge) %>%
`colnames<-` (symbols) %>%
tk_tbl(preserve_index = TRUE,
rename_index = 'date') %>%
drop_na()

Observe que o código já trata os dados, tanto colocando os mesmos em um tibble quanto eliminando os valores faltantes (missing values). Feito isso, podemos criar um gráfico de linhas com o pacote ggplot2.


filter(prices, date > '2019-09-01') %>%
ggplot(aes(x=date))+
geom_line(aes(y=PETR4.SA, colour='PETR4'))+
geom_line(aes(y=ABEV3.SA, colour='ABEV3'))+
geom_line(aes(y=MGLU3.SA, colour='MGLU3'))+
geom_line(aes(y=VVAR3.SA, colour='VVAR3'))+
scale_colour_manual('',
values=c('PETR4'='blue',
'ABEV3'='red',
'MGLU3'='orange',
'VVAR3'='green'))+
scale_x_date(breaks = date_breaks("14 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
legend.position = 'bottom')+
labs(x='', y='R$',
title='Preços de ações brasileiras selecionadas',
caption='Fonte: analisemacro.com.br com dados do Yahoo Finance')

A partir daí, podemos criar os retornos das ações e partir para a construção do nosso portfólio.

Você as colocaria no seu?

________________

(*) Isso e muito mais você irá aprender no nosso Novo Curso Mercado Financeiro e Gestão de Portfólios.

Transformando preços em log-retornos mensais com o R tidyquant

By | Hackeando o R

No post anterior, eu mostrei como é possível coletar os preços de ações com o R através do pacote quantmod, utilizando a base de dados do Yahoo Finance. Essa representação dos dados, contudo, não é a mais conveniente para a gestão de portfólios, como veremos no nosso Novo Curso Mercado Financeiro e Gestão de Portfólios. Para fins de construção de portfólios, é conveniente usarmos os retornos ou log-retornos dos ativos. De fato, uma grande parte dos estudos financeiros envolve retorno, ao invés de preço, de ativos. Isto porque, retorno de ativos pode ser um completo sumário para oportunidades de investimento, bem como séries de retorno são mais fáceis de lidar do que séries de preço porque aquelas possuem propriedades estatísticas mais atrativas.

Há, entretanto, diversas definições de retorno de ativos. Tomando P_t como o preço de um ativo no tempo t, considerando que a princípio o ativo não paga dividendos, ao manter um ativo por um período de t-1 a t, isso resultaria em um retorno bruto simples de

(1)   \begin{align*} 1 + R_t = \frac{P_t}{P_{t-1}} \end{align*}

O retorno líquido ou simples então será de

(2)   \begin{align*} R_t = \frac{P_t}{P_{t-1}} - 1 = \frac{P_t - P_{t-1}}{P_{t-1}} \end{align*}

Já o logaritmo natural do retorno bruto simples de um ativo é chamado de retorno composto continuamente ou simplesmente log-retorno:

(3)   \begin{align*} r_t = \text{ln} (1+R_t) = \text{ln} \frac{P_t}{P_{t-1}} = p_t - p_{t-1} \end{align*}

onde p_t = ln (P_t).  A seguir, pegamos nossas ações coletadas no post anterior e calculamos os log-retornos mensais com o pacote tidyquant.


library(tidyverse)
library(tidyquant)
library(timetk)
library(scales)
library(quantmod)

prices = getSymbols(symbols, src='yahoo',
from='2019-01-01',
to='2020-04-20',
warning=FALSE) %>%
map(~Cl(get(.))) %>%
reduce(merge) %>%
`colnames<-` (symbols) %>%
tk_tbl(preserve_index = TRUE,
rename_index = 'date') %>%
drop_na()

returns = prices %>%
gather(asset, prices, -date) %>%
group_by(asset) %>%
tq_transmute(mutate_fun = periodReturn,
period='monthly',
type='log') %>%
spread(asset, monthly.returns) %>%
select(date, symbols)

A seguir, construímos um gráfico desses retornos.


ggplot(returns, aes(x=date))+
geom_line(aes(y=PETR4.SA, colour='PETR4'))+
geom_line(aes(y=ABEV3.SA, colour='ABEV3'))+
geom_line(aes(y=MGLU3.SA, colour='MGLU3'))+
geom_line(aes(y=VVAR3.SA, colour='VVAR3'))+
scale_colour_manual('',
values=c('PETR4'='blue',
'ABEV3'='red',
'MGLU3'='orange',
'VVAR3'='green'))+
scale_x_date(breaks = date_breaks("1 month"),
labels = date_format("%b/%Y"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
legend.position = 'bottom',
plot.title = element_text(size=10, face='bold'))+
labs(x='', y='',
title='Log-Retornos mensais de ações brasileiras selecionadas',
caption='Fonte: analisemacro.com.br com dados do Yahoo Finance')

Observa-se uma queda forte no mês de março por conta da pandemia do coronavírus, como era esperado.

(*) Isso e muito mais você irá aprender no nosso Novo Curso Mercado Financeiro e Gestão de Portfólios.


Visualizando os preços de ações com o R

By | Hackeando o R

Nosso objetivo no novo Curso Mercado Financeiro e Gestão de Portfólios da área de finanças da Análise Macro será o de proporcionar tanto uma introdução dos alunos ao mercado financeiro quanto o de munir os mesmos com ferramentas analíticas para gestão de portfólios e tratamento/visualização de dados. Para ilustrar, vamos ver como é possível coletar dados de preços de ações a partir da base de dados online do Yahoo Finance e visualizar os mesmos com o pacote ggplot2.

Com o código a seguir, nós estamos pegando os preços das ações da Petrobras, Ambev, Magazine Luíza e Via Varejo.


library(tidyverse)
library(tidyquant)
library(timetk)
library(scales)
library(quantmod)

symbols = c('PETR4.SA', 'ABEV3.SA', 'MGLU3.SA', 'VVAR3.SA')
prices = getSymbols(symbols, src='yahoo',
from='2019-01-01',
to='2020-04-20',
warning=FALSE) %>%
map(~Cl(get(.))) %>%
reduce(merge) %>%
`colnames<-` (symbols) %>%
tk_tbl(preserve_index = TRUE,
rename_index = 'date') %>%
drop_na()

Observe que o código já trata os dados, tanto colocando os mesmos em um tibble quanto eliminando os valores faltantes (missing values). Feito isso, podemos criar um gráfico de linhas com o pacote ggplot2.


filter(prices, date > '2019-09-01') %>%
ggplot(aes(x=date))+
geom_line(aes(y=PETR4.SA, colour='PETR4'))+
geom_line(aes(y=ABEV3.SA, colour='ABEV3'))+
geom_line(aes(y=MGLU3.SA, colour='MGLU3'))+
geom_line(aes(y=VVAR3.SA, colour='VVAR3'))+
scale_colour_manual('',
values=c('PETR4'='blue',
'ABEV3'='red',
'MGLU3'='orange',
'VVAR3'='green'))+
scale_x_date(breaks = date_breaks("14 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
legend.position = 'bottom')+
labs(x='', y='R$',
title='Preços de ações brasileiras selecionadas',
caption='Fonte: analisemacro.com.br com dados do Yahoo Finance')

A partir daí, podemos criar os retornos das ações e partir para a construção do nosso portfólio.

Você as colocaria no seu?

(*) Isso e muito mais você irá aprender no nosso Novo Curso Mercado Financeiro e Gestão de Portfólios.


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

Assinar Gratuitamente