No post de hoje continuamos o processo de automatização de dados financeiros de empresas brasileiras. No último post, entendemos como podemos usar o R para coletar os dados de demonstrações financeiras e construir indicadores, hoje iremos construir um Dashboard que permita que possamos automatizar todo o processo.
O ponto de partida será o mesmo da última postagem: utilizar o pacote {GetDFPData2} do Marcelo S. Perlin para coletar os dados das Demonstrações Financeiras Padronizadas disponibilizados pela CVM e B3. A ideia é construir um arquivo .R em que permita coletar os demonstrativos e construir os indicadores e em seguida, em um outro arquivo .Rmd, construir um dashboard a partir do {flexdashboard}. O resultado será um dashboard simples, como na imagem abaixo.
Coleta e Construção dos Indicadores
Em primeiro lugar devemos escolher quais indicadores iremos demonstrar no painel. Não iremos realizar julgamentos extensos e longos de quais indicadores melhor representam uma análise da empresa, a ideia é selecionar, dentre os diferentes grupos, indicadores que sirvam de exemplo para nosso Dashboard e ensinar a vocês a como construir o código. Ficará a cargo do leitor julgar e alterar as variáveis utilizadas, afinal, um Dashboard deve representar aquilo que melhor atende ao desejo da análise do usuário.
Dito isto, vamos construir os seguintes indicadores, representados em gráficos de série temporal:
DRE
- Receita
- Custo da Mercadoria
- Lucro/Prejuízo
As informações acima são representadas em um único gráfico no Dashboard.
Indicadores
iremos construir indicadores que representam a situação da empresa, dividimos em quatro grupos:
Liquidez
- Corrente
- Geral
Endividamento
- De Capital próprio
- Passivo Total
Rentabilidade
- ROE
- ROA
Margem
- Margem Bruta
- Margem Líquida
Uma vez definido os indicadores, podemos saber quais contas e demonstrações devemos utilizar e portanto, podemos coletar os dados. Vamos criar um arquivo .R e construir o código.
Abaixo, utilizamos a função get_info_companies para coletar o código CVM das empresas que iremos analisar, no caso, após a coleta, realizamos alguns filtros: empresas que são ativas, que são negociadas em bolsa e que não são instituições financeiras (visto que não faria sentido analisar a maioria dos indicadores acima desse setor). Veja que no código abaixo capturamos não somente o código CVM, bem como também a Denominação Social das empresas, isso nos ajudará a construir a aba de input do Dashboard.
Com os códigos, podemos utilizar a função get_dfp_data para capturar o balanço patrimonial e a DRE desde 2011 das empresas filtradas.
Teremos no objeto l_dfp uma lista contendo três data frames, um para cada demonstrativo, alteramos os nomes de cada data frame na lista com a função set_names, e empilhamos todas as informações com bind_rows, para formar apenas um data frame. Em seguida, selecionamos apenas algumas colunas.
Com os dados limpos, podemos criar os indicadores. Seguiremos um processo manual de Data Wrangling de forma a facilitar o calculo do indicador, realizando o filtro dos indicadores por meio de seus nomes e números de contas (o duplo filtro é para confirmar que não haja nenhum erro) e alterando o formato de long para wide e calculando o indicador com group_by e mutate. Repetimos o processo para todos os indicadores.
Com todas as informações coletadas e os indicadores criados, salvamos os dados em um arquivo .Rdata. Esse arquivo será útil pois facilitará o processo de renderização do Dashboard.
OBS: reparem que os nomes de alguns indicadores estão formatados de uma forma não usual, na realidade, isso é uma mudança para que o R reconheça os caracteres especiais das palavras e não gere nenhum erro.
Criando o Arquivo do {flexdashboard}
Agora que construímos todo o processo de coleta de dados, devemos utilizar os dados salvos e carregar em um ambiente em que possamos criar o dashboard, isto é, através do {flexdashboard}. Para criar um arquivo no R, vamos em File -> New File -> Rmarkdown -> From Template -> Flex Dashboard (é necessário instalar o pacote).
Abaixo, segue a construção do código do arquivo .Rmd criado. Após o cabeçalho YAML, cada chunk é representado por um bloco de código.
Carregamos nesse arquivo .Rmd os dados salvos anteriormente.
Criamos a aba lateral que representará o input do Dashboard. O input será as companhias coletadas e para as informações de input utilizaremos o vetor criado por meio do filtro feito no arquivo de coleta e tratamento, salvos no objeto names_companies.
## Row {.sidebar data-width="200"}
-----------------------------------------
Agora podemos criar os gráficos. Cada bloco de código representa um chunk do arquivo, bem como representamos a construção do espaço do flexdashboard por meio de "linhas" (Rows) Primeiro, criamos o gráfico de DRE e em seguida dos indicadores por meio de um tabset.
Para construir os gráficos, utilizamos o pacote {echarts4r}, que auxilia no processo de construção de um ambiente dinâmico em Shiny a partir da função renderEcharts4r.
Row {data-width=575}
--------------------------------------
### DRE
Row {.tabset}
-----------------------------------------------------------------------
### Liquidez Corrente
### Liquidez Geral
### Endividamento Terceiros / Capital Próprio
### Endividamento Terceiros / Passivo Total
### ROA
### ROE
### Margem Bruta
### Margem Líquida
Por fim, construímos o Dashboard que permite selecionar as empresas que desejamos analisar os indicadores. No próximo post, focaremos na parte de automatização, isto é, utilizaremos o Github Actions para que possamos atualizar a coleta de dados frequentemente.
Quer saber mais?
Veja nossos cursos da trilha de Ciência de dados para Economia e Finanças onde ensinamos a coletar dados financeiros e econômicos e também a construir Dashboard com o R.