Você está na página 1de 73

INSTITUTO FEDERAL DO ESPÍRITO SANTO

ENGENHARIA DE CONTROLE E AUTOMAÇÃO

BRUNO VIANA DE MELLO

AUTOMATIZAÇÃO NA DECISÃO DE NEGOCIAÇÃO DE ATIVOS NA BOLSA DE


VALORES

SERRA
2023
BRUNO VIANA DE MELLO

AUTOMATIZAÇÃO NA DECISÃO DE NEGOCIAÇÃO DE ATIVOS NA BOLSA DE


VALORES

Trabalho de Conclusão de Curso apresentado à


Coordenadoria do Curso de Engenharia de
Controle e Automação do Instituto Federal do
Espírito Santo como requisito parcial para a
obtenção do título de Bacharel em Engenharia de
Controle e Automação

Orientador: Prof. Dr. Daniel Cruz Cavalieri.

SERRA
2023
DECLARAÇÃO DO AUTOR

Declaro, para fins de pesquisa acadêmica, didática e técnico-científica, que este


Trabalho de Conclusão de Curso pode ser parcialmente utilizado, desde que se faça
referência à fonte e ao autor.

Serra, 10 de março de 2023.

_____________________________________

Bruno Viana de Mello


“O dinheiro é um mestre terrível,

mas um excelente servo.”

(P. T. Barnum)
RESUMO

A modernização, popularização e aumento da acessibilidade do mercado de ações


têm atraído cada vez mais interessados nesse ramo de investimentos. A
automatização das operações nas bolsas de valores é uma facilidade buscada por
muitos dos investidores. Este trabalho mostra uma das maneiras que essa automação
pode ser realizada. Inicialmente foram definidas as regras operacionais, ou seja, quais
condições de preço devem ser consideradas como motivadoras de ordens de compra
e/ou de venda e de que maneira será feito o manejo de riscos de modo a definir os
potenciais momentos de negociação. O segundo passo foi definir quais dessas
potenciais operações seriam efetivamente realizadas. A tarefa de escolha foi então
atribuída a um conjunto de seis algoritmos de classificação cujos atributos são dados
de indicadores técnicos baseados nos preços dos ativos e outras informações do
mercado, como volume de negociações. Foram desenvolvidos programas para
escolha dos ativos a serem operados, seleção dos atributos mais relevantes, bem
como para configuração dos parâmetros dos classificadores e definição dos limiares
de classificação de maneira automatizada. Os resultados obtidos se mostraram
satisfatórios, demonstrando que o sistema de classificação foi capaz de melhorar o
resultado financeiro, realizando uma seleção eficiente das operações a serem
realizadas, trazendo um resultado superior ao obtido ao se operar em todas as
ocasiões candidatas.

Palavras-chave: Robô Trader. Negociações Automatizadas de Ações. Aprendizado de


Máquina. Daytrade.
ABSTRACT

The modernization, popularization and increased accessibility of the stock market have
attracted more and more people interested in this kind of investment. The automation
of operations on stock exchanges is a facility that many investors have been looking
for. This work shows one of the ways that this automation can be performed. Initially,
operational rules were defined, that is, which price conditions should be considered as
motivating buy and/or sell orders and how risks will be managed in order to define
potential trading moments. The second step was to define which of these potential
operations would actually be carried out. The choice task was then assigned to a set
of six classification algorithms whose attributes are data from technical indicators
based on asset prices and other market information such as trading volume. Programs
were developed to choose the assets to be operated, select the most relevant
attributes, as well as configure the parameters of the classifiers and define the
classification thresholds in an automated way. The results obtained were satisfactory,
demonstrating that the classification system was able to improve the financial result,
performing an efficient selection of the operations to be carried out, bringing a result
superior to that obtained when operating on all candidate occasions.

Keywords: Expert Advisor. Automated Stocks Negotiation. Machine Learning.


Daytrade.
SUMÁRIO

1 INTRODUÇÃO ............................................................................................. 14
1.1 PROBLEMA ................................................................................................. 16
1.2 JUSTIFICATIVA ........................................................................................... 17
1.3 OBJETIVOS ................................................................................................. 17
1.4 ESTRUTURA DO TRABALHO ..................................................................... 20
2 REFERENCIAL TEÓRICO ........................................................................... 21
2.1 A ANÁLISE DO MERCADO DE AÇÕES ...................................................... 21
2.2 O GRÁFICO DE CANDLESTICK ................................................................. 23
2.3 COMO OPERAR NO MERCADO DE AÇÕES ............................................. 24
2.4 AUTOMATIZAÇÃO DA ANÁLISE TÉCNICA ATRAVÉS DE UM TRADING
dddddiiiiSYSTEM ...................................................................................................... 24
2.5 INDICADORES TÉCNICOS ........................................................................ 27
2.6 A PLATAFORMA METATRADER 5 ............................................................ 29
2.7 APRENDIZAGEM DE MÁQUINA ................................................................ 31
2.7.1 Modelos preditivos .................................................................................... 33
2.7.1.1 Algoritmo knn (k-nearest neighbor) ............................................................. 33
2.7.1.2 Teorema de bayes e classificador naive bayes ............................................ 34
2.7.1.3 Random forest .............................................................................................. 35
2.7.1.4 Extreme gradient boosting (xgboost) ............................................................ 37
2.7.1.5 Support vector machines .............................................................................. 38
2.7.2 Métricas de avaliação de desempenho do modelo ................................. 42
2.7.2.1 Matriz de confusão ....................................................................................... 42
2.7.2.2 Outras métricas ............................................................................................ 43
2.7.2.3 A métrica lucro ............................................................................................. 45
2.7.3 Base de dados desbalanceadas ............................................................... 45
2.7.4 Otimização de hiperparâmetros ................................................................ 46
2.7.5 Pré-processamento de dados ................................................................... 47
3 METODOLOGIA .......................................................................................... 48
3.1 O TRADING SYSTEM .................................................................................. 49
3.1.1 Parametros do indicador de topos e fundos ........................................... 49
3.1.2 Definição dos pontos de entrada e saída das operações ....................... 50
3.1.3 Definição dos parâmetros para operação ................................................ 52
3.2 O MODO DE OPERAÇÃO DO ROBÔ TRADER ........................................... 56
3.2.1 Definição das classes ................................................................................. 57
3.2.2 Definição dos indicadores a serem utilizados como entrada para osaaaaa
aaaaiaiclassificadores ............................................................................................. 58
3.2.3 iaConfiguração dos classificadores – definição dos hiperparâmetros ..... 61
3.2.4 Configuração dos classificadores ............................................................. 62
3.2.5 Operação do robô trader ............................................................................ 64
4 RESULTADOS .............................................................................................. 64
4.1 DEFINIÇÃO DOS LIMIARES ........................................................................ 65
4.2 TESTE DE DESEMPENHO DOS CLASSIFICADORES ............................... 69
4.3 DESEMPENHO DO ROBÔ TRADER EM OPERAÇÕES REAIS .................. 70
5 CONCLUSÕES ............................................................................................. 70
5.1 TRABALHOS FUTUROS .............................................................................. 71
REFERÊNCIAS ............................................................................................. 72
14

1 INTRODUÇÃO

Através dos séculos o homem tem se questionado sobre uma questão tão antiga
quanto a eternidade: “Como é que se adquire riqueza?” (WILDER, 2000). Desde as
primeiras civilizações o ser humano sempre buscou uma maneira de possuir e
acumular os recursos necessários à sua sobrevivência. No mundo moderno, o recurso
tangível que nos permite ter o que comer, onde dormir e o que vestir – o que já pode
ser considerado uma riqueza, sem dúvida é o dinheiro.

Mas de qual maneira que se ganha dinheiro? Bem, a maioria das pessoas trabalha
pelo dinheiro, vendendo suas habilidades laborais e principalmente seu tempo em
troca de um salário. Mas por que alguns homens ficam ricos enquanto outros, que
trabalham tanto ou mais do que eles, não ficam? (WILDER, 2000). A resposta a essa
pergunta não é universal. Uma resposta válida, contudo, consiste na habilidade do
sujeito em ser capaz de inverter os papeis tradicionais na relação homem × dinheiro,
fazendo com que este “trabalhe” para si, ao invés de trabalhar por ele. Uma das
ferramentas que permitem tal façanha é o mercado de capitais com seus produtos e
serviços.

As bolsas de valores, que permitem a negociação de ações e outros ativos financeiros,


fazem parte das ferramentas dos mercados de capitais disponibilizadas ao investidor
interessado em investir nesse ramo. A regra básica para se ganhar dinheiro na compra
e venda de ações, assim como de praticamente qualquer outra mercadoria, é muito
simples: comprar barato e vender mais caro! Ser capaz de aplicar essa regra, contudo,
não é uma tarefa fácil nem simples. Em mercados de alta liquidez e globalizados como
o brasileiro, as oscilações dos preços das ações costumam ser em grandes
amplitudes, sofrendo influência de fatores políticos e econômicos tanto locais quanto
internacionais, dificultando e frustrando muitas vezes a previsão de preços futuros.
Nesse sentido, ser capaz de selecionar as operações que podem ser lucrativas é o
grande objetivo buscado pelos que operam nesses mercados.

O sistema de análise do mercado acionário é baseado principalmente em duas


ferramentas financeiras: a análise técnica e a fundamentalista, duas principais
15

ferramentas de predição (DEBASTIANI, 2008). O desenvolvimento tecnológico e a


informatização dos sistemas de negociação, assim como a democratização do acesso
a esses mercados à grande maioria da população, tornou inevitável a automatização
desses sistemas.

Na era do Big Data, a relação do mercado de capitais com a análise de dados por
computadores, especialmente o aprendizado de máquina, tem se tornado cada vez
mais sólida, tornando esse setor da economia cada vez mais automatizado (SUTTER,
2018). Dentre os exemplos de aplicação na área de finanças que podem ser citados
estão o sistema de detecção de fraude (TUYLS, MAES, VANSCHOENWINKEL,
2018), que para prever possíveis falsificações, combina o fluxo de informações em
uma instituição financeira com fatores de risco; gerenciamento de portifólio com
minimização da intervenção humana, deixando um robô-advisor responsável pelas
sugestões de investimentos (GU; KELLY; XIU, 2018); o trading algoritmo
(PRASSANA; DEVARASAN, 2013), que realiza a predição das oscilações do
mercado, bem como a automatização das negociações nas bolsas de valores e o
trabalho de SUTTER (2018) que empregou técnicas de aprendizado de máquinas com
o objetivo de predizer as oscilações dos preços das ações nas bolsas de valores.

O foco deste trabalho está mais relacionado com os dois últimos citados, utilizando,
contudo, uma abordagem diferente do problema. Ao invés de tentar prever as
oscilações futuras dos preços das ações, para orientar na decisão de compra ou
venda, utiliza-se dados dos preços e dos indicadores da análise técnica para definir
em situações de possibilidade de ganho, se a operação será realizada ou não. Todo
o processo de análise e de execução de ordens é automatizado e baseado em
aprendizagem de máquina.

Em outras palavras, este trabalho busca automatizar a análise técnica, tratando a


decisão de negociar ou não como um problema de classificação, fazendo o uso de um
conjunto de algoritmos de aprendizagem de máquina, eliminando a necessidade de
intervenção humana nas operações, evitando principalmente que os resultados sejam
influenciados por fatores psicológicos dos investidores, a principal fonte de perdas no
mercado de capitais (NORONHA, 2009).
16

O foco do trabalho está nas operações de day trade, que são operações iniciadas e
finalizadas no mesmo dia.

1.1 PROBLEMA

No Brasil, o número de investidores pessoa física no mercado financeiro,


especialmente na bolsa de valores tem crescido consideravelmente nos últimos anos
(B3, 2022). Muitas vezes, essas pessoas que ingressam no mercado, não têm ciência
de quão complexo ele pode ser e geralmente, após sofrerem alguma perda financeira,
abandonam essa classe de investimento. Os que permanecem e procuram entender
melhor o mercado, se deparam com uma quantidade imensa de informação, seja
optando pela análise técnica ou pela análise fundamentalista (DEBASTIANI, 2008).

Processar todos esses dados e ainda obter sucesso nos investimentos não é uma
tarefa fácil, ainda mais levando-se em conta os fatores psicológicos e muitas vezes a
falta do tempo necessário para realizar as análises. Nesse sentido, a automatização
das operações pode ser uma solução para aqueles que desejam operar no mercado
de ações. É preciso compreender, contudo, que não pode existir uma solução única
para todos os investidores, pois um grande fluxo de negociações em um mesmo
sentido e ao mesmo tempo, alteraria artificialmente a dinâmica natural do mercado,
forçando nos outros participantes uma resposta que não pode ser prevista nos dados
estatísticos (BAZIN, 2017). Por exemplo, para um ativo cuja negociação diária seja
em média R$ 1.000.000,00, um investidor negociando em lotes de R$ 10.000,00
provavelmente não “moveria” os preços de cotação ao negociar. Contudo, caso as
mesmas operações sejam feitas simultaneamente por 100 investidores, os resultados
já seriam bem distintos, de modo que os dados estatísticos das cotações com o robô
de negociação ativo seriam diferentes dos dados com o robô inativo, tirando toda a
previsibilidade de possíveis ganhos a partir de dados históricos. Sendo assim, mesmo
a solução de automatização dos negócios, exige esforço, dedicação e conhecimento
dos interessados, não se configurando, portanto, como uma solução simples.
17

1.2 JUSTIFICATIVA

As técnicas de aprendizado de máquina têm se mostrado muito eficientes quando


aplicadas aos mercados de ações (ATSALAKIS; VALAVANIS, 2018) e apresentam
ainda a possibilidade de incorporar as análises tradicionais. Os analistas técnicos
principalmente, mas também os fundamentalistas, realizam suas análises em busca
de padrões nas oscilações dos preços afim de encontrar as melhores oportunidades
de investimento. A identificação e tratamento de padrões é justamente uma das
maiores especialidades dos algoritmos de aprendizado de máquina.

É importante considerar, no entanto, que devido à grande volatilidade, dinâmica e


