PLATAFORMA DE DETECÇÃO DE COMPORTAMENTO E GERENCIAMENTO DE...

141
PLATAFORMA DE DETECÇÃO DE COMPORTAMENTO E GERENCIAMENTO DE ATIVOS FINANCEIROS DO MERCADO DE AÇÕES BASEADA EM ÍNDICES DE ANÁLISE TÉCNICA Marcelle de Souza Campos Projeto de graduação apresentado ao curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Prof. Aloysio de Castro Pinto Pedroza Rio de Janeiro Março de 2016

Transcript of PLATAFORMA DE DETECÇÃO DE COMPORTAMENTO E GERENCIAMENTO DE...

PLATAFORMA DE DETECÇÃO DE COMPORTAMENTO E

GERENCIAMENTO DE ATIVOS FINANCEIROS DO MERCADO

DE AÇÕES BASEADA EM ÍNDICES DE ANÁLISE TÉCNICA

Marcelle de Souza Campos

Projeto de graduação apresentado ao curso de

Engenharia Eletrônica e de Computação da Escola

Politécnica, Universidade Federal do Rio de

Janeiro, como parte dos requisitos necessários à

obtenção do título de Engenheiro.

Orientador: Prof. Aloysio de Castro Pinto Pedroza

Rio de Janeiro

Março de 2016

PLATAFORMA DE DETECÇÃO DE COMPORTAMENTO E

GERENCIAMENTO DE ATIVOS FINANCEIROS DO MERCADO

DE AÇÕES BASEADA EM ÍNDICES DE ANÁLISE TÉCNICA

Marcelle de Souza Campos

PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO DE ENGENHARIA

ELETRÔNICA E DE COMPUTAÇÃO DA ESCOLA POLITÉCNICA DA UNIVERSIDADE FEDERAL DO RIO

DE JANEIRO COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE

ENGENHEIRO ELETRÔNICO E DE COMPUTAÇÃO

Autor:

________________________________________________

Marcelle de Souza Campos

Orientador:

________________________________________________

Prof. Aloysio de Castro Pinto Pedroza, Dr.

Examinador:

________________________________________________

Prof. Carlos José Ribas D’Avila, M.Sc

Examinador:

________________________________________________

Prof. José Arthur da Rocha, M.Sc.

Rio de Janeiro - RJ, Brasil

Março de 2016

iv

v

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

Escola Politécnica – Departamento de Eletrônica e de Computação

Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária

Rio de Janeiro – RJ CEP 21949-900

Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que

poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar

qualquer forma de arquivamento.

É permitida a menção, reprodução parcial ou integral e a transmissão entre

bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja ou

venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem

finalidade comercial e que seja feita a referência bibliográfica completa.

Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).

vi

vii

Agradecimentos

Agradeço a minha família que me apoiou imensamente em todas as escolhas

acadêmicas que realizei ao longo de minha vida, fornecendo-me incondicionais amor,

suporte e conselho.

Agradeço a meus amigos com quem compartilharei da mesma formação, que ao

longo de todos estes anos estudaram e dividiram seus conhecimentos em eletrônica e

computação.

Agradeço aos professores e coordenadores que cruzaram meu caminho nesta

jornada acadêmica. Em especial, aos professores Carlos José D’Avila, José Arthur da

Rocha e Aloysio Pedroza. Cada um destes teve grande contribuição para meu sucesso e

formação.

Agradeço à Escola Politécnica, por me dar a possiblidade de obter um diploma

acadêmico em Engenharia Eletrônica e de Computação, me oferecendo um curso de alta

qualidade e abrindo portas a diferentes oportunidades no âmbito acadêmico, profissional

e pessoal.

A todos os membros da banca examinadora pela disponibilidade e presteza no dia

da defesa.

viii

ix

Resumo

PLATAFORMA DE DETECÇÃO DE COMPORTAMENTO E GERENCIAMENTO

DE ATIVOS FINANCEIROS DO MERCADO DE AÇÕES BASEADA EM ÍNDICES

DE ANÁLISE TÉCNICA

Marcelle de Souza Campos

Março/2016

Orientador: Prof. Aloysio de Castro Pinto Pedroza

Programa: Engenharia Eletrônica e de Computação

Existem vários modelos de uso de indicadores técnicos para tomada de decisões

de negociação de ativos, modelos que se tonaram populares e parecem trazer resultados

apropriados quando são explorados na literatura. Entretanto, os resultados são baseados

em observações empíricas e experiências adquiridas por seus desenvolvedores. Uma das

ideias por detrás deste projeto é observar estatisticamente o comportamento dos valores

dos ativos depois de acontecimentos de eventos amplamente utilizados, como pontos de

referência de decisão. Assim, depois da ocorrência do evento, foram observados os

comportamentos médios de inúmeros papeis, permitindo traçar as variações normalmente

verificadas após suas ocorrências. A metodologia utilizada permitiu que fossem

corroboradas ou ampliadas as técnicas relacionadas aos índices. O comportamento pós-

evento utiliza duas variáveis diretamente ligadas ao lucro/prejuízo de uma negociação: a

chance de valorização/desvalorização e a variação média (valorização ou desvalorização).

Com a combinação destas duas variáveis teremos a visão do comportamento médio dos

valores das ações, o que aplicado a um portfolio (grupo de ações que o usuário do mercado

financeiro negocia), deverá trazer um resultado mais previsível. O raciocínio foi

extrapolado para vários indicadores – os mais populares, que combinados entre si

tenderão a refletir de forma mais realista o comportamento do mercado, já que cada

indicador possui suas caraterísticas próprias.

x

xi

Abstract

PLATAFORM OF DETECTION AND MANAGEMENT OF ASSETS FROM THE

FINANCIAL STOCK MARKET BASED ON TECHNICAL ANALYSIS

INDICATORS

Marcelle de Souza Campos

March/2016

Advisor: Prof. Aloysio de Castro Pinto Pedroza

Department: Electronics and Computing Engineering

There are several models of use for technical indicators when it comes to decision making

of assets. Such models became popular and seem to bring appropriate results when

explored in the literature. However, the results are based on empirical observations and

experiences acquired by its developers. One of the ideas behind this project is to observe

statistically the behavior of the values of the assets after the happening of events widely

used, as decision reference points. Therefore, after the occurrence of the event, the

average behaviors of many stocks was observed, making it possible to trace the variations

normally verified after their occurrences. The methodology used allow the techniques

related to indexes to be improved and amplified. The behavior after the event uses two

variables directly linked to the profit/loss of a negotiation: the chance of

valorization/devalorization and the average variation (valorization/devalorization). With

the combination of these two variables we will have a vision of the average behavior of

the stock values, what, when applied to a portfolio (group of stocks that the user of the

stock market negotiates), should bring a result more predictable. This line of thought was

applied to many indicators – the most popular ones, that when combined amongst each

other will tend to reflect more realistically the behavior of the market, as each index had

its own characteristics.

xii

xiii

SIGLAS

SAR – Stop and Reverse

ADX – Average Directional Movement

DM – Directional Movement

TR – True Range

DI – Directional Index

EP – Extreme Point

DX – Directional Movement Index

DMI – Directional Movement Index

MACD – Moving Average Convergence Divergence

SMA – Simple Moving Average

EMA – Exponential Moving Average

CCI – Commodity Chanel Index

RMI – Remote Method Implementation

SQL – Structured Query Language

XML – Extensible Markup Language

xiv

xv

Sumário

1. Introdução ............................................................................................................................1

1.1 Tema.............................................................................................................................1

1.2 Delimitação ..................................................................................................................1

1.3 Justificativa ..................................................................................................................2

1.4 Objetivos ......................................................................................................................2

1.5 Metodologia .................................................................................................................3

1.6 Descrição ......................................................................................................................4

2. Índices de análise técnica .....................................................................................................5

2.1 Definições ....................................................................................................................5

2.2 A técnica de análise de mercado Candlestick .............................................................15

2.3 Índice Parabolic Stop and Reverse (SAR) ..................................................................17

2.4 Índice Average Directional Movement (ADX) ...........................................................20

2.5 Índice Directional Movement Index (DMI) ................................................................26

2.6 Índice Moving Average Convergence Divergence (MACD) ......................................26

2.7 Índice Estocástico .......................................................................................................29

2.8 Índice de Bandas de Bollinger ....................................................................................32

2.9 Índice de força ............................................................................................................55

2.10 Média Móvel ..............................................................................................................57

2.11 Índice Commodity Chanel Index (CCI) ......................................................................61

3. Metodologia .......................................................................................................................64

3.1 Usando indicadores de análise financeira ...................................................................64

3.2 Janela deslizante .........................................................................................................67

4. O Software e o aplicativo ...................................................................................................68

4.1 Aspectos de implementação da metodologia ..............................................................68

4.2 Cálculo do ganho consolidado ....................................................................................78

4.3 A arquitetura da plataforma ........................................................................................84

4.4 A estrutura do programa .............................................................................................85

4.5 A estrutura do aplicativo.............................................................................................90

4.6 A interface gráfica do Programa .................................................................................91

4.7 Técnicas de computação utilizadas ao longo do projeto ...........................................101

5. Aplicação e evolução........................................................................................................105

5.1 Exemplos de uso do programa ..................................................................................105

xvi

5.2 Exemplos de uso do aplicativo .................................................................................111

5.3 Teste da metodologia ................................................................................................114

5.4 Retrospecto ...............................................................................................................115

5.5 Evolução e próximos passos .....................................................................................116

6. Conclusão .........................................................................................................................117

7. Bibliografia ......................................................................................................................119

Anexo .......................................................................................................................................120

xvii

Lista de figuras

Figura 2.1 – Estátua Bulle & Bär em frente à bolsa de valores de Frankfurt, Alemanha. ...........9

Figura 2.2 – Dumb Money e Smart Money ................................................................................15

Figura 2.3 – Candlesticks ..........................................................................................................16

Figura 2.4 – Exemplo de cálculo de TR .....................................................................................21

Figura 2.5 – Comparação entre a soma comum e a soma suavizada .........................................23

Figura 2.6 – Distribuição normal ..............................................................................................32

Figura 2.7 – Distribuição de eventos de valorização e desvalorização .....................................39

Figura 2.8 – Distribuição de eventos de valorização e desvalorização – Distribuição por

ano/mercado ..............................................................................................................................40

Figura 2.9 – Delta das cotações.................................................................................................41

Figura 2.10 – Distribuição da quantidade de valorizações/desvalorizações após a vela tocar a

banda inferior de Bollinger ........................................................................................................42

Figura 2.11 – Delta das cotações – Vela toca a banda inferior de Bollinger ............................43

Figura 2.12 – Porcentagem da variação das cotações – Vela toca a banda inferior de Bollinger

...................................................................................................................................................44

Figura 2.13 – Distribuição da quantidade de valorizações/desvalorizações após um fechamento

abaixo da banda de Bollinger ....................................................................................................45

Figura 2.14 – Delta das cotações – Valor de fechamento abaixo da banda de Bollinger ..........46

Figura 2.15 – Porcentagem da variação das cotações – Fechamento se dá abaixo da banda de

Bolligner ....................................................................................................................................46

Figura 2.16 – Comparação do delta de cotações que interagem com a banda inferior de

Bollinger ....................................................................................................................................47

Figura 2.17 – Comparação da variação de cotações que interagem com a banda inferior de

Bollinger ....................................................................................................................................48

Figura 2.18 – Consolidação de interações com a banda inferior de Bollinger ..........................49

Figura 2.19 – Delta das cotações – Vela toca a banda superior de Bollinger ...........................50

Figura 2.20 – Porcentagem da variação das cotações – Vela toca a banda superior de

Bollinger ....................................................................................................................................51

Figura 2.21 – Distribuição da quantidade de valorizações/desvalorizações após a vela tocar a

banda superior de Bollinger.......................................................................................................52

Figura 2.22 – Delta das cotações – Valor de fechamento acima da banda de Bollinger ...........52

Figura 2.23 – Porcentagem da variação das cotações – Fechamento se dá acima da banda de

Bolligner ....................................................................................................................................53

Figura 2.24 – Comparação do delta de cotações que interagem com a banda superior de

Bollinger ....................................................................................................................................53

Figura 2.25 – Comparação da variação de cotações que interagem com a banda superior de

Bollinger ....................................................................................................................................54

Figura 2.26 – Consolidação de interações com a banda inferior de Bollinger ..........................55

Figura 2.27 – Valores de fechamento de uma ação ...................................................................58

Figura 2.28 – SMA para diferentes períodos .............................................................................59

Figura 2.29 – Comparação entre SMA e EMA...........................................................................61

Figura 3.1 – Indicador 1 ............................................................................................................65

xviii

Figura 3.2 – Indicador 2 ............................................................................................................66

Figura 3.3 – Índice de ganho combinado ...................................................................................66

Figura 4.1 – Variação de uma cotação ......................................................................................69

Figura 4.2 – Estrutura de armazenamento do ganho de cada evento para um indicador ..........73

Figura 4.3 – Cálculo do Ganho estatístico de cada evento ........................................................74

Figura 4.4 – Diagrama de blocos da coleta de ganhos ..............................................................75

Figura 4.5 – Cotações de exemplo .............................................................................................76

Figura 4.6 – Janela deslizante sobre o Exemplo 1 .....................................................................79

Figura 4.7 – Ganho de diferentes eventos para uma ação selecionada .....................................81

Figura 4.8 – Ganhos a partir de cada evento com janelas deslizantes.......................................81

Figura 4.9 – Ganho consolidado dos eventos para uma ação ....................................................82

Figura 4.10 – Previsão das cotações do Exemplo 1 ...................................................................82

Figura 4.11 – Ganho geral de diferentes eventos .......................................................................83

Figura 4.12 – Ganho geral de todos dos eventos .......................................................................83

Figura 4.13 – Ganho consolidado de todos dos eventos ............................................................84

Figura 4.14 – Esquema da arquitetura da plataforma ...............................................................85

Figura 4.15 – Diagrama Hierárquico das classes do programa ................................................86

Figura 4.16 – Diagrama hierárquico das classes do aplicativo .................................................90

Figura 4.17 – Hierarquia da classe JFrame ..............................................................................92

Figura 4.18 – O Frame principal v1 ..........................................................................................93

Figura 4.19 – GetSplitForGraphicalAreaAndControlArea .......................................................93

Figura 4.20 – Painel v1..............................................................................................................94

Figura 4.21 – GetSplitPaneForControlAndStocksArea .............................................................95

Figura 4.22 – GetSplitPaneForChartsArea ...............................................................................95

Figura 4.23 – Painel v2..............................................................................................................96

Figura 4.24 - GetSplitPaneForMainChartAndOptionsArea .....................................................97

Figura 4.25 – GetPaneForOtherChartArea ...............................................................................97

Figura 4.26 – combinedDomainXYPlot variable .......................................................................98

Figura 4.27 – Tela principal do programa.................................................................................98

Figura 4.28 – Atualização de sobplot com novos valores de vela ............................................100

Figura 4.29 – Estrutura gráfica do gráfico principal ..............................................................101

Figura 4.30 – Exemplo de acesso dinâmico .............................................................................103

Figura 5.1 – Botão “Mostrar estatísticas” ..............................................................................106

Figura 5.2 – Índices e linhas médias ........................................................................................106

Figura 5.3 – Ganho de acordo com as diferentes categorias ...................................................107

Figura 5.4 – Fechamento e ganhos futuros ..............................................................................108

Figura 5.5 – Ganhos futuros e velas ........................................................................................108

Figura 5.6 – Indicadores ..........................................................................................................108

Figura 5.7 – Indicadores ..........................................................................................................109

Figura 5.8 – Atualização das ações .........................................................................................109

Figura 5.9 – Atualização de todas as ações .............................................................................109

Figura 5.10 – Atualização de uma ação específica ..................................................................110

Figura 5.11 – Adicionar Ações e Lista de melhores ações .......................................................110

Figura 5.12 – Adicionar Ações ................................................................................................110

Figura 5.13 – Melhores Ações .................................................................................................111

xix

Figura 5.14 – Tela do software ................................................................................................111

Figura 5.15 – Tela principal vazia ...........................................................................................112

Figura 5.16 – Lista de ações disponíveis .................................................................................112

Figura 5.17 – Lista de ações favoritas .....................................................................................113

Figura 5.18 – Atualização dos dados .......................................................................................113

Figura 5.19 – Lista após atualização ......................................................................................114

xx

Lista de tabelas

Tabela 2.1 – Exemplo de geração de lucro de uma empresa com crescimento de 10% ao ano .35

Tabela 2.2 – Exemplo de geração de lucro de uma empresa com crescimento de 4% ao ano ...36

Tabela 2.3 – Resumo da análise após a vela tocar a banda inferior de Bollinger .....................43

Tabela 3.1 – Índice1 x Índice 2 ..................................................................................................67

Tabela 3.2 – Janela deslizante ...................................................................................................68

Tabela 4.1 – Tabela de indicadores ...........................................................................................71

Tabela 4.2 – Tabela de ganho para o evento 1 do índice 1 ........................................................77

Tabela 4.3 – Tabela de ocorrência de eventos ...........................................................................80

1

1. Introdução

1.1 Tema

Sabe-se que existem dezenas de índices utilizados em análise técnica de ativos.

Estes, por sua vez, são modelos matemáticos que se utilizam de variáveis de um ativo

financeiro, podendo levar em consideração preço, tais como valores de abertura,

fechamento, máximo e mínimo de uma ação, e volume em um dado período de tempo

– mais comumente diário. Os índices de análise técnica são utilizados frequentemente

com o objetivo de fornecer aos investidores evidências (dicas) de tendências de

desvalorizações ou valorizações, que podem ser utilizados como base para decisão de

compra e venda.

Entretanto, cada índice possui características intrínsecas e específicas, que não

traduzem de forma completa o comportamento extremamente complexo do mercado

de ações. Isto os torna incertos e os impossibilita de serem levados individualmente

para decisões de compra e venda.

A plataforma criada neste projeto, portanto, pretende destacar ao usuário qual a

melhor combinação de índices que traria o maior lucro para um determinado ativo

financeiro, a partir de informações de cotações passadas. Uma vez que os índices

traduzem de certa forma o comportamento dos agentes do mercado, podemos assumir

que as próximas decisões destes mesmos agentes seriam tomadas usando as mesmas

premissas usadas anteriormente. Ao conhecer melhor o perfil do mercado, próximas

decisões seriam mais precisas, gerando, por consequência, maior lucro.

Além de calcular e realizar combinações de índices de análise técnica sobre um

determinado ativo, fornecendo, finalmente, o coquetel de índices que melhor refletem

o comportamento do ativo no mercado de ações, a plataforma também se propõem a

auxiliar o usuário a gerenciar estes ativos através de seu dispositivo portátil Android

(smartphone), onde o usuário da plataforma seria informado sobre as melhores

possibilidades de investimento entre o leque de suas ações favoritas.

1.2 Delimitação

Apesar do projeto ser aplicável a qualquer ativo financeiro, será delimitado ao

mercado de ações com períodos de coletas de dados diários.

Os dados de cotação dos ativos serão coletados a partir de fontes públicas de

dados, como Yahoo Finance e Google Finance. Estes dados são disponibilizados alguns

minutos (ou horas) após o fechamento do mercado no dia.

2

Mais tarde a plataforma poderia ser expandida para trabalhar em frequências de

coletas de dados com períodos de 15 minutos (intraday). Ainda haveria a possiblidade

de coleta de dados em tempo real, o que traria a necessidade de assinatura de um serviço

como o Bloomberg. Assim, seria possível identificar se as combinações que a plataforma

está gerenciando estão se formando para o dia atual, permitindo a ação imediata do

investidor antes do fechamento do pregão do dia.

Com os dados coletados para cotações intraday de fontes como o Yahoo

Finance, por exemplo, que têm atraso de cerca de 15 minutos, as dicas de compra ou

venda poderão chegar atrasadas ao usuário da plataforma. Este é um preço a se pagar

pela gratuidade do serviço de fornecimento dos dados de cotação.

1.3 Justificativa

Entendendo que os índices de análise financeira de ativos, onde a aplicação mais

direta seria o mercado de ações, traduzem o comportamento do mercado (resultantes do

ambiente, pressões políticas, perfil dos investidores, e situação econômica local e global

- globalização), existe o forte interesse de uso de análises técnicas para determinar o

melhor momento de compra e venda de ativos, maximizando os ganhos do investidor.

Sabe-se que os índices de análise técnica dão evidências interessantes para

decisões de compra e venda, pois são modelos matemáticos que tentam traduzir os

movimentos do mercado. Entretanto, estes índices não são 100% confiáveis, havendo

um grau de acerto limitado. Logo, não devem ser utilizados cegamente pelos

investidores uma vez que as chances de sucesso com a utilização de um índice

exclusivamente poderão não gerar ganho, pois em determinados momentos as dicas são

utilizáveis e em outros, não.

As incertezas dos índices de análise técnica se dão pelo fato de serem modelos

matemáticos, que levam em conta características específicas, sendo que mercado de

ações é muito mais complexo. Este fator os torna limitados.

1.4 Objetivos

Este projeto tem como objetivo criar um software e um aplicativo:

A ideia do software será, portanto, identificar índices complementares entre si

que traduzam de forma mais consistente e completa o comportamento do mercado para

um determinado ativo financeiro. Cada índice terá o comportamento identificado a partir

de uma análise estatística do comportamento da ação após o acontecimento de eventos

relacionados aos índices, gerando base de comparação que poderá ser usada como uma

base para provável comportamento do valor do ativo no futuro. Serão utilizados os

3

índices mais populares e que prometem os melhores resultados e para cada um destes

índices serão identificados os eventos de importância que, segundo as teorias dos

inventores e utilizadores dos índices, determinam provável ganho ou perda a partir do

seu acontecimento.

Por exemplo, um índice ou indicador bem popular é a Banda de Bollinger que,

de forma bem resumida, cria um túnel com duas linhas equidistantes da linha de valor

médio de fechamento da ação. Esse túnel determina as fronteiras máximas e mínimas

que a maior parte dos fechamentos deverão estar situados. Quando um fechamento se

dá fora destas fronteiras, segundo as teorias de uso do indicador, há uma tendência de

alta ou baixa, conforme o caso, do valor da ação para os próximos períodos. Assim,

foram definidos eventos relacionados à Banda de Bollinger que serão utilizados para

assumir que o comportamento da ação deverá seguir o comportamento médio de todas

as ações quando este mesmo evento foi observado anteriormente. Logo, serão coletadas

as variações dos valores das ações a partir do acontecimento de um evento, que, em

combinação com outros eventos, determinarão o provável comportamento da ação para

o futuro.

Como exemplo, podemos citar índices baseados em volume, onde tentamos

entender a direção dos valores das ações baseado somente nos volumes de transações

diárias. Este tipo de índice tem grande influência pois traduz o interesse ou desinteresse

dos investidores. Eles baseiam-se na premissa de que quanto maior o volume

comercializado no mercado, mais dispostos os investidores estão para executar suas

transações nos preços atuais. Os investidores acreditam que o preço atual está correto

ou que a tendência (de alta ou baixa) permanecerá por algum tempo. Se o volume for

baixo, significa que há poucas pessoas dispostas a pagar o preço atual, ou seja, os

investidores acreditam que o preço atual é inadequado, ou que haverá uma reversão em

breve.

Este índice leva em conta, portanto, volume e preço, o que o torna interessante

com relação a outros. Entretanto, podem distorcer as dicas geradas principalmente

porque tendências começam com volume baixo e crescem gradualmente. O ideal seria

a utilização deste índice em conjunto com outros.

Em paralelo, um aplicativo com o objetivo de permitir a visualização de dados

para um determinado portfólio de ações será desenvolvido. Fornecendo portabilidade ao

usuário.

1.5 Metodologia

A plataforma desenvolvida se propõe a determinar o comportamento provável

futuro do valor de uma ação, a partir da combinação de comportamentos prováveis de

diferentes índices quando eventos determinados forem encontrados. Em outras palavras,

