All Posts By

Luiz Henrique Barbosa Filho

Finanças Quantitativas: Como coletar dados de Criptomoedas no R

By | mercado financeiro

As criptomoedas tem tomado grande espaço dentro do mercado financeiro, tanto como forma de investimento, quanto em discussões sobre sua usabilidade como moeda. Apesar de todas essas questões, é um fato que as criptomoedas inovaram na forma de transacionar moedas, utilizando a tecnologia de blockchain e de criptografia. Vamos explicar neste post como podemos coletar seus preços no R.

As criptomoedas, mais conhecidas como moedas digitais, são ativos descentralizados, ou seja, não possuem o controle de nenhuma autoridade monetária. Em sua grande maioria, como não há emissão de novas moedas por algum órgão, possuem oferta limitada, sendo seu preço medido substancialmente pela demanda.

Além do advento de diferente tipos de moedas digitais, a consolidação e também a aceitação de sua tecnologia pela população mundial, sua demanda tem aumentado substancialmente na última década, elevando os preços de diversas moedas digitais. Iremos visualizar essa mudança ao longo do tempo utilizando a linguagem R.

A primeira forma de realizar a coleta dos preços diários das criptomoedas é através do pacote {quantmod}, utilizando como fonte o Yahoo Finance. Os tickers das criptomoedas podem ser encontradas dentro do site do Yahoo Finance.

Aqui utilizaremos como exemplo o Bitcoin (BTC-USD), Ethereum (ETH-USD) e Dogecoin (DOGE-USD).

library(quantmod)
library(tidyverse)



tickers <- c("BTC-USD", "ETH-USD", "DOGE-USD")

getSymbols(Symbols = tickers, # Os tickers dos ativos a serem coletados
           src = "yahoo", # A fonte da coleta dos dados
           auto.assign = TRUE, # Permitir que faça a auto atribuição
           warnings = FALSE
           )

A função getSymbols() permite que realizemos a coleta de dados direto do Yahoo Finance. É feito também uma auto atribuição dos dados coletados a objetos com o nomes dos tickers na forma OHLCVA (Open, High, Low, Close, Volume e Adjusted).

Podemos por fim realizar a visualização dos dados coletados. O próprio pacote fornece meios simplificados para gerar os gráficos.

chartSeries(`BTC-USD`)

Podemos também mudar as cores dos gráficos.

chartSeries(`ETH-USD`,
            theme = chartTheme('white',
                               up.col='blue',
                               dn.col='red')
            )

chartSeries(`DOGE-USD`,
            theme = chartTheme('white',
                               up.col='blue',
                               dn.col='red'),
            subset = "2021") # Filtra o período de tempo

Outro pacote que vale a menção é o {coinmarketcapr}, que nos dá informações além dos preços das criptomoedas, porém, com um limite de uso e de informações que podem ser coletadas através do plano de básico da API. Portanto, não iremos fazer sua avaliação aqui, somente deixando para quem queira se aprofundar neste campo.

Exportando data frames do R para planilhas

By | Hackeando o R

Imagine-se na seguinte situação: o seu chefe lhe pede uma análise de um conjunto de dados "sujos", que requerem um enorme trabalho de limpeza, além de que se faça cálculos complexos. Você, inteligente e inovador, pretende realizar todo o trabalho com o R, já que a linguagem permite que você faça o trabalho rapidamente. Há um porém, o seu chefe ainda não conhece muito bem a linguagem, e também necessita passar as informações para outros setores da empresa, e por isso, pede que o conjunto de dados seja entregue em uma planilha. Neste texto, iremos mostrar como é possível resolver esse problema, exportando data frames para planilhas utilizando os pacote {XLConnect} e {googlesheets4}.

# Carrega os pacotes necessários
library(googlesheets4)
library(XLConnect)
library(tidyverse)

Primeiro, iremos mostrar como exportar uma data frame para um arquivo .xlsx. O primeiro passo é carregar o arquivo
de formato .xlsx, para que seja feita a conexão com o R. Veja que é possível conectar a uma planilha já existente, utilizando a função loadWorkbook(), passando nome do arquivo em questão no primeiro argumento, bem como criar um arquivo direto do R, passando o argumento create = TRUE. Fazemos isso tudo salvando em um objeto.

Logo em seguida, realizamos a criação de páginas dentro da planilha, no qual iremos colocar nossos dados. Podemos fazer isso com a função createSheet(), em que passamos o objeto que conecta com o arquivo .xlsx, e o nome da página. Após isso, utilizamos a função writeWorksheet() para enfim escrever os dados na planilha. Veja que podemos escolher as coordenadas em que os dados estarão guardados usando os argumentos startRow e startCol, que por padrão começam na linha 1, coluna 1.

Por fim, salvamos o arquivo utilizando a função saveWorkbook().


# Cria um arquivo .xlsx
flowers <- loadWorkbook("iris.xlsx", create = TRUE)

# Cria uma página no arquivo
createSheet(flowers, "iris1")

