PLATAFORMA DE DETECÇÃO DE COMPORTAMENTO E GERENCIAMENTO DE...
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
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).
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.
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.
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.
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
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)