globalização dos mercados de ações atuais, esses padrões estão em constante
transformação e aquilo que é válido hoje, pode não ser mais válido amanhã. Dessa
forma a busca e identificação dos padrões deve ser constante e dada a massa de
dados disponíveis, essa tarefa se torna praticamente impossível de ser realizada
manualmente.

Sistemas automatizados teriam então a capacidade de possibilitar que investidores


comuns possam desfrutar dos ganhos dos mercados de ações sem ter que dedicar
boa parte do seu tempo para isso e ainda que isentem seus resultados de fatores
psicológicos que podem afetar significativamente os lucros.

1.3 OBJETIVOS

Será demonstrado neste trabalho como incorporar a análise técnica no aprendizado


de máquina e se utilizar de dados históricos para que o sistema identifique padrões
e seja capaz de selecionar operações que possam ser lucrativas e operar de maneira
autônoma.

Assim, o objetivo geral deste trabalho é automatizar a análise técnica, tratando a


decisão de negociar, ou não, como um problema de classificação, fazendo o uso de
um conjunto de algoritmos de aprendizagem de máquina.
18

A estratégia de negociação utilizada no trabalho se baseia na formação de topos e


fundos nos preços, e se vale do uso de diversas ferramentas desenvolvidas pelo autor,
que devido à preservação de direitos autorais, serão apenas mencionadas sem que
sejam detalhadamente descritas.

Estratégias operacionais podem ser das mais diversas possíveis, contudo geralmente
seguem uma “receitinha de bolo” básica que visa a proteção do capital e dos lucros
obtidos (DEBASTIANI, 2008), o que é conhecido como trading system e será descrito
detalhadamente mais adiante.
Como objetivos específicos, dadas as ressalvas colocadas, tem-se para este trabalho:

• Objetivo 1: desenvolver e implementar as regras operacionais que definem os


preços de entrada e de saída, o volume financeiro por negociação bem como
o manejo de risco. Ou seja, definir um trading system, maneira que essas
regras são conhecidas no mercado;

• Objetivo 2: elaborar um sistema que seja capaz de identificar e gerar os dados


mais relevantes, baseados em indicadores técnicos, a serem processados por
um algoritmo de classificação de modo a selecionar, dentre as operações que
estão de acordo com o trading system, as que serão realizadas;

• Objetivo 3: implementar o sistema autônomo de negociação, integrando o fluxo


de dados em tempo real1 disponibilizado pela corretora de valores através da
plataforma de negociação Metatrader com o sistema de classificação
desenvolvido.

Os objetivos estão mais bem detalhados na Figura 1

1 Para efeitos práticos, em se tratando de operações no mercado de ações, considera-se cotações de


preços em tempo real, aquelas que ainda são válidas quando visualizadas, ou seja, uma cotação está
em tempo real quando uma negociação pode ser feita no preço que foi consultado, antes que este
modifique.
19

Figura 1 - Detalhamento dos objetivos do trabalho

Fonte: O Autor.
20

1.4 ESTRUTURA DO TRABALHO

Este trabalho está dividido em cinco capítulos. No capítulo 1 é apresentado a


motivação e os objetivos do trabalho bem como é realizada uma revisão bibliográfica
abordando como tema central a aplicação de técnicas de aprendizagem de máquina
no mercado financeiro de uma maneira geral, tendo como principal objetivo apresentar
nos estudos de outros autores as semelhanças, diferenças e contribuições com o
presente trabalho. No capítulo 2 são apresentados os embasamentos teóricos do
trabalho, descrevendo-se as diferenças entre a abordagem técnica e fundamentalista
do mercado de ações, detalhes operacionais do mercado e das ferramentas utilizadas
e os requisitos para uma estratégia de negociação de sucesso. O capítulo 2 também
inclui os conceitos de aprendizagem de máquina com descrição detalhada dos
algoritmos de classificação utilizados no trabalho, abordagem das técnicas de
tratamento de dados e definição das métricas de validação. O capítulo 3 apresenta a
metodologia empregada na aplicação dos conceitos teóricos para o desenvolvimento
dos modelos. Os resultados são apresentados no capítulo 4 e são discutidos nas
conclusões, no capítulo 5.
21

2 REFERENCIAL TEÓRICO
2.1 A ANÁLISE DO MERCADO DE AÇÕES

Obter sucesso no investimento em ações ou em qualquer outro ativo de valor como


commodities e até mesmo crypto ativos, demanda que o investidor faça uma boa
análise daquilo em que deseja investir. Basicamente, ao menos se tratando do
mercado de ações, essa análise pode ser baseada em dois tipos principais: A análise
fundamentalista e a análise técnica (DEBASTIANI, 2008).

A análise fundamentalista, como o próprio nome sugere, baseia-se nos fundamentos


da empresa, ou seja, nos seus resultados, nas suas perspectivas de crescimento, nos
seus desafios e nas suas vantagens frente a seus concorrentes. A análise de todos
esses dados permitirá ao investidor definir o valor justo para a ação em estudo e então
decidir se irá investir naquele papel ou não. É uma análise para o longo prazo, pois os
próprios balanços das empresas costumam ser publicados trimestralmente, além
disso, os fundamentos de uma companhia não mudam da noite para o dia, mesmo
que ocorram alguns imprevistos como mudança no cenário político e/ou tributário ou
mesmo prejuízos no curto prazo (DEBASTIANI, 2008).

Já a análise técnica, foca seus estudos no gráfico de preços dos ativos, buscando
padrões e tendências que se repetem ao longo do tempo, independente do balanço
das empresas e da conjuntura econômica e/ou política. Os que utilizam a análise
técnica também se valem de indicadores, que são calculados através dos preços
históricos dos ativos ou qualquer outro dado que se julgue relevante (NORONHA,
2009). No mercado, muitas vezes o analista técnico nem mesmo é considerado um
investidor, mas apenas um trader ou especulador, uma vez que através da análise
técnica é possível obter lucros sem nem mesmo saber em qual empresa ou qual setor
se está investindo, baseando-se apenas no gráfico sem qualquer “compromisso” com
o desenvolvimento da empresa, entrando e saindo do papel simplesmente quando os
requisitos gráficos são atendidos.

Por mais que pareçam completamente antagônicas as duas metodologias de análise,


uma observação mais detalhada do mercado permitirá concluir que a análise técnica
22

é dependente da análise fundamentalista (DEBASTIANI, 2008). Grandes investidores,


como fundos de pensão e fundos de investimento, possuem um time de profissionais
qualificados em áreas diversas como direito tributário, contabilidade, política, comércio
exterior etc. a fim de “garimpar” as melhores oportunidades de investimento. A decisão
de investir ou não em uma empresa ou ativo, deve ser muito bem embasada, afinal
os clientes desses fundos não aceitarão como justificativa apenas o fato de que os
preços estavam subindo no gráfico. Contudo, esses grandes investidores não
conseguem alocar todo o capital disponível de uma única vez por questões de liquidez
e de estratégia de investimento, além disso, necessitam realizar saques e realocações
periódicas. Como essas movimentações envolvem quantias elevadas, acabam por
deixar alguns “rastros”. E são justamente esses rastros a base de estudo da análise
técnica, que para possibilitar que se siga o fluxo do dinheiro, utiliza-se padrões dos
gráficos de preços e dos indicadores técnicos (NORONHA, 2009).

Um indicador técnico é uma série de dados que são modificados através de algum
tipo de fórmula. Esses dados podem englobar os preços de abertura, máxima, mínima
ou fechamento de um período de tempo ou mesmo outros tipos de dados como
volume e em alguns casos até as fases da lua! (NORONHA, 2009).

Apesar de ser controversa entre estudiosos do assunto, principalmente por ser


subjetiva, a análise técnica é utilizada por aproximadamente 90% dos investidores,
principalmente os não profissionais (NORONHA, 2009). Isso se dá principalmente por
sua abordagem mais direta e mais simples, que não exige conhecimento prévio de
economia ou contabilidade.

Outra característica da análise técnica é o que costuma ser chamado de “profecia


autorrealizável”, como sugerem alguns autores. Ao analisar o gráfico de uma ação, o
investidor está buscando fazer um diagnóstico. Ao usar este diagnóstico para estimar
como o preço da ação irá evoluir no futuro, faz-se um prognóstico. Uma profecia
autorrealizável nada mais é do que um prognóstico que provoca sua própria
realização, uma vez que o mesmo prognóstico está sendo feito por muitas pessoas
(ÁVILA, 2018). Em outras palavras a análise técnica funciona, em parte, porque as
pessoas acreditam que ela funciona e agem de modo a garantir que funcione.
23

Diante das características de cada tipo de análise, fica evidente que a análise técnica
é a que permite uma automatização mais direta, afinal ela é baseada apenas em
dados dos preços e dos indicadores e não leva em consideração fatores tão
complexos como situação geo política atual e perspectivas futuras do mercado.

2.2 O GRÁFICO DE CANDLESTICK

Dentre os diversos tipos de gráfico disponíveis nas plataformas de negociação, um


dos mais utilizados é o gráfico de candlestick, também conhecido como candelabro
japonês, uma vez que sua origem é deste país (LEMOS, 2015). É um gráfico formado
por figuras retangulares, que podem possuir uma linha de alongamento na parte
superior e/ou inferior, o que lhe dá a aparência de uma vela e geralmente é
referenciado por candle, seu termo em inglês. Um exemplo de candlestick pode ser
visto na Figura 2.

Figura 2 – Gráfico de Candlestick.

Fonte: BUSSOLA DO INVESTIDOR (2022)

Cada candle possui quatro preços diferentes: Abertura, Fechamento, Máximo e


Mínimo conforme pode-se observar na figura. Se o preço de fechamento de um candle
for maior que o preço de abertura, geralmente se usa a cor verde e caso contrário,
usa-se a cor vermelha. O período de gráfico escolhido é que irá definir quanto tempo
24

de negociação será representado por cada candle. Ou seja, se o período for de 1


minuto, então a cada minuto é formado um candle diferente, se o período for de um
mês, cada mês será representado por um candle e assim por diante. Este período
também é conhecido como timeframe.

2.3 COMO OPERAR NO MERCADO DE AÇÕES

Atualmente, o mercado de ações brasileiro é bem acessível para quem deseja operar.
O acesso ao pregão de negociações da BOVESPA, a Bolsa de Valores de São Paulo,
principal bolsa de valores do Brasil, pode ser feito através de bancos ou corretoras e
as ordens de compra e venda são enviadas em sua maioria pela internet através de
uma ferramenta chamada home broker ou plataformas de negociação específicas ou
não de cada instituição. É importante considerar que existe uma série de custos
envolvidos nas operações e o investidor precisa levar isso em conta na hora de fazer
seus investimentos, uma vez que seus ganhos deverão ser superiores aos custos para
que o resultado final seja positivo.

Dentre os ativos que podem ser negociados além das ações no mercado brasileiro,
destacam-se os contratos e minicontratos de índice futuro e de dólar futuro, um tipo
de derivativo que se opera baseado na expectativa para o nível do índice IBOVESPA
no futuro e para o preço do dólar no futuro respectivamente. A vantagem desses ativos
é que suas taxas são menores e normalmente é oferecido uma grande alavancagem
para operá-los, o que permite operações de grande valor, dispondo-se de pouco
capital, o que pode permitir por sua vez, a maximização dos ganhos, mas também das
perdas. A negociação de minicontratos possui algumas particularidades comparando-
se com a negociação de ações. As ações sofrem variação em seu preço em centavos,
sendo geralmente a variação mínima igual 1 centavo. O valor financeiro dessas
variações também é da mesma ordem de grandeza, ou seja, se uma ação subiu 10
centavos e uma pessoa tem 100 dessas ações, então ela ganhou 10 reais. No caso
dos minicontratos de índice, as oscilações no preço não são em centavos, mas sim
em pontos, sendo a oscilação mínima de 5 pontos. Cada ponto corresponde a 20
centavos, dessa forma, uma oscilação de 5 pontos corresponde a uma oscilação de 1
real por contrato. Os minicontratos de dólar também têm suas oscilações medidas em
25

pontos, com oscilação mínima de 0,5 ponto e a correspondência financeira de 10 reais


por ponto. A oscilação mínima de um ativo também pode ser referenciada como tick.

Deve-se observar também que existem quantidades mínimas quanto ao volume dos
ativos negociados. As ações são negociadas pelo lote mínimo e múltiplo de 100
unidades no mercado padrão e pelo lote mínimo de 1 unidade no mercado fracionário.
Os minicontratos são negociados pelo lote mínimo de uma unidade, ao passo que os
contratos integrais são negociados pelo lote mínimo e múltiplo de 5 unidades.

Outra particularidade da bolsa brasileira é possibilidade de se realizar vendas a


descoberto, um tipo de operação em que o investidor pode vender o ativo sem possuí-
lo em sua carteira, ficando com uma posição negativa naquele papel e obtendo
ganhos no caso de queda no preço e perdas no caso de alta. Ou seja, é uma operação
inversa à tradicional de comprar primeiro e vender depois. Obviamente, por uma
questão de controle do número de ações disponíveis, uma venda a descoberto deve
ser finalizada com uma compra na mesma quantidade de papeis vendidos dentro de
um período pré acordado. Caso essa compra seja realizada no mesmo dia da venda,
ou seja, em operações daytrade, não é cobrado nenhum custo adicional na maioria
das corretoras. Caso o investidor deseje realizar a recompra apenas posteriormente,
deverá arcar com custos de aluguel do papel. Este tipo de operação permite que
investidores possam ter lucros mesmo em momentos que o mercado está em queda.

No jargão do mercado utiliza-se o termo “operar comprado” (ou long) ou “operar


vendido” (ou short) quando se trata de manter uma certa quantidade dos papeis na
carteira em operações de compra e venda e operações de venda e compra,
respectivamente.

E em se tratando da análise técnica, como é o caso neste trabalho, sendo as