4

a plataforma permitirá verificar o provável comportamento futuro dos valores de uma

ação a partir do estudo do comportamento médio passado de várias ações, dando uma

visibilidade ao investidor de provável lucro (ou prejuízo) caso o mesmo decida negociar

um ativo. Para tal, os valores das cotações referentes à ação desejada são retirados dos

sites do Yahoo Finance e Google Finance e importados para o banco de dados do próprio

software.

O aplicativo, por outro lado, tem acesso ao banco de dados do software,

possibilitando que usuário escolha suas ações preferidas dentro das disponíveis no

banco. Os dados relativos a estas ações podem ser atualizados a qualquer momento pelo

usuário, com o processamento sendo totalmente realizado no servidor – O software.

1.6 Descrição

No capítulo 2 deste projeto os índices de análise técnica serão explorados em

detalhe: uma introdução a história dos índices, suas classificações e seus eventos é

realizada.

No capítulo 3, a metodologia para o desenvolvimento do projeto será descrita e

estudada.

No capítulo 4, os aspectos da implementação da metodologia, a estrutura do

programa e do aplicativo e as técnicas de computação utilizadas para seu

desenvolvimento são exploradas.

No capítulo 5 são apresentados exemplos de uso do software e do aplicativo, o

teste realizado sobre a metodologia, assim como o retrospecto e a evolução sugerida ao

trabalho.

No capítulo 6, finalmente, a conclusão do projeto.

5

2. Índices de análise técnica

O quão interessante seria ter a possibilidade de prever o comportamento de um

ativo financeiro? Possuir a habilidade de prever uma alta ou uma queda no preço de uma

commodity, comprando-a anteriormente a alta de seu preço ou a uma queda que levaria

diversos investidores a ruinas?

Para um agricultor da região de Sakata, Japão, durante o século XVIII, a ideia

de prever o comportamento do mercado de arroz não era fantasiosa. De fato, Homma

Munehisa acreditava na existência de um aspecto psicológico no mercado, influenciado

significantemente pelos humores e estados de seus investidores. Ele observou uma

tendência básica no mercado: quando todos encontram-se pessimistas, há razões para os

preços aumentarem.

Utilizando-se de variáveis tais como os preços, volumes de venda e a expectativa

do clima, Munehisa foi capaz de desenvolver um índice que o auxiliaria em estabelecer

suas vendas no mercado. Este, futuramente, daria nascimento a uma técnica de análise

gráfica financeira denominada candlestick.

A técnica desenvolvida por Munehisa foi a primeira de muitas que, futuramente,

seriam denominadas índices de análise técnica.

2.1 Definições

Os índices de análise técnica financeira são, em sua essência, modelos

matemáticos que podem basear-se em históricos de preços – preço de abertura, preço de

fechamento, maior preço, menor preço; volume – volume de compra, volume de venda

ou volume geral do mercado; comportamento dos principais grupos de investidores do

ativo, ou qualquer informação em geral capaz de ser quantificada, e que possa adicionar

valor agregado à previsão.

O objetivo do uso dos índices, de forma geral, é analisar estas variáveis de modo

a prever uma tendência no comportamento no preço do ativo. Sendo plotados em

gráficos, possibilitam uma comparação direta com o comportamento do valor do ativo

6

e outros índices. Muitos analistas utilizam informações de tendências confirmativas e

contraditórias para tomar decisões. Por exemplo, podem ocorrer picos sucessivos em

um índice e ao mesmo tempo em um valor de uma ação; entretanto estes picos são cada

vez mais altos para o valor da ação e cada vez mais baixos para o valor do índice,

indicando uma divergência de comportamento e uma forte chance de mudança de

tendência (de alta) do valor do ativo [1].

Os índices teriam três funções principais:

Indicação: certos índices de análise técnica financeira teriam sido

desenvolvidos para prever uma situação específica, sinalizando ao

investidor quando o estado da ação estiver de acordo com um critério

predefinido, estabelecido especificamente para um determinado índice;

Previsão: history tends to repeat itself! Como já diz a famosa expressão,

certos índices podem ser usados para prever movimentações futuras de

preço;

Confirmação: determinados índices têm como principal objetivo atestar,

ou comprovar o sinal de outros índices. Assim, a combinação de uso de

índices torna-se importante para que haja uma maior certeza no momento

em que decisões de compra ou venda precisem ser tomadas. É importante

considerar que o histórico dos preços e volumes de cada ativo financeiro

está diretamente atrelado ao comportamento de seus investidores. Mais

especificamente, grupos de investidores com parcelas mais

consideráveis, em sua maioria bancos ou empresas: Quanto maior a

parcela de porcentagem do investidor sobre o ativo financeiro, maior será

a influência de suas características sobre o comportamento do ativo.

Considere, por exemplo, seis crianças investidoras de uma banca de limonada,

onde duas delas são muito cautelosas e desconfiadas, e possuem a maior porção do

investimento, cerca de 40%. Se, quando as vendas estiverem baixas, ambas as crianças

decidirem vender a maioria de sua parte, correspondente a 30% da banca de limonada,

será esperada uma diminuição do preço da banca, pois uma desconfiança surgirá: será

que a banca não está dando lucro suficiente? Enquanto se apenas uma das outras crianças

decidir vender sua pequena parte de 3%, pouco ou nenhum impacto será esperado sobre

o preço da banca.

7

O comportamento descrito das duas crianças portadoras da maioria das ações a

cima poderia classificá-las, por exemplo, como investidores que não gostam de correr

riscos, vendendo seus ativos assim que uma época de baixas vendas se inicia. Dentro de

um período de tempo, este comportamento mais seguro certamente será refletido sobre

os preços das ações da banca de limonada: em períodos mais difíceis, os ativos da banca

de limonada cairiam de preço drasticamente, enquanto em períodos de altas vendas,

aumentariam consideravelmente.

Como visto no exemplo citado a cima, o comportamento e volume dos

investidores influenciam diretamente sobre os preços e tendências do ativo financeiro.

E, como diversos elementos, o comportamento destes grupos apresenta tendências que

podem ser modelizadas e até previsíveis: este é o elemento chave para o sucesso e

justificativa do funcionamento dos índices de análise técnica financeira.

Uma outra situação prática é para ativos com pouca liquidez. Digamos que o

valor deste ativo esteja cotado a 10 dólares. Se em uma semana somente um investidor

decide comprar 1 ação desta empresa por 20 dólares, haverá um crescimento de 100%

no valor deste ativo, o que de fato não reflete o real valor de mercado, pois com apenas

uma ação negociada o valor subiu 100%. Este cenário mostra uma situação em que o

preço foi inflado de forma irrealista, uma vez que o volume de negociação é baixo e

deveria ter sido levado em conta para qualquer análise técnica. Evidentemente, este é

um exemplo esdrúxulo que não aconteceria no mundo real, mas serve para mostrar como

diversos fatores devem ser levados em conta em uma análise técnica.

Em última instância, podemos considerar que os índices estão traduzindo o

comportamento do mercado. Interpretar os índices dão a chance para que um investidor

ganhe maior conhecimento sobre as prováveis decisões que o mercado tomará. Assim

sendo, é importante ter em mente que há eventos, como catástrofes, acidentes ou

atentados que têm forte influência no mercado financeiro, que nunca poderiam ser

previstos por pessoas ou sistemas de computador e não seriam refletidos por um índice.

Um outro fato importante a se levar em conta é que os índices de análise técnica

são amplamente difundidos e utilizados por investidores individuais e instituições

financeiras. Logo, haverá uma forte chance de que quando um índice indique um

movimento, várias pessoas tomarão a decisão de comprar/vender de acordo com a

8

indicação deste índice, acabando for confirmar, por retroalimentação, o que o índice

indicara.

A existência de dezenas de índices para análise técnica financeira pode deixar

um investidor confuso na hora de desenvolver estratégias: nenhum índice traduz da

forma mais precisa possível um único ativo financeiro. Isto porque nenhum deles é

completo o suficiente, e capaz de modelizar todos os aspectos possíveis. Por isso, a

combinação de diversos índices de diferentes categorias se faz tão interessante.

Poderíamos dizer que o objetivo deste projeto é encontrar a melhor combinação de

índices, proporcionando a maior chance possível de sucesso no mercado financeiro

utilizando a análise técnica.

Os índices de análise técnica financeira podem ser subdivididos e classificados

em quatro categorias:

Índices de tendência;

Índices de momento;

Índices de volatilidade;

Índices de volume.

Escolher e combinar índices pertencentes a apenas uma destas categorias, por

sua vez, pode ser perigoso, visto que pode ocorrer multicolinearidade [2].

A multicolinearidade consiste em um problema estatístico no qual variáveis

independentes entre si possuem relações lineares muito próximas. Poderíamos estar

dando grande importância a um determinado fator que compõe tais variáveis e que

aparece em diferentes índices. Caso este fator não exerça uma forte influência no mundo

real, estaríamos superestimando um comportamento inexistente ou fraco, por uso

repetido. Assim, um cuidado especial deve ser aplicado durante a escolha destes índices.

Assim, o mais indicado é que índices de categorias diferentes contribuam durante

a análise do comportamento de um ativo.

1. Índices de análise técnica em relação ao tempo

9

Os índices podem ser classificados em duas categorias, de acordo com a sua

posição no tempo: atrasados (lagging) ou adiantados (leading). Os índices atrasados

seguem o movimento do preço, enquanto que os índices adiantados o precedem.

Em geral os índices adiantados são considerados mais fortes em períodos sem

tendência definida (alta ou baixa) enquanto que os índices atrasados são mais úteis em

períodos de tendência definida [3].

2. Índices de tendência

A tendência do mercado financeiro está diretamente ligada à tendência de

movimento para uma das duas direções em particular: alta ou queda. Em termos

financeiros, o mercado é comumente classificado como possuindo tendências bearish

(de urso) ou bullish (de touro).

Os termos bearish e bullish são utilizados frequentemente para descrever tanto

tendências de mercado, quanto comportamento de setores como um todo. Estes estão

curiosamente ligados ao comportamento defensivo e de retirada característico de um

urso, abaixando sua cabeça – indicador de queda, e ao comportamento efervescido de

um touro, avançando e se sobrepondo – indicador de alta.

Figura 2.1 – Estátua Bulle & Bär em frente à bolsa de valores de Frankfurt,

Alemanha.

10

Uma tendência bullish é marcada por um período de alta de preços.

Geralmente, seu início é marcado por uma onda de pessimismo, onde a maioria dos

investidores se encontra em um estado bearish. Esse profundo pessimismo, por sua

vez, se torna esperança, que futuramente se traduz em uma alta dos preços com um

aumento no volume de compras. Será possível observar mais a frente que muitos

índices se baseiam nesta premissa.

Uma tendência bearish, por outro lado, é caracterizada por um período de

queda nos preços. Este provém de uma onda de medo e pessimismo, posterior a um

período de grande animação, ou bullish.

As tendências do mercado podem ser classificadas em três tipos:

Tendências seculares: tendências que permanecem por períodos muito

longos, com duração entre 5 e 25 anos, de pequenas tendências primárias;

Tendências primárias: tendências que tem duração de, em média, 1 ano

ou 2 anos;

Tendências secundárias: tendências que tem duração de algumas

semanas ou meses.

Os índices de análise técnica financeira de tendência, por sua vez, são os

indicadores mais fortes entre os existentes. Portanto, a identificação de uma tendência

é a parte mais importante de uma análise técnica de um ativo financeiro.

Estes indicadores, por outro lado, são considerados indicadores atrasados

(lagging), pois é necessário que uma tendência se estabeleça primeiro, para que possa

ser medida e identificada posteriormente. Na verdade, a ideia principal destes índices é

identificar a tendência em seu auge, por isso, estes funcionam melhor com tendências

fortes.

Assim, quanto mais fraca a tendência, é possível que multiplos sinais sejam

gerados pelos índices, que forneceriam diversas flags de troca. Por outro lado,

tendências fortes geram sinais únicos, que fornecem uma segurança maior ao

investidor.

3. Índices de volume

Os índices de volume foram criados com o principal objetivo de confirmar uma

tendência ou uma ação relativa ao preço de um ativo financeiro. Eles se baseiam no

princípio de que o volume de ações que movimenta o preço do ativo financeiro para

cima ou para baixo é capaz de medir a força com a qual uma tendência está se alastrando.

11

Um exemplo básico é o comparativo entre a quantidade de volume negociado

para a venda e a quantidade de volume negociado para a compra do ativo financeiro.

Em uma tendência bullish, é esperado que a quantidade de volume de compra prevaleça

sobre o volume de venda, por exemplo. Este é o indicador de um ativo financeiro

saudável. Do contrário, o índice de volume agiria como uma flag para os investidores,

sinalizando a existência de uma divergência entre a tendência e o comportamento de seu

volume.

O volume de negociações de um ativo financeiro também tem a capacidade de

fornecer, de forma geral, a disposição sobre uma mudança de preço do ativo: um volume

alto de negociações indica uma tendência de permanência do preço atual, o que se

traduziria em uma confirmação da tendência. Por outro lado, um volume baixo de

negociações pode ser traduzido como uma relutância de permanência do preço atual, o

que poderia significar que a mudança da tendência se encontra próxima.

É possível chegar a esta conclusão de forma lógica: quanto maior o volume de

negociações, mais pessoas estão dispostas a pagar o preço atual do ativo financeiro. Isso

significa que elas acreditam na tendência atual e, muito provavelmente, estão de acordo

com o seu preço. Por outro lado, um volume baixo indica poucas pessoas dispostas a

pagar o preço atual: ou ele estaria de desacordo com a tendência, ou inadequado.

Dessa forma, conforme o preço move-se de acordo com a tendência, é esperado

que o volume aumente. O fim de uma tendência poderia ser constatado a partir do

momento que uma divergência entre volume e preço é constatada: o período a partir do

qual as pessoas não mais estão dispostas a pagar o preço da tendência pelo ativo

financeiro.

Isso significa que estes índices teriam a habilidade de, além de confirmar

tendências, detectar seu fim de forma antecipada, antes que estas se manifestem de

forma direta sobre os preços. Por este motivo, muitos investidores acreditam que o

volume de um ativo financeiro antecede seu preço.

Uma das grandes vantagens dos índices de volume é que estes levam em conta

tanto o volume quanto o preço do ativo, enquanto a maioria dos demais índices considera

apenas o preço. Por outro lado, o volume pode distorcer sinais, especialmente quando

está muito baixo. Por isso a importância de combiná-lo com outros índices.

12

4. Índices de momento

De forma genérica, este tipo de índice mede a taxa de mudança do valor de um

ativo: Quanto mais rápido o preço variar, maior será o momento (comparável ao

conceito de aceleração da Mecânica Clássica). Se não existe uma tendência definida, o

momento tende a desacelerar – o que nem sempre indicará um sinal de que há uma

tendência bearish, apesar da “desaceleração” da variação de preço.

Os mais populares índices de momento são considerados adiantados (leading).

Estes índices são osciladores, pois oscilam em torno de uma linha central

(centerline) ou entre duas bandas de valores: seriam os osciladores centralizados e os

osciladores de banda.

Os osciladores centralizados são melhores para analisar a direção do momento

do preço. Já os osciladores de banda de valores são melhores quando usados para indicar

se um ativo está sobrecomprado (valorizados) ou sobrevendido (desvalorizados).

Os osciladores centralizados indicam a direção do momento do preço a partir da

sua posição em relação à linha central: quando estão acima do centro, indicam que o

momento é positivo (bullish), ou seja, está ocorrendo uma “aceleração” no valor do

ativo, enquanto que abaixo da linha central indicam que o momento é negativo (bearish),

ou seja, está ocorrendo uma “desaceleração” no valor do ativo.

Já os osciladores de banda funcionam da seguinte forma: quando o indicador se

aproxima da banda superior, o ativo estaria sobrecomprado, enquanto quando se

aproxima da banda inferior, estaria sobrevendido. Desta forma, o melhor momento para

compra de um ativo seria sobre a indicação de desvalorização – o preço teria atingido o

seu patamar mínimo, e estaria próximo de aumentar.

Entretanto, vale lembrar que não necessariamente uma indicação de saturação

verificada em índices de oscilação de banda implica em uma estagnação ou

desvalorização do preço de um ativo: confiar cegamente nestes índices poderia levar o

investidor a decisões errôneas. Por isso, novamente, a recomendação de utilizar os

índices sempre em conjunto.

13

Conclui-se que o índice de momento pode indicar uma tendência (osciladores

centralizados) ou a possibilidade do fim desta tendência (osciladores de banda).

5. Índices de volatilidade

A volatilidade no mercado financeiro pode ser entendida como o grau de

variação de uma série de preços de um ativo ao longo do tempo e pode ser representada

pelo desvio padrão. Quando grandes variações de preço ocorrerem sobre o ativo, mais

volátil ele será e o desvio padrão, neste caso, será alto.

Os índices de volatilidade indicam, basicamente, a variação do preço atual do

ativo em comparação com o histórico dos preços sobre um período passado analisado.

Ou seja, eles monitoram mudanças de preço a procura de desvios considerados muito

altos: se o preço atual está fora do desvio padrão quando comparado à média histórica,

este pode ser um sinal de supervalorização ou desvalorização do ativo financeiro.

Assim, estes funcionam de forma análoga aos índices de momento, sinalizando

ao investidor desequilíbrios no mercado, informando sinais de desvalorização ou

supervalorização do ativo.

Deve-se lembrar que em alguns casos valores de preços que caem fora do desvio

padrão podem indicar que houve de fato uma mudança no mercado ou no ativo que

justifique esta variação. Por exemplo, se houve a descoberta de um caso de fraude

contábil em uma empresa ou um desastre natural que a envolva diretamente, o valor de

mercado da mesma de fato será abruptamente diminuído, o que traria como reflexo

direto a perda de valor de sua ação no mercado financeiro.

Ainda, em casos em que a liquidez do ativo é baixa, podem-se esperar eventuais

variações fora do desvio padrão, pois alguns investidores com interesses particulares

podem estar praticando a compra ou venda de acordo com suas necessidades isoladas.

Por exemplo, um indivíduo que precise de dinheiro imediatamente para saldar uma

dívida que não conhecia até recentemente pode decidir vender suas ações no mercado

imediatamente, por qualquer valor, para conseguir liquidez.

14

Novamente o uso de índices de análise técnica de outras categorias é útil para

evitar falsas indicações de compra ou venda.

6. Análise Fundamentalista

A análise fundamentalista busca a identificação do preço justo ou correto que o

ativo financeiro de uma empresa deveria ter. Este seria o valor “real”, ou potencial que

a empresa possui. A partir desta identificação, avalia-se se a ação encontra-se

supervalorizada ou desvalorizada no mercado de ações.

Para o cálculo do preço correto da ação, os analistas levam em consideração

fatores macro e microeconômicos, externos e internos à empresa, tais como o câmbio,

o PIB do país em consideração, a inflação, o conselho administrativo da empresa e a

saúde financeira da empresa, por exemplo. É uma análise minuciosa que chega aos

fundamentos da companhia. Por isso a denominação: análise fundamentalista.

Os indicadores da análise fundamentalista, por sua vez, levam em consideração

o lucro, o valor patrimonial da empresa, a sua dívida, investimentos realizados, entre

outros fatores.

7. Smart Money vs. Dumb Money

Investidores do mercado financeiro são carinhosamente apelidados por duas

diferentes terminologias: Smart Money (Dinheiro esperto) e Dumb Money (Dinheiro

tolo). Apesar do nome, estes termos não estão necessariamente ligados à inteligência e

engenhosidade do investidor.

Smart Money refere-se à experts do mercado financeiro. Investidores de dentro

da indústria, cuja profissão e ofício é a investigação das tendências e aplicação do

dinheiro diariamente: são pessoas que estudam intensamente políticas governamentais,

o mercado, a saúde da empresa, sua estimativa de crescimento de lucro, etc.

Dumb Money faz referência ao público em geral. Não necessariamente pessoas

leigas e alienadas ao assunto: Dumb Money refere-se a pessoas que não se dedicam

exaustivamente ao estudo do mercado. Muito provavelmente, você, leitor deste texto, é

um Dumb Money.

15

Ambos estes tipos de investidores estão extremamente atrelados entre si, visto

que um depende da existência do outro. Poder-se-ia dizer que o mercado, em grosso

modo, gira em torno de um ciclo envolvendo ambas as partes:

Figura 2.2 – Dumb Money e Smart Money

Percebe-se que o Smart Money se encontra sempre à frente do Dumb Money,

ditando as tendências de mercado.

2.2 A técnica de análise de mercado Candlestick

Os candlesticks, ou velas, foram inicialmente utilizados no Japão durante o

século XVIII. Inventados por Homma Munehisa, eles têm como objetivo representar de

forma gráfica os preços de uma commodity ou ativo financeiro.

Mercado entra em tendência Bullish

Dumb Money nota a tendência bullish infligida

por Smart Money e tende a negociar

ações

Smart Money vende suas ações

para Dumb Money, retirando

seu lucro

Mercado entra em tendência Bearish

Dumb Money percebe queda no

preço e vende suas ações,

intensificando o efeito Bearish

Smart Money negocia preços e

participa da maior parte das compras

de ações

Mercado Bullish

Mercado Bearish

Normalmente, quando o mercado

atinge o menor patamar,

Smart Money compra e

Dumb Money vende

O poder de

compra atinge seu pico

16

Representando mais comumente o período de um dia, cada candlestick é uma

mescla de gráfico em barra e em linha, representando quatro informações a respeito do

ativo: valor máximo alcançado no dia, valor mínimo alcançado no dia, valor de abertura

e valor de fechamento.

Os candlesticks são compostos por uma barra, ou o corpo da vela, que para

melhor representar tendências bullish ou bearish são preenchidos de verde ou vermelho,

respectivamente. Eles também são constituídos por uma sombra superior e inferior,

correspondente ao pavio da vela.

Para melhor compreender sua representação gráfica, imagine um eixo de

ordenada, correspondente ao preço do ativo financeiro. Para plotar a vela de um dia,

distribua sobre este eixo os valores máximo, mínimo, de abertura e de fechamento do

ativo financeiro. O intervalo correspondente aos preços entre os valores de abertura e

valor de fechamento estarão dentro do corpo da vela. Enquanto os valores máximo e

mínimo estarão nos extremos do seu pavio.

Quando o valor de abertura for superior ao de fechamento, o corpo da vela deve

ser preenchido por verde, indicando um fechamento bullish. No caso contrário, o corpo

da vela deve ser preenchido por vermelho, indicando um fechamento bearish.

Figura 2.3 – Candlesticks

Tempo

Dia 2 Dia 1

Valor máximo do dia A

Valor de abertura do dia A

Valor máximo do dia B

Valor de fechamento do dia A

Valor de fechamento do dia B

Valor de abertura do dia B

Valor mínimo do dia B

Valor mínimo do dia A

Valor

Bearish Bullish

17

Mais à frente, veremos que diversos índices de análise técnica financeira têm o

candlestick como uma ferramenta fundamental para o seu funcionamento.

2.3 Índice Parabolic Stop and Reverse (SAR)

O Parabolic SAR, ou SAR parabólico, recebe este nome pois, como será visto

mais adiante, pode adquirir uma forma muito similar à de uma parábola quando plotado

sobre o gráfico.

O índice SAR parabólico é um índice de análise técnica financeira de tendência.

Ou seja, esperamos que ele nos indique se o ativo financeiro deverá permanecer com a

tendência atual, ou quando há uma reversão de tendência.

Nota: para facilitar o entendimento, aqui uma vela representará o período de um

dia de negociação do ativo.

Nota 2: o autor do índice, J. Welles Wilder, Jr. define tendência longa (long

trade) e tendência curta (short trade) para as tendências bullish e bearish,

respectivamente. Assim, quando um conjunto de velas (dias) está em tendência bullish,

dizemos que o SAR está em “tendência longa” e quando o conjunto de velas (dias) está

