# Pacotes
library(BatchGetSymbols)
library(tidyquant)
## Pegando ações do índice bovespa
ibov <- GetIbovStocks()
tickets <- paste(ibov$tickers,".SA",sep = "")
## Baixando cotações
dados <- tq_get(tickets,from = Sys.Date() - 252)
Essa simples pergunta faz as pessoas perderem ou ganharem muito dinheiro. E para se dar bem, é preciso não perder o seu timing.
No mercado financeiro, existem dois tipos de análise, a Fundamentalista, na qual leva em consideração os fundamentos economicos e financeiros das empresas, como DRE,BP, gestão e etc. A outra forma, a análise Técnica, leva em consideração graficos e indicadores das proprias ações, em geral, seu movimento de curto prazo.
Um dos indicadores dessa análise é a famosa média móvel, que pode ser calculada de acordo com a média dos últimos n dias de cotações. Geralmente os analistas calculam duas médias, uma que chamamos de curto prazo com normalmente 10 dias, e a que chamamos de longo prazo, com duração de 50 dias.
A posição dessas médias pode ser entendido como uma ordem de trade. Por exemplo: Se a média de longo prazo estiver acima da de curto prazo, podemos entender como a hora de vender o ativo. Já se o contrario ocorrer, podemos entender que pode ser a hora de comprar o ativo.
Vejamos uma aplicação real.
## Media Movel
dados %>% filter(symbol == "ITUB4.SA") %>%
ggplot(aes(x = date, y = close)) +
geom_barchart(aes(open = open, high = high, low = low, close = close)) +
geom_ma(ma_fun = SMA, n = 10, linetype = 5, size = 1.25) +
geom_ma(ma_fun = SMA, n = 50, color = "red", size = 1.25) +
labs(title = "ITUB4 (Itaú)",
subtitle = "10 e 50 - dias Média Movel Simples",
y = "Preço de Fechamento", x = "") +
theme_tq()
A média de longo prazo é representado pela linha vermelha, enquanto que a de curto prazo é representado pela linha azul. O que podemos verificar é que até meados de março, ainda tinhamos o sinal de compra ligado, porém, houve uma inversão das médias e portanto hoje estamos com uma tendencia de baixa e podemos interpretar que essa é a hora da venda.
O Índice bovespa contém os 66 ativos mais liquidos do mercado. Podemos então produzir uma tabela diariamente para nos manter informados sobre a estrategia de media movel, se é a hora de comprar ou vender cada um dos ativos.
## Construindo series de medias moveis
dados <- dados %>%
group_by(symbol) %>%
tq_mutate(
select = close, # Coluna de preçoes
mutate_fun = rollapply, # Função de janela
width = 7, # Tamanho da média
align = "right", # Alinhamento a direita na base de dados
FUN = mean, # Função média
col_rename = "Media_Movel_7_dias") %>%
tq_mutate(
select = close,
mutate_fun = rollapply,
width = 21,
align = "right",
FUN = mean,
col_rename = "Media_Movel_21_dias")
## Criando Coluna de decisão de compra ou venda
dados <- dados %>% mutate(ordem = ifelse(Media_Movel_7_dias > Media_Movel_21_dias,"Compra","Venda"))
## Montando tabela
library(DT)
dados %>% filter(date == max(date)) %>% # Filtrando ultimo dia de cotação
select(date,symbol,close,ordem) %>% # Selecionando colunas da tabela
mutate(close = round(close,1)) %>% # Arredondando os preços de fechamento
datatable(extensions = 'Buttons', options = list( # Função geradora da tabela
dom = 'Bfrtip',
buttons = c('excel', 'pdf')
)) %>%
formatStyle('ordem',
color = styleEqual(c("Compra","Venda"), c('green', 'red'))
)
Lembrando que nenhuma dessas análises estão valendo como recomendação de investimento :)