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
Uma Análise Exploratória de Dados Aplicado ao Mercado
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