em tendência bearish, dizemos que o SAR está em “tendência curta”.

O nome SAR refere-se a Stop and Reverse, ou seja, “Pare e inverta”, e tem

relação direta com o momento em que uma mudança de tendência é atingida. Este

momento se dá quando o valor do índice toca ou ultrapassa a vela do dia. Se o SAR

estiver em “tendência longa” (bullish), haverá uma reversão quando o SAR calculado

tiver valor maior do que o valor mínimo do dia em questão. De forma análoga, quando

o SAR estiver em “tendência curta” (bearish), haverá uma reversão quando o SAR

calculado tiver valor menor do que o valor máximo do dia em questão.

Por exemplo, digamos que o mínimo de um dia de negociação seja 20 dólares e

o SAR calculado seja 21. Se tivermos SAR em “tendência longa”, temos a indicação de

que esta tendência chegou ao fim e temos uma reversão.

Em períodos de “tendência longa”, o SAR nunca irá decrementar e em períodos

de “tendência curta”, o SAR nunca irá incrementar. Como notado no parágrafo anterior,

o momento de reversão de tendência deve ser observado o tempo todo.

18

O SAR depende diretamente de duas variáveis: o preço e o tempo. O preço define

o ponto extremo do período. Em períodos de “tendência longa”, o ponto extremo (“EP”

– Extreme Point) será o maior valor de preço encontrado e em períodos de “tendência

curta”, o ponto extremo será o menor valor de preço encontrado.

A fórmula geral para cálculo do SAR é:

𝑆𝐴𝑅𝑛+1 = 𝑆𝐴𝑅𝑛 + 𝛼(𝐸𝑃 − 𝑆𝐴𝑅𝑛) (2.1)

Onde EP é o ponto extremo e 𝛼 é um fator de aceleração.

O fator de aceleração é incrementado toda vez que um novo EP é encontrado.

Assim sendo, ao encontrar um novo pico de valor, a curvatura do SAR aumenta, fazendo

com que a chance do SAR encontre o ponto de reversão aumente, já que a curva do SAR

estará com uma inclinação maior. Em outras palavras, quando um novo pico é

encontrado, a chance de reversão de tendência é aumentada. É como se a curva do SAR

buscasse tocar a curva dos valores e essa busca é facilitada toda vez que um novo pico

de valores for encontrado. Isto faz sentido, pois a chance de uma reversão ocorrer

aumenta, já que a tendência natural é a de que as vendas do ativo diminuam quando o

seu valor aumenta ou as compras do ativo aumentem quando o seu valor diminui.

O fator de aceleração é limitado a um valor máximo. Isso faz sentido já que se

esse fator pudesse aumentar indefinidamente, a inclinação da curva do SAR poderia

atingir um grau de inclinação muito forte – em um caso extremo, com inclinação

vertical. O fator de aceleração começa em 0,02, é incrementado em 0,02 a cada novo

pico encontrado e pode atingir o valor máximo de 0,2. Estes valores são empíricos e

foram definidos pelo inventor do índice como sendo o de melhor efeito, de acordo com

experiência prática.

As regras de implementação do SAR parabólico funcionam da seguinte forma:

1. Inicialmente não sabemos se a tendência do ativo é bearish ou bullish.

Assume-se que a tendência inicial é bullish, ou seja, o SAR iniciará com

“tendência longa”. Ainda, o primeiro SAR calculado será o menor valor

atingido em 3 dias (“tendência longa”). Assim, o primeiro SAR calculado

será somente no terceiro dia, já que precisamos de ao menos 3 dias de

19

informação. Logo, para o primeiro e segundo dia de cotações não é

possível fazer o cálculo do SAR.

2. A partir do quarto dia, a fórmula geral do SAR é utilizada.

3. Quando uma reversão de tendência for encontrada (o SAR calculado é

maior do que o mínimo do dia para “tendência longa” ou o SAR

calculado é menor do que o máximo do dia, para “tendência curta”) o

SAR do dia será o valor mínimo antes da reversão - caso esteja entrando

em uma “tendência longa”, ou o valor máximo antes da reversão - caso

esteja entrando em uma “tendência curta”.

4. O autor do índice indica que se o SAR calculado para o dia penetrar na

vela do dia anterior, ou de dois dias antes, o ponto extremo entre estes

dois dias será utilizado como valor do SAR. Assim, o valor do SAR será

ajustado, afastando-se um pouco da vela do dia. O autor não explica o

motivo pelo qual este ajuste é feito, mas aparentemente este artifício é

utilizado para dar uma sobrevida à tendência em curso, em função de

uma possível distorção dos preços dos dois dias anteriores – os preços

podem ter tido um mínimo muito baixo, em “tendência longa” ou muito

altos, em “tendência curta”.

Para um ativo com diversos novos EPs, a curva de SAR teria o aspecto de uma

parábola convexa sob a curva de preço para períodos de “tendência longa”, e tenderia a

uma reta de coeficiente positivo a partir do momento que o coeficiente de aceleração do

SAR se estabilizasse em 0.2. Por outro lado, a curva de SAR teria o aspecto de uma

parábola côncava sobre a curva de preços para “tendências curtas”, e tenderia a uma reta

de coeficiente negativo a partir do momento que o coeficiente de aceleração do SAR se

estabilizasse em 0.2.

Um problema de utilização do SAR é verificado quando o preço do ativo está

sem uma tendência definida. O SAR neste tipo de situação terá mudanças frequentes de

“longo” para “curto” e/ou apresentará gráficos com curvaturas pouco significativas. Por

esse motivo, é importante que outros índices que indiquem a força de tendência sejam

utilizados em conjunto com o SAR. Por exemplo, o ADX (Average Directional

Movement) é usualmente utilizado juntamente com o SAR, permitindo um horizonte

adicional de análise em momentos de indefinição de tendência: a força da tendência.

20

Futuramente, veremos que os eventos considerados para análise relacionados a

este índice serão as mudanças de tendência short (bearish) para long (bullish) e de

tendência long para short [4].

2.4 Índice Average Directional Movement (ADX)

O ADX (Average Directional Movement) é um indicador de momento

desenvolvido por J. Welles Wilder Jr., que também reflete a sua força. Assim, seu uso é

interessante em conjunto com outros indicadores de tendência, uma vez que poderá

sustentar decisões através da confirmação da força da tendência. Por exemplo, o SAR é

um indicador de tendência que perde sua efetividade em momentos em que não há uma

tendência definida. A utilização do ADX em conjunto com o SAR trará mais precisão

nos cenários analisados.

Primeiramente, é necessário o entendimento de três conceitos importantes para

o ADX:

+DM (Positive Directional Movement ou Movimento Direcional

Positivo);

-DM (Negative Directional Movement ou Movimento Direcional

Negativo);

TR (True Range ou Intervalo Real).

O +DM indica a quantidade de movimento positivo do valor de um ativo,

enquanto que o –DM indica a quantidade de movimento negativo do valor de um ativo.

A quantidade de movimento positiva é medida pela diferença entre o valor máximo do

dia analisado e o valor máximo do dia anterior e, de forma análoga, a quantidade de

movimento negativa é medida pela diferença absoluta entre o valor mínimo do dia

analisado e o menor valor do dia anterior. Caso o maior valor entre os dois seja o

positivo, -DM será nulo para aquele dia analisado. De forma análoga, caso o maior valor

entre os dois seja o negativo, +DM será nulo para o dia analisado. Caso o dia analisado

tenha o valor máximo menor do que o valor máximo do dia anterior e o valor mínimo

maior do que o valor mínimo do dia anterior, ambos +DM e –DM terão valor nulo.

21

O TR estende o entendimento de uma vela para um determinado dia analisado.

O intervalo de valores definido por uma vela compreende a diferença entre os valores

máximo e mínimo de um dia. O TR leva em conta que o valor de fechamento do dia

anterior poderá ter sido diferente do valor de abertura do dia analisado. É possível

entender que o primeiro valor de um determinado dia seria de fato o valor de fechamento

do dia anterior.

Assim sendo, o TR será o maior valor entre as três opções a seguir:

A diferença entre valores máximo e mínimo do dia analisado;

O valor absoluto da diferença entre o valor máximo do dia analisado e o

fechamento do dia anterior;

O valor absoluto da diferença entre o valor mínimo do dia analisado e o

fechamento do dia anterior.

Figura 2.4 – Exemplo de cálculo de TR

Com os três conceitos (+DM, -DM e TR) conhecidos é possível avançar no

cálculo do ADX. Alguns índices são calculados para isso:

+DI (Positive Directional Index ou Índide Direcional Positivo) que é a razão

entre o +DM e o TR. Ou seja, +DI indica o quanto a movimentação positiva de preço

representa em relação ao valor do intervalo real de valor naquele dia.

Menor valor

do dia atual

Valor do

fechamento

do dia anterior

TR

Valor do

fechamento

do dia anterior

Maior valor

do dia atual

TR

22

-DI (Negative Directional Index ou Índice Direcional Negativo) que é a razão

entre o -DM e o TR. Ou seja, -DI indica o quanto a movimentação negativa de preço

representa em relação ao valor do intervalo de valor naquele dia.

+DI =+DM

TR

−DI =−DM

TR

(2.2)

Comparar o movimento direcional em relação ao intervalo de variação do valor

de um dia permite que se tenha um valor percentual (índice) da variação do movimento,

o permite a comparação entre todos os dias analisados. A comparação de valores

absolutos (DM) traria imprecisão na análise.

Nota: os índices -DI e +DI acabam não tendo muito efeito prático, pois não são

usados no cálculo do ADX; como veremos mais à frente, o índice ADX acaba se

utilizando de dois outros índices que têm conceito semelhante, mas que usa a soma de

14 dias para os movimentos direcionais (+DM e –DM) e intervalos reais (TR). Estes

índices serão explicados adiante e são definidos como −𝐷𝐼14 e +𝐷𝐼14.

Nota 2: períodos de 14 dias são comumente utilizados para cálculo de índices,

apesar de não ser um número múltiplo de 5 (dias úteis de uma semana) ou proporcional

a qualquer medição de dias comerciais (dias úteis) utilizada em calendários. Como

referência, vale citar que um outro número bastante utilizado por analistas técnicos é o

9 [5]. J. Welles Wilder, Jr., o inventor do índice ADX também cita o número 14 como

sendo metade do valor do ciclo, apesar de não aprofundar esta convenção. Há outras

referências na literatura que explora o tema: nos anos 1700, as bolsas de valores de

Londres e Amsterdam negociavam suas ações entre si e o tempo necessário para que

uma negociação fosse liquidada era de 14 dias, o tempo requerido para que o certificado

da ação ou dinheiro viajasse entre as cidades, o que acabou se tornando o período de

liquidação padrão por vários anos, o que veio a mudar com a introdução do uso de

computadores [6].

O próximo passo é o cálculo da soma dos +DM, -DM e TR para 14 dias. A fim

de suavizar a curva que representará os índices, uma técnica de acumulação é utilizada.

23

Esta técnica consiste em utilizar o valor da soma do dia anterior subtraindo a média dos

14 dias deste valor e em seguida somando-se o valor do dia atual. Assim:

𝑆𝑜𝑚𝑎 𝑠𝑢𝑎𝑣𝑖𝑧𝑎𝑑𝑎 1 = 𝑉𝑎𝑙𝑜𝑟1 … + 𝑉𝑎𝑙𝑜𝑟1−14

𝑆𝑜𝑚𝑎 𝑠𝑢𝑎𝑣𝑖𝑧𝑎𝑑𝑎𝑛+1 = 𝑆𝑜𝑚𝑎 𝑠𝑢𝑎𝑣𝑖𝑧𝑎𝑑𝑎𝑛 −𝑆𝑜𝑚𝑎 𝑠𝑢𝑎𝑣𝑖𝑧𝑎𝑑𝑎𝑛

14+ 𝑉𝑎𝑙𝑜𝑟𝑛+1

(2.3)

Onde n corresponde ao dia analisado.

O gráfico abaixo mostra um exemplo, onde uma soma comum é comparada a

uma soma suavizada, para 14 dias:

Figura 2.5 – Comparação entre a soma comum e a soma suavizada

Por exemplo, a soma suavizada de TR para 14 períodos no dia 20, será:

𝑆𝑜𝑚𝑎 𝑠𝑢𝑎𝑣𝑖𝑧𝑎𝑑𝑎 𝑇𝑅20 = 𝑆𝑜𝑚𝑎 𝑠𝑢𝑎𝑣𝑖𝑧𝑎𝑑𝑎 𝑇𝑅 19 −

𝑆𝑜𝑚𝑎 𝑠𝑢𝑎𝑣𝑖𝑧𝑎𝑑𝑎 𝑇𝑅19

14

+𝑉𝑎𝑙𝑜𝑟 𝑑𝑜 𝑇𝑅20

(2.4)

0.00

2.00

4.00

6.00

8.00

10.00

12.00

14.00

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49

Comparação entre soma comum e soma

suavizada

Soma suavizada Soma comum

24

Nota: para o dia 14, a soma não poderá ser suavizada. Portanto, será a soma

simples dos 14 dias.

Com +𝐷𝑀14 - as somas suavizadas de 14 dias dos valores de +DM, −𝐷𝑀14 -

as somas suavizadas de 14 dias dos valores de -DM, e 𝑇𝑅14 - as somas suavizadas de 14

dias dos valores de TR, podemos calcular os índices −𝐷𝐼14 e +𝐷𝐼14, que representam,

respectivamente, a razão entre o movimento direcional positivo de 14 dias em relação

ao intervalo real de 14 dias e a razão entre o movimento direcional negativo de 14 dias

em relação ao intervalo real de 14 dias.

+𝐷𝐼14 =+𝐷𝑀14

𝑇𝑅14

−𝐷𝐼14 =−𝐷𝑀14

𝑇𝑅14

(2.5)

A diferença entre os índices −𝐷𝐼14 e +𝐷𝐼14, chamada de True Directional

Movement (Movimento Direcional Real) determina o quanto direcional o movimento é.

Por exemplo, se no período de 14 dias tivéssemos +DM subindo para todos os dias, +DI

teria um valor alto e –DI tenderia a zero, criando uma grande diferença. Já se os preços

estivem sem uma direção bem definida, a diferença entre +DI e –DI seria pequena.

A soma dos índices −𝐷𝐼14 e +𝐷𝐼14 representa a quantidade total do

último intervalo de 14 dias que se moveu de forma direcional. Por exemplo, se +DI for

de 14% (ou seja, 20% do Intervalo Real dos 14 últimos dias foi de alta) e se –DI for de

36% (ou seja, 36% do Intervalo Real dos 14 últimos dias foi de baixa), temos a

informação de que 56% do intervalo foi direcional.

Neste ponto é possível definir mais um índice, o DX (Direcional Movement

Index ou Índice de Movimento Direcional), que é a razão entre o True Directional

Movement e a quantidade total de movimento. Ou seja, DX representa o quanto o preço

se movimentou em relação à movimentação total do preço.

O valor do DX para um determinado dia é calculado da seguinte forma:

25

DX =+𝐷𝐼14 − −𝐷𝐼14

+𝐷𝐼14 + −𝐷𝐼14

(2.6)

Aqui, finalmente, temos condição de determinar o ADX (Average Directional

Movement Index) que, como o próprio nome indica, é a média do Directional Movement

Index (DX). Esta média utiliza novamente o período de 14 dias e também usa técnicas

de suavização - neste caso, média móvel. Note-se que são necessários 28 dias para que

o primeiro DX possa ser calculado, pois são necessários 14 dias para o cálculo das somas

de +DM, -DM e TR e, em seguida, mais 14 dias para o cálculo da média de DX.

𝐴𝐷𝑋1 =

𝐷𝑋1

14

𝐴𝐷𝑋𝑛 =(𝐴𝐷𝑋𝑛−1 ∗ 13) + 𝐷𝑋𝑛

14

(2.7)

Concluímos que a força da direção do movimento se dá pela comparação entre

a quantidade de movimento em uma direção (subindo ou descendo, a que prevalecer

pela diferença entre os dois movimentos) em relação ao movimento total de movimento

– através da soma de movimentos, corrido em um período de 14 dias, sempre em relação

ao intervalo real de preço.

Uma observação importante em relação ao ADX é que o movimento direcional

(DM) despreza o valor de movimento na direção oposta. Em casos onde o movimento

positivo for infimamente superior ao movimento negativo, por exemplo, o segundo será

ignorado no cálculo final, mesmo sendo praticamente igual ao seu movimento oposto.

Existem, portanto, situações em que podem ocorrer distorções nos conceitos aplicados.

De modo geral, o ADX aumenta quando a tendência está forte – Maior a força à

direção do movimento, e diminui quando a tendência está fraca – Menor a força à

direção do movimento. Desta forma, considera-se que, quando o ADX se encontra entre

0 e 25, pode-se ignorar a tendência, enquanto valores de ADX acima de 80 indicam uma

forte tendência. Os valores 25 e 80, são considerados, portanto, triggers para a

ocorrência de eventos relacionados ao índice ADX.

26

2.5 Índice Directional Movement Index (DMI)

A razão entre o movimento direcional positivo de 14 dias em relação ao intervalo

real de 14 dias e a razão entre o movimento direcional negativo de 14 dias em relação

ao intervalo real de 14 dias, como observado na sessão ADX, representam o índice

denominado DMI, ou Directional Movement Index (Índice de movimento direcional).

É interessante observar que, por constituir-se de uma razão, este índice

representa uma porcentagem, e estará sempre entre 0 e 100. Desta forma, o cálculo do

índice é o seguinte:

DMI+ = 100 ×+𝐷𝑀14

𝑇𝑅14

DMI− = 100 ×−𝐷𝑀14

𝑇𝑅14

(2.8)

Quando DMI+ encontra-se acima do DMI-, o mercado encontra-se sobre uma

tendência bullish. De forma análoga, quando DMI- encontra-se acima do DMI+, o

mercado encontra-se sobre uma tendência bearish. Ambos estes casos serão

considerados eventos para a análise dos valores das ações pelo programa.

2.6 Índice Moving Average Convergence Divergence (MACD)

O MACD (Moving Average Convergence Divergence) é um índice inventado

nos anos 70 por Gerald Appel, de tendência lagging (atrasado - uma vez que se baseia

em médias móveis, informação já passada). Para seu cálculo, são utilizadas duas médias

móveis de preços. As duas médias móveis são comparadas a fim de se identificar

divergências e convergências de comportamento. Estas divergências seriam capazes de

detectar mudanças na força, direção, momento e duração de uma tendência.

Uma média móvel é simplesmente a média de valores para cada um dos dias

analisados, considerando n dias anteriores. A média é dita móvel porque a faixa de

valores utilizada para o cálculo do valor médio move-se ao longo do tempo, como uma

27

janela deslizante. Por exemplo, a média móvel simples de 14 dias para um determinado

dia analisado será a soma dos últimos 14 valores divididos por 14.

A média móvel é interessante pois permite comparar as curvas de valores de um

ativo com a média de valores imediatamente anteriores. Se o valor do ativo está acima

da média móvel, indica uma valorização naquele dia maior do que a média dos n dias

anteriores. Médias móveis com períodos maiores devem ser utilizadas para comparação

com períodos mais longos. Por exemplo, se usamos uma média móvel de 200 dias

estamos comparando o valor atual do ativo com a média de um prazo longo, o que tende

a ser interessante para investimentos em que há uma chance de valorização a longo

prazo. O uso de médias móveis de curto prazo é interessante para visualização

movimentos recentes nos preços e podem ser interessantes caso o investidor queira

executar movimentos de compra e venda em curtos prazos.

As médias móveis podem ter algumas variações de tipos, sendo as mais

comumente utilizadas para análise gráfica as médias móveis simples (SMA – Simple

Moving Average) e as médias móveis exponenciais (EMA – Exponential Moving

Average).

A SMA tem a seguinte fórmula:

𝑆𝑀𝐴 =

(𝑝𝑡 + 𝑝𝑡−1 + … + 𝑝𝑡−(𝑛−1))

𝑛

(2.9)

Como podemos ver, a SMA é a simples soma de valores 𝑝𝑡 de n períodos divido

pelo número de períodos.

A EMA tem a seguinte fórmula:

𝐸𝑀𝐴1 = 𝑆𝑀𝐴1−n

𝐸𝑀𝐴𝑡 = 𝛼 ∗ 𝑝𝑡 + (1 − 𝛼) ∗ 𝐸𝑀𝐴𝑡−1, 𝑡 > 1

(2.10)

28

𝛼 =2

𝑛 + 1

O coeficiente 𝛼 representa o grau de peso de diminuição, que varia entre 0 e 1.

Logo, um 𝛼 maior desconta valores mais antigos de forma mais acentuada. 𝑝𝑡 é o valor

no tempo t.

O primeiro valor de EMA pode ser simplesmente o primeiro valor ou uma média

simples de n valores.

O índice MACD utiliza-se de três médias móveis exponenciais (EMA):

Uma EMA dos valores de fechamento, de 26 dias;

Uma EMA dos valores de fechamento, de 12 dias;

Uma EMA dos valores de MACD, de 9 dias.

Nota: o período de 12 dias foi escolhido por representar duas semanas de

negociação (negociações ocorriam também nos sábados; a semana útil costumava ser de

6 dias). Já a média móvel com 26 dias estaria ligada a um mês de negociações (30 dias

menos os 4 domingos). Já os 9 dias foram escolhidos por representarem 1 semana e

meia.

O índice MACD utiliza 3 séries de informação:

A linha de MACD propriamente dita: calculada pela diferença entre a

EMA rápida (período curto, 12 dias) e a EMA lenta (período longo, 26

dias);

A linha de sinal, que é a média móvel do MACD em um período de 9

dias;

A linha de divergência, que é a diferença entre o MACD e a linha de

sinal.

29

A diferença entre as EMAs de 12 e 26 dias pode revelar mudança em tendência

do preço. A EMA rápida responde mais rapidamente a mudanças de preços enquanto

que a EMA mais lenta terá mudanças mais suaves. Se as duas curvas têm

comportamento semelhante, significa que temos o período mais recente com

comportamento semelhante a períodos mais longos (estabilidade de preços e

manutenção da tendência). Já quando a curva com preços mais recentes gera uma

diferença em relação à curva de preços de maior prazo, significa que os preços

recentemente ganharam um novo comportamento em termos de valor.

Vale a seguinte análise rápida para o MACD:

Quando o MACD está em zero, a EMA do mês tem o valor bem próximo

da EMA da última semana e meia;

Quando O MACD acima de zero, a EMA da última semana e meia está

maior do que a EMA do mês (recentes altas foram experimentadas);

Quando O MACD está abaixo de zero, a EMA da última semana e meia

está menor do que a EMA do mês (recentes baixas foram

experimentadas).

Por fim, o uso da EMA do MACD permite visualizar uma eventual mudança da

tendência com uma reação rápida, já que os mais novos valores do MACD ganham

maior peso no cálculo da EMA. Conclusivamente, de forma mais direta, quando o

MACD cruza a sua EMA, há uma indicação de mudança de tendência. A diferença entre

estes dois valores, a divergência, portanto, quando perto ou igual a zero indica possível

reversão de tendência; divergência negativa indica que a tendência é negativa (bearish)

e divergência positiva indica que a tendência é positiva (bullish).

Assim, momentos em que o MACD cruzar o sinal ou zero, serão considerados

eventos para a análise realizada no programa.

2.7 Índice Estocástico

30

O termo estocástico é usado de forma genérica para descrever eventos de

natureza imprevisível, influenciados por variáveis randômicas. Na teoria da

probabilidade, um sistema puramente estocástico é aquele cujo estado é determinado

randomicamente, contendo um padrão que pode ser analisado estatisticamente, mas não

pode ser predito com precisão. Assim, este sistema pode ser classificado como não-

determinístico (ou randômicos) de modo que os eventos subsequentes são determinados

de forma probabilística.

No campo de análise técnica, o índice chamado Oscilador Estocástico foi