operações guiadas pelo gráfico dos preços, é possível se basear em qualquer um dos
períodos gráficos disponíveis. Quando se deseja realizar operações de daytrade, ou
seja, operações iniciadas e finalizadas no mesmo dia, geralmente se usa o gráfico de
minutos ou de horas, no qual cada candle é correspondente a 1 minuto, 5 minutos, 1
hora, ou o qualquer que seja o período desejado. Para operações conhecidas como
swing trade, na qual a posição na carteira é mantida por alguns dias ou mesmo alguns
26

meses, costuma-se usar o gráfico diário. Já para operações de maior prazo, nas quais
se mantém o papel na carteira por vários meses, no chamado position trade, é comum
se utilizar o gráfico semanal ou mensal.

2.4 AUTOMATIZAÇÃO DA ANÁLISE TÉCNICA ATRAVÉS DE UM TRADING


SYSTEM

Não existe uma estratégia pronta e nem tão pouco única para se obter lucro no
mercado de ações. Cada papel, em cada período gráfico escolhido para operar,
possui características únicas, que inclusive variam ao longo do tempo, necessitando
de reanálises e ajuste constantes. Mesmo sendo exclusivas para um ativo em
determinado período gráfico, é indispensável que essas estratégias possuam algumas
características em comum (DEBASTIANI, 2008) (NORONHA, 2009):

• Manejo de risco - Deve-se fazer um correto manejo de risco, dimensionando


as operações de tal forma que os riscos sejam administráveis e que em caso
de perda, não haja comprometimento significativo do capital em uma única
operação;

• Proteção de capital e proteção de lucro - Deve-se assegurar a proteção do


capital e também assegurar a proteção dos lucros caso estes sejam
crescentes;

• Definição clara e prévia dos preços de entrada e de saída - Antes de se


iniciar uma operação é necessário saber quando sair se a estratégia der
errado e também quando sair, caso der certo. Aqui entra a definição dos
stops de perda e de ganho – também conhecidos como stop loss e stop gain
(ou take profit), que são as ordens automáticas a serem realizadas caso os
preços atinjam os valores definidos;

• Relação Risco Retorno - Os ganhos esperados para uma operação devem


ser iguais ou superiores ao risco que se está exposto nesta;
27

• Validação da estratégia - Os parâmetros escolhidos devem ser testados e


verificados os resultados que seriam obtidos caso a estratégia fosse posta
em prática (back testing). Dessa forma saber-se-á estatisticamente qual a
probabilidade de acerto e quais os possíveis ganhos com a estratégia;

• Disciplina operacional - As regras definidas devem ser mantidas fixas em


todas as operações em aberto e as eventuais mudanças devem ser
aplicadas somente em novas operações.

A esse conjunto de regras, no jargão do mercado, dá-se o nome de trading system.


Um trading system bem elaborado, permite que se tenha uma estimativa dos
resultados que podem ser alcançados ao longo do tempo através dos dados
estatísticos.

2.5 INDICADORES TÉCNICOS

Além dos dados de preços dos ativos contidos no gráfico, a análise técnica lança mão
também de indicadores técnicos que servem para auxiliar o investidor na tomada de
decisões. Um indicador bem simples é o volume de negócios, que nada mais é do que
a quantidade de operações ou o volume financeiro negociado em determinado
período. Outro indicador muito comum são as médias móveis, que é o valor médio
dos preços nos últimos n períodos observados. Existe um número enorme de
indicadores “consagrados” desenvolvidos por grandes estudiosos do mercado e
utilizados por um amplo número de investidores já há muitas décadas como o índice
de força relativa, MACD e OBV (NORONHA, 2009). Além disso, qualquer operador do
mercado pode desenvolver seu próprio indicador utilizando os dados disponíveis para
realizar o cálculo que desejar.

Neste trabalho é utilizado um grande número de indicadores, boa parte deles


desenvolvidos pelo autor. Não é o foco deste TCC apresentar e discutir cada um deles
e serão esmiuçados apenas os que podem comprometer seu entendimento geral.
28

O principal indicador utilizado neste trabalho é o indicador de topos e fundos, pois é a


partir deste indicador que se define os pontos entrada e de saída de um trade
(operação) na estratégia de operações adotada. Um exemplo de topos e fundos em
um gráfico de candlestick pode ser visualizado na Figura 3.

De acordo com DEBASTIANI (2008, p. 38):

Um topo é marcado pela cotação máxima do pregão em que foi fechado o negócio
com preço mais elevado, dentro de determinado horizonte de análise, ou seja, um
dia cuja máxima é mais alta que as máximas dos dias adjacentes, tanto os
sucessores quanto os predecessores.

De forma inversa, um fundo é marcado pela cotação mínima do pregão em que foi
fechado o negócio com menor preço dentro de um determinado horizonte de
análise, ou seja, um dia cuja mínima ficou abaixo das mínimas dos dias adjacentes,
tanto os sucessores quanto os predecessores.

Figura 3 – Topos e fundos em um gráfico de candlestick.

Fonte: SMARTTBOT (2022)

Esta definição não é muito precisa no sentido de que não existe um valor ou percentual
estático do qual os preços se afastam para se considerar um topo ou um fundo. Isso
vai depender de qual ativo está sendo analisado, do período gráfico e ainda deve-se
29

levar em conta que esses níveis podem variar ao longo do tempo para um mesmo
ativo. Por exemplo, uma ação que há anos era negociada a valores próximos de
R$ 5,00 com baixa liquidez e agora é negociada por valores próximos a R$ 200,00
com maior liquidez, certamente sofrerá variação em seus níveis definidores de topos
e fundos.

Topos e fundos podem ser muito interessantes para se definir pontos de entrada e de
saída das operações, principalmente por serem regiões de preço adequadas para
colocação do stop loss (proteção do capital), uma vez que é esperado que um fundo
atue como um suporte dos preços, ou seja, um nível de preços do qual o mercado
possa ter dificuldade em praticar preços menores e os topos podem atuar como
resistência de preços – níveis de preços em que o mercado pode apresentar
dificuldades em superar para cima. Dadas estas características, pode-se definir
algumas estratégias de trade baseando-se em topos e fundos, valendo-se da
confirmação ou frustação das expectativas citadas:

• Compra-se na formação de um fundo ou no rompimento de topo,


posicionando-se o stop loss abaixo do fundo;

• Vende-se na formação de um topo ou na perda de um fundo, posicionando-


se o stop loss acima do topo.

2.6 A PLATAFORMA METATRADER 5

O Metatrader 5 é uma plataforma de negociação disponibilizada por muitas corretoras


que intermediam negócios na Bovespa. A linguagem de programação é o MQL 5, uma
linguagem orientada a objetos e baseada em C++, sendo praticamente idêntica a esta,
salvo por algumas especificidades referentes à sua aplicação específica. Possui um
editor de códigos, através do qual o usuário pode programar além de seus indicadores,
scripts e robôs traders (METATRADER 5, 2022).
30

Scripts são códigos que são executados uma única vez e são úteis para a extração
de dados e execução de testes ou mesmo para a realização de operações pontuais,
como o fechamento imediato de todas a posições em aberto.

Os robôs traders, também conhecidos como expert advisors (EA) são programas
executados no ambiente do Metatatrader e monitoram o mercado em tempo real,
podendo utilizar dados de indicadores e definindo automaticamente, conforme
programado, se uma operação será realizada ou não.

No Metatrader estão disponíveis os dados históricos dos ativos negociados, quando


este está vinculado a uma corretora, e seu acesso pode ser realizado a qualquer
momento através da interface do programa.

É possível também realizar a integração do Metatrader com outros


programas/sistemas. Isso pode se dar através da importação de DLL’s ou por
conexões via socket, como é o caso neste trabalho.
O Metatrader, em boa parte das corretoras, possui duas maneiras distintas de
operação e gerenciamento das carteiras de negociação, que são os modos netting e
hedge. O modo netting é o modo de operação normal que os investidores geralmente
utilizam fora da plataforma. Neste modo de operação, se um investidor possui na
carteira 100 ações da empresa X, ele tem uma posição comprado de 100 ações. Caso
ele compre mais 100, ele continuará possuindo uma posição, que agora tem 200
ações. Se vender 100, volta a ter uma posição com 100 ações. Ou seja, qualquer
compra ou venda da mesma ação irá apenas afetar o saldo da posição mantida
naquela ação, não alterando o número de posições. Já no modo hedge, cada
operação realizada irá abrir uma posição diferente. Caso um investidor compre 100
ações da empresa X e em seguida faça uma venda de 100 ações da mesma empresa,
então ele terá uma posição comprada de 100 ações e outra vendida de 100 ações,
mesmo que seu saldo final de ações seja zero. Para zerar cada posição, será
necessário realizar a operação de fechamento das mesmas, que apesar de também
se tratar de uma compra ou venda, deve ser especificado no envio da ordem. O
desenvolvimento deste trabalho é feito utilizando-se o modo hedge de negociação.
31

2.7 APRENDIZAGEM DE MÁQUINA

De acordo GOLDSCHIMIDT (2010) aprendizagem de máquina é uma área da


inteligência artificial voltada para o desenvolvimento de algoritmos e técnicas
computacionais que possibilitam que os computadores sejam capazes de aprender.

Um programa de computador aprende a partir da experiência E com relação a alguma


classe de tarefas T e mede o desempenho P. Seu desempenho nas tarefas em T,
conforme medido por P, melhora com a experiência E (MITCHELL, 1997). Ou seja, o
aprendizado de máquina permite que um programa de computador identifique padrões
e encontre relações entre os dados de forma automatizada, a partir do aprendizado e
experiência adquiridos a partir de dados reais. Classifica-se os modos de
aprendizagem em três maneiras distintas: supervisionado, não supervisionado e semi-
supervisionado.

Algoritmos com aprendizado supervisionado são aqueles que utilizam um conjunto de


dados para treinarem e aprenderem padrões nas relações entre entradas e saídas
(IBM Cloud Education, 2022). A ideia é que os algoritmos sejam capazes de criar
relações entre os dados de entrada e a saída. Por esse motivo, os dados utilizados
nestas técnicas de aprendizado são acompanhados com a resposta esperada (valor
da variável desejada). O sistema então se molda fazendo com que dado uma entrada,
seja emitida como saída a resposta esperada para aquelas características aprendidas.
Estes modelos geralmente são usados em problemas de classificação e regressão
(SILVA, 2021).

Para os modelos não supervisionados, são passados somente dados de entrada e o


algoritmo deve ser capaz de encontrar os padrões nesse conjunto de informações. O
algoritmo tenta identificar possíveis tendências e situações que possam ocorrer
novamente para obter as saídas esperadas. Este tipo de aprendizado é útil para
descobrir relações implícitas em um determinado conjunto de dados não rotulados.
Um caso comum de uso desse tipo de algoritmo é a identificação de imagens similares
(FUCHS, 2022).
32

Já no aprendizado semi-supervisionado, o conjunto de treinamento consiste em


exemplos rotulados juntamente com não rotulados.

Em geral, o conjunto de treinamento é representado por uma estrutura denominada


tabela atributo-valor. A Tabela 1 ilustra uma estrutura para aprendizado
supervisionado, utilizado no desenvolvimento deste trabalho.

Tabela 1 - Representação do conjunto de dados por meio da tabela atributo-valor.


A1 A2 ... AM Classe (Y)

... ... ... ...


E1 x11 x12 x1M y1
E2 x21 x22 x2M y2
...

...

...

...

...
EN xN1 XN2 XNM yN
Fonte: FERRERO (2009)

Usualmente, o conjunto de treinamento para um algoritmo de aprendizado


supervisionado consiste em um conjunto 𝐸 de 𝑁 exemplos ou casos de treinamento
𝐸 = {(𝑥1, 𝑦1), . . . , (𝑥𝑁, 𝑦𝑁)} rotulados com os valores de 𝑦 de uma função 𝑓
desconhecida, 𝑦 = 𝑓(𝑥), onde os valores xi são vetores da forma (xi1, xi2, ..., xiM)
relacionados ao conjunto de atributos 𝑋 = {A1, A2, . . . , AM}, sendo seus componentes
discretos ou contínuos. Ou seja, xi1 denota o valor do atributo A1 do exemplo i. O
algoritmo constrói então uma hipótese hip que deve aproximar a verdadeira função f
baseado no conjunto de exemplos de treinamento, tal que, dado um novo exemplo x,
hip(x) prediz o valor y correspondente. Para valores nominais dos rótulos 𝑦1, 𝑦2, … , 𝑦𝑁
processo é denominado classificação, ao passo que para valores numéricos o
processo é denominado regressão (FERRERO, 2009).

Para avaliar a qualidade da previsão de algoritmos supervisionados é utilizado um


conjunto de exemplos não pertencentes ao conjunto de treinamento, denominado
conjunto de teste.

Em geral, algoritmos supervisionados são classificados como eager ou lazy.


Algoritmos do tipo eager usam o conjunto de exemplos de treinamento para construir
a hipótese hip. Construída a hipótese, descarta-se os exemplos de treinamento, já que
somente hip é necessária para predizer o valor y de um novo exemplo x. Já os
33

algoritmos do tipo lazy não constroem explicitamente uma hipótese e necessitam ter
registrado os exemplos de treinamento, pois eles são necessários para predizer o
valor y de um novo exemplo (FERRERO, 2009). Um exemplo de algoritmo eager é a
regressão logística, enquanto um exemplo de algoritmo lazy é o kNN (k-Nearest
Neighbor) ambos detalhados nos itens a seguir.

2.7.1 MODELOS PREDITIVOS

Modelos preditivos são o conjunto de ferramentas capazes de realizar as tarefas


desejadas de classificação ou regressão, identificando os padrões com base em
dados históricos.

Para cada problema de aprendizado de máquina, há uma grande variedade de


algoritmos que podem ser aplicados. Nesta seção são descritos os algoritmos
utilizados neste trabalho. As características distintas de cada um deles foram
utilizadas com o intuito de maximizar o resultado, realizando as combinações que se
mostraram mais favoráveis.

2.7.1.1 ALGORITMO kNN (k-Nearest Neighbor)

O algoritmo k-Nearest Neighbor – kNN é um algoritmo de aprendizado supervisionado