# Escreve na página criada
writeWorksheet(flowers, iris, sheet = "iris1", startRow = 1, startCol = 1)

# Salva o arquivo
saveWorkbook(flowers)

Outro pacote muito útil para transformar data frames em planilhas é o {googlesheets4], que justamente conecta os dados em uma planilha no Google Planilhas.

Para isso, é necessário que o pacote tenha permissão da sua conta Google para realizar as mudanças. Para isso, utiliza-se a função gs4_auth(), colocando seu e-mail de uso.

Em seguida, cria-se a planilha utilizando a função gs4_create(), passando o nome da planilha como primeiro argumento, e o data frame que podem ser utilizados.

Em caso de alterações, podemos escrever por cima da planilha utilizando a função write_sheet(). O argumento ss é usado para conectar a planilha, podemos usar tanto a url, quanto o id salvo dentro do argumento iris_gg.

## Google Sheets

# Conecta a conta do Google, para garantir a permissão
gs4_auth(email = "luiz@exemplo.com")

# Cria uma planilha dentro do Google Planilhas
iris_gg <- gs4_create("flowers", sheets = iris)

# Escreve por cima do arquivo criado anteriormente
write_sheet(data = filter(iris, Species == "setosa"),
            ss = "1V2722XxqQHbi_9V_bi5LAxwEHrQTXHCW4OnpyjjxiQg",
            sheet = "iris")

Serve como um bom quebra-galho, não?

Analisando ações através de gráficos do pacote {PerformanceAnalytics}

By | mercado financeiro

A análise da performance e do risco de ativos financeiros se compreende em uma importante maneira de assegurar ganhos no mercado financeiro. O que acontece em diversos casos, é que muitos se embarram em uma complexidade de cálculos para realizar essa avaliação. Para isso, o pacote {PerformanceAnalytics} traz de forma simples e fácil, uma forma de realizar a avaliação de ativos financeiros. Neste texto, iremos dar exemplos de códigos na construção de gráficos úteis que o pacote oferece.

Primeiramente, devemos coletar os dados necessários para realizar a análise. Para isso, iremos utilizar o pacote {quantmod} para retirar os preços ajustados das ações preferenciais do Itaú, tomado aqui somente como exemplo de forma aleatória. Para Benchmark, iremos utilizar o IBOVESPA.


# Carrega os pacotes necessários
library(PerformanceAnalytics)
library(quantmod)
library(tidyverse)
## Coleta os Preços das ações utilizando a função getSymbols() do pacote {quantmod}

ticker <- c("ITUB4.SA", "^BVSP") # Ticker dos ativos que iremos utilizar
start = "2010-12-31" # Data de referência da série que iremos utilizar

getSymbols(ticker, 
           src= 'yahoo',
           from = start,
           auto.assign = TRUE,
           warnings =  FALSE)
## Transforma os preços em Retornos Mensais

itau <- ITUB4.SA$ITUB4.SA.Adjusted %>% 
  to.monthly(indexAt = "last",
             OHLC = FALSE) %>% 
  Return.calculate(method = "log") %>% 
  na.omit()


ibov <- BVSP$BVSP.Adjusted %>% 
  to.monthly(indexAt = "last", 
             OHLC = FALSE) %>% 
  Return.calculate(method = "log") %>% 
  na.omit()


returns <- merge(itau, ibov, all = TRUE) # Junta em um data.frame os retornos do Itaú e do IBOVESPA

O primeiro gráfico que podemos utilizar é o chart.RollingMean(). Ele permite que façamos uma visualização do retorno médio do ativo ao longo do tempo.

chart.RollingMean(itau) 

Logo em seguida, podemos utilizar a função charts.PerformanceSummary(), para visualizar a série do retorno acumulado dos ativos desde a data de referência, o retorno mensal dos ativos e o Drawndown.

charts.PerformanceSummary(returns,
                          colorset = redfocus,
                          legend.loc = "topleft"
                          )

Outro gráfico muito útil é o charts.RollingRegression(), que nos retorna um gráfico de regressão ao longo do tempo do seu ativo de escolha em relação a outro qualquer ativo ou Benchmark, permitindo visualizar o Alpha, o Beta e o R².

charts.RollingRegression(Ra = returns$ITUB4.SA.Adjusted,  # Retorno da variável dependente
                        Rb = returns$BVSP.Adjusted, # Retorno da variável independente
                        width = 12, # Período para aplicar a janela da rolling regression
                        colorset = redfocus, 
                        legend.loc = "topright"
                        )

Por fim, para visualizar de maneira geral o risco do ativo, podemos utilizar a função charts.RollingPerformance(), que exibe o desvio-padrão, o Índice de Sharpe, bem como também retorno anual dos ativos.

charts.RollingPerformance(R = returns, 
                          width = 12,
                          Rf = 0, # Retorno do ativo livre de risco. Utilizamos 0 aqui apenas para fins didáticos.
                          colorset = redfocus,
                          legend.loc = "topleft"
                          )