desenvolvido nos anos 1950 por George Lane e podemos afirmar que a teoria estatística

que define um evento estocástico é aplicável no mercado financeiro: o preço de um ativo

é influenciado por variáveis randômicas, o que o torna imprevisível. Trata-se de um

indicador de momento, em forma de oscilador, cuja ideia básica é comparar o preço

atual com a sua variação ao longo do tempo [7].

De acordo com o autor do índice, o oscilador estocástico “é baseado na

observação de que conforme os preços sobem, os preços de fechamento tendem a ficar

mais perto do valor máximo da faixa de preço. De forma análoga, em tendências de

baixa, o preço de fechamento tende a ficar mais próximo do mínimo da faixa de preço.

Duas linhas são usadas no processo Estocástico – a linha %K e a linha %D. A linha %D

é a mais importante e é a que fornece os sinais mais importante”.

Nota: as letras K e D não têm qualquer significado; de acordo com o autor, foram

escolhidas letras para representar variáveis em suas análises e as que tiveram mais

sucesso acabaram sendo mantidas. "We had %A and %B - we went through the whole

alphabet twice, working on things. Then we discovered %K and then %D and the darn

thing worked. So, we quit the research and went into the pit every day and started

making a living" [8].

A fórmula do %K é:

%K = 100 ∗

(Preço − L5)

H5− L5

(2.11)

Onde: L5 é o menor valor verificado nos últimos 5 dias e H5 é o maior valor

verificado nos últimos 5 dias. O preço corresponde ao valor de fechamento do ativo.

31

É possível ver, através da fórmula que %K é a razão entre a distância do preço

com o menor valor e a distância entre o menor e o maior valor do período. Esta razão

tende a 1, conforme o preço sobe e de forma reversa, tende a 0 quando o preço desce.

Portanto, a ideia básica do autor do índice é confirmada na fórmula: os preços

tendem a ficar mais próximos do seu máximo em períodos de alta refletirá um %K perto

de 100%. Assim sendo, quando temos um %K subindo, podemos dizer que os preços,

segundo o autor, estão em tendência de alta, pois estão cada vez mais próximos do maior

valor período. Analogamente, quando %K está descendo, os preços estariam em

tendência de baixa, pois estão cada vez mais próximos do valor mínimo do período.

A formula do %D é:

%D = 100 ∗

(K1 + K2 + K3)

3

(2.12)

Onde: K1, K2 e K3 são os valores de %K dos três dias anteriores ao dia analisado.

Portanto, %D é a média móvel de 3 dias da curva %K.

O uso da média móvel é interessante pois permite comparar o valor do %K com

seus últimos períodos, indicando se o mesmo está ganhando ou perdendo vigor. Como

vemos, essa média móvel é de apenas 3 dias, o que indica que as reações de mudança

da tendência de %K precisam ser rápidas.

Para suavizar a curva %D, é também utilizado o conceito de Estocástico Lento,

que nada mais é do que a média móvel simples (SMA) do próprio %D.

É comum o uso de limites para identificar um preço muito valorizado

(sobrecomprado) ou desvalorizado (sobrevendido). Estes limites são em geral

configurados em 20% e 80%, já que o oscilador estocástico varia de 0% a 100%.

Portanto, é comum dizer que o ativo está sobrecomprado quando o estocástico está

acima de 80%, indicando provável mudança de tendência (de bullish para bearish), ou

que o ativo está sobrevendido quando o estocástico está abaixo de 20%, indicando

provável mudanças de tendência (de bearish para bullish).

Um detalhe importante a considerar também é a divergência entre picos. Quando

os picos de estocástico estão cada vez mais baixos e os picos de valor estão cada vez

32

mais altos (ou vice-versa), fica caracterizada uma divergência de informação, com

provável início de perda de força da tendência e provável reversão de tendência.

2.8 Índice de Bandas de Bollinger

As bandas de Bollinger são calculadas levando-se em conta dados de distribuição

estatística normal, utilizando-se os valores de fechamento da cotação do ativo no

período considerado (no estudo, o período utilizado foi um dia). Em outras palavras,

quando o valor de fechamento do dia está fora de um desvio padrão de 20 amostras,

tentamos entender o comportamento seguinte ao evento. A distribuição normal leva em

conta a média dos resultados de fechamento dos últimos dias (no caso, o valor utilizado

é de 20).

Ou seja, basicamente o que vemos quando um fechamento de um dia está fora

das bandas de Bollinger é que aquele valor está fora de um desvio padrão para os valores

de fechamento e que, na prática revela uma queda ou alta além do “esperado”, em função

da média dos últimos 20 dias. Ainda, poderíamos dizer que quando um valor de

fechamento está fora da banda de Bollinger, este valor está entre 30.8% dos valores da

amostra.

Figura 2.6 – Distribuição normal

σ 2σ

34.1% 34.1%

13.6% 13.6%

33

Nota: um desvio padrão contém aproximadamente 68.2% das amostras; dois

desvios padrões contêm aproximadamente 95.4% das amostras.

Levando-se em conta que o comportamento do valor de um ativo tem influência

de vários fatores externos randômicos, a variação de preços do ativo mais brusca, que o

faça cair fora de um desvio padrão, é algo totalmente aceitável do ponto de vista

estatístico. Mas levando em conta o efeito “manada” do mercado (todos tendem a fugir

na direção da fuga, sem necessariamente entender o que está de fato acontecendo), existe

uma chance considerável que o valor de um ativo fique sobrecomprado ou sobrevendido

quando a variação for muito grande. E esta grande variação poderia ser detectada pelo

posicionamento do valor do ativo fora da curva normal. O efeito “manada” pode ser

iniciado por um grande investidor que se desfez de sua posição, por exemplo, vendendo

uma grande quantidade de ações de uma determinada empresa. Vendo um volume alto

de venda acompanhado de queda (o valor tenderia a cair na situação descrita), outros

investidores poderiam interpretar que alguma informação nova negativa em relação à

empresa ou o ambiente onde a mesma opera está por se revelar, vendendo também seus

ativos, causando um efeito em cascata, desvalorizando o ativo de forma brusca.

O efeito “manada” pode ou não representar uma realidade em relação ao valor

do ativo. No exemplo citado, poderia de fato haver alguma notícia ruim a ser revelada

em relação à empresa, mas há sempre a chance de ser um investidor que resolveu captar

os lucros advindos da valorização das ações que possuía. Mas há a chance de que de

fato algo ruim tenha sido detectado e o grande investidor que iniciou o movimento esteja

se livrando do ativo antes que a notícia seja difundida.

O efeito “manada” acaba incentivando que o valor do ativo seja seguido de uma

correção a curtíssimo/curto prazo (depois de um período curto, aproxima-se um valor

mais condizente com o real). Isso porque existe a grande possibilidade que o ativo tenha

sido negociado em quantidades muito além do que de fato deveria ter sido. Por exemplo,

se uma ação de uma empresa está negociada a um valor de 10 e é este o valor que o

mercado entende como “justo” para aquela ação, haveria uma flutuação em torno deste

valor a curto e médio prazo, tendendo a se deslocar para mais ou para menos de acordo

com os eventos ocorridos ao longo do tempo. A longo prazo, o valor seguiria ao sabor

da saúda financeira da empresa e do ambiente onde ela opera.

34

Digamos que haja uma notícia relativa a esta empresa, onde haverá um

fechamento de mercado através de aumento de impostos de importação no país onde o

volume de vendas é considerável. Neste caso, haverá uma corrida de investidores para

se livrar das ações daquela empresa, pois entendem que a médio e longo prazo haverá

efeito negativo para os seus resultados, tomando decisões de venda. Além disso, é muito

possível que grandes investidores (como fundos de grandes bancos) já estivessem

acompanhando os desdobramentos das negociações em torno da nova política de

impostos daquele país e em certo momento, sabendo que haveria um desfecho

desfavorável àquela empresa, mesmo antes da oficialização das novas políticas, vendam

as ações (em grande volume), fazendo o preço cair consideravelmente, para por

exemplo, 8. Muitos outros investidores desaviados tenderiam a se desesperar e

venderiam também, causando mais desespero e mais vendas, fazendo com que o valor

atingido seja, por exemplo, de 7. Entretanto, alguns investidores (principalmente os que

visam lucro a curto prazo) entendem estes cenários de queda brusca e compram o ativo,

cessando a queda de valor e revertendo as perdas, fazendo o valor chegar novamente a

8 em alguns dias. Evidentemente, a longo prazo, a tendência é a de que a nova realidade

em torno da empresa seja refletida no valor real da ação, que pode ser por exemplo, de

6.

O valor estável de uma ação é determinado pela capacidade de geração de valor

(lucro ou dividendos para os acionistas) da empresa. De forma superficial, o valor de

uma empresa se dá pela capacidade de geração de lucro a longo prazo (cerca de 20 anos)

atualizados para o valor presente (cálculo conhecido como Net Present Value ou NPV).

Assim, uma empresa que tenha a capacidade de gerar 1000 unidades financeiras por

ano, com crescimento estimado de 10% ao ano, teria em 20 anos aproximadamente 57

mil unidades financeiras de lucro.

35

Tabela 2.1 – Exemplo de geração de lucro de uma empresa com crescimento de 10%

ao ano

Período Lucro

Ano 1 R$ 1.000,00

Ano 2 R$ 1.100,00

Ano 3 R$ 1.210,00

Ano 4 R$ 1.331,00

Ano 5 R$ 1.464,10

Ano 6 R$ 1.610,51

Ano 7 R$ 1.771,56

Ano 8 R$ 1.948,72

Ano 9 R$ 2.143,59

Ano 10 R$ 2.357,95

Ano 11 R$ 2.593,74

Ano 12 R$ 2.853,12

Ano 13 R$ 3.138,43

Ano 14 R$ 3.452,27

Ano 15 R$ 3.797,50

Ano 16 R$ 4.177,25

Ano 17 R$ 4.594,97

Ano 18 R$ 5.054,47

Ano 19 R$ 5.559,92

Ano 20 R$ 6.115,91

Soma R$ 57.275,00

Estes valores deveriam ser corridos para o valor presente, pois existem correções

financeiras relativas à inflação. Considerando, por exemplo, uma inflação de 1% ao

36

ano, teríamos algo como 50 mil unidades monetárias de lucro que a empresa tem a

capacidade de gerar ao longo de sua vida, em valores presentes.

Se, com um novo cenário detectado, a capacidade de crescimento desta empresa

caísse de 10% para 4% ao ano, por exemplo, o lucro total que esta empresa seria capaz

de gerar ao longo de sua vida cairia para cerca de 30 mil unidades financeiras (depois

da correção para o valor presente), o que representaria 40% menos lucro do que o

cenário anterior, mais benéfico. Isto justificaria o valor da ação não mais valer 10, mas

sim 6. Não podemos afirmar que a correlação de valor é tão é direta, mas a grosso modo,

teremos uma capacidade de pagamento de dividendos 40% menor e muitos investidores

desistiriam de possuir esta ação, vendendo-as e forçando a sua desvalorização.

Tabela 2.2 – Exemplo de geração de lucro de uma empresa com crescimento de 4%

ao ano

Período Lucro

Ano 1 R$ 1.000,00

Ano 2 R$ 1.050,00

Ano 3 R$ 1.102,50

Ano 4 R$ 1.157,63

Ano 5 R$ 1.215,51

Ano 6 R$ 1.276,28

Ano 7 R$ 1.340,10

Ano 8 R$ 1.407,10

Ano 9 R$ 1.477,46

Ano 10 R$ 1.551,33

Ano 11 R$ 1.628,89

Ano 12 R$ 1.710,34

Ano 13 R$ 1.795,86

Ano 14 R$ 1.885,65

Ano 15 R$ 1.979,93

37

Ano 16 R$ 2.078,93

Ano 17 R$ 2.182,87

Ano 18 R$ 2.292,02

Ano 19 R$ 2.406,62

Ano 20 R$ 2.526,95

Soma R$ 33.065,95

Conclui-se que o valor verificado em uma eventual variação brusca é impreciso

em relação ao valor que será atingido a médio e/ou a longo prazo. Ou seja, há uma

grande chance de que tenha ocorrido um exagero na variação de curtíssimo prazo e que

esta variação tende a se corrigir ainda no curtíssimo prazo.

1. Análise Empírica

Três bolsas (BOVESPA, NYSE e NASDAQ) tiveram o comportamento de

várias ações ao longo de 3 anos (2013, 2014 e 2015) analisado. As ações foram

escolhidas aleatoriamente para garantir que o comportamento médio fosse levado em

consideração. Ainda, os anos em questão têm momentos de tendência de alta e queda

nas 3 bolsas, o que torna o levantamento fundamentado em situações típicas nas bolsas

de valores.

A análise levou em conta dois comportamentos específicos:

O delta do percentual de vezes que a ação teve valorização e

desvalorização após um evento importante relacionado às bandas de

Bollinger, ao longo dos dias seguintes aos eventos; assim, foram

computadas quantas ações tiveram valorização/ desvalorização em

relação ao dia do evento, a cada dia, por 59 dias;

Percentual de valorização média em relação ao dia do evento, a cada dia,

por 59 dias, após um evento importante relacionado às bandas de

Bollinger.

A análise foi dividida em basicamente dois grupos de eventos:

38

Cotações que interagem com a banda superior de Bollinger;

Cotações que interagem com a banda inferior de Bollinger.

Para cada grupo de evento, foram levados em conta dois cenários de interação:

1. Quando a vela que representa uma cotação toca a banda de Bollinger;

Este evento é normalmente utilizado por investidores como um sinal de

que há sobrecompra/ sobrevenda do ativo, o que indicaria a possibilidade de

reversão, com desvalorização/ valorização a curto prazo.

A ressalva em relação à utilização deste método é a de que quando a vela

toca a banda de Bollinger, não necessariamente o valor de fechamento daquele

dia ficou fora das bandas, situação em que o fechamento ainda poderia recair

dentro de um desvio padrão. Entretanto, por este ser um método indicativo para

a análise das bandas de Bollinger amplamente difundido, torna-se interessante o

estudo do comportamento, a fim de verificar como tal fato estaria influenciando

o comportamento dos valores das ações.

Por exemplo, considere uma vela de tamanho considerável e verde – com

valor de fechamento do dia acima do valor de abertura – cujo pavio inferior toca

a banda inferior de Bollinger: neste caso, o valor de fechamento encontra-se

dentro das margens de um desvio padrão, o que, de acordo com a observação

acima, não deveria ser considerado para a análise. Uma das razões para a

importância da utilização do valor de fechamento para a análise é que, conforme

indicado pelo índice técnico Smart Money Index, os investidores com maior

capacidade de identificação da tendência (alta ou queda) tendem a negociar seus

ativos na parte final do dia. Assim, podemos considerar que a cotação do ativo

ao final do dia estaria mais fidedigna à sua real tendência de mercado.

2. Quando o fechamento da cotação do dia efetivamente ocorre fora da

banda de Bollinger.

Este evento não chega a ser explicitamente citado em discussões sobre o

uso da técnica relativa às bandas de Bollinger, pois leva em conta eventos em

que realmente o fechamento de um dia ficou fora de um desvio padrão para o

período analisado (20 dias de amostragem para o cálculo do desvio padrão). É

39

interessante lembrar que parte dos eventos de toque de vela na banda de

Bollinger consistem em eventos de fechamento fora da banda de Bollinger.

Ainda, há casos em que as velas aqui formadas ultrapassam totalmente a banda

de Bollinger, não sendo computadas no caso anterior.

2. Variação das cotações ao longo do período de 59 dias

Foram levantadas as variações ao longo de 59 dias para cada uma das cotações

presentes nas 3 bolsas estudadas, pelos 3 anos considerados. O gráfico abaixo mostra o

comportamento das variações. Para efeitos computacionais, para cada cotação existente,

foi verificado para os 59 dias seguintes se o valor de fechamento está maior ou menor

do que o daquele dia. Foram acumulados os contadores para cada um dos 59 dias: caso

o dia n tenha fechamento acima do dia analisado, o contador positivo com índice n é

incrementado e caso o dia n tenha fechamento abaixo do dia analisado, o contador

negativo com índice n é incrementado. Depois de analisar todas as cotações, para cada

um dos 59 dias foi verificado o percentual valorizado e o percentual desvalorizado.

Este dado torna-se importante para que a comparação de comportamento de

valorização seja feita em dias onde há eventos relacionados às bandas de Bollinger.

Figura 2.7 – Distribuição de eventos de valorização e desvalorização

44.00%

46.00%

48.00%

50.00%

52.00%

54.00%

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58

Distribuição de eventos de valorização e

desvalorização ao longo de 59 dias

% Negativo % Positivo

40

A seguir, a informação segregada por bolsa e por ano é apresentada. O delta

(diferença entre o percentual positivo e o percentual negativo é também adicionado ao

gráfico).

Figura 2.8 – Distribuição de eventos de valorização e desvalorização – Distribuição

por ano/mercado

Quando delta é positivo perto do primeiro dia, temos que a maior parte das

cotações tem valorização nos dias iniciais. De forma inversa, se delta é negativo no

início, podemos dizer que a maior parte das cotações tem desvalorização nos dias

iniciais.

Quando delta é crescente, significa que quanto mais os dias passam, mais dias

valorizados são verificados e quando delta é decrescente, quanto mais dias se passam

maior é a quantidade de dias desvalorizados da ação.

O delta não indica se o valor absoluto da ação sobe ou desce, pois podem haver

vários dias positivos, com pequenos ganhos e poucos dias negativos com grandes

perdas, fazendo com que o resultado final fique negativo.

41

O gráfico a seguir mostra a diferença entre os percentuais positivos e negativos

para todos os anos, para a três bolsas.

Figura 2.9 – Delta das cotações

O que pode ser notado é que há para as três bolsas, em conjunto, uma tendência

de quantidade de dias positivos ao decorrer do tempo, com uma curva exponencial. Nos

primeiros 5 dias a tendência é que maior parte das ações tenha um equilíbrio entre

valorização e desvalorização (aproximadamente 1% de diferença), aumentando a

quantidade que valoriza ao longo dos dias, com forte aumento na quantidade valorizada

nos 30 primeiros dias.

3. Cotações que interagem com a banda inferior de Bollinger

a) Comportamento da cotação da ação após a vela tocar a banda

inferior de Bollinger

Primeiramente, será analisado o comportamento das ações ao longo dos dias, em

termos quantitativos de variação. O gráfico a seguir quantifica o número de vezes em

que houve valorização (linha de valores Positivos) e desvalorização (linha de valores

y = 0.016ln(x) - 0.0119

-2.00%

-1.00%

0.00%

1.00%

2.00%

3.00%

4.00%

5.00%

6.00%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Delta

42

Negativos), ao decorrer dos dias, em relação ao dia em que a vela das ações toca a banda

inferior de Bollinger. A partir deste gráfico, é possível visualizar os momentos mais

propícios para tomadas de decisão, caso o evento seja considerado.

Figura 2.10 – Distribuição da quantidade de valorizações/desvalorizações após a vela

tocar a banda inferior de Bollinger

Os pontos mais importantes do gráfico acima correspondem aos dias onde há a

maior chance de variação positiva ou negativa do valor da ação com relação ao dia em

que a vela tocou a banda inferior de Bollinger. Ou seja, onde há o maior afastamento

(delta) entre os dois gráficos (Positivo e Negativo). Quanto maior o delta positivo, maior

será a probabilidade de valorização do ativo. Assim como, quanto maior o delta

negativo, maior será a probabilidade de desvalorização.

O gráfico abaixo apresenta o delta ao longo dos dias em termos percentuais. Ele

será de grande ajuda para identificação dos dias chaves após o evento em que há maior

probabilidade de ganho ou perda.

2200

2300

2400

2500

2600

2700

2800

2900

3000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Distribuição da quantidade de

valorizações/desvalorizações após a vela tocar a

banda inferior de Bolligner

Positivos Negativos

43

Figura 2.11 – Delta das cotações – Vela toca a banda inferior de Bollinger

Alguns pontos são destacados:

Tabela 2.3 – Resumo da análise após a vela tocar a banda inferior de Bollinger

Dias Positivos Negativos Delta Total Delta %

12 2955 2595 360 5550 6,49%

21 2924 2567 357 5491 6,50%

27 2903 2520 383 5423 7,06%

31 2911 2471 440 5382 8,18%

Nota: pode-se observar uma estabilidade nos valores do delta entre os dias 12 e

27. Portanto, dois dias em especial chamam a atenção por representarem destaques:

Doze dias após o evento;

Trinta e um dias após o evento.

0.00%

1.00%

2.00%

3.00%

4.00%

5.00%

6.00%

7.00%

8.00%

9.00%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Delta - Vela toca a banda inferior de Bollinger

44

Também é interessante realizar a análise da variação percentual do valor da ação

(ganho ou perda) ao longo de 59 dias após o evento de toque da vela na banda inferior

de Bollinger. O gráfico a seguir mostra tal variação após o evento analisado.

Figura 2.12 – Porcentagem da variação das cotações – Vela toca a banda inferior de

Bollinger

Há uma tendência de valorização contínua ao longo dos dias seguintes ao evento,

de acordo com a reta de tendência, sendo o pico atingido 31 dias após o mesmo.

Observa-se um período de estabilidade entre os dias 13 e 20, com uma valorização média

de 0,6%, seguido de uma valorização média de quase 1% no dia 31 – e declínio em

seguida. Estas observações são condizentes com a análise realizada no gráfico do delta.

Ao comparar a linha de variação de valor das ações ao longo do tempo com o

percentual de ações que sofreram valorização (delta), vemos comportamentos

semelhantes, indicando consistência de variação de valor e de quantidade valorizada.

Novamente dois dias destacam-se: 12 e 31 dias após o evento são novamente

marcantes:

Doze dias após o evento, novamente é verificada uma estabilização na

variação média do valor, em cerca de 0,5%;

Trinta e um dias após o evento, o pico de valorização é atingido (cerca

de 0,8%).

-0.200%

0.000%

0.200%

0.400%

0.600%

0.800%

1.000%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Variação do valor da ação após a vela tocar a

banda inferior de Bollinger

% de Variação Linear (% de Variação)

45

b) Comportamento da cotação da ação quando o fechamento se dá

abaixo da banda de Bollinger

Analisando o comportamento das ações ao longo dos dias, em termos

quantitativos de variação, pode ser visto que a quantidade de dias positivos é

consideravelmente superior à quantidade de dias negativos, com ambas as linhas com

declínio até o dia 31, onde em seguida começam a aumentar as quantidades de ações

com perdas.

Figura 2.13 – Distribuição da quantidade de valorizações/desvalorizações após um

fechamento abaixo da banda de Bollinger

O gráfico a seguir mostra a variação ao longo dos dias em termos percentuais.

Verifica-se um pico no dia 31, com quase 8% a mais de ganhos. Há também um ponto

interessante no dia 6, onde uma estabilidade é atingida.

1300

1400

1500

1600

1700

1800

1900

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Distribuição da quantidade de

valorizações/desvalorizações após um fechamento

abaixo da banda de Bollinger

Contagem Positivos Contagem Negativos

46

Figura 2.14 – Delta das cotações – Valor de fechamento abaixo da banda de

Bollinger

Verifica-se que a variação média dos valores das ações, como mostrado no

gráfico a seguir, é semelhante ao primeiro caso analisado (onde a vela toca a banda

inferior de Bollinger).

Figura 2.15 – Porcentagem da variação das cotações – Fechamento se dá abaixo da

banda de Bolligner

c) Comparação

-4.00%

-2.00%

0.00%

2.00%

4.00%

6.00%

8.00%

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58

Delta - Fechamento abaixo da banda de Bollinger

Delta % Linear (Delta %)

-0.200%

0.000%

0.200%

0.400%

0.600%

0.800%

1.000%

1.200%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Variação do valor da ação após o fechamento se

dar abaixo da banda de Bollinger

% de Variação Linear (% de Variação)

47

O gráfico a seguir compara a quantidade de ações com aumento de preço ao