do tipo lazy, introduzido por AHA et al. (1991). O funcionamento básico desse
algoritmo consiste em encontrar os k exemplos rotulados mais próximos do exemplo
não classificado e classificar este exemplo com base na classe dos exemplos
próximos. O esforço computacional no uso desses algoritmos é maior em sua
utilização para rotular novos exemplos do que na etapa de treinamento, um vez que,
no pior dos casos, o exemplo a ser rotulado pode ter que ser comparado com todos
os exemplos de treinamento.

Na Figura 4 é ilustrado o funcionamento do algoritmo em um conjunto de exemplos


de treinamento descrito por dois atributos – positivo (+) e negativo (-). Caso fosse
utilizado k = 1, o novo exemplo (Ei) seria classificado de acordo com o único vizinho
mais próximo, que é da classe positiva (+).
34

Figura 4 – Exemplo de classificação do método k-Nearest Neighbor

Fonte: (FERRERO, 2009)

Três parâmetros importantes devem ser determinados para a execução do algoritmo


kNN:
1 – Quais exemplos de treinamento devem ter o registro guardado;
2 – Qual medida que quantifica a similaridade entre o exemplo não classificado
e os exemplos de treinamento; e
3 – Quantos e quais vizinhos mais próximos devem ser considerados.

2.7.1.2 TEOREMA DE BAYES E CLASSIFICADOR NAIVE BAYES

Segundo ARA-SOUZA (2010) Além de as técnicas Bayesianas serem vastamente


utilizadas em estatística, são também utilizadas em outras áreas, sendo uma delas a
inteligência artificial, mais precisamente no ramo conhecido como inteligência artificial
probabilística. O modelo probabilístico calcula uma probabilidade baseado em uma
base histórica da qual se tem conhecimento prévio.

Segundo BRITO (2016), o algoritmo Naive Bayes é um gerador probabilístico muito


utilizado em aprendizagem de máquina, graças à sua simples compreensão e
implementação. A tradução do termo Naive significa ingênuo, fazendo referência ao
fato de o modelo assumir a existência de uma independência condicional dos
atributos.

O classificador Naive Bayes se baseia no Teorema de Bayes, criado por Thomas


Bayes no século XVIII. O Classificador, conforme citado anteriormente, parte do
35

princípio de que os atributos de um dado problema são independentes da variável


classe. A Figura 5 mostra a estrutura de uma classe com n atributos.

Figura 5 – Exemplo de classe com n atributos.

Fonte: BRITO (2016)

O Teorema de Bayes baseia-se na probabilidade condicional, ou seja, verifica a


probabilidade de um evento acontecer dado outro evento, de acordo 𝑃(𝐵|𝐴) =
𝑃(𝐴|𝐵)𝑃(𝐵)
. Em que 𝑃(𝐵|𝐴) é a probabilidade de A ocorrer, dado B; 𝑃(𝐴|𝐵) é a
𝑃(𝐴)

probabilidade de B ocorrer, dado A; 𝑃(𝐵) a probabilidade de B ocorrer e 𝑃(𝐴) a


probabilidade de A ocorrer.

O classificador Naive Bayes tem a vantagem, segundo ALTERYX INC (2022) de


funcionar bem mesmo com pequenos conjuntos de dados para treinamento devido ao
fato de que o classificador é parametrizado pela média e variância de cada atributo
independente de outros.

2.7.1.3 RANDOM FOREST

O algoritmo random forest utiliza uma diversidade de árvores de decisão afim de obter
uma performance maior do que a que seria obtida utilizando apenas uma única árvore,
daí a menção ao termo floresta em seu nome. Esta característica o define como um
método do tipo ensemble learning. O algoritmo constrói um conjunto de árvores de
decisão na etapa de treinamento e retorna como resultado, na etapa de predição, a
média do resultado de múltiplas árvores (HO, 1998) (HO, 1995).

Árvores de decisão são ferramentas de aprendizado supervisionado muito utilizadas


em problemas de classificação. A técnica, conforme o nome sugere, possui como
36

objetivo a construção de uma árvore que represente explicitamente a estrutura do


conjunto de dados (ROKACH; MAIMON, 2005).

Figura 6 – Exemplo de árvore de decisão.

Fonte: JUNIOR (2018).

A Figura 6 mostra um exemplo de uma árvore de decisão representado a decisão de


qual atividade executar. Em uma árvore de decisão, as folhas representam os valores
alvo, ou resultado, ao passo que os nodos internos representam as regras. No
exemplo apresentado, a decisão será dormir caso o indivíduo não esteja com fome.
Caso tenha fome e mais do que 25 dólares, a decisão será ir a um restaurante. Se
tiver fome, mas não tiver 25 dólares, a decisão será comprar um hamburguer.

O objetivo de uma árvore de decisão é criar um modelo capaz de predizer uma variável
alvo aprendendo regras inferidas do conjunto de dados.

A Figura 7 ilustra a ideia de uma floresta. Cada uma das árvores é treinada com um
subconjunto dos dados na etapa de treinamento. Na etapa de predição, o algoritmo
agrega os resultados através de uma função denominada discriminator. No exemplo
dado, trata-se do somatório das probabilidades.
37

Figura 7 – Exemplo de Randon Forest.

Fonte: JUNIOR (2018).

2.7.1.4 EXTREME GRADIENT BOOSTING (XGBOOST)