De forma rápida e condensada, conseguimos visualizar a performance e o risco dos ativos. O pacote também oferece diversos outros cálculos e gráficos para a avaliação de ativos financeiros.

IPCA-15 chega aos dois dígitos

By | Indicadores

O IPCA-15 é um índice de preços que abrange o período do dia 16 do mês anterior até o dia 15 do mês de referência. O índice serve como uma boa prévia do resultado do IPCA "cheio", por possuírem características semelhantes, sendo importante o seu acompanhamento, como forma de prever os caminhos do IPCA. Neste texto iremos comentar o resultado do IPCA-15 para o mês de setembro de 2021.

A variação mensal do IPCA-15 nos mês de setembro foi de 1,14% em relação ao mês anterior. Podemos ver no gráfico como a variação se comporta nos últimos meses, exibindo a alta.

Na variação acumulada em 12 meses, o IPCA-15 exibe uma variação de 10,05%. É notável como o IPCA-15 está muito acima dos limites de inflação instituídos pelo Conselho Monetário Nacional (CMN), que se encontra em 3,75% neste ano.

O IPCA-15 demonstra também uma sazonalidade, como é possível observar no gráfico. É importante notar que a média de variação do IPCA-15 são maiores nos dois últimos meses do ano, bem como no primeiro. Isso significa que o aumento, na medida que se encontra atualmente, no mês de setembro, não é usual.

Em relação a síntese estatística, desde 2000, a série exibe uma mediana de 0,44%. Já a média se encontra em 0,46%. O 1° quartil termina em 0,23% e o 3° quartil termina em 0,65%.

Podemos verificar melhor a média e a mediana da série no gráfico de Histograma.

Em relação aos grupos que mais contribuíram para a inflação no mês de setembro, o de Transportes foi o que mais teve peso, exibindo uma variação mensal de 2,22%. Em seguida, com uma variação de 1,55%, Habitação aparece como uma segunda maior, seguido por Alimentação e bebidas com 1,27%, Artigos de residência 1,23% e Vestuário com 0,54%.

Podemos visualizar também a contribuição dos grupos em um gráfico conjunto.

O que resta agora é esperar o resultado IPCA para confirmar a alta inflacionada do país neste momento.

________________________

(*) Para entender mais sobre inflação e análise de conjuntura econômica, confira nosso Curso de Análise de Conjuntura usando o R - Versão 5.0.

Como retirar dados de contas públicas municipais via API do SICONFI

By | Hackeando o R

Neste texto, iremos mostrar como podemos retirar os dados dos demonstrativos contábeis de entes federativos do Brasil pelo Sistema de Informações Contábeis e Fiscais do Setor Público Brasileiro (SICONFI) via API no R.

Primeiramente, é necessário estar a par dos parâmetros que devem ser colocados como entradas para obter os dados dos diversos tipos de demonstrativos. O site http://apidatalake.tesouro.gov.br/docs/siconfi/ fornece detalhadamente quais parâmetros devem ser fornecidos para cada tipo de demonstrativos, bem como a url base para realizar a requisição do API.

Aqui iremos trabalhar como exemplo a Declaração de Contas Anuais (DCA) Anexo I-D do município de Varginha - Minas Gerais, no qual nos fornecerá as Despesas Orçamentárias por Natureza.

Para o DCA, há 3 parâmetros que devem ser inseridos: an_exercicio (Ano de exercício do demonstrativo); no_anexo (Qual anexo do relatório deseja obter) e id_ente (O código IBGE do ente em questão). Sendo an_exercicio e id_ente obrigatórios para esse demonstrativo em questão.

É fundamental a utilização dos pacotes a seguir.


library(httr)
library(jsonlite)
library(magrittr)
library(tibble)

Em seguida vamos realizar a chamada da API criando uma URL.

# URL da DCA de Varginha no ano de 2020 
url_dca <- paste("https://apidatalake.tesouro.gov.br/ords/siconfi/tt/dca?", # URL base para a chamada 
"an_exercicio=", 2020, "&", # Insere o parâmetro de Ano do exercício 
"no_anexo", "DCA-Anexo+I-D","&", # Insere o parâmetro do Anexo que se deseja obter 
"id_ente=", "3170701", sep = "") # Insere o parâmetro do Ente de acordo com o código IBGE do mesmo

Após isso, devemos realizar a requisição da API usando a função GET do pacote httr, bem como realizar a extração do conteúdo com as funções content e fromJSON dos pacotes httr e jsonlite, respectivamente.


api_dca <- GET(url_dca) 
 
# A chamada irá nos retornar os dados requisitados. Agora só precisamos extrair o conteúdo que nos interessa

json_dca <- api_dca %>%

content(as = "text", encoding = "UTF-8") %>%

fromJSON(flatten = FALSE)

# E após isso transforma-los em um tibble

dca_tb <- as.tibble(json_dca[["items"]])

Desta forma podemos obter os dados do DCA Anexo I-D do município de Varginha. O método pode ser replicado para outros anexos e demonstrativos, bem como para qualquer outro Ente do Brasil.

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