longo do tempo, após dois eventos: quando a vela representando o dia toca a banda de

Bollinger inferior e quando o fechamento do dia se dá abaixo da banda de Bollinger

inferior. Vemos comportamento semelhantes até o dia 31 nos dois casos. Depois deste

dia, há uma queda mais acentuada na quantidade de cotações com ganho para o caso em

que o fechamento se dá abaixo da banda de Bollinger.

Um detalhe a mais a destacar: quando o fechamento se dá abaixo da banda

inferior de Bollinger, vemos um pico de ganho interessante 5 dias após o evento, que

chega a 6% na média contra 4% no caso em que a vela toca a banda de Bollinger inferior.

Figura 2.16 – Comparação do delta de cotações que interagem com a banda inferior

de Bollinger

A comparação entre a valorização ao longo dos dias nos dois eventos é mostrada

no gráfico a seguir:

-4%

-2%

0%

2%

4%

6%

8%

10%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Comparação do delta de eventos relacionados à

banda inferior de Bollinger

Delta % Tocando BB Delta % Fechando abaixo da BB

48

Figura 2.17 – Comparação da variação de cotações que interagem com a banda

inferior de Bollinger

Em ambos os casos, há uma aceleração de valorização que atinge uma

estabilidade 13 dias depois do evento, seguido de um pico 31 dias a partir do mesmo.

Quando o fechamento se dá abaixo da banda de Bollinger, há um ganho extra de 0,2%

no dia 13.

O gráfico a seguir compara os dois casos de forma mais ampla, considerando

não só o percentual de ações com ganho, mas também a valorização média.

Pode-se concluir que os dois parâmetros são mais vantajosos no caso em que o

fechamento se dá abaixo da banda de Bollinger.

-0.20%

0.00%

0.20%

0.40%

0.60%

0.80%

1.00%

1.20%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Comparação da variação de eventos relacionados

à banda inferior de Bollinger

% de Variação Fora da BB % de Variação Tocando BB

49

Figura 2.18 – Consolidação de interações com a banda inferior de Bollinger

A estratégia mais indicada para a análise é:

• Comprar quando a vela toca a banda inferior de Bollinger;

• Vender 31 dias após o evento. Neste momento há 54% de

chances de pico de valorização de 1%.

Uma outra alternativa interessante por trazer ganhos rápidos é, porém um pouco

menos atraente por ter menor chance de ganho (53%) comparada à anterior é:

• Comprar quando o fechamento se dá abaixo da banda de

Bollinger;

• Vender 5 dias após o evento. Neste momento a valorização

média é de valorização de 0,4%.

4. Cotações que interagem com a banda superior de Bollinger

-0.20%

0.00%

0.20%

0.40%

0.60%

0.80%

1.00%

1.20%

-4%

-2%

0%

2%

4%

6%

8%

10%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Variação e Delta de cotações que interagem com a banda

inferior de Bollinger

Delta % Tocando BB

Delta % Fechando abaixo da BB

% de Variação Tocando BB

% de Variação Fechando abaixo da BB

50

a) Comportamento da cotação da ação após a vela tocar a banda

superior de Bollinger

O gráfico a seguir mostra o percentual de vezes que a ação valorizou, ao longo

dos dias seguintes ao evento.

Figura 2.19 – Delta das cotações – Vela toca a banda superior de Bollinger

Há uma crescente chance de valorização após uma cotação tocar a banda superior

de Bollinger, como pode ser visto no gráfico. A curtíssimo prazo, há uma reversão da

tendência de valorização, apontada no dia 12 após o evento. Entre 17 e 40 dias percebe-

se uma estabilidade em relação à chance de valorização, voltando a subir em seguida.

O gráfico a seguir mostra a valorização média após o toque da vela na banda

superior:

0.00%

2.00%

4.00%

6.00%

8.00%

10.00%

12.00%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Delta - Vela toca a banda superior de Bollinger

Delta % Linear (Delta %)

51

Figura 2.20 – Porcentagem da variação das cotações – Vela toca a banda superior de

Bollinger

Chama a atenção a desvalorização ocorrida 13 dias após o toque na banda

superior de Bollinger, que na média é um pouco mais de 0,2%. Ocorre uma reversão,

com seguida valorização até o dia 33.

Ao comparar a quantidade de ações valorizadas ao longo do tempo com a média

valorizada, verifica-se uma consistência ao longo do tempo, como mostra o gráfico a

seguir:

-0.30%

-0.20%

-0.10%

0.00%

0.10%

0.20%

0.30%

0.40%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57

Variação do valor da ação após a vela tocar a banda superior de Bollinger

% de Variação

-0.30%

-0.20%

-0.10%

0.00%

0.10%

0.20%

0.30%

0.40%

0.00%

2.00%

4.00%

6.00%

8.00%

10.00%

12.00%

1 3 5 7 9 111315171921232527293133353739414345474951535557

Distribuição da quantidade de valorizações/desvalorizações após a vela

tocar a banda superior de Bolligner

Delta % % de Variação

52

Figura 2.21 – Distribuição da quantidade de valorizações/desvalorizações após a vela

tocar a banda superior de Bollinger

Há cerca de 1% de chance de valorização das ações após 13 dias, apesar da média

da variação ser negativa. Ou seja, mesmo com maior chance de valorização, quando a

desvalorização acontece é mais acentuada do que a valorização.

O gráfico sugere que há uma necessidade de venda 3 dias após o que na banda

superior, mantendo-se afastado da ação até o dia 13.

b) Comportamento da cotação da ação quando o fechamento se dá

acima da banda de Bollinger

O gráfico a seguir mostra o percentual de vezes que a ação valorizou, ao longo

dos dias seguintes ao evento.

Figura 2.22 – Delta das cotações – Valor de fechamento acima da banda de Bollinger

A variação de valores após o fechamento acima da banda de Bollinger é

mostrado no gráfico a seguir:

0.00%

2.00%

4.00%

6.00%

8.00%

10.00%

12.00%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Delta - Fechamento acima da banda de Bollinger

Delta %

53

Figura 2.23 – Porcentagem da variação das cotações – Fechamento se dá acima da

banda de Bolligner

c) Comparação

O gráfico a seguir mostra a comparação dos dois eventos, quando a vela toca a

banda superior de Bollinger, assim como quando o fechamento se dá acima da banda de

Bollinger:

Figura 2.24 – Comparação do delta de cotações que interagem com a banda superior

de Bollinger

-0.20%

-0.10%

0.00%

0.10%

0.20%

0.30%

0.40%

0.50%

0.60%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Variação do valor da ação após o fechamento se dar acima da banda de Bollinger

% de Variação

0.00%

2.00%

4.00%

6.00%

8.00%

10.00%

12.00%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Comparação do delta de eventos relacionados à banda superior de Bollinger

Delta % Vela Toca BB Delta % Fecha Acima da BB

54

Comparando-se os casos em que há o fechamento acima da banda de Bollinger

com os casos em que a vela toca a banda superior de Bollinger, vemos uma perda

maiores no dia 13 (0,1%) quando há o toque e maiores ganhos experimentados no dia

33 (0,2% a mais).

Figura 2.25 – Comparação da variação de cotações que interagem com a banda

superior de Bollinger

O gráfico a seguir compara os parâmetros analisados para os dois tipos de ventos

(quando há o toque da vela na banda superior, assim como quando há o fechamento

acima da banda superior). Este gráfico permite visualizar os movimentos indicados.

-0.30%

-0.20%

-0.10%

0.00%

0.10%

0.20%

0.30%

0.40%

0.50%

0.60%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57

Comparação da variação de eventos relacionados à banda superior de Bollinger

% de Variação Fecha acima da BB

% de Variação Toca BB Superior

55

Figura 2.26 – Consolidação de interações com a banda inferior de Bollinger

A estratégia indicada é:

Vender a ação 3 dias após o toque na banda superior de Bollinger; neste

momento há uma chance de valorização de 52% de uma pequena

valorização da ação (0,1%).

Manter-se afastado da ação por 14 dias

2.9 Índice de força

O índice de força (Force Index) mede a força da valorização ou da

desvalorização, utilizando volume e preço como parâmetros de cálculo. Na prática a

média móvel (exponencial) é utilizada como análise, sendo que comumente são

utilizados 13 períodos para indícios de mudanças de tendência.

-0.30%

-0.20%

-0.10%

0.00%

0.10%

0.20%

0.30%

0.40%

0.50%

0.60%

0.00%

2.00%

4.00%

6.00%

8.00%

10.00%

12.00%

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57

Variação e Delta de cotações que interagem com a banda superior de Bollinger

Delta % Fecha acima da BB Delta % Toca BB superior

% de Variação Fecha acima da BB % de Variação Toca BB Superior

56

Os eventos considerados quando o índice de força é utilizado são cruzamentos

da média móvel exponencial de 13 dias pelo valor 0. Assim, quando o valor da EMA de

13 dias do índice de força passa de negativo para positivo, há indícios de uma reversão

de tendência para valorização; o contrário é válido, ou seja, quando o valor da EMA de

13 dias passa do positivo para o negativo, a tendência passa de ser a de queda.

Muitos analistas técnicos consideram que as mudanças de tendências são

precedidas de mudanças de comportamento do volume, o que torna os índices de análise

baseados em volume interessantes, já que haveria indicações no presente de uma

mudança vindoura de tendência.

O índice de força leva em conta a diferença do fechamento do dia atual e o dia

anterior. Quanto maior essa diferença, maior será a força. Um segundo parâmetro levado

em conta é o volume. Se o volume negociado de um ativo é grande, indica maior força

da tendência. A multiplicação dos dois valores (volume do dia atual e a diferença entre

o valor de fechamento do dia atual e o valor de fechamento do dia anterior) gerará o

valor do índice de força do dia atual.

A média móvel torna a análise mais consistente, pois considera os períodos

passados no cálculo. Assim, os valores do índice de força para dias anteriores são

considerados, permitindo a suavização de eventuais picos e vales que possam ocorrer ao

longo do caminho. Ainda, a média móvel exponencial usa pesos no cálculo da média,

sendo que os dias mais próximos ganham maior valor no cálculo do que dias mais

afastados. Assim, o comportamento mais recente dos valores do índice ganha maior peso

do que o comportamento dos valores mais antigos [9].

O índice de força, portanto, segue a seguinte formula:

Índice de Força1𝑛= (𝐹𝑒𝑐ℎ𝑎𝑚𝑒𝑡𝑜𝑛 − 𝐹𝑒𝑐ℎ𝑎𝑚𝑒𝑡𝑜𝑛−1) × Volume𝑛 (2.13)

Índice de Força13𝑛+13= EMA dos últimos 13 dias

Onde Índice de Força1𝑛 representa o primeiro índice de força para uma

cotação pertencente ao dia n.

57

2.10 Média Móvel

Como o próprio nome indica, a média móvel constitui-se de uma média de

valores realizada sobre uma janela de intervalo que se desloca ao longo do tempo. Ou

seja, a partir do momento que um novo valor é considerado, o último valor deve ser

excluído dos cálculos. Seu objetivo principal é fornecer ao investidor um valor médio

do fechamento do ativo dentro de um período de tempo.

É importante notar que a média móvel segue tendências e, por isso, impossibilita

que estas sejam previstas. Ou seja, será possível observar mudanças de tendências a

partir da análise comparativa dos valores da média móvel com os valores de fechamento

atuais dos ativos financeiros uma vez que a mudança de tendência tenha começado a se

estabelecer e tenha se refletido no valor final do cálculo da média.

A média móvel, embora relativamente simples, tem uma função interessante: ela

suaviza flutuações de preço, fornecendo ao investidor uma visão mais clara de direções

de tendências que tenham se estabelecido.

Podendo ser aplicada sobre diferentes intervalos de período de tempo, é

interessante considerar os seguintes pontos:

Quanto maior o intervalo de tempo para o cálculo da média móvel, maior

o “atraso” do indicador para sinalizar uma mudança na direção de

tendência: uma média móvel que é calculada sobre um período de tempo

de 200 dias, por exemplo, considerará valores que ocorreram em um

período muito distante de tempo, e que não mais poderiam possuir

grandes influencias no preço atual da ação, “poluindo” o resultado e

desviando a análise de uma interpretação correta.

Quando menor o intervalo de tempo para o cálculo da média móvel,

maior a quantidade de sinais falsos de mudança de tendência que podem

ocorrer: uma média móvel que é calculada sobre um período de tempo

de 5 dias, por exemplo, poderia sinalizar uma mudança de tendência de

forma precipitada, visto que apenas 1 dia de fechamento com um valor

fora da média poderia ser o responsável em sinalizar tal mudança.

58

Dessa forma, quanto menor o período de tempo que a média móvel leva em

consideração, maior será sua sensibilidade.

Como exemplo, considere a cotação de fechamento para uma determinada ação

abaixo:

Figura 2.27 – Valores de fechamento de uma ação

As médias móveis simples para os períodos de 5, 20, 50, 100 e 200 dias estão

plotadas, respectivamente, na figura a seguir. É possível observar que, de fato, quanto

menor o período considerado para a média móvel, mais rápida a sua resposta às

variações dos valores das cotações. Enquanto que, quanto maior o período, mais suave

sua curva se torna.

0

5

10

15

20

25

30

35

Valor de fechamento

59

Figura 2.28 – SMA para diferentes períodos

0

10

20

30

40

SMA - 5 dias

0

10

20

30

40

SMA - 20 dias

0

10

20

30

40

SMA - 50 dias

0

10

20

30

40

SMA - 100 dias

05

1015202530

SMA - 200 dias

60

Para a análise, dois tipos diferentes de médias móveis serão considerados: a

média móvel simples (Simple Moving Average - SMA) e a média móvel exponencial

(Exponencial Movig Average - EMA).

1. Média móvel simples

Como visto anteriormente, a SMA possui a seguinte fórmula:

𝑆𝑀𝐴 =

(𝑝𝑡 + 𝑝𝑡−1 + … + 𝑝𝑡−(𝑛−1))

𝑛

(2.14)

Onde 𝑝𝑡 corresponde ao preço do ativo para cada dia.

2. Média móvel exponencial

Diferentemente da SMA, a EMA fornece um grau peso a cada valor considerado

para o cálculo da média: dias mais próximos recebem um peso maior, enquanto dias

mais distantes recebem um peso menor.

Como visto anteriormente, a EMA possui a seguinte fórmula:

𝐸𝑀𝐴1 = 𝑆𝑀𝐴1−n

𝐸𝑀𝐴𝑡 = 𝛼 ∗ 𝑝𝑡 + (1 − 𝛼) ∗ 𝐸𝑀𝐴𝑡−1, 𝑡 > 1

𝛼 =2

𝑛 + 1

(2.15)

O coeficiente 𝛼 representa o grau de peso de diminuição, que varia entre 0 e 1.

Logo, um 𝛼 maior desconta valores mais antigos de forma mais acentuada. Onde 𝑝𝑡

corresponde ao preço do ativo para cada dia.

61

Desta forma, para os valores de fechamento considerados na figura 2.27, as

médias móveis simples e exponencial para um período de 5 dias, são, respectivamente,

as seguintes:

Figura 2.29 – Comparação entre SMA e EMA

Dessa forma, podemos observar que a diferença entre ambas é bem sutil.

2.11 Índice Commodity Chanel Index (CCI)

Acredita-se que commodities em geral exibem um determinado grau de padrão

no preço, comportando-se de forma cíclica dentro de um período de tempo. Ainda assim,

um investidor apresenta dificuldades em determinar o início e fim de tendências bullish

0

5

10

15

20

25

30

35

SMA - 5 dias

0.00

5.00

10.00

15.00

20.00

25.00

30.00

35.00

5/2

1/2

013

6/2

1/2

013

7/2

1/2

013

8/2

1/2

013

9/2

1/2

013

10/2

1/2

01

3

11/2

1/2

01

3

12/2

1/2

01

3

1/2

1/2

014

2/2

1/2

014

3/2

1/2

014

4/2

1/2

014

5/2

1/2

014

6/2

1/2

014

7/2

1/2

014

8/2

1/2

014

9/2

1/2

014

10/2

1/2

01

4

11/2

1/2

01

4

12/2

1/2

01

4

1/2

1/2

015

2/2

1/2

015

3/2

1/2

015

4/2

1/2

015

EMA - 5 dias

62

e bearish no preço de um ativo, visto que este ciclo temporal, naturalmente, é afetado

por elementos e condições externas.

O CCI (Commodity Chanel Index) é um índice de análise técnica que foi

desenvolvido para atuar como uma ferramenta de sincronismo. Embora ele não tenha a

capacidade de determinar o período de tempo no qual a commodity se comporta de

forma padronizada, ele auxilia em determinar o tempo em que tendências bullish e

bearish se apresentam nos preços da ação.

Para tal, primeiramente, o índice tem a necessidade de examinar preços atuais

juntamente com passados – Estudo do ciclo – entretanto, sem permitir que dados de um

passado muito distante afetem os padrões presentes – Permissão da identificação da

influência de elementos externos no preço. Assim, o CCI utiliza-se de uma média móvel

simples do preço típico (MMS(𝑝T)) para o seu cálculo:

MMS(𝑝T) =

(𝑝T + 𝑝T−1 + ⋯ + 𝑝T−(n−1))

n

(2.16)

Onde n corresponde a quantidade de dias que constituem a média móvel e 𝑝T o

preço típico da ação.

O preço típico constitui-se da média simples dos valores de máximo (H), mínimo

(L) e de fechamento (C) do preço do ativo financeiro no dia a ser calculado:

𝑝T =

(H + L + C)

3

(2.17)

A utilização do preço típico ao invés do preço de fechamento torna a análise mais

fidedigna pois a variação completa dentro do dia do valor da ação é levada em conta. O

valor de fechamento representa apenas um ponto de valor isolado no tempo.

O CCI para um dia é calculado pela diferença entre o preço típico do dia e a sua

média simples em um período de n dias.

Entretanto, havia a necessidade de normalizar esta diferença pelo fato de

determinadas ações sofrerem variações ínfimas após um dia, enquanto outras, variações

relativamente grandes. Para tal, o autor do índice, Donaldo R. Lambert, determinou que

63

esta diferença deveria ser normalizada pelo desvio absoluto (σ) do preço típico, afim de

tornar a dimensão do índice independente de tais fatores:

σ(𝑝T) =

1

n∗ ∑ |𝑝𝑡𝑖

− 𝑝𝑡|

𝑛

𝑖=1

(2.18)

O desvio absoluto seria pequeno quando os preços estivessem oscilando e, por

outro lado, tornar-se-ia grande na presença de um pico.

A normalização força a criação de um canal (virtual) que limita os valores da

diferença entre o preço típico e a sua MMS. Por este motivo, este índice é caracterizado

com um índice de momento.

Assim, o CCI é calculado da seguinte forma:

CCI =

1

0.015∗

(𝑝T − MMS(𝑝T))

σ(𝑝T)

(2.19)

O fator 0.015 é utilizado para ajustar o valor do CCI de tal forma que 70% a 80%

do CCI esteja dentro da margem de ±100. Estas margens tornam-se limites importantes

para a interpretação do índice:

Um CCI acima da linha de +100 reflete um preço forte (Ativo

sobrecomprado), sinalizando o início de uma tendência bearish – um

sinal de venda;

Um CCI abaixo da linha de -100 reflete um preço baixo (Ativo

sobrevendido), sinalizando o início de uma tendência bullish – Um sinal

de compra.

A escolha da quantidade de dias n a ser utilizada para o cálculo do CCI também

e outro fator delicado: um valor muito alto para a quantidade de dias a ser examinado

torna o tempo de resposta muito longo, gerando um retardo na identificação de possíveis

inícios de tendência. Por outro lado, valores muito baixos geram grandes espasmos, uma

vez que o CCI poderia passar a interpretar variações de apenas um dia como extremos

de um ciclo.

64

Embora um período de 5 dias apresentasse a maior eficiência do ponto de vista

teórico, este é considerado muito curto. Assim, padronizou-se de forma geral que o CCI

se utilizaria de períodos de 20 dias.

É válido comprar o CCI à Média Móvel Simples, que indica se o preço atual está

acima ou abaixo da mesma quando comparado a média dos últimos dias. Poder-se-ia

dizer que o CCI é uma forma mais parametrizada de interpretar a média móvel, com

indicação de sobrecompra e sobrevenda, através do canal virtual que é criado.

3. Metodologia

Três parâmetros são essenciais no momento em que um indivíduo faz a decisão

sobre um investimento:

Tempo de retorno;

Risco;

Valorização.

O cenário ótimo é aquele em que o tempo de retorno e risco são os menores

possíveis e o retorno o maior possível. Pode-se, logo, entender que o ganho poderia ser

dado como:

Ganho = Capital Investido x Risco Médio x Valorização Média / Tempo

Por exemplo, sabemos que a chance de valorização de 1% em 30 dias de uma

aplicação financeira é de 70% na média, aplicando-se 1000 unidades financeiras,

obteríamos 10 unidades de ganho no prazo de 30 dias para 70% das vezes em que o

investimento fosse feito. Na média, o ganho cai para 7 unidades financeiras em 30 dias.

3.1 Usando indicadores de análise financeira

Um indicador de análise financeira pode fornecer dicas de que uma mudança de

tendência começou ou está por começar. Há técnicas de uso de cada um dos indicadores,

com dicas conhecidas de compra e venda, dependendo do comportamento que tal

indicador tenha. Mas não há uma informação relativa ao risco e ao ganho que a técnica

ofereça.

65

O modo de endereçar esta questão é a verificação do comportamento médio das

ações disparado por um evento. Sabendo ao longo do tempo qual o valor do risco e

ganho médio verificado para um determinado mercado (por exemplo, a Bolsa de Valores

de São Paulo – BOVESPA), segmento do mercado (por exemplo, Telecomunicações)

ou até mesmo para uma ação específica, teremos uma aproximação bem interessante

dos riscos e valorizações ao longo do tempo após um evento de um indicador ter sido

detectado.

A combinação de indicadores traria maior precisão aos resultados finais.

Conhecendo o risco e ganho de cada um dos indicadores em questão após a ocorrência

do evento eleito para observação, o resultado final de ganho e risco será refinado e trará

conclusões mais robustas.

Supondo que dois indicadores tenham, ao longo dos dias após um evento ocorrer,

chances médias de ganho, assim como ganho médio de acordo com o mostrado nos

gráficos a seguir:

Figura 3.1 – Indicador 1

-6%

-4%

-2%

0%

2%

4%

6%

8%

0%

10%

20%

30%

40%

50%

60%

70%

80%

1 2 3 4 5 6 7 8 9 10

Chances de ganho

indicador 1

Ganho indicador 1

Índice de ganho 1

66

Figura 3.2 – Indicador 2

Calculando o "índice de ganho” como o produto entre a chance média de ganho

e o ganho médio, pode ser visto que há momentos ao longo dos dias em que há mais

retorno médio do que outros.

A combinação pela soma dos dois índices de ganho – para os dois indicadores

técnicos – permite que se tenha uma visibilidade única de possibilidade de ganhos:

Figura 3.3 – Índice de ganho combinado

-4%

-3%

-2%

-1%

0%

1%

2%

3%

4%

5%

6%

0%

10%

20%

30%

40%

50%

60%

1 2 3 4 5 6 7 8 9 10

Chances de ganho

indicador 2

Ganho indicador 2

Índice de ganho 2

-2%

-1%

0%

1%

2%

3%

4%

5%

1 2 3 4 5 6 7 8 9 10 11

Índice de ganho

combinado

67

Fica claro que combinando os dois índices de ganho, o melhor período de

retornos se dá entre o primeiro dia e o quarto dia, com o pico de ganho no terceiro dia,

enquanto que o quinto e o sétimo dia representam o pior período.

3.2 Janela deslizante

É necessário considerar uma metodologia de janela deslizante para avaliar o

resultado das combinações dos indicadores. Isto porque haverá períodos de tempo

diferentes entre a ocorrência de eventos de indicadores e a última cotação de um ativo.

