uma análise exploratória de dados aplicado ao mercado

41
UNIVERSIDADE DO RIO GRANDE DO NORTE FEDERAL UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA DEPARTAMENTO DE ENGENHARIA DE COMPUTAÇÃO E AUTOMAÇÃO Lucas Lyon de Azevedo Uma Análise Exploratória de Dados Aplicado ao Mercado Financeiro Natal, RN, novembro de 2019

Upload: others

Post on 17-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
CENTRO DE TECNOLOGIA
Lucas Lyon de Azevedo
Natal, RN, novembro de 2019
Lucas Lyon de Azevedo
Uma Análise Exploratória de Dados Aplicado ao Mercado Financeiro
Trabalho de Conclusão de Curso apresentado à Banca Examinadora do curso de Engenharia de Computação, em cumprimento às exigências le- gais como requisito parcial à obtenção do título de Engenheiro de Computação.
Orientador: Prof. Dr. Ivanovitch Me- deiros Dantas da Silva
Natal, RN, novembro de 2019
Uma Análise Exploratória de Dados Aplicado ao Mercado Financeiro
Lucas Lyon de Azevedo
Trabalho de Conclusão de Curso aprovado em 29 de novembro de 2019 pela banca exa- minadora composta pelos seguintes membros:
Prof. Dr. Ivanovitch Medeiros Dantas da Silva - Orientador . . . . . . . . . . . UFRN
MSc. Aguinaldo Bezerra Batista Junior - Membro externo . . . PPgEEC/UFRN
MSc. Rute Souza de Abreu - Membro externo . . . . . . . . . . . . . . PPgEEC/UFRN
“A ciência nunca resolve um problema sem criar pelo
menos outros dez.” – George Bernand Shaw
Dedico esse trabalho a toda minha família e amigos.
Agradecimentos
A Deus por tudo que tem proporcionado na minha vida e pelo Seu amor incondicional.
Ao meu orientador Ivanovitch Medeiros Dantas da Silva por todo tempo disposto e em- penho para auxiliar em todos os momentos que precisei. Seus referenciais e textos foram de extrema importância para a realização deste trabalho.
À minha família, por todo o amor, e força que me deram durante todo o decorrer do curso, e pela compreensão nos momentos de ausência.
Ao meu amor Vanessa, além de namorada, companheira e amiga é com quem posso contar nos momentos onde mais preciso. Obrigado por acreditar e confiar em mim.
Aos meus amigos Alexandre, Gabriel, Samuel, Laís e Felipe, pelo carinho e amizade durante toda essa jornada. Aos colegas de curso, cujo empenho e solidariedade foram de suma importância para alcançar minhas metas.
E aos professores do DCA pelo empenho e dedicação durante todo o curso em especial ao Prof. Dr. Luiz Affonso H. Guedes, pelos ensinamentos de grande importância para minha carreira.
Resumo
A proposta desse trabalho é aplicar técnicas e metodologias em ciência de dados para facilitar a análise de dados do mercado financeiro. O trabalho descreve o processo de obtenção de dados, limpeza e fórmula para a obtenção dos resultados através de indica- dores financeiros unidos a ciência de dados. Por fim esse trabalho tornou a busca pelas melhores ações mais dinâmica. Python foi à linguagem escolhida para o desenvolvimento deste trabalho, juntamente como suas bibliotecas de manipulação e visualização. Em con- junto com as bibliotecas básicas, foram utilizadas técnicas de análise financeira e análise estatística. Por fim os resultados encontrados foram satisfatórios.
Palavras-chave: Ciência de Dados, Python, Análise, Bolsa de Valores.
Abstract
The purpose of this paper is to apply data science techniques and methodologies to facilitate the analysis of Stock Exchange. The paper describes the process of data col- lection, cleaning and formulate to have the results obtained through financial indicators linked to data science. Finally this work made the search for the best shares most dy- namic. Python was to the chosen language for this work, along with it is manipulation and visualization libraries. In conjunction with the basic libraries, financial analysis and statistical analysis techniques were used. Finally the results were satisfactory.
Keywords: Data Science, Python, Analysis, Stock Exchange.
Lista de Figuras
1.1 Ciclo de vida Ciência de dados . . . . . . . . . . . . . . . . . . . . . . . 14 1.2 Diagrama do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 Bibliotecas e pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Diagrama de Venn - Ciência de dados . . . . . . . . . . . . . . . . . . . 20
3.1 Diagrama do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Request para o site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3 Conversão das tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4 Captura de informações . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5 Laço principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.6 Colocando em um DataFrame . . . . . . . . . . . . . . . . . . . . . . . 25 3.7 Chamada do crontab no UNIX . . . . . . . . . . . . . . . . . . . . . . . 25 3.8 Programação da execução do arquivo . . . . . . . . . . . . . . . . . . . . 26 3.9 Descrição do P/L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.10 Box Plot do P/L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.11 Descrição do DY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.12 Box Plot do DY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.13 Descrição do ROE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.14 Box Plot do ROE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.15 Descrição do Pat.Liq . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.16 Box Plot do Pat.Liq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.17 Descrição do Liq.2m. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.18 Box Plot do Liq.2m. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.19 Descrição do Cresc.5a . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.20 Box Plot do Cresc.5a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.21 Dados após EDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.22 Fórmula da análise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1 Melhores do Petróleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2 Melhores dos Bens Industriais . . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Melhores do Consumo . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.4 Melhores da Utilidade Pública . . . . . . . . . . . . . . . . . . . . . . . 36 4.5 Melhores do Financeiro . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.6 Melhores da Tecnologia . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.7 Melhores da Saúde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.8 Melhores dos Outros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
i
3.1 Setores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2 Indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
ii
ADVFN Advanced Financial Network
API Application programming interface
B3 Brasil Bolsa Balcão
BM&FBOVESPA Bolsa de Valores, Mercadorias e Futuros de São Paulo
CADE Conselho Administrativo de Defesa Econômica
CETIP Central de Custódia e de Liquidação Financeira de Títulos
CNAE Classificação Nacional das Atividades Econômicas
CSV Comma-Separated Values
CVM Comissão de Valores Mobiliários
DY Dividend Yield
IDC International Data Corporation
JSON JavaScript Object Notation
P/L Preço pelo Lucro
SFN Sistema Financeiro Nacional
SQL Structured Query Language
URL Uniform Resource Locator
iii
Sumário
1 Introdução 13 1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.2 Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 Fundamentação Teórica 16 2.1 Mercado Financeiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.1 Sistema financeiro Nacional . . . . . . . . . . . . . . . . . . . . 16 2.1.2 Ações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.3 Análise Técnica e Fundamentalista . . . . . . . . . . . . . . . . 17
2.2 Tecnologias Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.1 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.2 Pacotes e Bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2.1 Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.2.2 Numpy . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.2.3 Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.2.4 Colab . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Ciência de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.1 Análise Exploratória . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Metodologia 21 3.1 Obtenção do Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.1 Web Scraping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 Análise exploratória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.1 Limpeza dos Dados . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.2 Divisão das Categorias . . . . . . . . . . . . . . . . . . . . . . . 25 3.2.3 Análise e Escolha dos Indicadores . . . . . . . . . . . . . . . . . 25
3.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 Resultados 34 4.1 Petróleo, Gás e Biocombustíveis . . . . . . . . . . . . . . . . . . . . . . 34 4.2 Bens Industriais e Materiais Básicos . . . . . . . . . . . . . . . . . . . . 35 4.3 Consumo Cíclico e Consumo Não Cíclico . . . . . . . . . . . . . . . . . 35 4.4 Utilidade Pública e Telecomunicação . . . . . . . . . . . . . . . . . . . . 36 4.5 Financeiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.6 Tecnologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.7 Saúde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
iv
Introdução
Mercado financeiro é todo o conjunto de compra e venda de ativos financeiros, sendo o ambiente onde essas operações podem ser realizadas. Existe Valores mobiliários (ações, opções e títulos), câmbio (moedas estrangeiras) e mercadorias (commodities) as quais é possível investir (Assaf Neto,2014).
É possível investir de formas diferentes, sendo que, para a maioria dos investidores, o objetivo é de aumentar os lucros e ter ganhos financeiros. Entretanto, existe um fator que influencia as altas e baixas do mercado: as decisões humanas, que por meio dessas é impossível encontrar uma fórmula que à defina. O que se torna viável e praticável é entender como as pessoas agiram em determinada ocasião e tentar predizer qual será a atitude para um caso semelhante. Para este trabalho, os dados, obtidos através do mercado financeiro, foram explorados para gerar uma solução.
A questão maior é como podemos utilizar as informações sobre as ações financeiras para gerar “insights”. Para isso, existe a ciência de dados.
De acordo com (CONWAY, 2010), para fazer ciência de dados é necessário conhe- cimento interdisciplinar, tanto em computação, matemática, estatística e conhecimento especifico na área a ser estudada.
Nesse contexto, é necessário entender como fazer ciência com dados e quais os passos necessários para que haja a construção de um conhecimento sólido a partir desse processo. A figura 1.1 descreve o ciclo de vida da ciência de dados, adaptado da universidade de Berkeley por (JALES, 2019).
CAPÍTULO 1. INTRODUÇÃO 14
Fonte – Berkeley - adaptado
O cientista de dados precisa dominar o ciclo de vida e também dominar o conheci- mento específico para o qual irá trabalhar, tornando assim sua trajetória direcionada e projetada corretamente para as respostas de suas perguntas.
1.1 Motivação Desde a antiguidade, o homem realiza transações de compra e venda, e com o pas-
sar dos anos essas operações foram mudando de plataformas, entretanto, a base teórica permanece a mesma (Assaf Neto,2014), por esse motivo, é plausível a utilização da tec- nologia para auxiliar aqueles com menor conhecimento a negociarem como as grandes empresas e grandes investidores financeiros (HILPISCH, 2015).
A extração de dados não é uma tarefa fácil para esse caso, já que se utiliza de APIs (Application programming interface) para coletar as informações sobre o mercado finan- ceiro e assim gerando custo financeiro maior.
O objetivo deste trabalho, é entregar ao final um conjunto de ações que podem ser boas opções de investimentos para os investidores. Utilizando dados obtidos diariamente no período de um mês, a fim de gerar um modelo simplista para que seja fácil o entendimento, ou seja, recomendar uma carteira de ações, separadas por segmento, auxiliando na escolha
CAPÍTULO 1. INTRODUÇÃO 15
do investidor.
1.2 Estrutura do Trabalho Este capítulo, apresenta uma Introdução sobre o tema, mostrando os fatores que mo-
tivam a implantação da ideia, além da justificativa e dos objetivos. Em sequência, o Capítulo 2 traz a fundamentação teórica necessária para o bom entendimento e introduz a principal linguagem de programação utilizada nesse trabalho, as principais bibliotecas e pacotes utilizadas no tratamento e visualização dos dados, bem como a análise explora- tória dos dados. O Capítulo 3, por sua vez, explica a metodologia e todo o processo que envolveu o tratamento e visualização dos dados. O Capítulo 4 trata dos resultados obtidos a partir das análises e respostas geradas. Por fim, o Capítulo 5 traz as principais conclu- sões e contribuições deste trabalho, como também uma proposta para trabalhos futuros. A figura 1.2 descreve como o trabalho está disposto.
Figura 1.2: Diagrama do trabalho
Fonte: Elaborado pelo autor
Capítulo 2
Fundamentação Teórica
Nesse capítulo, serão abordados os principais temas necessários para o entendimento desse trabalho. Explicando conceitos importantes sobre o mercado financeiro, definindo o conceito de ação financeira, apresentando quais são os tipos de análises para o mercado financeiro e qual será abordada neste trabalho, assim como as tecnologias utilizadas e por fim definindo o que é ciência de dados.
2.1 Mercado Financeiro
2.1.1 Sistema financeiro Nacional O Sistema Financeiro Nacional (SFN), é o conjunto de instituições financeiras e ins-
trumentos financeiros que visam, em última análise, transferir recursos dos agentes econô- micos (pessoas, empresas, governo) superavitários (pessoas que emprestam) para os defi- citários (pessoas que pegam emprestado) (Assaf Neto,2014).
A ADVFN (Advanced Financial Network), adota o padrão internacional de classifi- cação econômica e social, permitindo que o investidor compare o desempenho de um grupo de empresas listadas na BM&F Bovespa pertencentes a um mesmo setor econô- mico com um grupo de empresas do mesmo setor listadas na NYSE, a Bolsa de Valores de Nova Iorque, ou em qualquer outra Bolsa de Valores do Mundo. Apesar de ser um padrão de classificação setorial diferente do sistema utilizado pela Bovespa, o padrão de classificação setorial adotado pela ADVFN é semelhante ao sistema CNAE (Classifica- ção Nacional das Atividades Econômicas) adotado pelo IBGE – Instituto Brasileiro de Geografia e Estatística. (BM&FBOVESPA, 2016).
2.1.2 Ações Segundo a (BM&FBOVESPA, 2016), ações são valores mobiliários emitidos por soci-
edades anônimas representativos de uma parcela do seu capital social. Em outras palavras, são títulos de propriedade que conferem a seus detentores (investidores) a participação na sociedade da empresa.
As ações são emitidas com o objetivo de obter recursos para o desenvolvimento de projetos que viabilizam o crescimento da empresa. Existem dois principais tipos de ações,
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 17
as ordinárias que dão direito ao voto nas assembleias e as preferenciais que permitem o recebimento preferencial de dividendos. Dividendo, é uma parte do lucro da empresa que é distribuído entre os acionistas (portadores da ação). Cada empresa é representada por uma sigla onde o número no final desta, simboliza se a ação é ordinária ou preferencial. Por exemplo a Petrobras, representada pelas siglas PETR, é ordinária quando terminada em 3 (PETR3) e preferencial quando terminada em 4 (PETR4) (Assaf Neto,2014).
A B3 (Brasil Bolsa Balcão), é o órgão responsável pela negociação de ações e foi criado a partir da fusão da BM&FBOVESPA (Bolsa de Valores, Mercadorias e Futuros de São Paulo) com a CETIP (Central de Custódia e de Liquidação Financeira de Títulos), aprovada pela CVM (Comissão de Valores Mobiliários) e pelo Conselho Administrativo de Defesa Econômica (CADE) em 22 de março de 2017.
2.1.3 Análise Técnica e Fundamentalista Enquanto a análise técnica, também conhecida como análise gráfica, estuda os movi-
mentos do mercado por meio dos gráficos e, com base nisso, tenta prever os preços futuros dos ativos no curto, médio e longo prazo negociados em Bolsa, a análise fundamentalista é focada em estudar os aspectos financeiros e econômicos das companhias emissoras das ações no médio e longo prazo.
A análise técnica, é formada por um conjunto de ferramentas gráficas que estudam o preço e o volume dos ativos. Por meio dela, é possível encontrar a tendência de um determinado papel (uma ação) baseando-se no volume, quantidade de ativos disponíveis para negociação na Bolsa, e na oferta, que é a quantidade de compradores interessados.
A análise fundamentalista, é aquela que estuda os fatores econômicos e a saúde fi- nanceira das empresas listadas na Bolsa. Ela consegue projetar os resultados no longo e médio prazo e, assim, determinar um preço justo para as ações, levando em consideração os aspectos macro e microeconômicos que impactam diretamente em seu desempenho na Bolsa.
Os analistas fundamentalistas analisam os fatores da economia, como taxa de juros, inflação, decisões públicas, as informações do setor em que a empresa em análise atua e por fim, os aspectos qualitativos e quantitativos da organização, como balanços, receitas, lucros, administração, entre outros.
2.2 Tecnologias Utilizadas
2.2.1 Python Segundo (Python org, 2019), Python é uma linguagem de programação interpretada
e de alto , orientada a objetos e de alto nível com semântica dinâmica. Suas estruturas de dados, combinadas com digitação dinâmica e ligação dinâmica, a tornam muito atra- ente para o Desenvolvimento rápido de aplicativos, bem como para ser usado como uma linguagem de script ou “cola” para conectar componentes existentes juntos. A sintaxe simples e fácil de aprender do Python enfatiza a legibilidade e, portanto, reduz o custo de aprendizagem e financeiro, já que é código aberto. O Python suporta módulos e pacotes, o
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 18
que incentiva a modularidade do programa e a reutilização de código. O intérprete Python e a extensa biblioteca padrão estão disponíveis na fonte ou no formato binário, sem custo para todas as plataformas principais e pode ser distribuído gratuitamente.
Foi escolhido o Python para a análise, justamente por ser simples seu entendimento, além de proporcionar menor custos de tecnologia no setor financeiro, já que é open source. Existem bibliotecas que facilitam o uso da tecnologia para novos negócios e inovação, mi- nimiza a distância entre tecnologia e o setor financeiro e aumenta a velocidade, a frequên- cia e volumes dos dados e cria possibilidades para a ascensão da análise em tempo real (HILPISCH, 2015).
De acordo com (VANDERPLAS, 2016), a utilidade do Python para a ciência de dados advém principalmente do grande e ativo ecossistema de pacotes de terceiros: NumPy para manipulação de dados baseados em arrays com um único tipo de variável, Pandas para manipulação de dados heterogêneos e Matplotlib para visualizações de qualidade de publicação.
2.2.2 Pacotes e Bibliotecas Para a realização desse trabalho foram utilizadas algumas bibliotecas, como repre-
sentado na figura 2.1, principalmente para a captura dos dados, sendo assim, essa seção abordaremos as principais para as análises:
Figura 2.1: Bibliotecas e pacotes
Fonte = Elaborado pelo autor
2.2.2.1 Pandas
A biblioteca do Pandas, de acordo com a documentação (PANDASTEAM, 2011), proporciona estruturas de dados e ferramentas de análise de dados de alta performance. As estruturas básicas desse pacote são os objetos chamados de DataFrames. Esses objetos
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 19
são estruturas que podem ser visualizadas como tabelas e possuem diferentes maneiras de serem acessadas e posteriormente modificadas.
2.2.2.2 Numpy
O NumPy, fornece um objeto de matriz multidimensional para armazenar dados ho- mogêneos ou dados heterogêneos; também fornece métodos otimizados para operar neste objeto de matriz (HILPISCH, 2015).
2.2.2.3 Matplotlib
Esta é a biblioteca de visualização e gráfica mais popular para o Python, fornecendo tanto Recursos de visualização 2D como 3D (HILPISCH, 2015).
2.2.2.4 Colab
O Colab, é uma ferramenta de pesquisa para machine learning criado pelo google. Ele é executado no próprio navegador e pode ser usado tanto no google chrome, firefox quanto no safari. Sua utilização é gratuita e além de fornecer um ambiente simples e fácil de usar, permite a utilização de placa de vídeo para projetos mais complexos (COLAB, 2014).
2.3 Ciência de Dados
É uma ciência que visa estudar as informações, seu processo de captura, transfor- mação, geração e, posteriormente, análise de dados. A ciência de dados envolve diversas disciplinas sendo interdisciplinar e unificando a computação, estatística, matemática e co- nhecimento especifico. O diagrama de Venn na figura 2.2 representa melhor esse conceito (CONWAY, 2010).
CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 20
Figura 2.2: Diagrama de Venn - Ciência de dados
Fonte – Blog Drew Conway - adaptado
2.3.1 Análise Exploratória A análise exploratória dos dados, se refere ao conjunto de técnicas e práticas iniciais
referentes às investigações dos dados, a fim de, descobrir padrões, identificar possíveis anomalias, testar hipóteses e checar suposições. Através de técnicas estatísticas, os dados que inicialmente parecem confusos e desorganizados, são sumarizados, resumidos e por fim representados em forma de tabelas e gráficos. Essa análise busca construir uma narra- tiva a partir das informações obtidas e o cientista de dados se utiliza da parte visual como meio facilitador na compreensão da história contada (VANDERPLAS, 2016).
Capítulo 3
Metodologia
Nesse capítulo, será abordada a metodologia para a realização desse trabalho. Apre- sentando a captura dos dados, a limpeza e organização, os indicadores financeiros, assim como os setores escolhidos e a fórmula que define o valor da ação. O diagrama na figura 3.1 defini como o trabalho está disposto:
Figura 3.1: Diagrama do trabalho
Fonte: Elaborado pelo autor
3.1 Obtenção do Banco de Dados Parte fundamental do trabalho, considerando que sem os dados seria impossível reali-
zar a análise exploratória de dados. Existem diversas formas para a criação do banco de dados, pode ser utilizado arquivo
em CSV (Comma-separated values), arquivo em JSON (JavaScript Object Notation) ou
CAPÍTULO 3. METODOLOGIA 22
ainda APIs. Além dos especificados, existem sites como o Kaggle que fornece uma grande quantidade de banco de dados que podem ser utilizados para determinadas pesquisas e estudos, sendo que, sua principal funcionalidade é de realizar competições para a ciência de dados. E por fim, existe a técnica de web scraping que será a utilizada para esse trabalho.
3.1.1 Web Scraping Segundo (MITCHELL, 2018), a coleta automatizada de dados da Internet é quase tão
antiga quanto a própria internet. Embora, a web scraping não seja um termo novo, nos últimos anos a prática foi mais comumente conhecida como screen scraping, data mining, web harvesting entre outros. Hoje, o consenso geral definiu a captura de dados da web como web scraping (MITCHELL, 2018).
É uma técnica utilizada para coletar dados que consulta um servidor Web, solicita dados, geralmente na forma de HTML (HyperText Markup Language) e outros arquivos que compõem páginas da Web e analisa esses dados para extrair as informações neces- sárias. Implementar um programa que faça web scraping ou fazer web scraping abrange mais áreas. Para esse trabalho, foi necessário a implementação de uma coleta automati- zada justamente por ser a bolsa de valores brasileira onde os bancos de dados são pagos. Visando a economia de custo, web scraping foi implementada para capturar os dados do site (FUNDAMENTUS, 2019), entretanto, não existia dados passados, sendo assim uma coleta diária foi realizada.
Para a realização da requisição http, foi necessário a URL (Uniform Resource Loca- tor), a qual representa o endereço onde o site está, e o mesmo utiliza cookies, sendo assim algumas técnicas a mais foram necessárias, como exemplo temos a figura 3.2.
Figura 3.2: Request para o site
Fonte: Elaborado pelo autor
A função urllib.parse.urlencode(), conforme figura 3.4, tem como objetivo converter tuplas em uma série de pares chave e valor. A variável data é uma lista com todos os parâmetros de busca das ações. ISO-8859-1 é o padrão na qual o site está codificado e portanto precisa ser convertido para UTF-8
Esse bloco, na figura 3.4, é responsável pela comparação e captura de texto do site. É a partir dele que obtemos todas as informações, entretanto ainda não estão organizadas, apenas fragmentadas.
O laço representado na figura 3.5 é o mais importante do algoritmo, já que é nele onde conseguimos separar as informações do site em uma lista ordenada OrderedDict(), cada elemento é obtido através do getchildren() que por sua vez, gera o valor correto que deve pertencer a cada elemento.
CAPÍTULO 3. METODOLOGIA 23
Fonte: Elaborado pelo autor
Fonte: Elaborado pelo autor
Por fim, basta colocar a lista em um DataFrame, uma estrutura de dados tabular, e salvar como CSV. Perceba que essa coleta é de apenas um dia, mais especificamente de uma determinada coleta. A figura 3.6 representa essa etapa.
CAPÍTULO 3. METODOLOGIA 24
Figura 3.5: Laço principal
Fonte: Elaborado pelo autor
O site (FUNDAMENTUS, 2019) faz sua atualização duas vezes ao dia e portanto, temos os dados na abertura e fechamento do mercado. Para a captura automatizada foi utilizado um crontab, que é um arquivo de configuração do UNIX (Sistema operacional) que programa a execução automática do Script a seguir temos na imagem 3.7 a chamada para alterar o arquivo de configuração e na imagem 3.8 a linha do crontab responsável pela execução do algoritmo.
Com o objetivo de obter os dados de abertura e fechamento o crontab foi programado para às 10 horas e às 19 horas todos os dias de segunda a sexta durante o mês inteiro.
3.2 Análise exploratória
3.2.1 Limpeza dos Dados A partir da obtenção de dados, como descrito na seção anterior foi necessário encon-
trar uma forma de deixar claro e utilizável os dados obtidos. Como eram 60 DataFrames em 60 arquivos CSV, abertura e fechamento de cada dia no período de 30 dias, foi neces- sário unir todos através do comando concat(). Com isso, apenas um Dataset (DataFrame) foi criado e assim facilitando a análise exploratória.
CAPÍTULO 3. METODOLOGIA 25
Fonte: Elaborado pelo autor
Fonte = Elaborado pelo autor
3.2.2 Divisão das Categorias Como o mercado financeiro possui diversas categorias, suas análises necessitam ser
separadas. Sendo assim, os dados aqui presentes foram divididos em 8 setores. São eles, conforme tabela 3.1 :
Tabela 3.1: Setores
Setor 1 Petróleo, Gás e Biocombustíveis 2 Bens Industriais e Materiais Básicos 3 Consumo Cíclico e Consumo Não Cíclico 4 Utilidade Pública e Telecomunicação 5 Financeiro 6 Tecnologia 7 Saúde 8 Outros
3.2.3 Análise e Escolha dos Indicadores Com os dados todos unidos, onde as linhas são as ações e as colunas as features,
percebeu-se que, seria mais viável trabalhar com a média das cotações entre abertura e fechamento, gerando uma média para cada ação, já que assim, é possível gerenciar o risco de investimento com base em sua cotação e também o retorno esperado, segundo (Assaf Neto,2014), o retorno esperado é justamente a média das cotações de um determinado ativo (ação).
Outro fator levado em consideração é a teoria de Markowitz que afirma que quando um determinado ativo possuir o mesmo retorno esperado que outro a preferência fica para o com o menor risco.
CAPÍTULO 3. METODOLOGIA 26
Fonte = Elaborado pelo autor
N −1 (3.1)
Onde N é o número total de amostra por ação durante o período calculado , xi são as cotações diárias e x é a média das cotações.
Retorno esperado: ∑
N (3.2)
Onde N é o número total de amostra por ação durante o período calculado e xi são as cotações diárias.
Em seguida, foi necessário entender como os dados estavam dispostos e encontrar quais seriam os parâmetros a serem utilizados para a análise, para assim, encontrar uma relação de índices que poderiam ser utilizados considerando indicadores eficientes se- gundo (Assaf Neto,2014). Com base nisso, alguns indicadores foram selecionados:
Tabela 3.2: Indicadores
Índice 1 P/L 2 DY(%) 3 ROE(%) 4 Pat.Liq 5 Liq.2m. 6 Cresc. 5a (%)
Esses foram os 6 indicadores escolhidos para análise, onde P/L é o preço pelo lucro, um dos mais utilizados no mercado financeiro, informando em quanto tempo a ação se pagará. Exemplo: Um P/L 4, afirma ao investidor que aquele papel levará 4 anos para os lucros cobrirem seus investimentos.
A figura 3.9 representa uma análise para o indicador P/L utilizando a função describe do (Pandas):
Na figura 3.10 temos a visualização mais exata de como estão distribuídos os dados do indicador P/L, utilizando a função boxplot da biblioteca matplotlib.
CAPÍTULO 3. METODOLOGIA 27
Fonte: Elaborado pelo autor
Fonte: Elaborado pelo autor
Perceba que a distribuição do P/L está bem homogênea e sua mediana próximo de 10, percebe-se assim, que os valores mais significantes estão entre 2 e 15.
O Dividend Yield (DY) é o dividendo pago por ação dividido pelo preço da ação. É o rendimento gerado ao dono da ação pelo pagamento de dividendos.
A figura 3.11 representa uma análise para o indicador DY utilizando a função describe do (Pandas):
Na figura 3.12 temos a visualização mais exata de como estão distribuídos os dados do indicador DY, utilizando a função boxplot da biblioteca matplotlib.
CAPÍTULO 3. METODOLOGIA 28
Fonte: Elaborado pelo autor
Fonte: Elaborado pelo autor
Perceba que a distribuição do DY tende a ficar mais baixo entre 0 e 4 e sua mediana próximo de 2, sendo assim, os valores mais significantes estão acima da mediana.
O Retorno sobre o Patrimônio Líquido (ROE) é o lucro líquido dividido pelo Patrimô- nio líquido. É responsável por calcular a rentabilidade de uma empresa a outra desde que sejam do mesmo setor, um índice muito importante para ver como é o crescimento da empresa.
A figura 3.13 representa uma análise para o indicador ROE utilizando a função des- cribe do (Pandas):
CAPÍTULO 3. METODOLOGIA 29
Fonte: Elaborado pelo autor
Na figura 3.14 temos a visualização mais exata de como estão distribuídos os dados do indicador ROE, utilizando a função boxplot da biblioteca matplotlib.
Figura 3.14: Box Plot do ROE
Fonte: Elaborado pelo autor
Perceba que a distribuição do ROE é mais homogênea e sua mediana próximo de 10, sendo assim, os valores mais significantes estão acima da mediana.
O Patrimônio Líquido (Pat.Liq) representa os valores que os sócios ou acionistas têm na empresa em um determinado momento. No balanço patrimonial, a diferença entre valor dos ativos e dos passivos e resultado de exercícios futuros representa o Patrimônio Líquido, que é o valor contábil devido pela pessoa jurídica aos sócios ou acionistas.
A figura 3.15 representa uma análise para o indicador Pat.Liq utilizando a função describe do (Pandas):
Na figura 3.16 temos a visualização mais exata de como estão distribuídos os dados do indicador Pat.Liq, utilizando a função boxplot da biblioteca matplotlib.
CAPÍTULO 3. METODOLOGIA 30
Fonte: Elaborado pelo autor
Fonte: Elaborado pelo autor
Perceba que a distribuição do Pat.Liq é mais homogênea e sua mediana próximo de 2∗109, sendo assim, os valores mais significantes estão acima da mediana.
O (Liq.2m.) é justamente o patrimônio líquido dos últimos dois meses da empresa, representa de maneira mais sucinta como está o andamento da companhia em um curto espaço de tempo recente.
A figura 3.17 representa uma análise para o indicador Liq.2m. utilizando a função describe do (Pandas):
Na figura 3.18 temos a visualização mais exata de como estão distribuídos os dados do indicador Liq.2m., utilizando a função boxplot da biblioteca matplotlib.
CAPÍTULO 3. METODOLOGIA 31
Fonte: Elaborado pelo autor
Fonte: Elaborado pelo autor
Perceba que a distribuição do Liq.2m. tende a ficar mais para baixo e sua mediana próximo de 4∗105, sendo assim, os valores mais significantes estão acima da mediana.
Por último temos o Cresc. 5a que é o crescimento da receita Liquida nos últimos cinco anos.
A figura 3.19 representa uma análise para o indicador Cresc.5a utilizando a função describe do (Pandas):
Na figura 3.20, temos a visualização mais exata de como estão distribuídos os dados do indicador Cresc.5a, utilizando a função boxplot da biblioteca matplotlib.
CAPÍTULO 3. METODOLOGIA 32
Fonte: Elaborado pelo autor
Fonte: Elaborado pelo autor
Perceba que a distribuição do Cresc.5a é mais homogênea e sua mediana próximo de 4, sendo assim, os valores mais significantes estão acima da mediana.
A partir dessas análises, os dados ficaram dispostos conforme figura 3.21, já que os indicadores foram selecionados e toda parte de EDA (Exploratory Data Analysis) finali- zada.
3.3 Algoritmo Após a obtenção dos gráficos e análise anteriores é possível perceber que cada in-
dicador tem sua característica e levando em consideração outros aspectos da teoria do mercado financeira descrita por (Assaf Neto,2014) alguns indicadores, para serem consi- derados, precisam possuir uma certa fórmula para encontrar a melhor ação.
O P/L por exemplo, deve estar entre 2 e 15, já o demais indicadores precisam ser maior
CAPÍTULO 3. METODOLOGIA 33
Fonte: Elaborado pelo autor
que a metade dos dados, já que quanto maior ele for melhor será a ação. Sendo assim, foi proposta a seguinte fórmula, descrita na figura 3.22, para a obtenção das melhores ações.
Figura 3.22: Fórmula da análise
Fonte: Elaborado pelo autor
Perceba que, para a criação dessa fórmula alguns conceitos de análise financeira foram utilizados, e por esse motivo, o P/L se encontra em uma escala entre 2 e 15 como os melhores e os demais indicadores utilizam a mediana como parâmetro de comparação, considerando que para encontrar a melhor ação é necessário que a mesma esteja acima dos 50% melhores daquele setor.
Capítulo 4
Resultados
Esse capítulo é reservado para apresentação e discussão dos resultados obtidos. Como o objetivo era entregar de forma simples as melhores ações separadas por ca-
tegoria, obtivemos através da fórmula descrita no capítulo anterior um novo índice deno- minado value, conforme figura 3.22, que representa o nível que o papel possui dentre os demais.
Outro fator importante a ser considerado é que o índice P/L teve maior peso para a definição desse value, sendo assim, temos os seguintes resultados para cada setor:
4.1 Petróleo, Gás e Biocombustíveis Ao total foram 11 ações selecionadas para esse setor, com base nisso, as cinco melho-
res estão descritas conforme figura 4.1:
Figura 4.1: Melhores do Petróleo
Fonte: Elaborado pelo autor
Observe que temos dentre as selecionas a PETR3 e PETR4, ambas são da Petrobras, entretanto é importante avaliarmos o value da ação e não somente, mas como o risco e a sua cotação também pois são esses que definem a escolha segundo a teoria de Markowitz. Sendo assim, percebemos que BDRT3 é uma excelente opção para investir, possui todos os indicadores propostos na seção anterior e um risco baixo, juntamente com uma cotação próxima a da Petrobras. Levando isso mais perto do real, foi verificado que BDRT é a BR distribuidora Petrobras, possui 37% das ações da Petrobras e é a maior distribuidora de petróleo do país.
CAPÍTULO 4. RESULTADOS 35
4.2 Bens Industriais e Materiais Básicos Ao total foram 102 ações analisadas para esse setor. Com base nessa análise 5 dessas
foram escolhidas como as melhores, conforme figura 4.2.
Figura 4.2: Melhores dos Bens Industriais
Fonte: Elaborado pelo autor
Nessa caso, como o value foi igual para certas ações o segundo critério utilizado é o Risco(%), justamente pois, quanto menor o risco melhor. Sendo assim, temos a KLBN representando a empresa Klabin de papel e celulose, grande potência no mercado e exce- lente opção de investimento. Perceba que, aqui temos KLBN4 e KLBN11, a diferença é que a com final 4 é apenas preferencial, e a com final 11 é uma Unit (pacote com ações preferenciais e ordinárias).
4.3 Consumo Cíclico e Consumo Não Cíclico Ao todo foram analisadas 107 ações, dentre essas, 5 foram escolhidas como as me-
lhores conforme figura 4.3:
Fonte: Elaborado pelo autor
Dentre as 5 temos a SLCE (SLC Agrícola) uma das maiores produtoras agrícolas do Brasil, a empresa possui 460.600 hectares de terras cultiváveis. Foi a primeira empresa do setor (grãos e algodão) cujas ações foram negociadas em bolsa de valores. Sendo, uma das melhores opções para se investir.
CAPÍTULO 4. RESULTADOS 36
4.4 Utilidade Pública e Telecomunicação Foram analisadas 77 ações, e as 5 melhores estão dispostas conforme figura 4.4:
Figura 4.4: Melhores da Utilidade Pública
Fonte: Elaborado pelo autor
Dentre as 5 temos a TRPL - CTEEP (Companhia de Transmissão de Energia Elétrica Paulista) é uma concessionária de transmissão de energia elétrica. A companhia é respon- sável pelo transporte anual de cerca de 25% de toda a energia elétrica produzida no país. Também responde por 60% da energia consumida na Região Sudeste e quase 100% no Estado de São Paulo. Sendo então, uma ótima opção de investimento.
4.5 Financeiro Foram avaliadas 86 ações. Onde 5 foram selecionadas como as melhores, segundo a
figura 4.5:
Fonte: Elaborado pelo autor
Dentre as cinco melhores, temos a ITSA (Itaúsa) que é uma empresa de holding, companhia dona de outras empresas. As principais empresas que a Itaúsa controla são o Itaú Unibanco, Duratex e Alpargatas. Sendo portanto, uma empresa consolidada e excelente opção de investimento.
CAPÍTULO 4. RESULTADOS 37
4.6 Tecnologia Nesse, apenas 4 foram definidas e analisadas para o setor tecnologia. Portanto para
esse caso em específico temos todas as ações da amostra. Conforme figura 4.6:
Figura 4.6: Melhores da Tecnologia
Fonte: Elaborado pelo autor
A Linx SA (LINX3) classificada como a melhor nesse caso, é uma empresa brasileira de software de gerenciamento e a maior casa de software em sistemas de gerenciamento de varejo da América Latina. Segundo a empresa americana de consultoria em tecnologia IDC (International Data Corporation), a Linx retém 40,2% do software de gerenciamento de varejo no Brasil. Em 2007, a Linx foi listada pela terceira vez no relatório anual Valor 1000, que lista as 1000 maiores empresas brasileiras.
4.7 Saúde Ao total foram analisadas 18 ações, e selecionada as melhores 5 conforme figura 4.7:
Figura 4.7: Melhores da Saúde
Fonte: Elaborado pelo autor
Dentre as cinco melhores temos como melhor a FLRY3 (Fleury) é uma das maio- res e mais tradicionais empresas de medicina diagnostica do País. Em 2019, o Grupo Fleury conquistou, na categoria Saúde, o prêmio “Melhores Empresas da Bolsa”. Sendo selecionada, nesse trabalho como a melhor no setor saúde.
CAPÍTULO 4. RESULTADOS 38
4.8 Outros Para o caso outros apenas 16 entraram nesse quesito e entre essas 5 foram seleciona-
das como as melhores, conforme figura 4.8:
Figura 4.8: Melhores dos Outros
Fonte: Elaborado pelo autor
A maioria das ações classificadas como outros são do tipo holding, como explicado anteriormente são empresas que possuem diversas empresas. Sendo assim, temos como melhor a ATOM que é classificada como holding, mas sua atuação é no setor financeiro e sua principal função é justamente a de aquisição de novas empresas. Sendo então, uma ótima opção de investimento.
Capítulo 5
Conclusão
Como mostrado no desenvolvimento deste trabalho, a obtenção dos dados, juntamente com a análise exploratória de dados é um passo essencial para o desdobramento das ati- vidades do cientista de dados. É a partir dela que se instaura uma sequência de limpeza, reestruturação de informações, formulação de hipóteses de acordo com análises estatísti- cas e posterior visualização dessas informações.
Juntando a análise estatística com a financeira foi possível encontrar as melhores ações de maneira simples, gerando um conjunto de ações separados por categoria que facilitam e auxiliam as tomadas de decisões para o mercado financeiro. Visto que no cenário atual do país a renda fixa (investimento mais conservador) teve um grande declínio devido a queda de suas taxas de juros, a renda variável (investimento em ações) se tornou mais atrativa e sendo assim esse trabalho consegue auxiliar tanto os que possuem maior conhecimento na área quanto os com menos experiências.
As dificuldades foram enfrentadas desde o início do trabalho foi uma das dificuldade obter um banco de dados, já que os dados do mercado financeiro não são disponibilizados de maneira simples para análises e os que existem, possuem custo muito alto. Depois de resolvida essa questão, iniciaram-se os problemas com a manipulação dos dados, e a seleção de como eles seriam projetados. Porém, sua manipulação e organização se deram de forma satisfatória.
Outra dificuldade encontrada foi a seleção das categorias, conseguir separar correta- mente a qual categoria determinada ação pertencia, foi um trabalho custoso e manual. E sendo assim chegamos a elaboração do algoritmo de análise que gerou um valor para cada ação, que foi extremamente efetivo.
Por fim, uma proposta de trabalho futuro é a ampliação dos dados, gerando a execução do arquivo fundamentus.py o Web Scraping durante um período maior e em uma máquina como o supercomputador da UFRN, gerando assim um quantidade muito maior de dados deixando mais eficiente. Além da obtenção maior seria possível encontrar e testar ou- tros algoritmos utilizando machine learning validando assim sua eficiência, utilizando o conceito de 70% dos dados para treino e 30% para teste, da biblioteca do scikit-learn.
Referências Bibliográficas
Assaf Neto, Alexandre. Mercado Financeiro. 4. ed. - São Paulo : Atlas, 2001
LOUKIDES, M. What is Data Science?. 1. ed. United States of America: O’Reilly Media, 2016.
CONWAY, D. The Data Science Venn Diagram. 2010. http://drewconway.com/zia/ 2013/3/26/the-data-science-venn-diagram. Accessed: 2019-20-10.
JALES,D. M. Abordagens para análise de dados geográficos em transportes urbanos, UFRN, 2019
BMFbovespa, Ações. 2010. http://www.bmfbovespa.com.br/pt_br/produtos/listados-a- vista-e-derivativos/renda-variavel/acoes.htm. Accessed: 2019-20-10.
INVESTING. B3 fusão 2017. https://br.investing.com/news/mercado-de- a%C3%A7%C3%B5es-e-financeiro/cvm-aprova-fus%C3%A3o-entre-bm- amp;fbovespa-e-cetip-234503. Accessed: 2019-20-10.
VANDERPLAS, J. Python Data Science Handbook. 1. ed. United States of America: O’Reilly Media, 2016.
Python, Org. 2019. https://www.python.org/doc/essays/blurb/. Accessed: 2019-22-10.
PANDASTEAM. pandas powerful Python data analysis toolkit. 2011. http: //pandas.pydata.org/pandas-docs/stable/. Accessed: 2019-22-10.
HILPISCH, Y. Python for Finance. 1. ed. United States of America: O’Reilly Media, 2015.
COLAB, Google. 2014. https://colab.research.google.com. Accessed: 2019-22-10.
DAVILA, V. H. L. Estatística Descritiva. 2019. https://www.ime.unicamp.br/ hla- chos/estdescr1.pdf. Accessed: 2019-22-10.
MITCHELL, R. Web Scraping with Python. 2. ed. United States of America: O’Reilly Media, 2018.
FUNDAMENTUS, 2019. https://www.fundamentus.com.br Accessed: 2019-22-10.
Web Scraping
Análise exploratória
Algoritmo
Resultados
Consumo Cíclico e Consumo Não Cíclico
Utilidade Pública e Telecomunicação