Extreme Gradient Boosting (XGBoost é uma biblioteca de código aberto que fornece
uma implementação eficiente e eficaz do algoritmo de aumento de gradiente (Gradient
Boosting). Gradient Boosting é uma classe com um conjunto de algoritmos de
aprendizagem de máquina que podem ser usados para problemas de classificação ou
regressão.

O XGBoost é construído a partir da combinação entre dois modelos: Árvore de decisão


e de impulso (Boosting). Este último tem a capacidade de ponderar as variáveis de
entrada de acordo com a força de sua correlação com a saída do algoritmo. Ou seja,
os parâmetros previsores mais promissores são tornados preponderantes na decisão
do modelo após receberem um impulso. As árvores são adicionadas uma de cada vez
ao conjunto e ajustadas para corrigir os erros de previsão feitos pelos modelos
anteriores. Esse é um tipo de modelo de aprendizado de máquina de conjunto
conhecido como boosting. (DHALIWAL; NAHID; ABBAS, 2018).
De acordo com ZHENG (2017), o aumento do gradiente constrói as árvores
aumentadas para obter as pontuações de recurso de forma inteligente, indicando,
dessa maneira, a importância de cada recurso para o modelo de treinamento,
aumentando a pontuação do recurso que é utilizado para tomar decisões importantes
com árvores aumentadas.
38

2.7.1.5 SUPPORT VECTOR MACHINES

Support Vector Machine (SVM) (SCHOLKOPF; SMOLA, 2002) é um algoritmo de


aprendizado supervisionado aplicável à problemas de classificação. A partir de um
conjunto de dados previamente categorizados, o algoritmo de treinamento constrói um
modelo que atribui um novo dado à uma categoria (JUNIOR, 2018).
Figura 8 – Separadores.

Fonte: JUNIOR (2018).

Na Figura 8 existem pontos de duas categorias: pontos vazios e pontos preenchidos.


Há também as retas H1, H2 e H3. Percebe-se que a reta H1 não separa os dados. As
retas H2 e H3 separam os dados corretamente, contudo, a reta H3 deixa uma margem
maior de separação entre os pontos. Desta forma, espera-se que seja mais provável
que a reta H3 possa classificar corretamente um novo ponto que eventualmente seja
adicionado ao gráfico. A ideia por trás do SVM é encontrar um hiperplano2 de forma a
obter a maior distância dentre os pontos mais próximos de cada categoria.

A próxima figura ilustra um exemplo de hiperplano ótimo. Nos pontos mais extremos
das categorias, ou seja, nas “bordas”, passam duas retas, uma para cada categoria.

2Hiperplano: Em geometria, um hiperplano é um subespaço cuja dimensão é uma a menos do espaço


ambiente. Por exemplo, num ambiente tridimensional, um hiperplano desse espaço seria um plano. No
caso de um ambiente bidimensional, um hiperplano seria uma reta (BEUTELSPACHER;
ROSENBAUM, 1998).
39

Essas retas são denominadas vetores de suporte, de onde provém o nome do


algoritmo. O hiperplano é definido em termos desses vetores.
Figura 9 – Hiperplano ótimo.

Fonte: JUNIOR (2018).

A razão para a nomenclatura de hiperplano e vetores é que o algoritmo SVM é


aplicável a espaços dimensionais maiores que bidimensional (BEUTELSPACHER;
ROSENBAUM, 1998).

Outro aspecto importante sobre SVM é que apesar de ser um classificador linear de
origem, ele é aplicável à padrões de dados que não sejam linearmente separáveis. O
padrão da Figura 10 visivelmente não pode ser separado por uma reta. Para lidar com
essa situação existe um artifício matemático denominado de kernel trick
(SCHÖLKOPF; SMOLA, 2002) que consiste em aplicar uma transformação nos dados
de forma a levar os dados a um espaço dimensional superior. Essa transformação
nada mais é do que a aplicação de uma kernel function sobre os dados, sendo as
mais populares: Polinomial, Gaussiana e Radial Basis Function (JUNIOR, 2018).

A Figura 10 e Figura 11 apresentam um exemplo de um conjunto de dados onde foi


aplicada a kernel function polinomial. A Figura 11 exibe os mesmos dados da figura
anterior transpostos para um espaço tridimensional. Com essa transformação
consegue-se separar linearmente as duas categorias a partir de um plano.
40

Figura 10 - Plano não linearmente separável.

Fonte: JUNIOR (2018).

Figura 11 - Dados em um espaço dimensional superior.

Fonte: JUNIOR (2018).

2.7.1.6 REGRESSÃO LOGISTICA

A regressão logística busca explicar a partir de um modelo matemático, a relação entre


uma variável resposta Yi (que pode ser categórica, nominal ou ordinal) e uma ou mais
41

variáveis preditoras. No caso de apenas uma variável preditora xi, tem-se a regressão
logística simples cujo modelo é definido por (1):

exp (𝛽0 + 𝛽1𝑥𝑖) (1)


E(Yi/xi) =
1 + exp (𝛽0 + 𝛽1𝑥𝑖)

Onde:
E(Yi/xi) é o valor esperado de Y dado o valor de x;
Yi é uma variável dicotômica, assumindo os valores 0 ou 1;
β0 e β1 são os coeficientes de regressão a serem estimados pelo método da máxima
verossimilhança;
xi é o valor observado da variável x;

Para simplificar a notação, usa-se p(xi) = E(Yi/xi).

A função p(xi) pode ser transformada usando a transformação logística na forma linear
temos (2):

𝑝(𝑥) (2)
g(x) = ln [1−𝑝(𝑥)] = β0 + β1x

O gráfico da função logística possui um comportamento probabilístico no formato da


letra S, conforme pode-se observar na figura abaixo.

Figura 12 – Gráfico da função logística.

Fonte: SILVA (2021).


42

No caso da regressão logística múltipla, em que o modelo é composto por duas ou


mais variáveis preditoras (x1, x2, ..., xp) e por seus respectivos coeficientes de
regressão β0, ...,βp que são estimados a partir do método da máxima verossimilhança,
para obter-se g(x) = β0 + β1xi1 + . . . + βpxip

O modelo se estende para o modelo logístico múltiplo, determinado por (3)

exp (𝑔𝑥𝑖) (3)


p(xi) = 1+ exp (𝑔𝑥𝑖).

A variável Yi pode ser expressa como Yi = p (xi) + εi, onde o termo εi é o erro aleatório
do modelo e representa a diferença entre o valor observado de Yi e o valor esperado
condicionado de Yi dado xi. Enquanto nos modelos de regressão linear os erros devem
seguir uma distribuição normal com média 0 e variância constante, para um dado valor
de x, os erros do modelo de regressão logística condicionados a X = x i, seguem uma
distribuição de Bernoulli com média 0 e variância p(xi)(1 – p(xi)).

2.7.2 MÉTRICAS DE AVALIAÇÃO DE DESEMPENHO DO MODELO

O trabalho realizado pelos modelos de predição apresentados após todo o processo


de treinamento, certamente é passível de erros e seu desempenho necessita ser
medido de acordo com os resultados que se deseja. Nesse sentido é preciso identificar
qual a melhor métrica para essa avaliação. Nesta seção serão apresentadas as
métricas utilizadas no trabalho.

2.7.2.1 MATRIZ DE CONFUSÃO

A matriz de confusão dá uma visão direta e objetiva dos erros e acertos do modelo de
classificação em relação aos valores reais. Na diagonal principal tem-se as
classificações que foram feitas corretamente, ao passo que na diagonal oposta
constam as classificações incorretas. As classificações corretas podem ser
Verdadeiros Positivos (TP) e Verdadeiros Negativos (TN), enquanto as classificações
incorretas são denominadas Falso Positivo (FP) e Falso Negativo (FN).
43

A Figura 14 ilustra um exemplo de utilização da matriz de confusão, considerando-se


dados hipotéticos para a decisão de se operar ou não um conjunto de sinais dado por
um ativo qualquer:

Figura 13 – Categorias da matriz de confusão.

Fonte: O AUTOR.

Figura 14 – Exemplo de matriz de confusão.

Fonte: O AUTOR.

Com base nesta matriz hipotética, observa-se que o modelo:


• Acertou a predição de 16 operações que deveriam ser feitas;
• Acertou a predição de 12 operações que não deveriam ser feitas;
• Errou a predição de 4 operações que deveriam ser feitas;
• Errou a predição de 6 operações que não deveriam ser feitas.

2.7.2.2 OUTRAS MÉTRICAS

Precisão: a métrica precisão nos dá a proporção de predições Verdadeiro Positivo


(TP) sobre todas as predições calculadas como positivas (Verdadeiro Positivo (TP) +
Falso Positivo (FP)). A precisão permite avaliar a qualidade das predições positivas.
44

𝑇𝑃 (4)
Precisão =
𝑇𝑃 + 𝐹𝑃

16
Para o exemplo da seção anterior, a precisão seria igual a = 0,73 ou 73%.
16+6

Acurácia: Já a acurácia basicamente indica a taxa de acerto considerando-se todas


as classes possíveis no modelo, dando uma performance geral. Seu cálculo consiste
no número de acertos dividido pelo número total de exemplos do conjunto de dados.
Essa métrica é mais útil quando se tem as classes balanceadas. Dados com classes
desbalanceadas podem gerar um falso valor de acurácia.

𝑇𝑃 + 𝑇𝑁 (5)
Acurácia =
𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁

16+12
Para o exemplo da seção anterior a acurácia seria igual a 16+6+12+4 = 0,74 ou 74%.

Sensibilidade: A sensibilidade, também conhecida como recall, calcula a taxa de


acerto da classe positiva quando os valores esperados são a classe positiva. Serve
para medir o quanto o modelo é capaz de classificar corretamente a classe positiva.

𝑇𝑃 (6)
Sensibilidade =
𝑇𝑃 + 𝐹𝑁

F1: outra métrica muito utilizada em problemas de classificação é o F1-score. Trata-


se da média harmônica entre a precisão e a sensibilidade e uma boa métrica para
dados com classes desbalanceadas. É uma métrica utilizada quando se deseja um
grande número de Verdadeiro Positivos aliado à uma maior eficácia do modelo.

𝑃𝑟𝑒𝑐𝑖𝑠ã𝑜 ∗ 𝑆𝑒𝑛𝑠𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒 (7)


F1 = 2 ∗
𝑃𝑟𝑒𝑐𝑖𝑠ã𝑜 + 𝑆𝑒𝑛𝑠𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒
45

2.7.2.3 A MÉTRICA LUCRO

Para este trabalho específico, considerando que o maior objetivo dos modelos é
escolher as operações que sejam lucrativas, adotou-se como métrica principal o lucro
obtido nas operações selecionadas por eles. O resultado das operações pode variar
muito e nem sempre o modelo que apresenta melhor resultado de acurácia, precisão
ou sensibilidade, é o modelo capaz de escolher as operações mais lucrativas. Dessa
forma, avalia-se o resultado das operações escolhidas por cada modelo e seleciona-
se aquele que escolheu as que proporcionaram melhor resultado financeiro.

O resultado financeiro de cada operação já consta nas amostras de dados e é


calculado simulando-se a realização de operações em todos os eventos geradores
até que os requisitos de finalização sejam atendidos.

2.7.3 BASE DE DADOS DESBALANCEADAS

Uma base de dados é considerada desbalanceada quando há um número


significativamente maior de uma classe em comparação às outras classes. Este
problema é ilustrado na Figura 15:

Figura 15 – Métodos de reamostragem.

Fonte: SEMANTIX (2022).

Em tarefas de classificação, o desbalanceamento de dados pode provocar um viés no


modelo preditivo, fazendo com que ele tenha a tendencia em classificar os novos
dados de acordo com a classe majoritária. Sendo assim, diz-se que as classes que
possuem uma maior quantidade de dados são favorecidas enquanto as classes
46

minoritárias possuem pequena taxa de reconhecimento (CASTRO, 2011). Um caso


comum de desbalanceamento de dados é a detecção de fraudes (FAWCETT, 1997),
em que o número de fraudes é bem menor que o de operações legítimas.

Neste trabalho, a fim de evitar o desbalanceamento de dados foi utilizada a classe


RandonOverSampler em linguagem python, (IMBALANCED-LEARNING, 2022) que
executa a sobreamostragem da classe minoritária coletando e copiando desta classe
amostras aleatórias com reposição.

2.7.4 OTIMIZAÇÃO DE HIPERPARÂMETROS

Os hiperparâmetros são os parâmetros básicos de configuração dos modelos


preditivos, essenciais para o seu correto funcionamento. Portanto, devem ser
ajustados de modo que o modelo ofereça o melhor desempenho. Este processo de
ajuste é chamado de otimização ou ajuste de hiperparâmetros (WU, J. et al., 2019).
Na prática, para encontrar os melhores hiperparâmetros é necessário treinar vários
modelos com diferentes combinações durante o processo de treinamento. Os
resultados então devem ser comparados de modo a identificar aquele que
proporcionou o melhor resultado da métrica aplicada.

O ajuste de hiperparâmetros pode ser feito de maneira manual ou automática. O ajuste


manual depende basicamente da intuição e experiencia dos usuários que conseguem
vislumbrar a combinações que afetam positivamente o modelo. Contudo, muitas vezes
nem mesmo os mais experientes conseguem encontrar as melhores configurações
para o modelo, principalmente quando as possibilidades de configuração são muito
grandes. Nesse sentido lança-se mão dos algoritmos que realizam estas
configurações automaticamente. Neste trabalho foi utilizada a classe Randomized
Search (SCIKIT-LEARN, 2022), em python. Este algoritmo utiliza uma matriz com os
valores dos hiperparâmetros desejados e realiza um número determinado de iterações
nas quais ajusta o modelo com os parâmetros selecionados de maneira aleatória, de
modo a não ser necessário testar todas as combinações possíveis, o que pode
implicar em grande custo computacional. Ao fim, o algoritmo retorna os parâmetros
que resultaram no melhor resultado da métrica selecionada.
47

2.7.5 PRÉ-PROCESSAMENTO DE DADOS

Em muitas situações de data mining, é comum ocorrer a presença de dados espúrios


ou faltantes, condição que pode prejudicar o correto funcionamento dos modelos de
predição. Tais situações necessitam, portanto, de um tratamento prévio, buscando-se
a melhor maneira de se contornar as falhas. Algumas soluções incluem preencher os
valores constantes com o valor médio das outras amostras ou com valores aleatórios,
também coletados das amostras, ou mesmo a exclusão de uma amostra inteira.

No caso de dados extraídos através do Metatrader, quando este está vinculado à uma
corretora cuja base de dados é confiável, este tipo de problema é praticamente
inexistente. Contudo, uma situação que demanda atenção é a grande variação da
ordem de grandeza dos atributos utilizados. Enquanto os valores de alguns atributos
são da ordem de 10-1 outros são da ordem de 106 por exemplo. Isso pode fazer com
que os modelos de predição priorizem os atributo de maior ordem de grandeza, em
detrimento aos demais.

Uma solução para este problema é a padronização dos dados e uma ferramenta que
traz essa solução é a classe de StandardScaler, em python. O StandardScaler realiza
uma transformação nos dados fazendo com que sejam representados em uma
distribuição Gaussiana, ou seja, com média zero e variância unitária. O algoritmo faz
isso removendo de cada valor de um determinado atributo a média de todos os valores
do mesmo atributo e dividindo o resultado pelo desvio padrão (SCIKIT-LEARN, 2022).
48

3 METODOLOGIA

Da concepção à implementação do objeto de estudo desse trabalho há uma série de


passos a serem seguidos e para compreender melhor esses passos, antes de
descrevê-los é necessário inicialmente se ter uma visualização do fluxo operacional
do robô de negociação:
- Um computador, executando o Metatrader recebe dados de cotação dos ativos
através de uma conta de negociação real em uma corretora;
- Os dados de cotação são utilizados para cálculo dos indicadores técnicos
previamente selecionados. O cálculo dos indicadores é feito de maneira automática e
nativa no Metatrader e estes dados são enviados para o ambiente Python através da
conexão via socket;
- No ambiente Python, os dados são processados por algoritmos de classificação
previamente treinados com dados históricos dos ativos e retornam para o Metatrader
por conexão via socket a classificação da operação – definição se ela será realizada
ou não.
- O Metatrader, ao receber o retorno dos classificadores, executa ou não a operação,
de acordo com a classificação.
Todo o processo deve ser feito no menor tempo possível, de modo que as cotações
recebidas antes do processamento ainda sejam válidas. Sendo assim, os principais
passos para a implementação do algoritmo de operação são os seguintes:

• Definição do trading system: nessa etapa se estabelece a maneira que os


preços serão analisados para se determinar quais serão as condições de
negociação, quais serão os indicadores utilizados e como serão
determinados os pontos de entrada e de saída, bem como de que maneira
será feito o manejo de riscos. Definidas as regras operacionais, será
possível analisar os diversos ativos disponíveis e selecionar aqueles que
podem gerar o melhor retorno financeiro;

• Definição do modo de operação do robô trader: definidas as regras


operacionais, o próximo passo é desenvolver um programa autônomo capaz
de executar essas regras. Aqui é necessário estabelecer quais serão as
49

classes, como se dará a seleção dos classificadores e como estes


classificadores serão treinados e executados.

Nos itens a seguir será demonstrada a metodologia utilizada em cada uma das etapas
de desenvolvimento do trabalho.

3.1 O TRADING SYSTEM

Conforme já mencionado no item 1.4, um bom trading system deve ter primeiramente
uma definição clara e objetiva dos pontos de entrada e de saída de uma operação.
Como neste trabalho estes pontos são definidos pelo indicador de topos e fundos, foi
necessário primeiramente definir este indicador.

3.1.1 PARAMETROS DO INDICADOR DE TOPOS E FUNDOS

Visando ter um indicador flexível e abrangente e que ainda leve em conta a


sazonalidade de cada ativo, foi adotada a seguinte metodologia de cálculo:

• Primeiramente, calcula-se a volatilidade natural do ativo, ou seja, quanto o


preço do ativo oscila naturalmente, registrando-se no período gráfico
adotado a diferença entre a máxima e mínima de cada candle ou a diferença
entre a abertura do candle corrente com o fechamento do candle anterior, o
que for maior.

• Deste conjunto de valores calcula-se uma média móvel simples de 9


períodos para representar os valores do curto prazo, uma média de 21
períodos para representar as oscilações de médio prazo e uma média móvel
de 50 períodos representando o longo prazo. Por fim é utilizada a média
dessas três médias como sendo a volatilidade momentânea do ativo de
estudo no período definido pelo gráfico. Estes valores são puramente
empíricos e experimentais baseados em observações e experimentos
realizados no mercado.
50

• Existindo um valor máximo em que antes e depois do qual existam preços


cuja diferença para este máximo sejam maiores que a média calculada no
passo 2 multiplicada por um fator configurável e maior que 1, esta máxima
então é definida como um topo. Um fundo é definido em situação inversa a
esta.

Para este indicador, portanto, a única definição que deve ser feita é o fator a ser
utilizado conforme descrito no passo 3. Ressalta-se que todo o processo de cálculo é
feito em tempo real e de maneira nativa no Metatrader, a partir do indicador de topos
e fundos que contém todas as definições e fórmulas necessárias.

O indicador também irá sinalizar através de uma flag qual candle formou um topo ou
um fundo bem como qual candle superou para cima o preço do último topo ou superou
para baixo o preço do último fundo (rompimento do último topo ou fundo). Esta
informação é fundamental para o funcionamento do expert advisor.

3.1.2 DEFINIÇÃO DOS PONTOS DE ENTRADA E SAÍDA DAS OPERAÇÕES

Definidos os parâmetros para o cálculo dos topos e fundos, estabelecem-se os


seguintes pontos de entrada e de saída nas operações. Estes então passam a ser os
eventos a ser monitorados, ou seja, são os gatilhos das potenciais operações de
compra e/ou venda:

- Opera-se vendido:

1 – No preço de abertura do candle posterior ao que formou o último topo, sendo o


stop de perda posicionado 1 tick (menor variação do ativo) acima do preço de topo e
o stop de ganho sendo o preço correspondente ao preço de entrada menos o preço
de stop de perda (risco) multiplicado por um fator de ganho maior que 1.

2 – No preço de abertura do candle posterior ao que rompeu para baixo o último fundo,
com o stop de perda posicionado um tick acima da máxima do candle que realizou o
51

rompimento do fundo e o stop de ganho no preço de entrada menos o preço de stop


de perda multiplicado por um fator de ganho maior que 1.

- Opera-se comprado:

1 – No preço de abertura do candle posterior ao que formou o último fundo, sendo o


stop de perda posicionado 1 tick abaixo do preço de fundo e o stop de ganho sendo o
preço correspondente ao preço de entrada mais o preço de stop de perda multiplicado
por um fator de ganho maior que 1.

2 – No preço de abertura do candle posterior ao que rompeu para cima o último topo,
com o stop de perda posicionado um tick abaixo da mínima do candle que realizou o
rompimento do topo e o stop de ganho no preço de entrada mais o preço de stop de
perda multiplicado por um fator de ganho maior que 1.

Topos e fundos são tratados como um possível ponto de reversão de uma tendência.
Quando é formado um fundo, é esperado que os preços passem a subir por um
determinado período, ao passo que quando é formado um topo, espera-se por uma
queda momentânea nos preços. Por esta razão, um stop de perda pode ser colocado
um pouco abaixo do fundo para operações de compra e um pouco acima do topo para
operações de venda, uma vez que há expectativa de que os preços não atingirão
esses níveis e no caso de atingirem, considera-se como frustrada a operação
realizada, que deve ser finalizada imediatamente como medida de proteção do capital.
Esta finalização imediata da operação é operacionalizada pelo stop loss.

Como medida de proteção do lucro, caso seja formado um fundo acima do fundo em
que se encontra o stop de perda de uma operação de compra, este stop é
imediatamente movido para um tick abaixo deste novo fundo. Procedimento similar a
este é realizado para mover stops de venda para um tick acima de um eventual topo
abaixo do stop anterior.

Em suma, cada operação aberta terá dois preços alvos distintos. Um preço para
encerrar a operação caso o mercado se movimente para o sentido desejado,
determinado pelo preço de entrada mais ou menos o risco assumido multiplicado pelo
52

fator de ganho - stop gain ou take profit. E um preço para encerrar a operação caso
essa se desenvolva no sentido contrário ao planejado, o já mencionado anteriormente
stop loss.

Até este ponto, nota-se a necessidade de definição de dois parâmetros necessários


para realização das operações: O fator do indicador de topos e fundos e o fator de
ganho. Isso depois que já se selecionou o ativo com o qual operar e o período gráfico.

3.1.3 DEFINIÇÃO DOS PARÂMETROS PARA OPERAÇÃO

Para se definir qual ativo operar, qual será o período gráfico, qual será o fator do
indicador topos e fundos e qual será o fator de ganho, é necessário saber qual
configuração pode ser mais lucrativa. Apesar de a decisão de operar ou não ser
tomada pelo algoritmo de classificação, é mais viável submeter aos classificadores o
set que apresenta naturalmente a melhor relação risco retorno, deixando “as coisas
mais fáceis” para eles. Nesse sentido, foi desenvolvido um script do Metatrader que
retorna em um arquivo csv o resultado que seria obtido caso fossem realizadas
operações em todos os momentos possíveis citados no item 2.3 em um dado período
gráfico adotando-se vários fatores para o indicador de topos e fundos e vários fatores
de ganho. São calculados os resultados no curto, médio e longo prazos com intuito de
se avaliar a consistência desses resultados. Os dados então são classificados em
ordem decrescente do ganho total afim de se avaliar a melhor opção.

Tabela 2 – Resultados estatísticos do ativo GOLL4.

Total_Points Total_Points Total_Points Total_Points


Total Total_Points
Factor Period Gain Last_20 Last_60 Last_360 Last_720
Points Last_5 Days
Days Days Days Days
1.3 M12 3 378.45 -1.2 -2.47 4.34 47.49 183.72
1.5 M12 3 360.65 -1.03 -2.16 2.02 51.32 165.77
1.1 M15 3 357.61 -0.37 2.39 10.63 54.63 162.66
1.3 M12 2.5 356.68 -1.08 -2.12 6.19 48.5 174.07
1.1 M20 3 345.76 0.35 3.14 7.49 60.87 165.04
1.5 M12 2.5 338.39 -1.47 -1.83 4.32 48.57 158
1.3 M15 3 336.85 1.55 2.24 6.84 57.16 147.96
1.1 M15 2.5 334.73 0.4 3.34 9.16 54.88 151.22
1.1 M12 3 328.48 -0.92 -2.89 -0.27 26.23 147.36
1.3 M12 2 327.91 -1.48 -2.11 4 44.9 157.68
53

1.5 M15 3 324.28 1.46 0.06 7.17 58.24 150.43


1.1 M20 2.5 320.24 -0.01 2.63 5.35 59.67 149.88
1.1 M15 2 319.34 0.14 3.16 9.45 52.04 135.86
1.5 M12 2 314.9 -1.51 -1.87 2.85 47.47 153.64
1.3 M15 2.5 310.72 1.69 2.68 5.14 54.46 132.78
Fonte: O AUTOR.

A Tabela 2 mostra as primeiras 15 linhas do arquivo de retorno do script. A primeira


coluna (Factor) contém o fator para o indicador de topos e fundos, definido no item
3.3.1. Na segunda coluna (Period), consta o timeframe adotado. A terceira coluna
(Total_Points) mostra o retorno total por ação no período consultado. As demais
colunas mostram o retorno em períodos específicos. Ressalta-se que são dados
estatísticos e não operacionais. Os retornos dizem respeito ao que seria obtido caso
todas as operações alvo no período fossem executadas. Os dados são da empresa
Gol Linhas Aéreas S/A (ativo GOLL4) e se referem ao período de abril de 2018 a
setembro de 2021. Os resultados são mostrados por negociação de uma ação e não
levam em consideração as taxas e demais custos. Nota-se que o melhor resultado foi
obtido com o fator de topos e fundos igual a 1.3, no período de 12 minutos e fator de
ganho igual a 3 (a tabela está em ordem decrescente em relação ao ganho total),
sendo o total de pontos do período igual a 378,45. Observando-se o resultado para os
últimos 2 anos, percebe-se que há uma consistência no ganho de longo prazo, apesar
de no curto prazo o resultado ser negativo. Sendo assim, essas configurações são
boas candidatas para serem utilizadas nas operações.

Aqui cabe uma observação sobre o resultado apresentado. O Valor de R$ 378,45 é o


resultado que seria obtido caso fossem realizadas todas as operações possíveis na
configuração dada, operando-se apenas uma ação unitária. Todavia, o lote mínimo de
ações para operação no mercado padrão é de 100 unidades, além disso, para
operações de day trade, a maioria das corretoras oferece alavancagem do capital, que
permite que sejam dadas ordens cujo valor total seja superior ao saldo em conta.
Sendo assim, em um ativo com alta liquidez, é possível emitir ordens de compra ou
venda de mais de mil ações. Caso fosse este o caso, ordens de mil unidades, o
resultado financeiro bruto em três anos e meio em apenas uma configuração de
operação seria de R$ 378.450,00. Um resultado muito atraente! Contudo, mais
adiante será demonstrado que as taxas do mercado podem reduzir significativamente
54

esses ganhos, além disso, nem todos os ativos têm liquidez suficiente a ponto de
permitir operar grandes lotes sem que isso modifique os preços alvo de entrada e
saída na operação.

A consistência dos resultados também é verificada analisando-se graficamente a


evolução dos ganhos. Através de um script é gerado no Metatrader um arquivo
contendo os ganhos acumulados de um set de configurações escolhido. Na Figura
16 observa-se os ganhos acumulados do ativo GOLL4 no set 15 minutos, fator de
topos e fundos 1.3 e fator de ganho 3. Já a Figura 17 mostra os ganhos acumulados
para o ativo AMBV3 (Ambev S.A.) no mesmo set. Na Figura 18 constam os resultados
para GOLL4 no set 5 minutos, fator de topos e fundos 1.3 e fator de ganho 2.

Figura 16 - Ganhos acumulados do ativo GOLL4, 15 minutos, fator 1,3, ganho 3

Fonte: O AUTOR
55

Figura 17 - Ganhos acumulados do ativo ABEV3, 15 minutos, fator 1,3, ganho 3

Fonte: O AUTOR

Figura 18 - Ganhos acumulados do ativo GOLL4, 5 minutos, fator 1,3, ganho 2

Fonte: O AUTOR

Esta comparação serve para ilustrar que nem todos os ativos apresentam bons
desempenhos e sets diferentes de um mesmo ativo podem apresentar resultados bem
56

distintos. Além disso, mesmo em configurações com ganhos crescentes e


consistentes é importante notar que inevitavelmente haverá períodos de estagnação
nos ganhos ou mesmo perdas, conforme se pode observar na Figura 18 entre
17/11/202 e 27/10/2022. Vale ressaltar que estes resultados se referem às operações
totais, ainda sem o uso de classificadores.

3.2 O MODO DE OPERAÇÃO DO ROBÔ TRADER

Definidos os pontos de entrada e saída das operações, o próximo passo foi


estabelecer a maneira que a automatização seria adotada para realizar estas
operações. Para isso, buscou-se “imitar” um trader humano, operando manualmente:
Dado o trading system, o operador irá monitorar o mercado em tempo real,
aguardando que ocorram os eventos estabelecidos. Na ocorrência do evento, o
trading system já define quais são os parâmetros de validação, ou seja, quais outros
dados irão auxiliar o trader a decidir se realizará a operação ou não. Geralmente estes
parâmetros são os dados de indicadores definidos para fazerem parte da estratégia
de negociação. Um exemplo hipotético seria:

• Na formação de um fundo, caso o volume esteja acima da média de 21


períodos e o preço esteja acima da média de 9 períodos e o indicador A
esteja entre X e Y etc., então compre.

Em se tratando de operações daytrade, este tipo de análise deve ser concluída pelo
trader o mais rápido possível para não perder o timing da operação, pois uma demora
na inicialização da operação pode inviabilizá-la, uma vez que os preços podem atingir
um nível em que não é mais vantajoso correr o risco. Sendo assim, na prática, a sua
análise é bem superficial e mais qualitativa do que quantitativa. Quanto mais dados o
trader analisar para validar sua operação ou não, mais consistentes podem ser suas
operações. Por esse motivo é que geralmente este profissional se utiliza de várias
telas simultaneamente, nas quais pode acompanhar tudo aquilo que julgar relevante.
Como a subjetividade é muito grande, é necessário longo tempo de experiência até
se adquirir o “feeling” do mercado.
57

Para a aplicação neste trabalho, a subjetividade da análise dos dados e o feeling do


trader foram substituídos pela análise quantitativa de um número grande de
indicadores. Dados experimentais ao longo do tempo mostraram que os melhores
resultados eram obtidos utilizando-se 80 indicadores – algo humanamente impossível
de ser analisado em poucos segundos por uma pessoa.

Sendo assim, nos momentos definidos como sendo pontos de entrada no item 3.1.2,
são extraídos os dados dos indicadores e enviados para processamento. Este
processamento, foi definido como sendo uma tarefa de classificação para definir se a
operação será realizada ou não assim como é feito pelo trader. São treinados um total
de 6 algoritmos de classificação: Regressão Logística; Random Forest; KNN; SVM;
Naive Bayes e XGBoost. Posteriormente é feita a seleção dos que serão utilizados em
cada situação, medindo-se qual combinação gera melhor resultado financeiro.

3.2.1 DEFINIÇÃO DAS CLASSES

Sendo o assunto deste trabalho um problema de classificação, faz-se necessário


definir quais serão as classes possíveis e essas classes podem ser 0 ou 1, indicando
que uma operação não deve ou deve ser feita respectivamente, na direção definida
por seu evento motivador (compra ou venda).

Em uma primeira abordagem, foi definido como classe 1, ou seja, operações que
devem ser realizadas, apenas aquelas que atingiam o preço de stop gain, em outras
palavras, apenas aquelas que geravam o lucro máximo. Esta regra, no entanto,
provocou um grande desequilíbrio entre a quantidade de classes 0 e classe 1, uma
vez que em boa parte dos casos, mesmo as operações lucrativas não atingem o preço
alvo e são encerradas pelo stop de perda modificado para proteção do lucro ou em
razão do fechamento do pregão – já que se trata de operações de daytrade. Esse
desequilíbrio acaba gerando uma “tendência” nos classificadores de escolher a classe
majoritária, além de essa abordagem não ser a mais adequada levando-se em conta
os movimentos normais do mercado.
É importante considerar que as operações são realizadas baseadas em uma
expectativa de ganho no futuro e a única maneira de se fazer essa previsão na
abordagem da análise técnica adotada neste trabalho, é através de dados do
58

passado. Não se trata de tentar prever o futuro, mas sim de tentar rastrear o caminho
que os preços estão seguindo com base nos indicadores. Contudo, é da natureza do
mercado, alterar seu fluxo com muita frequência no curto prazo e uma “virada de fluxo”
no futuro não pode ser prevista com dados do passado, ainda mais levando-se em
conta que uma operação pode durar vários minutos e até mesmo horas antes de ser
finalizada. Nesse sentido, valendo-se da experiência do autor deste TCC em
operações e realizando-se vários testes práticos e experimentais, definiu-se que a
classe 1 será para além das operações que atingem o stop de ganho:

- Aquelas que geram qualquer resultado positivo;

- Aquelas que tem ao menos um ajuste no stop loss, mesmo que resultem em prejuízo;

- Aquelas que em algum momento atingem 70% do preço alvo para o stop gain,
mesmo que finalizadas com prejuízo.

Estas definições foram feitas buscando permitir que de alguma forma o robô trader
pudesse identificar a direção momentânea do fluxo do mercado e tomar decisões mais
parecidas com as que seriam tomadas por um operador humano.

Por eliminação, todas as outras operações que não atingem os critérios para ser
definidas como classe 1, são denominadas como classe 0.

3.2.2 DEFINIÇÃO DOS INDICADORES A SEREM UTILIZADOS COMO ENTRADA


PARA OS CLASSIFICADORES

Escolhido o ativo e todos os demais parâmetros conforme o item anterior, procede-se


para a seleção dos indicadores que serão utilizados pelos classificadores na tomada
de decisão. O total de dados que são calculados corresponde a 210 entradas
possíveis. Esses dados são correspondentes a indicadores tradicionais como o MACD
e ADX e a indicadores desenvolvidos pelo autor ao longo de anos operando no
mercado. Experimentos práticos obtidos em operações reais mostraram que a
utilização de todos os dados apresenta um desempenho inferior ao que é obtido
utilizando-se dados selecionados. Além disso, mostrou-se ser mais eficiente utilizar
59

entradas diferentes para cada tipo de operação possível de ser realizada conforme
descrito no item 3.1.2. Ou seja, para cada evento motivador de uma operação, serão
utilizados dados e classificadores distintos. Ou seja, os atributos serão diferentes para
formação de fundo e topo bem como para cada tipo de rompimento destes. Mais uma
vez, de acordo com resultados práticos, o número ideal de entradas para os
classificadores ficou definido como sendo 80. A seleção desses indicadores se dá da
seguinte maneira:

• Através de um script do Metatrader é gerado um arquivo csv com a maior


quantidade de dados históricos disponíveis contendo os eventos
motivadores de operações, bem como os dados de todos os 210
indicadores e também a classe para cada um desses eventos;

• Este arquivo é então processado por um script no Python, no qual é


executado um total de 6 algoritmos específicos de seleção de entradas para
classificadores e disponíveis no Scikit Learn: Matriz de correlação;
Recursive Feature Elimination (RFE); Select from model – Logistic
Regression; Select from model – Random Forest; Select from model –
XGBoost; Select K-Best. Todos estes algoritmos são executados com suas
configurações padrão, a fim de se ter uma análise bem ampla e genérica.

• Ao final da execução do script é gerado um arquivo csv dispondo as features


em ordem decrescente da quantidade de algoritmos que a selecionou como
relevante. Desta forma, o Metatrader irá acessar este arquivo e selecionar
as 80 primeiras features.

Nesta etapa de processamento de dados, assim como em todas as demais, com


exceção das rotinas de teste, é feito o balanceamento das amostras conforme a classe
a que pertencem. Essa tarefa é feita utilizando-se a classe RandonOverSampler
descrita no item 2.7.3. Os dados também são padronizados com o uso da classe
StandardScaler em Python, conforme descrito no item 2.7.5.
60

A Tabela 3 mostra as 30 primeiras features selecionadas para a ação da Gol Linhas


Aéreas (GOLL4), para o evento de formação de fundo, no período de 12 minutos, fator
de topos e fundos igual a 1,3 e fator de ganho igual a 3, utilizando-se o script citado.
A primeira coluna se refere aos dados de um indicador específico (Feature). As
colunas de 2 a 6 mostram o retorno de um algoritmo específico de seleção de atributos
e a última coluna mostra o número total de seletores que retornou o atributo como
relevante.

Tabela 3 – Lista dos primeiros 30 atributos selecionados para o ativo GOLL4.

Feature Pearson RFE LR RF XGB SKB Total


1 Top1_Volume_Buffer True True True True True True 6
2 Risc_Vs_Std_Dev_Buffer True True True True True True 6
3 RSI_Change_Level_Buffer True True True True True True 6
4 Event_vs_Volume_Buffer True True True True True True 6
5 Event_Volume_Change_Buffer True True True True True True 6
6 Event_Candle_Score_Buffer True True True True True True 6
7 Event_Candle_Score2_Buffer True True True True True True 6
8 Event_Candle_Body_Buffer True True True True True True 6
9 Event_AD_Vs_MA_Long_Change_Buffer True True True True True True 6
10 Candle_Score_History_Copy_Buffer True True True True True True 6
11 Bot1_vs_Bot2_MAShort_Buffer True True True True True True 6
12 Bot1_Candle_Upper_Shadow_Buffer True True True True True True 6
13 BB_Width_Change_Buffer True True True True True True 6
14 BB_Bot1_Vs_Lower_Buffer True True True True True True 6
15 Alpha_Price_Change_3_Buffer True True True True True True 6
16 Alpha_Daily_MA_9_Buffer_Copy True True True True True True 6
17 Alpha_Daily_AD_7_Buffer_Copy True True True True True True 6
18 ADX_Minus_Copy_Buffer True True True True True True 6
19 Top_Vs_Bottom_Average_Size_Buffer True True True True False True 5
20 Top1_vs_Top2_MAShort_Buffer True True True True False True 5
21 Top1_Vs_MA_Short_Buffer True True True False True True 5
22 Top1_Vs_MA_Medium_Buffer True True True False True True 5
23 RSI_Main_Copy_Buffer True True True True False True 5
24 Market_Direction_History_Change_Buffer True False True True True True 5
25 MACD_Change_Buffer1 True True True True False True 5
26 Last_Movement_Amplitude_Buffer True False True True True True 5
27 Hist_MACD_Change_Buffer2 True True True True False True 5
28 Event_vs_Suport_Buffer True True False True True True 5
29 Event_vs_Resist_Buffer True False True True True True 5
30 Event_Trend_Change_Buffer True True True False True True 5
Fonte: O Autor.
61

3.2.3 CONFIGURAÇÃO DOS CLASSIFICADORES – DEFINIÇÃO DOS


HIPERPARÂMETROS

Definidas as entradas mais relevantes, o próximo passo é configurar os


classificadores quanto aos seus hiperparâmetros. Realizar esta tarefa manualmente
por tentativa e comparação de resultados é um trabalho muito dispendioso, então foi
utilizada classe do Scikit learn Randomized Search, que é uma ferramenta que
compara os resultados obtidos com diferentes configurações estabelecidas dentro de
uma faixa de valores. Como o nome da classe sugere, esta seleção dos
hiperparâmentros é feita de maneira aleatória, contudo, dados estatísticos mostram
que os resultados por vezes são superiores aos obtidos com a classe Grid Search,
que faz o mesmo trabalho que a classe Randomized Search, porém, testando todas
as possibilidades. Apesar de o grid search ser uma ferramenta mais abrangente, tem
um grande custo computacional e demanda muito mais tempo de operação,
inviabilizando seu uso constante em computadores comuns de uso pessoal, como é
o caso neste trabalho. Destaca-se que mesmo com o uso do Randomized Search,
com melhora no desempenho, o processo de cálculo dos hiperparâmetros é o que
demanda maior tempo de processamento, podendo durar mais que 24 horas em
alguns casos.

A partir do momento em que foram definidas as 80 entradas que serão utilizadas em


cada caso, o arquivo salvo com esta informação será carregado no Metatrader sempre
que este estiver em execução, garantindo que somente os dados relevantes serão
calculados, evitando desperdício de recursos computacionais. Novamente é gerado
um arquivo os dados históricos, mas desta vez somente com as entradas
selecionadas na etapa anterior. O arquivo é então processado utilizando-se a classe
Randomized Search, configurada para encontrar os hiperparâmetros que
proporcionem a melhor precisão, que é a melhor relação entre verdadeiros e falsos
positivos.
62

3.2.4 CONFIGURAÇÃO DOS CLASSIFICADORES

O objetivo desta etapa é encontrar a maneira mais generalizada possível de uso dos
classificadores. Os dados do mercado serão processados por todos os 6
classificadores mencionados no item 3.2, contudo, é preciso se estabelecer um limiar
do número de retornos de classe 1 para se decidir se a operação será realizada ou
não. A solução encontrada para decidir este limiar foi a técnica de validação cruzada,
na qual a base de dados é dividida em n partes, das quais n-1 partes são utilizadas
para treinamento e uma parte é utilizada para teste. Esse processo é repetido por n
vezes, deslocando-se os dados de treinamento e teste. Por exemplo, para um valor
de n igual a 10, inicia-se utilizando-se as partes de 2 a 10 como treinamento e a parte
1 como teste. Na próxima execução, o treinamento é feito com a parte 1 e as partes
de 3 a 10, sendo a parte 2 utilizada como teste e assim por diante. Destaca-se que os
dados gerais são inicialmente divididos por tipo de evento (topo, fundo e rompimentos)
e passam por balanceamento e padronização de modo que a definição do limiar se
dá para cada um dos eventos. Em cada um dos testes realizados é registrado o limiar
que possibilitou o melhor lucro nos dados testados, conforme descrito no item 2.7.2.3,
pela métrica do lucro, ou seja, verifica-se qual limiar proporcionou o maior lucro. Em
seguida calcula-se a moda dos valores registrados. Caso essa moda seja um valor de
limiar que ocorreu pelo menos na metade dos testes, então utiliza-se este valor, caso
contrário calcula-se a média aritmética entre os limiares dos testes para ser utilizada.
Essa série de regras se mostrou necessária devido ser comum em alguns casos a
grande variância entre os valores dos limiares, tornando difícil determinar qual deve
ser o melhor para ser utilizado nas operações reais.

Definido o limiar, é então realizada uma simulação para visualização dos resultados e
avaliação do desempenho dos classificadores. Essa simulação consiste em treinar os
classificadores baseando-se na mesma divisão por n partes citada anteriormente,
sendo n-1 partes para treinamento e uma parte – correspondente aos últimos registros
de dados na ordem cronológica, para teste. Nesse teste utiliza-se o limiar calculado e
se avalia o resultado obtido. Na avaliação do desempenho, tão importante quanto a
63

variação no ganho financeiro é a redução no número de operações realizadas, o que


acaba refletindo em menores custos operacionais. A
Figura 19 mostra o resumo de uma simulação obtida para o ativo GOLL4, período 12
minutos, fator de topo e fundo de 1,2 e ganho 3 com n igual 20.

Figura 19 - Exemplo de uma simulação de desempenho dos classificadores

Fonte: O AUTOR

No retorno do script, pode-se ver cada um dos limiares calculados para cada evento:
formação de fundo (thereshold_bottom), formação de topo (thereshod_top),
rompimento de topo (thereshold_top) e rompimento de fundo (thereshold_bd). É
possível visualizar também a variação no número de operações e no resultado
financeiro em cada caso.

Por fim, após a definição do limiar e avaliação do desempenho, os classificadores são


treinados utilizando-se toda a base de dados e suas configurações são salvas em um
arquivo a ser utilizado posteriormente no processamento dos dados do mercado.
64

3.2.5 OPERAÇÃO DO ROBÔ TRADER

A execução do robô trader se dá com uso conjunto do Metatrader e de scripts escritos


em Python. O Metatrader conecta-se em uma corretora e obtém os dados de mercado
em tempo real. Esses dados são utilizados para cálculo dos indicadores previamente
selecionados em um arquivo de configuração gerado no momento da definição dos
atributos relevantes para os classificadores e então são enviados para o ambiente
Python através da conexão por sockets. No ambiente Python os classificadores salvos
na etapa anterior são carregados bem como a informação sobre o limiar. Os dados
então são processados pelos classificadores e também através da conexão por
sockets, o resultado sobre a qualificação ou não da operação é retornada ao
Metatrader, que efetuará a operação caso seja este o retorno. O gerenciamento do
stop loss e o do take profit se dá no Metatrader de forma nativa. O tempo de
processamento e execução de todas essas etapas se dá em fração de segundos e
não impacta no desempenho das operações.

4 RESULTADOS

Para realizar o teste de desempenho do robô trader foi utilizado o ativo GOLL4,
timeframe de 15 minutos, fator de topo e fundo 1,5 e fator de ganho 3. A seleção deste
ativo e destas configurações se deu conforme os critérios descritos no item 3.1.3. O
Metatrader já possui uma aplicação nativa para testes de estratégias de negócios,
contudo, essa ferramenta não é compatível com o uso de conexões por sockets como
é o caso neste trabalho. Por este motivo, para a verificação dos resultados foi
desenvolvido um script em Python para processamento dos dados de mercado
posteriores aos utilizados no treinamento dos classificadores. O retorno dos
classificadores foi então comparado com o limiar em cada caso para determinar se a
operação seria realizada ou não e consequentemente, se seu resultado financeiro
seria considerado.
65

4.1 DEFINIÇÃO DOS LIMIARES

Após a geração dos dados contendo apenas os atributos mais importantes,


secionados conforme descrito no item 3.2.2 e definição dos hiperparâmetros de
acordo com o descrito no item 3.2.3, prosseguiu-se para a definição dos limiares
utilizando-se a metodologia descrita no item 3.2.4. A principal configuração nesta
etapa é a definição do número de divisões dos dados para a validação cruzada e neste
caso o melhor resultado foi obtido com n igual a 3.

Figura 20 - Resumo da definição dos limiares

Fonte: O AUTOR

A Figura 20 mostra um resumo dos resultados obtidos na configuração dos limiares.


O período dos dados de teste vai de 23 de julho de 2018 a 17 de novembro de 2022.
Para as operações em formação de fundo (thereshold_bottom) o limiar calculado foi 3
e para os rompimentos de topo (thereshold_bu) o limiar calculado foi 1. Nos casos de
formação de topo (thereshold_top) e rompimento de fundo (thereshold_bd) o limiar
ficou definido como zero, pois os classificadores não se mostraram capazes de
produzir melhores resultados do que quando se realizam todas as operações – o que
será discutido mais adiante. Por esse motivo, nestes dois eventos motivadores de
66

operação, todas elas devem ser realizadas, sem nenhuma seleção. O resultado mais
significativo foi nas operações em formação de fundos em que o total de operações
foi reduzido de 2.243 para 1.163 e resultado financeiro evolui de R$ -8,51 (por unidade
de ação negociada em todo o período) para R$ 2,13. O resultado geral variou de
R$ 220,81 para R$ 239,57, representando um acréscimo no ganho de 8,5% caso se
realizasse todas as operações possíveis. Por mais que este ganho no resultado
financeiro possa parecer pouco, é importante destacar que o total de operações foi
reduzido de 7.130 para 5.758, ou seja 19,25% a menos, o que pode representar uma
redução muito significativa nos custos operacionais. Infelizmente, calcular
precisamente o ganho com a redução no número de operações é uma tarefa muito
complexa, pois depende do número de lotes que serão negociados por operação, as
taxas da corretora, as recolocações de ordem, dentre outros fatores. Contudo,
resultados operacionais reais em operações de daytrade com ações realizadas pelo
autor permitem determinar que os custos consomem algo em torno de 40% dos
ganhos.

Figura 21 - Listas com os melhores limiares para cada evento em cada teste

Fonte: O AUTOR

A Figura 21 contém as listas que armazenam os melhores limiares em cada um dos


testes. Percebe-se que nos eventos de formação de topo (best_thereshold_top), em
nenhum dos testes os classificadores foram capazes de melhorar os resultados, já
que o melhor limiar calculado em todas as três ocorrências foi zero e no caso dos
eventos de rompimento de fundo (best_thereshold_bd), em apenas um dos testes
houve um limiar diferente de zero. Analisando as matrizes de confusão de uma das
iterações na validação cruzada dos eventos de formação de topo na Figura 22 e dos
eventos de rompimento de fundo na Figura 23 (cada matriz se refere a um
classificador na seguinte ordem: Regressão Logística (LR), Random Forest (forest),
kNN, SVM, Neive Bayes (nb), XGB Boost), pode-se perceber que o desempenho dos
67

classificadores no que se refere ao número de falsos negativos e falsos positivos não


foi tão ruim (com exceção do classificador svm). Contudo, como neste caso a métrica
considerada é o lucro, apesar de se obter um recall e uma precisão razoável, as
operações selecionadas não foram as que proporcionaram maior lucro, sendo mais
lucrativo operar em todos os eventos.

Figura 22 - Matrizes de confusão referentes à segunda iteração no loop de teste do melhor limiar para
o evento formação de topo. (a) Regressão Logística, (b) Random Forest, (c) kNN, (d) SVM, (e) Naive
Bayes, (f) XGBoost considerando a precisão.

Fonte: O AUTOR
68

Figura 23 - Matrizes de confusão referentes à segunda iteração no loop de teste do melhor limiar para
o evento rompimento de fundo. (a) Regressão Logística, (b) Random Forest, (c) kNN, (d) SVM, (e)
Naive Bayes, (f) XGBoost considerando a precisão.

Fonte: O AUTOR
69

4.2 TESTE DE DESEMPENHO DOS CLASSIFICADORES

Concluída a etapa de cálculo dos limiares, foi gerado um arquivo contendo os dados
mais recentes e ainda não processados pelos classificadores compreendendo o
período de 18/11/22 a 13/12/22. Estes dados foram processados em um script no qual
os classificadores salvos na etapa anterior foram carregados juntamente com os
valores dos limiares. Foram tratadas somente as operações de formação fundo e
rompimento de topo, já que para os outros eventos, o limiar calculado foi zero. Na
Figura 24 encontram-se os dados de retorno do script.

Figura 24 - Desempenho dos classificadores com dados desconhecidos

Fonte: O AUTOR

O número total de operações no período foi reduzido de 150 para 116, uma diminuição
de 23%. O resultado final geral permaneceu negativo, havendo, contudo, uma redução
nas perdas de R$ -3,09 para R$ -1,50 por unidade de ação negociada.
70

4.3 DESEMPENHO DO ROBÔ TRADER EM OPERAÇÕES REAIS

Apesar de os testes realizados com dados passados servirem como bons medidores
do desempenho do robô trader, o mais adequado seria obter resultados de operações
realizadas no mercado em tempo real, onde são incluídos os custos operacionais e
variações do ganho esperado por problemas de atrasos em cotações ou recolocação
de ordens, mesmo que essas variáveis não possam ser controladas pelo algoritmo
desenvolvido, mas seriam importantes para se avaliar a viabilidade da implantação do
sistema automatizado de negociação. Porém, para se ter um sistema confiável que
não comprometa o desempenho do robô trader é necessário um computador de bom
desempenho (mínimo 12 GB de memória ram, processador de 4 núcleos com clock
de 2 GHz e drive SSD – dados empíricos levantados nos testes), além de uma rede
elétrica e conexão com a internet confiáveis e baixa latência com o servidor da
corretora. A maneira mais simples de se atender a todos esses requisitos é a locação
de uma máquina virtual junto a servidores de boa reputação como Microsoft Azure®
ou Google Clouds®. O custo médio para esse serviço em levantamento no ano de
2022 fica em torno de R$ 1.100,00 mensais. Acrescenta-se ainda a necessidade de
um saldo na conta da corretora para a realização das operações, que devido a
exigências de garantias e provisões de perdas – afinal, nem todas as operações
apresentam resultado positivo – seja de pelo menos R$ 5.000,00. Diante do exposto,
pela indisponibilidade do valor a ser investido na execução deste trabalho, não estão
disponíveis dados reais do mercado para o sistema de negociação aqui discutido.

5 CONCLUSÕES

O sistema de negociação automatizado objeto de estudo deste trabalho mostrou-se


capaz de maximizar os resultados financeiros de um trading system específico ao
mesmo tempo em que promoveu redução significativa no número de operações totais,
impactando diretamente na redução de custos operacionais. Os programas
desenvolvidos também possibilitaram um grande nível de automação dos processos
de configuração do trading system, otimizando o tempo de definição dos parâmetros
e reduzindo os erros e arbitrariedades devido à intervenção humana. A definição do
71

problema como sendo de classificação se mostrou adequada dados os resultados


obtidos com os classificadores.

O principal gargalo identificado foi o extenso tempo de processamento na etapa de


cálculo dos hiperparâmetros dos classificadores, condição que dificulta recálculos
mais frequentes que podem se fazer necessários devido às constantes mudanças
comuns do mercado de ações. Outro problema significativo encontrado foi o elevado
custo para uma operação confiável do sistema, o que demanda um investimento inicial
elevado e a exposição a um risco financeiro elevado para permitir que o sistema se
autossustente, compensando seus custos.

Observa-se também a necessidade de melhora na eficiência dos classificadores, que


implica em aprimoramento das técnicas de classificação bem como na criação de
novos indicadores para uso como atributos ou mesmo na melhora dos atuais.
Contudo, é preciso ter em mente que nunca haverá um sistema que proporcione
somente ganhos sem passar por momentos de perda uma vez que maiores ganhos
somente são obtidos correndo-se maiores riscos e o melhor sistema será aquele
capaz de proporcionar um melhor equilíbrio entre as perdas e ganhos.

5.1 TRABALHOS FUTUROS

O mercado financeiro tem como umas de suas principais características a sua


volatilidade e seu ciclismo, que o mantém em constante mudança. Por esse motivo,
quem deseja obter ganhos do mercado tem que ser capaz de se atualizar na mesma
velocidade que ele. Sendo assim, este trabalho se encontra em constante
desenvolvimento, buscando-se a criação de novos indicadores e melhoras nos
algoritmos de classificação. Outra mudança que se busca é a implementação dos
classificadores em linguagem MQL5, de modo que a operação do robô trader seja
possível apenas com o uso do Metatrader sem a necessidade de execução dos
programas em Python em conjunto. Tal modificação possibilitaria o uso do sistema de
processamento em nuvem oferecido pelo próprio Metatrader, que possui um custo
mensal inferior a R$ 100,00 (valores em 2022), mas não permitem a execução de
programas de terceiros.
72

REFERÊNCIAS

AHA, D. W., KIBLER, D. e ALBERT, M.K. Instance-based learning algorithms.


Machine Learning 6, 1991.

ALTERYX INC. A ferramenta Classificador Naive Bayes. Alteryx. 2018. Disponível


em: <https://help.alteryx.com/current/pt-br/Naive_Bayes.htm>. Acesso em: 15 mar.
2022.

ARA-SOUZA, Anderson Luiz. Redes Bayesianas: Uma introdução aplicada a


credit scoring. in: Simpósio Nacional de Probabilidade e Estatística, São Carlos,
2010. Disponível em:
<http://www.ime.unicamp.br/sinape/sites/default/files/Anderson%20L.%20Souza%20
-%20Redes%20Bayesianas-%20vSINAPE%20final_0.pdf>. Acesso em: 24 mar.
2022.

ATSALAKIS, G.; VALAVANIS, K. Surveying stock market forecasting techniques-


part i: Conventional methods. Computation optimization in economics and finance
research compendium, 2018.

ÁVILA, Leandro. Como investir na bolsa – Análise técnica para investir no médio
e longo prazo. Editora Clube dos poupadores, 2018. ISBN 9788590724117.

B3. Investidor pessoa física. Disponível em


<https://www.b3.com.br/pt_br/noticias/porcentagem-de-investidores-pessoa-fisica-
cresce-na-b3.htm>. Acesso em 28/03/2022.

BAZIN, Décio. Faça uma fortuna com ações, antes que seja tarde. Profissional
do mercado mostra o caminho. 8ª Edição – São Paulo: Editora CLA, 2017.

BEUTELSPACHER, A.; ROSENBAUM, U. Projective Geometry: From Foundations


to Applications, 1998. ISBN 9780521483643.
DHALIWAL, Sukhpreet Singh; NAHID, Abdullah-Al; ABBAS, Robert. Effective
intrusion detection system using XGBoost. Information, 2018.
73

BRITO, Edeleon Marcelo Nunes. Mineração de Textos: Detecção automática de


sentimentos em comentários nas mídias sociais. Belo Horizonte, 2016 Dissertação
(Sistemas de Informação e Gestão do Conhecimento) - Universidade FUMEC, 2016.

BUSSOLA DO INVESTIDOR. Como interpretar o gráfico de candlestick.


Disponível em: <https://www.bussoladoinvestidor.com.br/grafico-de-candlestick/>.
Acesso em: 01/01/2022.

CASTRO, A. P. B. Cristiano Leite de. Aprendizado supervisionado com conjuntos


de dados desbalanceados. Sba: Controle Automação Sociedade Brasileira de
Automatica, scielo, v. 22, 2011. ISSN 0103-1759.

DEBASTIANI, Carlos A. Análise técnica de ações – Identificando oportunidades


de compra e venda. Novatec Editora, 2008. ISBN 9788575221532.

FAWCETT, F. P. T. Adaptive fraud detection. In: Data Mining and Knowledge


Discovery, 1997.

FERRERO, Carlos Andres. Algoritmo kNN para previsão de dados temporais:


Funções de previsão e critérios de seleção de vizinhos próximos aplicados a
variáveis ambientais em limnologia. São Carlos, 2009, Dissertação (Ciências de
Computação e Matemática Computacional) - UNIVERSIDADE DE SÃO PAULO, 2009.

FUCHS, K. Machine Learning: Classification Models. Disponível em:


<https://medium.com/fuzz/machine-learning-classification-models-
3040f71e2529#:~:text=Classification%20models%20include%20logistic%20regressio
n,level%20at%20some%20of%20these>. Acesso em: 28/02/2022.

GOLDSCHMIDT, Ronaldo Ribeiro. Uma introdução à Inteligência Computacional:


Fundamentos, Ferramentas e Aplicações. 1. ed. Rio de Janeiro: Instituto Superior
de Tecnologia do Rio de Janeiro, 2010.

GU, S.; KELLY, B. T.; XIU, D. Empirical asset pricing via machine learning. 2018.
74

HO, T. K. Random decision forests. In: Proceedings of 3rd International


Conference on Document Analysis and Recognition. IEEE Comput. Soc. Press,
1995. ISBN 0-8186-7128-9. ISSN 0818671289.

HO, T. K. The random subspace method for constructing decision forests. IEEE
Transactions on Pattern Analysis and Machine Intelligence, v. 20, 1998. ISSN
01628828.

IBM Cloud Education. SUPERVISED Learning. Disponível


em:<https://www.ibm.com/cloud/learn/supervised-learning>. Acesso em: 28/02/2022.

IMBALANCED-LEARNING. Over-Sampling. Disponível em: <https://imbalanced-


learn.org/stable/over_sampling.html#random-over-sampler> Acesso em: 01/03/2022.

JUNIOR, Décio Moritiz. Classificação de editais licitatórios em áreas de atuação


baseado em aprendizado supervisionado. Florianópolis, 2018. TCC (Ciência da
Computação) – Universidade Federal de Santa Catarina – UFSC.

LEAL, Ítalo H. de Souza. O uso de aprendizagem de máquina para identificação e


classificação de fake News no twitter referentes a eleição presidencial de 2018.
Caratinga, 2018. TCC (Ciência da Computação) – Faculdades Doctum de Caratinga.

LEMOS, F. Análise técnica dos mercados financeiros. Saraiva Editora, 2015. ISBN
9788502637825.

METATRADER 5. Plataforma de negociação MetaTrader 5. Disponível em:


<https://www.metatrader5.com/pt/trading-platform>. Acesso em: 01/02/2022.

MITCHELL, T. Machine Learning. McGraw-Hill, 1997. (McGraw-Hill International


Editions). ISBN 9780071154673.

NORONHA, Márcio. Análise Técnica: Teorias, ferramentas, estratégias. Editec –


Editora de livros técnicos, 2009.
75

PEREIRA, Luciano de Santana. Metodologia para avaliar técnicas de redução de


protótipos: protótipos gerados versus protótipos selecionados. Recife, 2013
Dissertação (Pós-graduação em Ciência da Computação) - UNIVERSIDADE
FEDERAL DE PERNAMBUCO, 2013. Disponível
em: <https://repositorio.ufpe.br/bitstream/123456789/12402/1/Disserta%C3%A7ao
%20Luciano%20Pereira.pdf>. Acesso em: 24 mar. 2022.

PRASANNA, S.; DEVARASAN, E. An analysis on stock market prediction using


data mining techniques. v. 4, 2013.

ROKACH, L.; MAIMON, O. Top-down induction of decision trees classifiers - A


survey. IEEE Transactions on Systems, Man and Cybernetics Part C: Applications
and Reviews, 2005. ISSN 10946977.

SCHMITT, Vinícius Fernandes. Uma análise comparativa de técnicas de


aprendizagem de máquina para prever a popularidade de postagens no
Facebook. Porto Alegre, 2013 TCC (Ciência da Computação) - Universidade Federal
do Rio Grande do Sul, 2013.

SCIKIT-LEARN. RandomizedSearch. Disponível em: <https://scikit-


learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.
html>. Acesso em 28/03/2022.

SCHÖLKOPF, B.; SMOLA, A. J. Support Vector Machines and Kernel Algorithms.


The Handbook of Brain Theory and Neural Networks, 2002.

SEMANTIX. Os 5 Algoritmos de Amostragem Que Todo Cientista de Dados


Precisa Saber. Disponível em: <https://www.semantix.com.br/
os-5-algoritmos-de-amostragem-que-todo-cientista-de-dados-precisa-saber/>.
Acesso em: 01/03/2022.

SILVA, Franciele Kuwahara de Matos. Aprendizado de máquina aplicado à


predição de incêndio em canavial. Blumenau, 2021. TCC (Engenharia de Controle
e Automação) – Universidade Federal de Santa Catarina – UFSC.
76

SMARTTBOT. Como funciona o indicador topos e fundos da SmarttBot.


Disponível em <https://smarttbot.com/trader/topos-e-fundos-daytrading/>. Acesso em:
02/02/2022.

SUTTER, Lorran Ferreira Maroco. Aplicação de técnicas de aprendizado de


máquina na predição de tendência das ações nas bolsas de valores. Juiz de Fora,
2018. Monografia (Engenharia Computacional) – Universidade Federal de Juiz de
Fora – UFJF.

TUYLS, K.; MAES, S.; VANSCHOENWINKEL, B. Machine learning techniques for


fraud detection, 2018.

VILAR, João. Fundamentos de Data Science – Machine Learning (Parte 1). JOAO
VILAR TECHNOLOGY. 2017. Disponível
em: <https://jvilar.wordpress.com/2017/01/29/fundamentos-de-data-science-
machinelearning-parte-1/>. Acesso em: 24 mar. 2022.

WILDER, Welles. A sabedoria dos tempos na conquista da riqueza. Editec –


Editora de livros técnicos, 2000.

WU, J. et al. Hyperparameter optimization for machine learning models based on


bayesian optimizationb. Journal of Electronic Science and Technology, v. 17, 2019.
ISSN 1674-862X.

ZHENG, Huiting; YUAN, Jiabin; CHEN, Long. Short-term load forecasting using
EMDLSTM neural networks with a Xgboost algorithm for feature importance
evaluation. Energies, 2017.

Você também pode gostar