Por exemplo, para verificar se no dia n a compra de um ativo de bolsa de valores

tem boas chances de lucro (ou perda) nos dias subsequentes, é preciso determinar quais

eventos de índices ocorreram anteriormente ao dia n, assim como quando ocorreram.

Digamos que o indicador 1 tenha tido um evento no dia n-3 e que o indicador 2 tenha

tido um evento no dia n-1.

Primeiro, verificando as chances de valorização, assim como a valorização

média ao longo dos dias, a partir do dia do evento, para cada um dos indicadores:

Tabela 3.1 – Índice1 x Índice 2

Dia 1 2 3 4 5 6 7 8 9 10

Chances de ganho indicador 1 55,0% 56,0% 60,0% 70,0% 55,0% 30,0% 20,0% 10,0% 10,0% 5,0%

Ganho Índice 1 1,0% 3,0% 6,0% 3,0% -1,0% -4,0% 0,0% -2,0% 3,0% 2,0%

Índice de ganho 0,6% 1,7% 3,6% 2,1% -0,6% -1,2% 0,0% -0,2% 0,3% 0,1%

Dia 1 2 3 4 5 6 7 8 9 10

Chances de ganho indicador 2 45,0% 35,0% 50,0% 40,0% 10,0% 10,0% 5,0% 5,0% 10,0% 15,0%

Ganho Índice 2 5,0% 4,0% 2,0% 1,0% -1,0% -3,0% -2,0% -2,0% -1,0% 1,0%

Índice de ganho 2,3% 1,4% 1,0% 0,4% -0,1% -0,3% -0,1% -0,1% -0,1% 0,2%

Em relação ao dia n, os indicadores serão deslizados no tempo, como mostrado

a seguir:

68

Tabela 3.2 – Janela deslizante

Será a partir da implementação desta técnica de “janela deslizante” que será

possível a estimativa de ganhos futuros para cada ação, como explorado a seguir.

4. O Software e o aplicativo

4.1 Aspectos de implementação da metodologia

A implementação da metodologia citada acima é chave para o funcionamento

do programa. A seguir, detalhes de como esta implementação é feita.

1. Principais parâmetros

Primeiramente, para compreender em detalhes a lógica por trás da

implementação da metodologia do programa, deve-se definir alguns parâmetros que

foram essenciais para sua aplicação. Para 𝑚𝑡 correspondente a quantidade total de ações

a serem analisadas, 𝑛𝑡𝑗 a quantidade total de variações calculadas para uma determinada

Dia após o evento 1 2 3 4 5 6 7 8 9 10

Chances ganho

indicador 1

55,0% 56,0% 60,0% 70,0% 55,0% 30,0% 20,0% 10,0% 10,0% 5,0%

Ganho Índice 1 1,0% 3,0% 6,0% 3,0% -1,0% -4,0% 0,0% -2,0% 3,0% 2,0%

Índice de ganho 0,6% 1,7% 3,6% 2,1% -0,6% -1,2% 0,0% -0,2% 0,3% 0,1%

Dia após o evento 1 2 3 4 5 6 7 8 9 10

Chances ganho

indicador 2

45,0% 35,0% 50,0% 40,0% 10,0% 10,0% 5,0% 5,0% 10,0% 15,0%

Ganho Índice 2 5,0% 4,0% 2,0% 1,0% -1,0% -3,0% -2,0% -2,0% -1,0% 1,0%

Índice de ganho 2,3% 1,4% 1,0% 0,4% -0,1% -0,3% -0,1% -0,1% -0,1% 0,2%

n-2 n-1 n n+1 n+2 n+3 n+4 n+5 n+6 n+7 n+8 n+9

69

ação j, 𝑛+𝑗 a quantidade total de variações positivas para uma determinada ação j, e 𝑛−𝑗

a quantidade total de variações negativas para uma determinada ação j:

Variação de uma cotação com relação a um dia n: este parâmetro corresponde à

variação percentual de valor de cotação para a ação m, quando comparada à sua

cotação de n dias anteriores.

Variação𝑚𝑛+

=𝐶𝑜𝑡𝑎çã𝑜𝑚−𝑛

− 𝐶𝑜𝑡𝑎çã𝑜𝑚0

𝐶𝑜𝑡𝑎çã𝑜𝑚0

, se Variação𝑚𝑛+> 0

Variação𝑚𝑛−= 0

De forma análoga:

(4.1)

Variação𝑚𝑛−

=𝐶𝑜𝑡𝑎çã𝑜𝑚−𝑛

− 𝐶𝑜𝑡𝑎çã𝑜𝑚0

𝐶𝑜𝑡𝑎çã𝑜𝑚0

, se Variação𝑚𝑛−< 0

Variação𝑚𝑛+= 0

(4.2)

Por exemplo, consideremos a ação fictícia m:

Figura 4.1 – Variação de uma cotação

Variação média positiva: este parâmetro corresponde à média simples de

todas as variações positivas das cotações das ações.

Variação Média+ =∑ ∑ 𝑉𝑎𝑟𝑖𝑎çã𝑜𝑗𝑖 +

𝑛𝑡𝑗

𝑖=0𝑚𝑡𝑗=0

∑ 𝑛+𝑗𝑚𝑡𝑗=0

(4.3)

Tempo (dias)

Valores de fechamento da ação m

n dias

Cotação0 Cotação

−𝑛

70

Variação média negativa: este parâmetro corresponde à média simples de

todas as variações negativas das cotações de ações.

Variação Média− =∑ ∑ 𝑉𝑎𝑟𝑖𝑎çã𝑜𝑗𝑖 −

𝑛𝑡𝑗

𝑖=0𝑚𝑡𝑗=0

∑ 𝑛−𝑗𝑚𝑡𝑗=0

(4.4)

Risco positivo: este parâmetro corresponde ao percentual de variações

positivas dentro do universo de todas as variações analisadas.

Risco + =

∑ 𝑛+𝑗𝑚𝑡𝑗=0

∑ 𝑛𝑡𝑗𝑚𝑡𝑗=0

(4.5)

Risco negativo: este parâmetro corresponde ao percentual de variações

negativas dentro do universo de todas as variações analisadas.

Risco − =

∑ 𝑛−𝑗𝑚𝑡𝑗=0

∑ 𝑛𝑡𝑗𝑚𝑡𝑗=0

(4.6)

Ganho Positivo: este parâmetro corresponde à multiplicação do risco

positivo pela sua respectiva variação.

Ganho + = Risco + × Variação Média+ (4.7)

Ganho Negativo: este parâmetro corresponde à multiplicação do risco

negativo pela sua respectiva variação.

Ganho − = Risco − × Variação Média− (4.8)

Ganho Total: este parâmetro corresponde à soma de ambos os ganhos

positivo e negativo.

Ganho Total = Ganho + + Ganho − (4.9)

2. Os ganhos dos indicadores e seus respectivos eventos

Para a realização das análises, foram considerados 10 indicadores de análise

técnica. É importante recordar que cada indicador pode possuir um ou mais eventos

capazes de gerar indicações, ou flags, como visto na seção 2. Ao total, são considerados

71

24 diferentes eventos geradores de flags. É importante considerar que cada indicador

possui um período estimado de duração. Ou seja, a cada indicador foi atribuído um

período dentro do qual ele potencialmente influenciará no comportamento das cotações

futuras. Tal período foi baseado nos parâmetros de tempo utilizados para seus cálculos.

A tabela dos indicadores e seus respectivos eventos é:

Tabela 4.1 – Tabela de indicadores

Índice Classificação Eventos

Bandas de

Bollinger Momento

• Vela da cotação toca a banda inferior de Bollinger;

• Vela da cotação toca a banda superior de Bollinger;

• Fechamento da cotação encontra-se abaixo da banda

inferior de Bollinger;

• Fechamento da cotação encontra-se acima da banda

superior de Bollinger.

ADX Momento • ADX encontra-se abaixo de 25;

• ADX encontra-se acima de 80.

CCI Momento • CCI cruzou +100;

• CCI cruzou -100.

Estocástico Momento • Estocástico cruzou acima de 80;

• Estocástico cruzou abaixo de 20.

Índice de

Força Volume

• EMA do índice de força cruzou acima de zero;

• EMA do índice de força cruzou abaixo de zero.

Média Móvel

Simples

(SMA)

Volatilidade

• Fechamento da cotação cruzou para cima da SMA;

• Fechamento da cotação cruzou para baixo da SMA.

Média Móvel

Exponencial

(EMA)

Volatilidade

• Fechamento da cotação cruzou para cima da EMA;

• Fechamento da cotação cruzou para baixo da EMA.

DMI Tendência • DMI+ cruzou acima do DMI-;

• DMI- cruzou acima do DMI+.

72

MACD Tendência

• MACD cruzou acima do sinal;

• MACD cruzou abaixo do sinal;

• MACD cruzou acima de zero;

• MACD cruzou abaixo de zero.

SAR Tendência • Tendência do SAR reverteu de Long para Short;

• Tendência do SAR reverteu de Short para Long;

Dessa forma, para cada evento, as cotações de cada ação serão varridas e será

avaliado, da cotação mais recente a cotação de até 60 dias anteriores, os parâmetros de

Ganho +, Ganho− e Ganho Total. Vale ressaltar que para o cálculo destes parâmetros

só são consideradas as Variações𝑚𝑛de cotações que receberam o flag do respectivo

evento.

Finalmente, o ganho total de todos os eventos após a consolidação do

Ganho Total𝑘 de cada evento será:

Ganho Total = ∑ Ganho Total𝑘

24

𝑘=1

(4.10)

De forma análoga, o ganho total de acordo com as diferentes categorias de

indicadores será calculado como sendo:

Ganho Total𝑒 = ∑ Ganho Total𝑘

𝑒

𝑘=1

(4.11)

Onde 𝑒 corresponde à quantidade de eventos pertencentes à categoria de

indicador considerada.

A estrutura responsável em armazenar as Variações𝑚𝑛 de cada indicador é

um vetor denominado EventTypeHashMapVector. Este, por sua vez, terá o tamanho

correspondente à quantidade de eventos que o indicador possui.

Cada indicador preencherá o respectivo vetor com um HashMap, que conterá

como chave o ano da cotação e a quantidade de dias n após o flag do evento, ligada a

um vetor contendo todas as respectivas Variações𝑚𝑛. Abaixo, um exemplo da

estrutura de um vetor EventTypeHashMapVector:

73

Figura 4.2 – Estrutura de armazenamento do ganho de cada evento para um

indicador

O fluxograma para o cálculo do ganho de cada evento, será, portanto:

74

Figura 4.3 – Cálculo do Ganho estatístico de cada evento

Duas classes do programa estão diretamente envolvidas com a coleta dos

ganhos: A classe TestQuotationStatsForAllStocks e a classe abstrata Stats - juntamente

com todas as classes que a implementam.

De forma geral, o diagrama de blocos da coleta dos ganhos é o seguinte:

Cotação mais antiga

armazenada na

memória

compartilhada é considerada

Evento ocorreu

para a cotação?

n = 1

Existe uma cotação n dias depois da

atual armazenada na

memória

compartilhada?

Ganho percentual da cotação

de n dias a frente com

relação à atual é calculada e

armazenada na variável

privada da classe:

eventTypeHashmap Vector

n = n +1

n < 60

Existe cotação

para o próximo dia na memória

compartilhada?

Segue para próxima

cotação

Fim

Sim Sim

Sim

Sim

Não

Não

Não

Não

Início

75

Figura 4.4 – Diagrama de blocos da coleta de ganhos

Tod

os

os

even

tos

de

tod

os

os

indic

adore

s co

nti

dos

na

mat

riz

de

Indic

adore

s sã

o v

arri

dos

um

a

um

. N

esta

eta

pa,

o m

étod

o

runS

tats

ForA

llS

tock

s é

cham

ado

Par

a ca

da

ind

icad

or,

to

das

as

açõ

es

(Sto

cks)

arm

azen

adas

na

mem

óri

a co

mp

arti

lhad

a s

ão

var

ridas

, e

o m

éto

do

coll

ectS

tats

é

cham

ado

.

O m

étod

o

pro

cess

Coll

ecte

dS

tats

All

Yea

rs é

cham

ado

Nes

ta e

tap

a, c

ada

ação

poss

ui

todas

as

cota

ções

da

mem

óri

a co

mp

arti

lhad

a v

arri

das

a

par

tir

da

mais

anti

ga.

Par

a ca

da

cota

ção

, var

re-

se t

od

os

os

even

tos

do

índic

e

Par

a ca

da

even

to, é

ver

ific

ado

se

a c

ota

ção

atual

rec

ebe

um

fla

g.

No

caso

posi

tivo,

o g

anho

é

calc

ula

do

e i

nse

rid

o n

a

estr

utu

ra

even

tTyp

eHas

hM

apV

ect

or

Em

seg

uid

a, v

erif

ica-s

e se

o

even

to o

corr

eu p

ara

cada

um

a das

últ

imas

m* c

ota

ções

na

mem

óri

a

com

par

tilh

ada.

Ser

á ar

maze

nan

do

o d

ia m

ais

rece

nte

em

que

tod

os

os

even

tos

em q

ue

um

fla

g t

eria

oco

rrid

o s

e a

ação

tiv

er s

ido

sele

cionad

a na

list

a.

O c

álcu

lo d

a j

anel

a é r

eali

zado

:

Cad

a ev

ento

de

cada

indic

ador

será

var

rid

o.

-S

e n

enhum

a aç

ão e

m

espec

ífic

o f

oi

sele

cionad

a: P

ara

cada

even

to o

s gan

hos

de

cada

dia

dos

últ

imos

60

dia

s sá

o c

onsu

ltad

os;

-S

e u

ma

ação

fo

i

sele

cionad

a: S

erá

ver

ific

ado s

e o e

ven

to

deu

fla

g e

m a

lgum

a

cota

ção. N

o c

aso

posi

tivo,

os

gan

hos

de

cada

dia

da

janel

a des

te

even

to s

ão c

onsu

ltad

os.

Gan

ho t

ota

l d

e ca

da

dia

é

calc

ula

do

Nes

te m

étod

o, a

estr

utu

ra

even

tTyp

eHas

hM

apV

ecto

r d

e ca

da

indic

ador

é var

rida

e as

var

iávei

s

pri

vad

as a

bai

xo s

ão p

reen

chid

as:

-P

osi

tiveP

erce

ntV

ecto

r;

-N

egat

iveP

erce

ntV

ecto

r;

- V

arV

ecto

rPosi

tive;

-V

arV

ecto

rNeg

ativ

e.

Cla

sses

que

imp

lem

enta

m a

cla

sse

abst

rata

Sta

ts

Cla

sse

Tes

tQuota

tionS

tats

All

Sto

cks

RunS

tats

ForA

llS

tock

s

Coll

ectS

tats

Pro

cess

Co

llec

tedS

tats

All

Yea

rs

Tes

tQuota

tionF

orS

tats

*m

corr

esp

ond

e à

quan

tidad

e d

e dia

s

em q

ue

um

indic

ador

tem

efe

ito

76

Onde as variáveis PositivePercentVector, NegativePercentVector,

VarVectorPositive e VarVectorNegative contêm dados relativos às incidências de

variações positivas e negativas e às variações médias positivas e negativas da ação,

após a ocorrência do evento.

Vamos considerar, por exemplo, as ações “Exemplo 1” e “Exemplo 2”. As

cotações de ambas as ações estão plotadas no gráfico abaixo. Em paralelo, vamos

considerar o evento 1 do indicador 1.

No gráfico abaixo observa-se que, para a ação “Exemplo 1” o flag do evento 1

do indicador 1 ocorreu em 3 dias diferentes nos últimos 60 dias: no ponto A, ponto B e

ponto C. Em contrapartida, para a ação “Exemplo 2” o flag do evento 1 do indicador 1

ocorreu em 3 dias diferentes nos últimos 60 dias: no ponto A, ponto B e ponto D.

Para facilitar a compreensão, vamos levar em consideração que cada um destes

pontos representa a distância, em dias, entre a cotação que obteve o flag e a cotação mais

atual da ação na memória compartilhada.

Figura 4.5 – Cotações de exemplo

Tempo (dias) D B B B+26 C+26 D+26

Cotações daAção

Exemplo 2

Tempo (dias) D C A A+26 C+26 D+26

Cotações da Ação

Exemplo 1

77

O evento 1 do indicador 1 terá efeito de duração de, por exemplo, 40 dias,

representado pelas barras em amarelo.

Para efeitos demonstrativos, o dia 26 será tomado para exemplo. Deve-se notar

que as variações calculadas a seguir servem para cada um dos dias após a ocorrência do

evento considerado.

Assim sendo, o cálculo da variação para 26 dias, após a ocorrência da flag do

evento, para a ação Exemplo 1 acima será:

Variação26𝐴1

=𝐶𝑜𝑡𝑎çã𝑜𝐴 − 𝐶𝑜𝑡𝑎çã𝑜𝐴+26

𝐶𝑜𝑡𝑎çã𝑜𝐴+26

Variação26𝐶1=

𝐶𝑜𝑡𝑎çã𝑜𝐶 − 𝐶𝑜𝑡𝑎çã𝑜𝐶+26

𝐶𝑜𝑡𝑎çã𝑜𝐶+26

Variação26𝐷1=

𝐶𝑜𝑡𝑎çã𝑜𝐷 − 𝐶𝑜𝑡𝑎çã𝑜𝐷+26

𝐶𝑜𝑡𝑎çã𝑜𝐷+26

(4.12)

Para o Exemplo 2 teremos:

Variação26𝐵2

=𝐶𝑜𝑡𝑎çã𝑜𝐵 − 𝐶𝑜𝑡𝑎çã𝑜𝐵+26

𝐶𝑜𝑡𝑎çã𝑜𝐵+26

Variação26𝐶2=

𝐶𝑜𝑡𝑎çã𝑜𝐶 − 𝐶𝑜𝑡𝑎çã𝑜𝐶+26

𝐶𝑜𝑡𝑎çã𝑜𝐶+26

Variação26𝐷2=

𝐶𝑜𝑡𝑎çã𝑜𝐷 − 𝐶𝑜𝑡𝑎çã𝑜𝐷+26

𝐶𝑜𝑡𝑎çã𝑜𝐷+26

(4.13)

A partir destes valores, será possível realizar o cálculo do ganho total para o

evento 1 do índice 1 das cotações 26 dias após a ocorrência do flag para cada ponto.

Conside-se as duas ações (“Exemplo 1” e “Exemplo 2”) e, portanto, os dois gráficos

mostrados na figura 4.5. De forma análoga, o ganho para os demais dias também é

calculado:

Tabela 4.2 – Tabela de ganho para o evento 1 do índice 1

78

Dias após a

Flag

Ganho para cada dia após a flag

1 Ganho Total1 =

Ganho Total1𝐵2+

Ganho Total1𝐶2+

Ganho Total1𝐷2+

Ganho Total1𝐴1+

Ganho Total1𝐶1+

Ganho Total1𝐷1

2 Ganho Total2 =

Ganho Total2𝐵2+

Ganho Total6𝐶2+

Ganho Total2𝐷2+

Ganho Total2𝐴1+

Ganho Total2𝐶1+

Ganho Total6𝐷1

... ...

26 Ganho Total26 =

Ganho Total26𝐵2+

Ganho Total26𝐶2+

Ganho Total26𝐷2+

Ganho Total26𝐴1+

Ganho Total26𝐶1+

Ganho Total26𝐷1

... ...

60 Ganho Total60 = ...

Com estes valores, é possível plotar o gráfico do ganho total do evento 1 do

índice 1.

4.2 Cálculo do ganho consolidado

79

Após o cálculo do ganho total estimado para cada evento de cada índice, tem-se

a possiblidade de aplicar estas informações para qualquer ação de interesse do usuário,

de forma a estimar as possíveis flutuações futuras para cada cotação. Este método

funciona a partir de um processo que foi denominado de janela deslizante.

Tem-se, por exemplo, o ganho total do evento 1 do índice 1 representado abaixo,

juntamente com a barra em amarelo representando a duração de seu efeito.

Abaixo, representado por uma cruz verde, tem-se a ocorrência mais recente de

um flag para o evento 1 do índice 1 sobre a ação fictícia Exemplo 1. Para a estimativa

do ganho deste evento sobre esta ação, o gráfico do ganho do indicador será deslocado

para a posição do dia da ocorrência do flag, como representado abaixo:

Figura 4.6 – Janela deslizante sobre o Exemplo 1

Importante notar que apenas o intervalo do ganho referente à duração do evento

é considerado. No caso do exemplo, o espeço de tempo representado pela barra amarela.

Considerarndo agora para a mesma ação Exemplo 1 quatro diferentes eventos de

diferentes indicadores. As cotações desta ação serão percorridas da mais recente para a

Cotações da Ação

Exemplo 1

Tempo (dias)

Dias depois

do flag 0 60

Ganho do índice 1; Evento 1

Cotação mais recente na memória

compartilhada

Cotação mais recente que obteve

um flag do evento 1 do índice 1

Quantidade de dias

depois do flag

80

mais antiga dentro de um intervalo máximo de 60 dias, ou até não mais haver cotações

armazenadas na memória compartilhada. O interesse permanece apenas na ocorrência

mais recente de cada evento.

Assumiremos a situação hipotética abaixo:

Tabela 4.3 – Tabela de ocorrência de eventos

Indicador Evento Quantidade de dias para trás

em que houve a ocorrência

mais recente do evento

1 1 20

2 2 50

3 1 30

4 1 Evento não ocorreu nos últimos

60 dias

Teríamos para cada evento as características mostradas nos gráficos a seguir:

81

Figura 4.7 – Ganho de diferentes eventos para uma ação

selecionada

Os ganhos de todos os eventos acima, utilizando-se o conceito de janela

deslizante, será:

Figura 4.8 – Ganhos a partir de cada evento com janelas

deslizantes

Dias depois do

flag 0 20 60

0 50

0 30

Ganho do índice 1; Evento 1

Ganho do índice 2; Evento 2

Ganho do índice 3; Evento 1

Dias depois do

flag

Dias depois do

flag

60

60

Ganhos a partir de cada evento

Dias

82

O ganho consolidado de todos estes índices será a soma de cada um dos gráficos

acima:

Figura 4.9 – Ganho consolidado dos eventos para uma ação

Finalmente, as cotações previstas levando em conta o ganho consolidado de

todos os eventos considerados correspondem ao valor de cada ponto do gráfico acima

multiplicado pela última cotação na memória compartilhada:

Figura 4.10 – Previsão das cotações do Exemplo 1

O usuário do programa também tem a opção de visualizar as estatísticas dos

ganhos de todos os eventos sem que uma ação específica seja levada em consideração.

Neste caso, será considerada a combinação dos ganhos de cada evento a partir do

primeiro dia, como visto abaixo:

Tempo (dias)

Cotações da Ação Exemplo 1

Ganho consolidado para uma ação

Dias

83

Figura 4.11 – Ganho geral de diferentes eventos

Desta forma, a combinação do ganho destes eventos será:

Figura 4.12 – Ganho geral de todos dos eventos

Finalmente, o ganho consolidado total, será a soma de todos os ganhos

representados acima. O resultado é o obtido em um cenário onde todos os eventos

ocorreram no mesmo dia.

Ganho combinado de todos os índices

Dias

Ganho do índice 1; Evento 1

0 60

0

0 60

Ganho do índice 2; Evento 2

Ganho do índice 3; Evento 1

60

Dias depois

do flag

Dias depois

do flag

Dias depois

do flag

84

Figura 4.13 – Ganho consolidado de todos dos eventos

É interessante mencionar que se adotou o período de 60 dias após ocorrência do

evento para a coleta de dados visto que este período engloba sem dificuldades a duração

máxima do efeito de qualquer um dos eventos considerados para a análise.

É importante considerar que, quanto maior a quantidade de ações no banco de

dados, mais fidedigna a estimativa dos ganhos futuros deverá ser, pois estará mais

