| Saturno V 3.14159g x Saturno V 3.1415926c |
|
|
| Artigos - Investimentos | |||||||||||||||
| Escrito por Hindemburg Melão Jr. | |||||||||||||||
| Sexta, 10 Abril 2009 11:34 | |||||||||||||||
|
Antes de iniciar este artigo, precisamos comentar um pouco sobre as séries históricas utilizadas para back tests em diferentes períodos: Temos 4 séries históricas tick-by-tick extensas e várias curtas. Entre as extensas, as mais antigas começam em 1998 e as menos antigas começam em 2000. Nos valemos de vários recursos para o uso combinado destas bases com o propósito de melhorar a relação sinal/ruído, e obtivemos resultados muito satisfatórios. As séries anteriores a 1998 usam dados final de dia (OHLC = Open/High/Low/Close). Temos algumas séries final de dia de EURUSD que começam em 1979, outras que começam em 1989, outras em 1999 e outras em 2000. Em alguns casos temos dados desde 1978, 1975 e até 1971 (GBPUSD, se não me engano), portanto desde os primórdios do Forex. Temos também dados muito mais antigos, desde 1885, desde 1897 e outros de Dow Jones, dados muito mais antigos sobre cotação do ouro etc. O Euro foi criado (e começou a ser cotado) em 1/1/1999 e entrou em circulação em 1/1/2002. A Olsen Data estima a provável cotação média ponderada de todas as moedas da Europa antes de 1999 (equivalente ao Euro) com base na Coroa Dinamarquesa, devido à forte correlação com o Euro. O Marco Alemão também pode ter servido como referência para o cálculo de algumas cotações em algumas das bases que possuímos. O fato de as cotações mesclarem duas ou mais divisas na mesma série é bastante positivo por exigir do sistema maior versatilidade para que ele funcione. Os dados posteriores a 1999, especialmente os posteriores a 2000, utilizam várias bases tick-by-tick combinadas e apresentam qualidade bastante elevada. Dados de 1998 utilizam apenas uma base tick-by-tick de baixa qualidade. E os dados anteriores a 1998 utilizam apenas dados final de dia. Não há como fazer testes satisfatórios usando bases de 1 minuto ou mais. As bases precisam ser tick-by-tick. Muito pior se as bases forem de 15 minutos ou mais. Então é fácil concluir que os resultados obtidos com bases final de dia não são confiáveis. Nem é a finalidade destes testes buscar resultados precisos sobre performance nem tampouco otimizar os sistemas para que funcionem nestes períodos. As finalidades são outras: 1) Conferir se os parâmetros otimizados após 1999 apresentariam algum problema em períodos anteriores. Se nenhum problema for constatado, isso não garante que não há problemas. Em contrapartida, se houvesse diferenças significativas de performance nos períodos antes e depois de 1999 em comparação aos períodos posteriores, então seria motivo para preocupação sobre a estabilidade do sistema a longo prazo, pois embora os dados anteriores a 1998 não sejam confiáveis, se eles indicassem que há problemas, seria importante conferir com bases melhores se realmente há algo a ser investigado. Após uma seleção baseada em back tests preliminares, fizemos testes com as versões 3.03 e 3.14159 entre 1979 e 2008. Foram feitas otimizações destas versões no período de 1/1/1999 a 8/4/2009. Depois os mesmos valores obtidos para cada parâmetro neste período foram usados entre 1979 e 1998. Constatamos que as performances médias anuais nos diferentes períodos e diferentes versões foram:
Os resultados detalhados, ano a ano, são conforme mostram as tabelas a seguir: Teste com a versão 3.14159g entre 1979 e 2008: Teste com a versão 3.03 entre 1979 e 2008: Veja também os vídeos destes dois testes, com gráfico exibindo a evolução dinâmica das carteiras e gráfico de cotações mostrando os valores e horários de todos os pontos de entrada e saída de todas as operações realizadas.
A amplitude de variação nas performances anuais na versão 3.03 é exacerbada, tornando a incerteza no contraste entre as médias muito grande para que se possa inferir qualquer coisa sobre a diferença entre os períodos ser ou não estatisticamente significativa. Com a versão 3.14159 a quantidade de operações é pequena e também torna difícil a comparação, mas em ambos os casos foi rejeitada a hipótese de haver diferença a um nível de significação acima de 0,1. Uma análise subjetiva das performances também leva à mesma conclusão, pois as performances antes de 1999 e depois de 1999 são muito semelhantes, aliás, a semelhança é maior do que seria esperada tendo em conta não só a diferença de qualidade entre as bases utilizadas, como também os diferentes cenários mercadológicos, a situação política e econômica do mundo nestes diferentes períodos. O que nos revelaram estes resultados é que nossos esforços para formular procedimentos de testagem que possibilitassem tirar o melhor proveito possível das bases final de dia surtiram efeito satisfatório. É importante enfatizar que não se pode usar bases final de dia para otimizações, nem se pode confiar nos resultados obtidos. Porém em períodos suficientemente longos (décadas) se pode aceitar como razoável a hipótese de que os erros para mais e para menos devem aproximadamente se compensar mutuamente e, grosso modo, o resultado final durante o período inteiro deve ser razoavelmente semelhante (na forma e na ordem de grandeza) ao que seria obtido se fosse usada uma base de alta qualidade. Outro fator importante a ser considerado é que o Saturno V 3.1415926c, nossa versão mais eficiente, opera em time frame de 1 hora. Isso impossibilita que seja usado numa série que possui apenas dados final de dia, pois num candle OHLC diário não se tem as informações de cotações a cada hora. As tentativas para otimizar o Saturno V 3.1415926c em time frame de 1 dia não foram tão bem sucedidas quanto nas versões 3.14159 e 3.03, aliás, a versão 3.03 era nativamente usada em time frame de 1 dia, o que tornou mais fácil este processo. Isso significa que a versão 3.03 operou dentro do esperado, enquanto a versão 3.14159 ficou abaixo de sua atuação normal. Foi feita uma pequena adaptação para que a versão 3.14159 pudesse explorar um pouco melhor a maior estabilidade dos time frames maiores, em que há menos ruídos causados por especuladores, pois os ruídos se compensam mutuamente de forma mais eficiente em períodos mais longos. Esta versão adaptada foi chamada “Saturno V 3.14159g”. O desempenho “normal” da versão 3.14159, em time frame de 1 hora, é acima de 35% ao ano, porém esteve abaixo de 20% ao ano no time frame de 1 dia. Isso se explica, em parte, devido ao menor número de operações. Mas a principal razão é provavelmente que os padrões que se formam numa janela de tempo em escala 24 vezes menor (1 hora) não se reproduzem com suficiente similaridade em janelas de tempo de 1 dia. Em outras palavras: as leis de formação dos pseudofractais que definem determinados padrões do Mercado mudam sensivelmente quando se altera o nível de fragmentação. A maior diferença na performance da versão 3.1415926c mostrou também que alguns tipos de padrões são mais sensíveis a esta mudança. Se as cotações no Mercado pudessem ser bem representadas por um pseudofractal “bem comportado”, em que a auto-similaridade fosse razoavelmente mantida, tal dificuldade não ocorreria, e um sistema otimizado para operar em determinado time frame seria facilmente adaptado para qualquer outro time frame. No entanto o perfil dos traders que operam intradiariamente, bem como suas estratégias e sistemas de gestão de risco, diferem muito do perfil dos que operam em períodos médios e longos. Isso faz com que as propriedades gerais do Mercado em diferentes janelas de tempo não sejam suficientemente semelhantes para que se possa adotar exatamente a mesma estratégia com diferentes time frames. Na melhor das hipóteses, em casos bastante específicos se pode usar as mesmas estratégias, porém não basta ajustar um dos parâmetros e manter a proporção dos demais. Em vez disso, geralmente as proporções também precisam ser ligeiramente modificadas. Uma exceção raríssima é o Saturno V 3.14159, que sem mudar a estratégia ou a proporção entre os parâmetros, consegue operar em diferentes time frames (a mudança na versão g foi apenas para deixar um pouco melhor). A versão 3.1415926c tem algumas propriedades similares que permitem operar em diferentes divisas, conforme já comentamos no artigo sobre a versão curinga, porém não se adapta com mesma facilidade para operar em diferentes time frames. Os testes foram feitos do seguinte modo: o EA foi otimizado numa base de ticks de 1999 a 2009 usando time frame diário. Depois foram testados alguns dos melhores conjuntos de parâmetros desta otimização usando os candles diários gerados pela mesma base de ticks, porém suprimindo todos os dados intradiários e mantendo apenas Open/High/Low/Close (OHLC) de cada dia. Em mais de 99,99% dos casos estes procedimentos seriam desastrosos e os resultados seriam completamente diferentes nos dois casos, mas com alguns cuidados conseguimos atingir nossos objetivos. Há alguns procedimentos típicos que aparentemente eliminam esta dificuldade, mas são ilusórios e quem já os testou com algum rigor sabe que não são suficientes. Para que se possa realizar estes testes de maneira consistente, e para que os resultados tenham alguma utilidade, é imprescindível que seja seguido um roteiro sensivelmente mais elaborado. Não faremos nenhum comentário adicional sobre como deve ser feito; a unica dica que consideramos “doável” é que se deve testar os EAs usando configurações intencionalmente ruins em diversos níveis, para que apresentem quedas em diferentes ritmos, e alguns que fiquem oscilando. A finalidade dos testes comparativos em bases OHLC e bases de ticks não é saber se produzem mesma performance. Isso já sabemos que não produzem, e sabemos também que a diferença é grande. A finalidade do teste é principalmente morfológica, e menos quantitativa. Se a forma da função é semelhante nos dois casos e se mantém semelhante com diferentes configurações do EA, configurações estas escolhidas de modo a verificar determinadas propriedades das bases, isso indicará que um teste feito em base diária OHLC que fique positivo é um fortíssimo indício de que se a base fosse de ticks o resultado também ficaria positivo e a forma da curva de crescimento seria semelhante (embora os valores provavelmente ficassem muito diferentes). Para que não haja confusão: esta dica não é exatamente o que fizemos em nossos testes. Fizemos um pouco além disso. Pois bem, feitos os devidos testes, constatamos que as performances nas séries diárias OHLC desde 1979 até 2008 em EURUSD ficaram excepcionais: a versão 3.14159g não teve nenhum ano negativo durante 30 anos! Porém o nível de risco foi sensivelmente mais alto do que nos testes da versão 3.1415926c entre 1999 e 2009. A versão 3.03 ficou negativa em 6 entre os 30 anos testados. E estes 6 anos ficaram distribuídos com razoável isotropia, sendo 2 anos negativos a cada período de 10 anos. Outro fato importante a ser considerado é que no período entre 1999 e 2009, na base diária OHLC o lucro foi 459,28%. No mesmo período na base de ticks o lucro foi 625,69%. Com base nisso podemos estimar que se a proporção fosse aproximadamente mantida, o lucro médio anual seria cerca de 23,17% (7,256933/5,5928032)^(1/10)*1,1993924-1 = 23,17% Uma performance comparável à média de Buffett em 50 anos. Se considerarmos ainda que a versão 3.14159 foi desenvolvida para time frame de 1 hora, ou melhor, ela evoluiu a partir de outras versões que estavam sendo otimizadas em time frame de 1 hora, portanto teve vários meses de histórico evolutivo em sua estratégia e sua gestão de capital moldados para se ajustar aos padrões que se formam em time frames de 1 hora, então é bastante razoável supor que estas performances em time frame de 1 dia estão aquém do esperado para esta versão em seu time frame nativo. Isso corrobora que as performances em torno de 35% anuais entre 1999 e 2009 sejam razoáveis representações do que se pode esperar desta versão. Considerando tudo isso, o que nós podemos concluir? Muito bem, em primeiro lugar precisamos investigar porque os testes feitos em bases final de dia produziram resultados muito mais semelhantes aos feitos em bases de ticks do que seria esperado, e esta semelhança ocorreu apenas em poucas versões, enquanto na maioria delas observamos diferenças tão grandes quanto eram esperadas. Em segundo lugar, os resultados obtidos foram importantes em muitos aspectos, por nos fornecer pistas preciosíssimas sobre como realizar operações mais longas sem fazer alterações significativas na estratégia, sobre como tirar máximo proveito de bases pobres em qualidade e conteúdo, sobre quais são as prováveis propriedades que precisa ter um sistema para que ele seja longevo e estável a longo prazo, sobre quais características e padrões se formam perenemente desde que existe Forex e continuam se repetindo até hoje, com praticamente mesma freqüência, mesmo tamanho e mesma duração que aconteciam 30 anos atrás. Ainda não examinamos com suficiente profundidade todas as descobertas feitas com estes testes, e as possibilidades que vislumbramos agora são apenas a ponta do iceberg. Algumas expectativas foram corroboradas, alguns caminhos foram confirmados e outros foram ligeiramente redirecionados para objetivos mais exatos, vários detalhes novos e importantes emergiram, novas janelas e portas se abriram. A versão do Saturno mais lucrativa nos testes em tempo real no final de 2008, com as quedas das bolsas, foi a 3.03. Esta versão não se saiu tão bem quanto as estrelas da festa, como a 3.14159 ou 3.1415926c, quando consideramos períodos de 10 anos e time frame de 1 hora, porém a versão 3.03 se revitalizou e voltou a ocupar posição de destaque quando passamos a realizar testes em períodos ainda mais longos, sendo inclusive uma das mais promissoras para nortear os caminhos a serem enveredados num futuro próximo, em que as negociações com volumes de dinheiro progressivamente maiores exigirão que as operações sejam mais longas, e nesse aspecto a versão 3.03 já está em vantagem em comparação às demais. Para somas de poucas dezenas ou centenas de milhões, provavelmente as versões 3.14159 e 3.1415926c ainda serão as melhores, porém para movimentar bilhões ou dezenas de bilhões, é provável que alguma descendente da versão 3.03 (que herde mais características da 3.03) se torne a mais promissora. A versão 3.1415926c chegou em um patamar além do qual já não havia muito o que fazer para aprimorá-la, tanto é que as versões 3.1415926d, 3.14159265, 3.141592653, 3.141592653a etc. se mostraram nitidamente inferiores à versão 3.1415926c. Mexer nos detalhes da versão 3.1415926c não parecia oferecer perspectivas de avanço, e qualquer mudança parecia estragar o que estava “quase perfeito”. Obviamente não estava realmente quase perfeito. Isso é ilusório. Com a versão 3.1415926c chegamos ao que poderíamos chamar de um máximo local dentro de uma família de estratégias, e nesse tipo de situação se corre o risco de não se distanciar deste ponto ótimo com medo de piorar as coisas, já que quanto mais se muda, pior ficam os resultados. Por analogia, é como se quiséssemos achar o ponto de mínima energia potencial na superfície de um planeta, e este ponto seria a fossa mais profunda do planeta. Se em determinado momento achamos uma fossa com 10% da mais profunda, embora ainda seja 10 vezes menor do que a que estamos procurando, se sua localização na superfície ficar muito distante da fossa realmente mais profunda, e houver muitas outras mais rasas nas imediações, e sempre que se sairmos desta mais profunda encontrada até o momento cairmos em outras bem mais rasas que se encontram nas vizinhanças, e mesmo nos afastando bastante não encontramos outra mais funda, então correremos o perigo de nos conformamos com esta que é a mais profunda da região, porém que representa apenas 1/10 da mais profunda entre todas, e para chegar a esta realmente mais profunda pode ser necessário ir muito além do horizonte. Do mesmo modo, a versão 3.1415926c parecia não ter muito mais para onde evoluir, não importava o que fosse mudado nela, para mais ou para menos, mudanças isoladas ou em conjunto, os resultados pioravam. Mas bastou alargar os horizontes para que passássemos a vislumbrar novas perspectivas. Com a versão 3.1415926c seria possível ganhar muitos milhões, porém seria difícil e improvável ganhar bilhões com ela. E as tentativas de mudá-la para que fizesse operações mais longas não estavam se mostrando frutíferas. Agora a versão 3.03 começa a indicar um caminho que não é novo, mas estava injustamente esquecido. Ainda será necessário passar por uma fase de coleta de dados, com testes de várias versões para dispor de volume suficiente de informações que possibilitem encontrar traços comuns naquelas que se revelem mais promissoras para determinadas finalidades, para, em seguida, tentar intensificar estes traços e desenvolver novas versões. Mesmo que nada disso acontecesse, planejávamos otimizar a versão 3.1415926c em maior quantidade de divisas, commodities e ativos. Esta é uma das alternativas para quando o volume de dinheiro negociado for grande ao ponto de sentirmos falta de liquidez. Porém é sempre melhor ter mais de uma alternativa para lidar com um problema que ainda nem sequer se manifestou, assim quando o problema se materializar, teremos planos B, C etc. Importante: não confundir “time frame” com “granulosidade da base”. Uma base pode ter granulosidade de ticks, que é o ideal, e se pode usar time frame 1 minuto, 15 minutos, 1 hora ou 1 dia nesta mesma base. O contrário não é possível, ou seja, se a granulosidade da base é de 1 dia, como as bases diárias OHLC, não há como usar time frames de 1 hora ou de 4 horas nesta base, pois ela não possui informações sobre cotações a cada hora ou a cada 4 horas, impossibilitando que sejam construídos os candles ou barras nestes time frames. Já as bases com granulosidades de ticks possuem informações sobre cotações de qualquer momento dentro de 1 minuto, 10 minutos, 1 hora etc., possibilitando construir candles ou barras com qualquer time frame que se queira.
|