Analisando dados fundamentalistas com Python

Updated: Apr 9


Autores: Victor Gomes com dados obtidos por Eric Coleta


Fala pessoal, tudo bem?


O meu amigo Eric Coleta criou um dataset com indicadores fundamentalistas das empresas de capital aberto brasileiras, que pode ser obtido aqui. Os dados foram obtidos a partir do site Fundamentus (caso você deseje aprender a montar o seu próprio algoritmo para obter essas informações, recomendo assistir essa ótima aula do Eudes Oliveira explicando o passo-a-passo, clicando aqui).


A partir desses dados, resolvi criar alguns gráficos para dar alguns exemplos de como podemos visualizá-los com o Python.


Não é minha intenção entrar a fundo nos detalhes desses indicadores, os conceitos, etc, mas sim apresentar formas de se plotar gráficos com bibliotecas como seaborn e matplotlib, e com isso você pode usá-lo como um guia para suas próprias análises.


Assim, o estudo pode ser útil não só para cientistas de dados mas também por investidores individuais que tenham curiosidade de visualizar e analisar esses indicadores.



1. Análise da base


Vamos dar uma olhada na estrutura da base


Para iniciar a análise do dataset, vamos entender a distribuição dos missings (campos vazios). Isso porque na hora de criar os gráficos vamos ter que escolher indicadores que tenham a maior integridade possível, isso é, devemos evitar aqueles que tem alta porcentagem de campos vazios para que sejam fiéis à realidade.

Vemos que variáveis como Carteira de Crédito e Depósitos possuem alta porcentagem de campos vazios, devido ao fato de serem indicadores específicos do setor bancário, por isso vamos deixá-las de lado por enquanto.


Vamos ver a porcentagem de missings por coluna.


Veja que colunas como Lucro Líquido, DY, P/L e Valor de Mercado estão íntegras (sem nenhum missing). Vamos utilizá-las para criar nossos gráficos. Você pode usar os códigos que vamos criar aqui para replicá-los nos outros indicadores.


2. Quantidade de ações


Vamos iniciar a análise da base explorando a quantidade de papéis que ela possui. Vamos usar a biblioteca seaborn, em especial a função catplot, especialmente desenhada para mostrar a relação entre variáveis numéricas e categóricas. Mais detalhes sobre essa função você encontra nesse link.

E agora por Subsetor:

Repare que mudamos o parâmetro "height" de 10 para 12, para facilitar a visualização das categorias no eixo Y, já que o número aumentou bastante no gráfico de Subsetor.


Uma outra forma de visualizar os valores para Subsetor é usando a função ".plot( )" como parte da classe DataFrame, direto do Pandas. Para facilitar, vamos mostrar apenas os 30 Subsetores com maior número de papéis:


3. Estudo dos indicadores


Como falamos no início do post, os indicadores fundamentalistas que escolhemos analisar foram Lucro Líquido, DY, P/L e Valor de Mercado. Aqui vamos usar quase sempre a função catplot do seaborn, mudando os parâmetros ao longo do estudo para que você possa visualizar suas diferenças e características em cada caso.


Vamos começar com o Lucro Líquido, consolidado por Setor, na forma de boxplots (se você deseja entender o significado do boxplot, veja esse post).

Vemos que empresas de setores como Petróleo, Gás e Biocombustíveis e Financeiros apresentam alguns valores de lucro líquido bem acima das demais, isso provavelmente porque a Petrobras e os maiores bancos do Brasil estão inseridos neles. Vamos verificar os dados das 30 empresas com maior lucro líquido para investigar:

Vemos a presença de empresas como Petrobras, Itaú Unibanco, Bradesco, dentre outras que de fato são algumas das maiores empresas do Brasil.


E o Dividend Yield por setor? Vamos usar o gráfico do tipo "swarm" para entender melhor a distribuição dos valores de DY por setor:

Veja que Construção e Engenharia e Comércio possuem algumas das empresas com os maiores DYs. Vamos abrir por empresa para entender melhor:

Vemos que os maiores DYs vêm de empresas não tão conhecidas assim como Minasmaquina (MMAQ4) e CR2 (CRDE3).


Vamos ver agora o P/L (preço sobre lucro), por setor, usando boxplots:


Abrindo por empresa para investigar:

Por fim, vamos analisar o Valor de Mercado das empresas, começando com o gráfico consolidado por setor, usando boxplots:

Temos os maiores valores nos setores de Mineração, Financeiro, Petróleo, Gás e Combustíveis. Isso era esperado já que as maiores empresas do Brasil estão aí. Vamos confirmar isso com o gráfico mostrando as 30 maiores empresas por valor de mercado:

De fato temos a Vale (Mineração), Itaú (Financeiro), Petrobras (Petróleo, Gás e Combustíveis).


Temos mais uma maneira de visualizar o resultado consolidado por setor, dessa vez usando um gráfico de barras e somando o valor de mercado de todas as empresas de cada setor. O resultado é o seguinte:



4. Correlação entre as variáveis


Depois de entender a estrutura da base e analisar os indicadores mais íntegros, vamos plotar uma matriz de correlação para entender o comportamento das variáveis.

Configuramos o tamanho do plot para 40x40 e o da fonte para 2,5. Veja o resultado:

Interessante perceber algumas variáveis com alta correlação positiva, como Lucro Líquido x Valor de Mercado, e outras com alta correlação negativa, como Ativo de Giro x Margem Bruta.


5. Análise do setor de construção


Como algumas variáveis tinham um número intermediário de missings, decidi filtrar um setor específico da base. Assim conseguiremos comparar indicadores de ações de um mesmo setor. Como exemplo, escolhi o setor de Construção e Engenharia, mas você pode replicar essa análise para qualquer outro setor que desejar.

Vamos ver o EBIT (Lucro antes de juros e imposto de renda):

Veja que coloquei o parâmetro "ascending" como "False" para indicar que a ordem deveria ser do maior para o menor valor. Vamos analisar agora a Margem Bruta, repetindo as mesmas configurações e modificando apenas o nome da variável:

E o ROE (Return on Equity, ou Retorno sobre Patrimônio Líquido)? Dessa vez escolhi colocar o parâmetro "ascending" como "True" para exibir os valores em ordem crescente.

Vamos fazer o mesmo para Dívida Líquida:

Por fim, vamos ver a Receita Líquida, em ordem decrescente:

O resultado faz sentido pois vemos grandes empresas como MRV e Cyrela no topo.


Gostou?


Fique à vontade para utilizar esses códigos e mudar os parâmetros como você desejar. Experimente fazer análises de indicadores diferentes dos que apresentamos aqui, e com empresas de setores diferentes também!


Os códigos originais desse estudo podem ser encontrados aqui e aqui.


Se tiver qualquer dúvida, crítica ou sugestão, é só entrar em contato com a gente através do e-mail contato@tradingcomdados.com.


Referências


https://www.drawingfromdata.com/how-to-rotate-axis-labels-in-seaborn-and-matplotlib

https://seaborn.pydata.org/generated/seaborn.catplot.html

https://seaborn.pydata.org/tutorial/categorical.html


Sugestões de Estudo


Criando um robô em Python do zero

Aula do Eudes Oliveira mostrando como obter dados do site Fundamentus usando um algoritmo de Webscraping no Python



Copyright © 2020 Trading com Dados Ltda.