próxima da média do comportamento observado a partir de um evento. Por outro lado,

não parece ser indicado que sejam misturas ações que tenham características muito

distintas: considerando-se que o comportamento de valor um ativo é influenciado por

decisões de pessoas e sistemas que atuam em um determinado mercado ou nicho, é

natural que o resultado das variações sejam um reflexo dos parâmetros que aquele grupo

atuante naquela área de mercado utiliza, e portanto, provavelmente segue um padrão de

comportamento. É bem provável que um grupo que atua em determinada área de

mercado atue de forma distinta em relação a outros. Assim, o melhor é que sejam

consideras ações de um mesmo mercado e, talvez de um mesmo segmento ou nicho.

4.3 A arquitetura da plataforma

A plataforma desenvolvida neste programa engloba um software e um

aplicativo:

O software, por sua vez, pode realizar a consulta de cotações ao Yahoo

Finance ou ao Google Finance, logo, os valores das cotações podem ser

retirados a partir do servidor de ambos estes sites. Uma vez o download de

dados realizado, estes são armazenados na base de dados desenvolvida para

o próprio software.

O aplicativo da plataforma móvel, em paralelo, obtém os dados relativos às

cotações das ações do software do programa. Ou seja, uma máquina com o

software do programa funcionando adequadamente e uma base de dados de

Dias

Ganho consolidado de todos os índices

85

ações e cotações já preenchida agirá como servidor para que o aplicativo do

programa realize suas consultas.

Portanto, o esquema da arquitetura da plataforma apresenta-se como a seguir:

Figura 4.14 – Esquema da arquitetura da plataforma

4.4 A estrutura do programa

O programa é composto por 7 pacotes, dentro dos quais 37 arquivos

“.java”/”class” se distribuem. Algumas bibliotecas são utilizadas, onde ganham

destaque:

Substance.jar: biblioteca do “look and feel”, que cria uma interface

gráfica mais suave, lembrando o padrão MacOS;

Jfreechart-1.0.5.jar: biblioteca responsável pela criação de gráficos;

Lipermi-0.4.jar: biblioteca que auxilia na comunicação cliente/servidor

através do RMI (Remote Method Invocation).

Para compreendermos o papel de cada uma e como elas são interligadas,

primeiramente, vamos apresentar um diagrama hierárquico das classes:

Servidor do Yahoo Finance

Servidor do Google Finance

Servidor do Software Aplicativo

Base de dados

ou

86

Figura 4.15 – Diagrama Hierárquico das classes do programa

Do

wn

load

er

His

tori

calD

ow

nlo

ader

Fro

mG

oo

gle

His

tori

calD

ow

nlo

ader

Fro

mYa

ho

o

Do

wn

load

erFo

rAllS

tock

s

Co

mp

any

Cu

rren

cy

Mar

ket

Qu

ota

tio

n

Sto

ck

Bo

llin

ger

CC

I

Sto

ch

AD

XSt

ats

Bo

llin

gerS

tats

CC

ISta

ts

DM

ISta

ts

Exp

on

enti

alM

ovi

ngA

vera

geSt

ats

MA

CD

Stat

s

Mo

vin

gAve

rage

Stat

s SA

RSt

ats

Stat

s

Sim

ple

Mo

vin

gAve

rage

Stat

s

Sto

chas

ticS

tats

Var

iati

on

Ch

artD

ataS

et

Hel

per

ForC

har

t M

yCh

artP

anel

Qu

ota

tio

nIn

dex

Ch

art

Glo

bal

Var

s H

elp

er

Mai

n

MyS

qlD

b

Test

Qu

ota

tio

nFo

rSta

tsA

llSto

cks

Test

Sto

ckSt

atsG

UI

Test

Serv

er

Test

Serv

ice

Forc

eIn

dex

Stat

s

87

Dentro de cada pacote, os seguintes arquivos, na sua maioria classes, estão

distribuídos:

1. Pacote br.com.marcelle.stats.entities

Company: é nesta classe que as características de cada companhia se

encontram, tal como, por exemplo, o nome da companhia referente à uma

determinada ação;

Currency: é nesta classe que as características de cada moeda se encontraram,

tais como seu nome, símbolo e identificação no banco de dados;

Market: é nesta classe que as características de cada mercado de ação se

encontraram, tais como seu nome, símbolo, prefixo/sufixo nos sites do Yahoo

Finance e Google Finance, etc;

Stock: é nesta classe que as características de cada ação se encontraram, como

seu símbolo, companhia e mercado ao qual pertencem, além de métodos para

administrar e consultar as cotações;

Quotation: é nesta classe que as características de cada cotação se encontraram.

Nela os métodos responsáveis pelo cálculo da maioria dos indicadores estão

definidos;

2. Pacote br.com.marcelle.stats.downloader

DownloaderForAllStocks: é nesta classe que a interface da janela de “Atualizar

cotações de todas as ações...” está definida. O papel desta janela é fornecer ao

usuário a opção de atualizar as cotações de todas as ações presentes no banco

de dados. O usuário escolhe a partir de qual data gostaria de obter a atualização

e de qual site – Yahoo Finance ou Google Finance.

Downloader: é nesta classe que a interface da janela de “Atualizar cotações da

ação [...]...” e “Adicionar nova ação...” estão definidas. O papel da primeira é

fornecer ao usuário a opção de atualizar as cotações da ação selecionada da

lista de ações. O usuário escolhe a partir de qual data gostaria de obter a

cotação e de qual site – Yahoo Finance ou Google Finance; O papel da

segunda é fornecer ao usuário a opção de acrescentar uma nova ação a lista de

ações. O usuário escolhe a partir de qual data gostaria de obter a cotação e de

qual site – Yahoo Finance ou Google Finance, e fornece informações tais

como o mercado, o nome da companhia e seu símbolo;

HistoricalDownloaderFromYahoo: é nesta classe que os downloads dos dados

da ação requerida são realizados do Yahoo Finance a partir de uma consulta

HTTP e os dados baixados são tratados e armazenados no banco de dados,

assim como na memória compartilhada do programa;

HistoricalDownloaderFromGoogle: é nesta classe que os downloads dos dados

da ação requerida são realizados do Google Finance a partir de uma consulta

88

HTTP e os dados baixados são tratados e armazenados no banco de dados,

assim como na memória compartilhada do programa;

3. Pacote br.com.marcelle.stats.main

Main: é nesta classe que a classe Main do programa está localizada e será

executada a partir da máquina virtual do Java;

MySqlDb: é nesta classe que todos os acessos ao bando de dados são

realizados. A conexão é feita a partir do Driver do ODBC. Por este motivo, o

programa possui a limitação de funcionar apenas no sistema operacional

Windows. Para que seja possível realizar o acesso a partir do ODBC, é

necessário que a versão da máquina virtual Java seja inferior a 8, já que o

suporte ao driver ODBC foi retirado desta versão;

GlobalVars: nesta classe as variáveis globais do programa são definidas. Estas

são, em sua maioria, Hashmaps contendo as ações, moedas, companhias, etc.

Assim como um vetor que contém todas as ações da memória compartilhada.

Helper: nesta classe estão definidos métodos auxiliares que são executados por

várias diferentes partes do programa;

TestQuotationForStatsAllStocks: é nesta classe que métodos associados aos

cálculos de previsão de cotações e ganhos dos indicadores estão definidos.

Mais detalhes encontram-se na sessão 4.2;

TestStockStatsGui: é nesta classe que a interface gráfica da janela do programa

estará contida. Esta classe é explorada em mais detalhes na sessão 4.4;

4. Pacote br.com.marcelle.stats.chart

QuotationIndexChart: é nesta classe que define e trata o gráfico principal. Está

classe é explorada em mais detalhes na sessão 4.4;

ChartDataSet: é nesta classe que o DataSet que armazena os pontos (X, Y) do

gráfico principal é definido;

HelperForChart: é nesta classe que métodos auxiliares para implementação do

gráfico principal e dos gráficos auxiliares dos indicadores estão definidos;

MyChartPanel: é nesta classe que o painel do gráfico principal é definido;

5. Pacote br.com.marcelle.stats.stats

Stats: é nesta classe que métodos associados aos ganhos dos indicadores estão

definidos. Esta classe possui os métodos abstratos que serão implementados de

acordo com a característica de cada indicador. Mais detalhes encontram-se na

sessão 4.2;

89

ADXStats: é nesta classe que métodos relacionados ao indicador ADX, tais

como testes de flag estão definidos. Esta classe implementa a classe abstrata

Stats;

CCIStats: é nesta classe que métodos relacionados ao indicador CCI, tais como

testes de flag estão definidos. Esta classe implementa a classe abstrata Stats;

DMIStats: é nesta classe que métodos relacionados ao indicador DMI, tais

como testes de flag estão definidos. Esta classe implementa a classe abstrata

Stats;

MACDStats: é nesta classe que métodos relacionados ao indicador MACD, tais

como testes de flag estão definidos. Esta classe implementa a classe abstrata

Stats;

SARStats: é nesta classe que métodos relacionados ao indicador SAR, tais

como testes de flag estão definidos. Esta classe implementa a classe abstrata

Stats;

StochasticStats: é nesta classe que métodos relacionados ao indicador

Oscilador Estocástico, tais como testes de flag estão definidos. Esta classe

implementa a classe abstrata Stats;

BollingerStats: é nesta classe que métodos relacionados ao indicador Banda de

Bollinger, tais como testes de flag estão definidos. Esta classe implementa a

classe abstrata Stats;

ForceIndexStats: é nesta classe que métodos relacionados ao índice de Força,

tais como testes de flag estão definidos. Esta classe implementa a classe

abstrata Stats;

6. Pacote br.com.marcelle.stats.index

Bollinger: é nesta classe que métodos estáticos para o cálculo do indicador

Banda de Bollinger são implementados. Por questão de organização, estes

métodos foram definidos nesta classe, ao invés de na classe Quotation, como a

maioria dos indicadores.

Stoch: é nesta classe que métodos estáticos para o cálculo do indicador

Oscilador Estocástico são implementados. Por questão de organização, estes

métodos foram definidos nesta classe, ao invés de na classe Quotation, como a

maioria dos indicadores.

CCI: é nesta classe que métodos estáticos para o cálculo do CCI são

implementados. Por questão de organização, estes métodos foram definidos

nesta classe, ao invés de na classe Quotation, como a maioria dos indicadores.

7. Pacote br.com.marcelleHelper

90

TestService: esta constitui a interface que, a partir do RMI, auxiliará na

comunicação cliente e servidor.

TestServer: é nesta classe que métodos cuja assinatura encontra-se na interface

estão definidos.

4.5 A estrutura do aplicativo

O código fonte do aplicativo é composto por 2 pacotes, dentro dos quais 6

arquivos, em sua maioria classes, se distribuem da seguinte forma:

Figura 4.16 – Diagrama hierárquico das classes do aplicativo

1. br.com.marcellestockapp

MainActivity: esta é a principal classe do programa. É nela que o código

relacionado a tela principal do aplicativo – Tela da lista de ações favoritas -

está contido;

StockMenuActivity: é nesta classe que o código relacionado a tela secundária

do aplicativo – chamada a partir do botão “+” da tela principal – está contido.

2. br.com.marcelleHelper

TestService: esta constitui a interface que, a partir do RMI, auxiliará na

comunicação cliente e servidor.

AccessSharedPreferences: é nesta classe que métodos associados à estocagem

de dados no Android estão definidos.

ListItemAdapter: é nesta classe que métodos relacionados à lista da tela

principal do aplicativo estão definidos.

StockMenuListItemAdapter: é nesta classe que métodos relacionados à lista da

tela secundária do aplicativo estão definidos.

ListItemAdapter

MainActivity

AccessSharedPreferences StockMenuActivity TestService

StockMenuListItemAdapter

91

4.6 A interface gráfica do Programa

Como visto previamente, as classes responsáveis pela interface gráfica do

programa estão contidas no pacote br.com.marcelle.chart e br.com.marcelle.main. Pela

complexidade que estas classes podem apresentar, é interessante entrar em um pouco

mais de detalhes em como a estrutura da interface gráfica do programa é criada.

1. A estrutura da tela do programa

A estrutura da tela do programa encontra-se localizada na classe

TestStocksStatsGui – No pacote br.com.Marcelle.Main.

O primeiro ponto importante a considerar-se sobre esta classe é que esta estende

a classe JFrame. Isto significa que a classe TestStocksStatsGui será uma subclasse de

JFrame. Logo, herdará seus métodos.

Nota: a classe JFrame é encontrada no pacote javax.swing, e é fundamental para

a escrita de uma GUI (Graphic User Interface). Esta classe possui diversas superclasses,

herdando mais de 200 métodos. O diagrama de hierarquia da classe JFrame é o seguinte

[10]:

92

Figura 4.17 – Hierarquia da classe JFrame

A seguir, entraremos, em um primeiro momento, em detalhes sobre a

constituição e estrutura da tela principal. Será fácil observar após leitura que o

processo de criação da estrutura da interface gráfica é mecânico e a criação de novas

janelas ocorrerá de forma análoga às demais:

a) ShowGui

O método ShowGui é invocado pela função Main do programa, onde o objeto

testStocksStatsGui do tipo TestStocksStatsGui é instanciado. Este método possui, entre

outras funções, especificar o tamanho do Frame e posicioná-lo na tela. Além disso, é

nele onde dois componentes são adicionados ao Frame inicial: um do tipo JSplitPane,

no centro da janela, e outro do tipo JToolBar, ao sul da janela.

Object

Component

Container

Window

Frame

JFrame

Java.lang

Java.awt

Java.swing

Classe pai de todas as classes em Java por padrão, a classe Object

está acima de todas na hierarquia. Por este motivo, pode ser,

inclusive, utilizada para se referir a um objeto cujo tipo é

desconhecido.

Classe que define um componente - um object - que pode ser

visualizado, tal como um botão ou uma barra de rolagem.

Classe que define um componente que pode conter outros

componentes. Esta classe possibilita que um menu contenha

diversos botões e uma barra de rolagem, por exemplo.

Classe que define uma janela básica, sem título ou bordas. Esta

classe basicamente possibilita que eventos ocorram a partir da

interação do usuário com a interface gráfica.

Classe que permite adicionar à classe Window uma Frame, tal

como bordas e um título, oferecendo um ar familiar à janela.

Classe que herda todas as características de uma Frame,

acrescentando mais funcionalidades, de forma a permitir uma

visualização mais sofisticada de determinados componentes.

93

Figura 4.18 – O Frame principal v1

b) GetSplitPaneForGraphicalAreaAndControlArea & getBottomToolBar

GetSplitForGraphicalAreaAndControlArea:

Este método instancia o objeto SplitForGraphicalAreaAndControlArea do tipo

JSplitPane. A classe JSplitPane é uma subclasse da classe Component, este é utilizado

com o objetivo de dividir o painel em dois na vertical – e apenas dois – componentes,

baseando-se na implementação Look & Feel definida no método showGui. A

localização do divisor do painel é definida como estando 15% à direita do Frame

principal. Os componentes nos quais o JSplitPane é dividido são, respectivamente, o

splitPaneForControlAndStocksArea e splitPaneForChartsArea, ambos objetos

instanciados da classe JSplitPane.

Figura 4.19 – GetSplitForGraphicalAreaAndControlArea

JToolBar toolbar

JSplitPane splitPaneForGraphicalAreaAndControlArea

TestStockStatsGUI testStockStatsGUI

(thisX, thisY)

screenSize.width

width

screen

Size.heigh

t

heigh

t

Tela do monitor

94

GetBottomToolBar:

Este método instancia o objeto toolbar do tipo JtoolBar. O JtoolBar é um

container que agrupa diversos componentes em colunas e linhas. O objetivo deste objeto

será afixar ao usuário a proporção do desenvolvimento dos cálculos, fornecendo a ideia

de tempo.

Figura 4.20 – Painel v1

c-) GetSplitPaneForControlAndStocksArea & getSplitPaneForChartsArea

GetSplitPaneForControlAndStocksArea

Este método instancia o objeto SplitPaneForGraphicalAreaAndControlArea do

tipo JSplitPane. Isto porque, novamente, este componente será subdividido em dois,

desta vez, horizontalmente, baseando-se na implementação Look & Feel definida no

método showGui. A localização do divisor do painel é definida como estando 15%

abaixo do topo do JSplitPane. Os componentes nos quais o JSplitPane é dividido são,

TestStockStatsGUI testStockStatsGUI

JToolBar toolbar

JSplitPane splitPaneForGraphicalAreaAndControlArea

JSplitPane splitPaneForChartsArea

JSplitPane splitPaneForControlAndStocksArea

95

respectivamente, o JsplitPaneListStocks, do tipo JSplitPane, embaixo, e o

PanelForControlArea, do tipo JPanel, que ficará em cima.

Figura 4.21 – GetSplitPaneForControlAndStocksArea

GetSplitPaneForChartsArea:

Este método instancia o objeto spliPaneForChartsArea do tipo JSplitPane. Este

container, portanto, será dividido em dois verticalmente, em uma proporção de 60/40,

dando espaço a dois novos containers: o splitPaneForMainChartAndOptionsArea, do

tipo JSplitPane, que ficará à esquerda, e o splitPaneForOtherChartsArea, do tipo

JScrollPane, que ficará à direita.

Figura 4.22 – GetSplitPaneForChartsArea

96

Figura 4.23 – Painel v2

d-) GetSplitPaneForMainChartAndOptionsArea & getPaneForOtherChartArea

GetSplitPaneForMainChartAndOptionsArea

Este método instancia o objeto splitPaneForMainChartAndOptionsArea do tipo

JSplitPane. Assim, o componente será subdividido em dois horizontalmente baseando-

se na implementação Look & Feel definida no método showGui. A localização do

divisor do painel é definida como estando 70% abaixo do topo do JSplitPane. Os

componentes nos quais o JSplitPane é dividido são, respectivamente, o

PaneForMainChart, do tipo JScrollPane, embaixo, e o PanelForChartOptions, do tipo

JPanel, que ficará em cima.

TestStockStatsGUI testStockStatsGUI

JToolBar toolbar

JSplitPane splitPaneForGraphicalAreaAndControlArea

JSplitPane splitPaneForControlAndStocksArea

JSplitPane splitPaneForChartsArea

JSplitPane

splitPaneForMainChartAndOptions

JScrollPane splitPaneForOtherChartArea

Jpane panelForControlArea

JSplitPane jSplitPaneListStocks

97

Figura 4.24 - GetSplitPaneForMainChartAndOptionsArea

GetPaneForOtherChartArea

Este método instancia o objeto splitPaneForOtherChartsArea, do tipo JcrollPane,

e, a partir do método setViewPortView, pertencente à classe JscrollPane, cria um novo

viewPort. O argumento deste método será do tipo JPanel - o retorno do método

createChartPanelCombined. A função do viewPort será abrigar 4 gráficos, como

veremos a seguir.

Figura 4.25 – GetPaneForOtherChartArea

e-) CreateChartPanelCombined

A interface gráfica conterá, de forma padrão, 4 gráficos, juntamente com

o painel do gráfico principal, que estarão constantemente mostrando informações ao

usuário:

Painel do gráfico principal, contendo, entre outros, um gráfico com os

valores de fechamento da ação selecionada; este painel estará no centro

da tela – mais especificamente, dentro do JScrollPane

PaneForMainChart, e, dependendo das opções escolhidas pelo usuário,

pode conter entre um e quatro gráficos. Foi necessário utilizar mais do

que um gráfico devido a diferenças de escalas e faixa de valores dos

índices utilizados no programa.

Quatro sub-gráficos, cada um representando um dos quatro tipos de

índice de análise técnica (Tendência, Volume, Volatilidade e Momento).

98

A variável combinedDomainXYPlot, por sua vez, é um objeto final – logo,

imutável – instanciado a partir da classe CombinedDomainXYPlot. Esta classe é uma

classe estendida da XYPlot, utilizada para plotar dados na forma de pares de

coordenadas (X, Y) – Portanto, utilizando dados implementados a partir de uma

interface XYDataset, a classe CombinedDomainXYPlot permite que diversos subplots

estejam contidos dentro de um mesmo eixo – funcionalidade que será muito utilizada.

O construtor desta classe possui como argumento um objeto do tipo DateAxis,

que será instanciado com a label “Dias“. Isto significa que um eixo de dados nomeado

“Dias“ – o eixo das abscissas do gráfico – será criado.

Figura 4.26 – combinedDomainXYPlot variable

2. A tela principal

Finalmente, procedendo de forma análoga, os demais painéis são criados, dando

origem a uma interface gráfica que possui a seguinte estrutura:

Figura 4.27 – Tela principal do programa

99

3. O gráfico principal

O gráfico principal corresponde à tela central do programa. Nele será possível

visualizar diversas funcionalidades correspondentes a uma determinada ação

selecionada a partir da lista de ações:

Gráfico dos valores de fechamento da ação contidos no banco de dados,

correspondentes ao intervalo escolhido pelo usuário;

Gráficos correspondentes a todos os índices de tendência, volatilidade,

volume e Momento definidos no programa, que devem ser selecionados

nos checkboxes no painel abaixo do gráfico principal;

Os CandleSticks correspondentes a cada dia de fechamento plotado no

gráfico;

Gráfico dos Fechamentos futuros – O core do software, essa opção

permite ao usuário visualizar a estimativa do programa para os próximos

valores de fechamento da ação a partir de seu histórico e dos diversos

índices de análise técnica estudados neste projeto.

As características e métodos referentes a estrutura do gráfico principal foram

escritas na classe QuotationIndexChart.

Para que seja possível a visualização de todas as opções acima simultaneamente,

caso desejado pelo usuário, de forma organizada e coesa, o plot principal, denominado

combinedPlot será um objeto da classe CombinedDomainXYPlot, permitindo que o plot

contenha subplots – como mencionado na sessão 4.5.1. Este, por sua vez, conterá, a

priori, 4 subplots – objetos do tipo XYPlot – diferentes:

Subplot que conterá pontos referentes aos valores de fechamento,

fechamentos futuros, índices de Bollinger, SAR, Média móvel e velas;

Subplot que conterá pontos referentes aos valores de índices que possuem

uma variação de 0 a 100 no eixo das coordenadas. Logo, o índice

Estocástico;

Subplot que conterá demais indicadores, tais como CCI, DMI e ADX;

Subplot que conterá o índice MACD e Índice de Força.

100

Todos os subplots mencionados acima possuem o eixo das ordenadas – Domain

Axis - em comum, definido como um objeto da classe segmentedTimeLine, que será

segmentado de segunda-feira a sexta-feira, de forma a evitar que dias correspondentes

a finais de semana – onde não há trocas nas bolsas de ações – sejam considerados no

eixo.

Cada subplot, entretanto, possuirá seu próprio objeto da classe NumberAxix para

fazer referência ao eixo das abcissas, possibilitando que uma escala uniforme no eixo

vertical seja mantida para cada um.

Também será possível encontrar, pelo menos, um objeto de renderer definido

para cada subplot. O renderer será vital para que cada XYPlot seja instanciado, e será a

partir dele que cada série – linha – do gráfico terá sua espessura, formato ou cor editados.

As séries pertencentes a cada renderer têm seus índices definidos dentro da própria

classe QuotationIndexChart. Um método também definido dentro da classe, será

responsável em atribuir a cada série, a partir de seu índice e específico renderer, uma

cor.

O conjunto de par ordenados (X, Y), que será utilizado para o plot de cada sub-

gráfico é fornecido ao subplot no momento em que este é instanciado. Estes, na sua

maioria, serão objetos do tipo CharDataSet, classe definida dentro do programa.

Nota: o DataSet do candlestick é um objeto da classe DefaultHighLowDataSet.

Esta classe se encaixa perfeitamente para a utilização de plot de velas, visto que a

instância deste objeto recebe matrizes de data, maior valor, menor valor, valor de

abertura, valor de fechamento e volume: características típicas de uma vela.

dataSetForCandles = new DefaultHighLowDataset("Fechamento", date, high, low, open, close, volume); subPlotMain.setDataset(0, dataSetForCandles);

Figura 4.28 – Atualização de sobplot com novos valores de vela

Desta forma, a estrutura geral do gráfico principal será a seguinte:

101

Figura 4.29 – Estrutura gráfica do gráfico principal

4.7 Técnicas de computação utilizadas ao longo do projeto

Ao longo do projeto várias técnicas relacionadas a metodologia de

Programação Orientada a Objetos foram utilizadas. Sem tais técnicas, várias

facilidades implementadas seriam muito difíceis, quando não impossíveis de se

implementar [11].

Podem ser citadas as seguintes técnicas relacionadas à linguagem Orientada a

Objetos:

1. Herança

A herança facilita no desenvolvimento do código, deixando-o mais enxuto e,

por consequência, mais simples e mais fácil de se entender, além de torná-lo

expansível. A técnica permite que os elementos que são comuns aos vários níveis de

declaração de objeto (parentesco) sejam definidos em uma classe pai, onde variáveis e

métodos podem ser utilizados por classes filhas sem a necessidade de se declarar

novamente.

O principal exemplo de uso de herança no projeto é na classe Stats que foi

definida como classe pai e teve várias classes herdando seus métodos e variáveis.

Assim, por exemplo, a classe BollingerStats, entre outras, foi criada a partir da classe

Stats e teve somente os métodos e variáveis pertinentes ao indicador Bollinger, para

coleta de estatísticas, escritos. Deve-se lembrar que várias classes são heranças de

JScrollPane PaneForMainChart

Subplots

MyChartPanel ChartPanel

JFreeChart stocksAndIndicesChart

CombinedDomainXYPlot combinedPlot

Séries

102

classes pré-definidas em bibliotecas do Java, o que é natural para a linguagem

utilizada. Uma questão muito importante relacionada à herança é a manutenção do

código. Quando um bug é detectado na classe pai, a correção será naturalmente

absorvida por todas as classes filhas.

2. Classes abstratas

A abstração de classes permite que um método seja forçadamente

implementado em classes filhas. Uma classe abstrata não pode ser instanciada, uma

vez que possui métodos não implementados – somente as assinaturas dos métodos são

definidas. Novamente a classe Stats é um exemplo a ser citado, pois foi definida como

abstrata. Assim, alguns métodos essenciais para as classes filhas e que dependem dos

indicadores – e, portanto, não poderiam ser escritos na classe pai – foram definidos. A

classe abstrata permite a personalização de uma mesma função para classe filha. As

classes filhas não podem ser criadas sem que os métodos definidos como abstratos na

classe pai seja escrita.

3. Instanciamento dinâmico de objetos

Com esta técnica é possível tornar o código altamente dinâmico, permitindo

que novos tipos de objetos sejam introduzidos sem que haja a necessidade de

reescrever códigos para se adaptar aos novos objetos. Esta técnica é essencial para a

implementação do projeto, sendo utilizada em métodos responsáveis pelo cálculo de

ganho estatístico acumulado de cada indicador. Assim, dinamicamente, os objetos que

representam cada um dos índices a ser utilizado são instanciados a partir dos nomes

das classes correspondentes. Em qualquer momento, podem ser adicionados ou

removidos novos índices, bastando que os índices desejados para o cálculo de ganho

estatístico tenham os nomes de suas classes listadas na matriz “eventTestClasses”, na

classe Main do projeto. Interessante também citar a leitura de variáveis declaradas em

objetos instanciados a partir de seu nome. Podemos ler os valores destas variáveis

dinamicamente, permitindo novamente alta flexibilidade na criação do código.

O trecho de código abaixo mostra um exemplo de leitura de uma variável de

forma dinâmica:

103

public Color getClassColorForMethod(String methodName) { for (int classCount=0;classCount<Main.eventTestClasses.length;classCount++) { Class<?> thisClass = Main.eventTestClasses[classCount]; try { Stats thisStats = (Stats)thisClass.newInstance(); String[] eventStringsForClass = thisStats.eventStrings; for (int i=0;i<eventStringsForClass.length;i++) { String thisEventString = eventStringsForClass[i]; if (methodName.equals(thisEventString)) { return thisStats.getColor(); } } } catch (Exception e) { return null; } } return null; }

Figura 4.30 – Exemplo de acesso dinâmico

Vemos no exemplo classes sendo instanciadas dinamicamente a partir do seu

nome, com o método “newInstance”. A técnica de casting permite que o método

“getColor”, definido na classe pai “Stats” seja executado sem que o código precise ter

ciência em relação à definição de classe filha do objeto instanciado.

4. Casting

O casting permite que o código trate um determinado objeto com as

caraterísticas de uma classe conhecida. Uma classe filha pode ser tratada com a técnica

de casting para assumir as caraterísticas e funcionalidades específicas da classe pai.

Assim o código torna-se altamente dinâmico, já que não precisar saber detalhes

específicos de todas as classes que o programa pode ter em memória ao tratar

determinado objeto; pode-se tratar o objeto como sendo do tipo da classe pai,

executando-se os métodos da classe pai. No exemplo acima, transformou-se uma

variável de tipo específico (por exemplo, BollingerStats) em um tipo mais genérico

(Stats).

5. Métodos estáticos

Os métodos estáticos têm por característica principal o fato de serem

unicamente instanciados somente na inicialização, de forma automática, e em

104

momento nenhum ao longo da execução do programa precisam ser instanciados

novamente. São úteis para métodos e variáveis que são necessárias em somente uma

instância (somente uma vez) ao longo do programa. Uma outra utilidade para métodos

estáticos é quando precisamos executar funções genéricas, que independem do tipo de

objeto sendo tratado e, portanto, seria desperdício de processamento e memória uma

nova instância de um objeto somente para executar funções genéricas.

6. Interface

As classes interfaces declaram somente as assinaturas dos métodos. Assim, é

possível que métodos ainda não criados ou pertencentes a bibliotecas remotas sejam

executados. A classe interface funciona de forma análoga a uma classe abstrata, onde

todos os seus métodos são, sem exceção, abstratos. Desta forma, a classe interface não

pode ser instanciada. A classe que implementa a classe interface possui a declaração

da assinatura dos métodos contidos na classe interface. O conceito de classes

interfaces é essencial para a implementação do RMI.

7. Remote Method Implementation (RMI)

- RMI (Remote Method Implementantion): é através desta interface de

programação que a comunicação entre o cliente – o aplicativo para celular - e o

servidor – computador no qual o programa e o banco de dados estão contidos, ocorre.

O cliente invoca os métodos referenciados através da interface de forma remota. Estes

métodos estão codificados no servidor, e são responsáveis em retornar para o cliente as

informações que lhe forem requisitadas a partir dos argumentos dados. No servidor,

por sua vez, um objeto referente a classe que implementa a interface - na qual os

métodos estão definidos – é instanciado. É este o objeto remoto que será vinculado a

uma porta TCP (protocolo da camada de transporte do modelo OSI que tem por

principal característica o controle de fluxo garantindo a idoneidade dos dados

transmitidos), realizando a comunicação com o cliente [12].

8. Threads

Usando os métodos de Thread que são fornecidos pelo Java, é possível

executar processamento de informações em paralelo, aumentando consideravelmente a

qualidade do software e do aplicativo. Por exemplo, há situações em que é necessário

executar cálculos enquanto que a interface gráfica do programa é atualizada e ainda

permite sua utilização. Não seria possível realizar estes cálculos sem “prender” a

105

interface se não fosse a capacidade de processamento em paralelo gerenciado pelo

Java através de Threads. Outro momento do projeto em que o conceito de Thread foi

utilizado deu-se na implementação do aplicativo Android, onde a comunicação com o

servidor acontecia enquanto que a interface continuava disponível para o usuário.

9. Handlers e Listeners

Os Handlers e Listeners em Java permitem que sejam lidas mensagens de

notificação que avisam sobre a ocorrência de determinado evento (por exemplo, o

click em um botão ou o término de um determinado processamento de uma Thread).

São objetos instanciados em forma de Thread (pois rodam em paralelo) que

monitoram a chegada de uma mensagem. Com a mensagem recebida é possível

executar códigos para as ações necessárias.

10. Structured Query Language (SQL)

A linguagem SQL foi utilizada durante a comunicação com o banco de dados.

Este, por sua vez, foi elaborado com o auxílio da plataforma Windows Access.

11. Extensible Markup Language (XML)

Esta linguagem constitui-se basicamente de uma série de “rules” ou tags, que

tem como finalidade codificar páginas, possibilitando que uma interface entre o

Android e o Java seja realizada. Para o desenvolvimento do aplicativo, esta linguagem

foi utilizada para que estruturas, tais como a da página principal, fossem escritas.

5. Aplicação e evolução

5.1 Exemplos de uso do programa

O programa fornece ao usuário a possibilidade de visualizar o ganho estimado

de cada indicador de análise técnica do seu banco de dados (mais detalhes na sessão

4.1.2). O usuário tem a possiblidade de fazê-lo sem que uma ação específica seja

selecionada, ou a partir da seleção da ação desejada.

106

Para obter os ganhos de cada índice sem que uma ação específica seja

considerada, o usuário deve clicar no botão “Mostrar estatísticas”:

Figura 5.1 – Botão “Mostrar estatísticas”

O usuário possui a opção de escolher quais tipos de indicadores gostaria de

visualizar – Tendência, volume, momento ou volatilidade – além de poder escolher

por plotar o ganho consolidado de cada um dos tipos de indicadores:

Figura 5.2 – Índices e linhas médias

No exemplo acima, todos os tipos de indicadores estão selecionados, e

desejamos observar a linha média – ganho consolidado – de cada um. Como resultado,

na tela direita do programa os seguintes gráficos serão plotados:

107

Figura 5.3 – Ganho de acordo com as diferentes categorias

Esta funcionalidade também está presente para uma ação específica. Para tal,

basta que uma ação seja selecionada da lista de ações. Neste caso, além das opções

apresentadas anteriormente, o gráfico do fechamento da ação é plotado no gráfico

principal – em azul, juntamente com os fechamentos futuros previstos – em verde, por

padrão.

108

Figura 5.4 – Fechamento e ganhos futuros

Além disso, o usuário tem a possibilidade de omitir a visualização dos ganhos

futuros, assim como de visualizar as velas de cada dia:

Figura 5.5 – Ganhos futuros e velas

Também é possível disfrutar de outras funcionalidades, tais como a escolha da

visualização de diversos indicadores, a partir de checkboxes:

Figura 5.6 – Indicadores

Por exemplo, se o usuário escolher visualizar as velas de cada dia, o indicador

ADX, o indicador MACD e o indicador Estocástico apenas, o gráfico principal será o

seguinte:

109

Figura 5.7 – Indicadores

Para atualizar a cotação das ações, basta clicar em um dos botões localizados a

esquerda do painel. O primeiro faz referência à cotação da ação selecionada no painel

de ações, enquanto a segunda faz referência a todas as ações do bando de dados:

Figura 5.8 – Atualização das ações

Nestas opções, o usuário escolhe a partir de qual dia ele gostaria que as

cotações fossem armazenadas:

Figura 5.9 – Atualização de todas as ações

110

Figura 5.10 – Atualização de uma ação específica

O usuário também possui as opções de acrescentar uma ação assim como obter

as opções das melhores ações no banco de dados para se investir a partir dos seguintes

botões:

Figura 5.11 – Adicionar Ações e Lista de melhores ações

A opção de adicionar ações é muito semelhante à função de atualizar ação.

Como diferença, nenhum campo encontra-se “bloqueado”:

Figura 5.12 – Adicionar Ações

Quando o usuário seleciona a opção “Melhores ações”, uma lista contendo o

ganho e o tempo estimado de retorno para cada ação é impressa na tela:

111

Figura 5.13 – Melhores Ações

Assim, a tela do software, com uma ação qualquer selecionada, apresenta-se

desta forma para o usuário:

Figura 5.14 – Tela do software

5.2 Exemplos de uso do aplicativo

112

A tela inicial do aplicativo possui um botão à esquerda e uma lista, que

inicialmente apresenta-se vazia. O botão de “+”permite que ações do banco de dados

sejam acrescentadas à lista de favoritos:

Figura 5.15 – Tela principal vazia

Uma vez que este botão receba um clique, uma segunda tela se abre, exibindo a

lista de ações disponíveis no banco de dados:

Figura 5.16 – Lista de ações disponíveis

113

Uma vez selecionada a ação, esta é impressa na lista de favoritos, juntamente

com o seu ganho estimado e a quantidade de dias para a obtenção deste ganho:

Figura 5.17 – Lista de ações favoritas

No exemplo acima, após a escolha das ações desejadas pelo usuário, este

possui a opção de atualizar os dados. Para tal, basta que deslize a tela para baixo com o

dedo:

Figura 5.18 – Atualização dos dados

114

Finalmente, após a atualização dos dados, as ações são impressas de forma

ordenada na tela.

Figura 5.19 – Lista após atualização

As ações selecionadas pelo usuário permanecem armazenadas na memória do

celular, e esta mesma lista se apresentará quando o aplicativo for desligado ou o

telefone reiniciado.

5.3 Teste da metodologia

A utilização de índices financeiros de análise técnica é amplamente difundida

no mercado financeiro. Sendo assim, não se torna difícil achar ferramentas que os

implementem e realizem seus cálculos. Entretanto, durante minha pesquisa para

realização deste projeto, não achei nenhuma ferramenta que realizasse o estudo

estatístico do ganho combinado destes indicadores. Desta forma, acredito que este

projeto não possua um benchmark com o qual poderíamos realizar uma comparação.

Desta forma, com o objetivo de comprovar a eficácia do software, realizei um

teste onde os seguintes parâmetros foram considerados:

36 ações do mercado da BOVESPA foram analisadas;

A faixa de datas consideradas para a coleta de estatísticas destas ações

foi de 18/01/2012 a 31/12/2015. Logo, de aproximadamente 3 anos;

O período no qual a simulação foi realizada, ou seja, o período no qual

os resultados do programa foram utilizados para as ações foi entre os

115

dias 01/01/2016 e 01/04/2016. Logo, a simulação foi realizada em uma

faixa de aproximadamente 4 meses.

Para a realização do teste, as ações consideradas foram varridas a partir do dia

01/01/2016 e, diariamente, as sugestões de compra e venda fornecidas pelo programa

para cada uma das ações foi executada. Estas sugestões são obtidas a partir do botão

“Mostrar Estatísticas” e indicam a variação total máxima positiva calculada no dia

para cada ação. Este cálculo leva em consideração a variação entre o menor vale e o

maior pico observados para os valores de cotações futuras estimados para cada ação.

Desta forma, admite-se que o usuário compraria a ação no seu menor vale e a venderia

no seu menor pico, onde variações nulas são desconsideradas.

Durante o período no qual a simulação foi realizada, foram observados ao total

2917 sinais de flag de compra e venda correspondentes a maior variação observada no

período. Deste montante, 2099 correspondiam a flags relacionados a um mesmo

evento de compra e venda em uma determinada data, e, portanto, foram

desconsiderados. Desta forma, no período estudado, ocorreram 818 flags válidos e

que, portanto, seriam executadas pelo usuário.

Se realizada a compra e venda das ações nos períodos de vales e picos,

respectivamente, como alertado pelo programa para todos os 818 sinais de flag

considerados, o ganho estimado pelo software seria, após os 4 meses de simulação, de

2,8%. Entretanto, 77% destes flags corresponderam a variações positivas na vida real

que, após o período de 4 meses, renderam um ganho de 12,37%.

Observa-se que o ganho real médio foi bem acima da expectativa indicada pelo

programa. Este fato deve ser explicado pela alta volatilidade que tem sofrido a

BOVESPA nos últimos meses devido aos eventos políticos e econômicos.

É importante que esta simulação não seja encarada como um resultado

definitivo da efetividade do programa ou da sua metodologia. O mesmo tipo de

simulação deveria ser executado para diferentes períodos do tempo, assim como

diferentes mercados.

5.4 Retrospecto

Como principais pontos do projeto, pode-se destacar:

O programa permite que o usuário realize a consulta gráfica do histórico

dos valores de fechamento de cada ação no banco de dados; em paralelo,

é fornecida a possiblidade de plotar sobre o mesmo plot do fechamento

116

o valor de cada um dos índices disponíveis no programa, assim como as

velas correspondentes a cada dia em que houve uma negociação do papel;

O programa permite ao usuário visualizar graficamente o ganho que é

calculado para cada evento de índice para uma ação selecionada– Quando

o evento do respectivo índice ocorrer dentro de uma determinada janela

de dias, ou sem levar uma ação específica em consideração; um clique

sobre a série no gráfico de ganhos de índices correspondente a um

determinado evento marca no gráfico principal a última ocorrência do

evento correspondente. Além disto, é disponível que o usuário realize o

plot da “linha média para índice”, que corresponde ao ganho consolidado

de cada categoria de índice.

O programa fornece a possibilidade de visualizar no gráfico principal os

“fechamentos futuros”. Ou seja, um gráfico correspondente à estimativa

do valor dos fechamentos futuros para uma determinada ação, contínuo

à última cotação do respectivo papel armazenada no banco de dados;

O programa fornece a possibilidade de visualizar as “melhores ações”.

Ou seja, uma lista ordenada contendo o ranking do ganho máximo

estimado para cada ação contida no banco de dados;

O aplicativo permite que ações contidas no banco de dados do servidor

sejam selecionadas e armazenadas à lista de ações preferidas no

dispositivo Android;

O aplicativo permite ao usuário que visualize o ganho máximo estimado

para suas ações preferidas e a quantidade de dias dentro da qual poderia

adquirir o retorno estimado. Estes dados são impressos em uma lista de

forma ranqueada e ordenada e atualizados sempre que o usuário

“escorregar” a tela para baixo com o seu dedo.

5.5 Evolução e próximos passos

Como próximos passos e melhorias que podem sem feitas ao software pode-se

citar:

Implementação de mais indicadores: naturalmente, mais indicadores

podem ser aplicados ao programa;

Divisão das ações por setor, mercado e período de tempo: para a

estimativa do ganho de cada evento de cada índice, a utilização

117

exclusiva de uma gama de ações pertencentes a um mesmo setor, ou a

um mesmo mercado ou janela de tempo, poderia tornar os resultados

mais fidedignos, visto que estas ações compartilhariam de investidores

e situações de mercado mais similares;

Utilização de dados em Real Time: uma opção interessante de fornecer

ao usuário é a possibilidade de realizar consultas Intraday. Ou seja,

permitir que dados sejam consultados ao longo do dia, ao invés de

somente no fechamento do mercado financeiro;

Atribuição de pesos aos tipos de indicador: realização da aplicação de

pesos a cada tipo de indicador. Ou seja, a atribuição de pesos pode estar

baseada, em um primeiro momento, à classificação do indicador. Por

exemplo, indicadores de tendência são considerados mais fortes que

indicadores de força. Isso porque é mais importante a identificação do

tipo de tendência do que a sua magnitude: não é de grande utilidade

reconhecer se uma tendência é forte se não se sabe se esta é de alta ou

queda. Dessa forma, seria natural atribuir um peso maior a indicadores

de tendência sobre o resultado final do que, por exemplo, indicadores

de momento. Em um segundo momento, o estudo individual de cada

indicador tornar-se-ia mais interessante para a atribuição de pesos;

Plotagem de gráficos no aplicativo: para tornar o aplicativo mais

convidativo, os gráficos que são plotados na tela principal do programa

poderiam, também, ser plotados no aplicativo.

6. Conclusão

A partir deste trabalho, é possível retirar-se conclusões muito interessantes

relacionadas à metodologia implementada, aos indicadores escolhidos e às técnicas de

programação utilizadas.

Quando analisado o gráfico relativo ao ganho estatístico do indicador na tela à

esquerda do programa, observa-se que muitos índices, tais como o SMA, SAR e ADX

apresentam comportamentos que não possam vir a ser de grande utilidade: ou seja,

determinados indicadores podem levar a conclusões relativamente vazias, e que não

agregam muito valor a análise, apresentando variações que na média são insignificantes.

Os indicadores acima mencionados, por exemplo, apresentavam o gráfico de ganho

relativamente constante e perto de zero;

118

Por outro lado, o indicador de Bandas de Bollinger aparenta ser um indicador

muito interessante de ser explorado mais a fundo, visto que, de acordo com a análise

realizada na sessão 2, as Bandas de Bollinger apresentam efeitos com comportamentos

bem definidos, com espaços de tempo relativamente constantes.

É importante acrescentar que o software trabalha em prazos relativamente curtos.

Isto porque foram considerados efeitos com durações relativamente curtas para todos os

indicadores – não ultrapassando 60 dias. Ou seja, resultados relacionados às estimações

de cotações futuras de cada ação não devem se estender a períodos superiores a 2 meses.

Com relação à metodologia do trabalho, é importante sinalizar que esta foi

completamente desenvolvida em cima de estatísticas e, para que forneça resultados os

mais fidedignos possível, é importante que esta seja bem distribuída. Ou seja, o ideal é

que a metodologia seja aplicada sobre todo um portfólio de variadas ações e sobre um

período de tempo em que a quantidade de eventos considerado seja comparável à

quantidade de eventos analisados durante o estudo estatístico, de forma a se possuir uma

amostra representativa. Para que seja possível concluir o período mais ótimo para a

utilização do software, assim como a quantidade de ações ideal a se utilizar, é

interessante que um projeto seja desenvolvido onde todos os possíveis ambientes

possam ser testados.

Finalmente, a utilização da linguagem de computação Java possibilitou que o

trabalho fosse expansível, mais simplista e melhor estruturado. Isto torna-se claro

quando observado todas as técnicas de computação implementadas ao longo deste

projeto.

119

7. Bibliografia

[1] “WallStreetCourier,” 2013. [Online]. Available: http://www.wallstreetcourier.com/v/is-

introduction.htm.

[2] J. Folger, “Investopedia,” [Online]. Available:

http://www.investopedia.com/articles/trading/11/indicators-and-strategies-explained.asp.

[Acesso em 2015].

[3] W. S. Courier, The E-Book of Technical Market Indicators, 2013.

[4] J. W. Wilder, New Concepts in Technical Trading Systems, Trend Research, 1978.

[5] L. Stevens, Essential Technical Analysis: Tools and Techniques to Spot Market Trends, Wiley,

2002.

[6] L. Neal, The Integration and Efficiency of the London and Amsterdam Stock Markets in the

Eighteenth Century, Urbana: College of Commerce and Business Administration, 1985.

[7] J. Murphy, John Murphy's Ten Laws of Technical Trading, 1999.

[8] Financial World News, 18 Trading Champions Share Their Keys To Top Trading Profits, mega

profit, 1996.

[9] “StockCharts,” [Online]. Available:

http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:force_index.

[10] “Programming notes,” 2012. [Online]. Available:

https://www3.ntu.edu.sg/home/ehchua/programming/java/J4a_GUI_2.html.

[11] [Online]. Available: https://docs.oracle.com/en/.

[12] G. Mainbourg, Information Technology & Telecommunications Tome II, Châtenay-Malabry,

2012.

[13] W. A. Thorp, “Monitoring the Smart Money by Using On-Balance Volume,” AAII, nº May

2001, 2001.

[14] J. E. Granville, New Key to Stock Market Profits, Martino Fine Books, 2010.

120

Anexo

Neste anexo se encontra a documentação em Javadox referente à classe Main do

programa principal.

java.lang.Object

br.com.marcelle.main.Main

public class Main

extends java.lang.Object

Field Summary

static java.lang.Class<?>[] eventTestClasses

static GlobalVars globalVars

Constructor Summary

Main()

Method Summary

static void main(java.lang.String[] args)

121

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll,

toString, wait, wait, wait

Field Detail

1. eventTestClasses

public static java.lang.Class<?>[] eventTestClasses

2. globalVars

public static GlobalVars globalVars

Constructor Detail

3. Main

public Main()

Method Detail

4. main

public static void main(java.lang.String[] args)