07 de Novembro de 2018

A MELHOR PLATAFORMA DE INVESTIMENTOS

Por Hindemburg Melão Jr

 

Temos o imenso prazer de anunciar que está pronta a versão Beta de nossa plataforma, desenvolvida por João Antonio e uma equipe liderada por ele, constituída por 6 campeões em Olimpíadas Internacionais de Física, Matemática e Ciência da Computação. Para que se possa compreender a importância dessa plataforma e dos diferenciais que ela oferece em comparação a outras ferramentas disponíveis no Mercado, será necessário contar um pouco sobre a história desse projeto e de tentativas anteriores.

 

Em 2006 o Metatrader 4 era a melhor plataforma para desenvolvimento e otimização de estratégias automáticas. Utilizava uma linguagem proprietária (MQL4) com centenas de recursos prontos, com algoritmo genético para otimizar até 9,22 quintilhões de genótipos, fornecia séries históricas desde 1999 e oferecia praticamente todos os recursos básicos para criar, testar, otimizar, ranquear e selecionar estratégias de investimentos.

 

O Metatrader 4 foi uma ferramenta extremamente importante para a criação e para os primeiros passos no desenvolvimento do Saturno V. Porém, com poucas semanas de uso, eu já sentia necessidade de vários recursos que não eram oferecidos por esta plataforma, nem por qualquer outra plataforma disponível no Mercado.

 

Em 2011 foi lançado o Metatrader 5, com algumas perfumarias e alguns novos recursos úteis, porém com perdas mais importantes do que vantagens, tais como a eliminação dos arquivos FXT, que possibilitavam importar ticks reais e configurar todos os parâmetros que se tem na situação real. A remoção dos arquivos FXT é muito mais grave do que todas as funcionalidades adicionadas ao Metatrader 5, pois impossibilita que os resultados obtidos nos backtests sejam representativos do que se pode obter em contas reais. Isso torna os resultados gerados pelos backtests com Metatrader 5 ilusórios e inúteis. Por isso, passados 12 anos, o Metatrader 4 continua sendo uma das melhores plataformas, melhor inclusive que o Metatrader 5, embora continue não atendendo a algumas necessidades importantes.

 

No início de 2007, foi contratado um Doutor em Matemática pela Universidade de Goiás para desenvolver uma plataforma que substituiria o Metatrader. Tivemos uma reunião na qual ele se mostrou muito agradável e capacitado, porém ele subestimou a complexidade da tarefa, fez um prognóstico excessivamente otimista em relação ao tempo que levaria para finalizar o projeto e um orçamento muito baixo. Após 2 meses de trabalho, ficou claro que levaria muito mais tempo do que ele havia planejado e o orçamento seria muito maior.

 

O desenvolvimento de uma plataforma típica não é tão demorado nem tão complexo. Mas nesse caso há dois diferenciais que tornam o trabalho muito mais volumoso, complexo e difícil:

 

1. A plataforma precisa ler MQL4 e compilar o MQL4 em alguma outra linguagem. Como MQL4 é muito semelhante a C, isso ilude os programadores, que presumem que será uma tarefa simples, mas há centenas de funções prontas em MQL4 que não existem em C e precisam ser implementadas, o que demanda um tempo imenso.

 

2. A plataforma não é típica. Vários recursos são inovadores, por isso não há fragmentos prontos que possam ser copiados e colados de bibliotecas de Python, C++ etc.

 

Além destes dois itens, João Antonio explicou que C possui pequenas diferenças semânticas em relação ao MQL4 que, à primeira vista, não parecem graves, mas logo percebe-se que podem causar grandes dores-de-cabeça. Por exemplo: séries dinâmicas não possuem correlato em C, enquanto o correlato em C++ tem um funcionamento bastante diferente, exigindo-se uma biblioteca personalizada somente para este item. Ao testar o compilador com códigos MQL4, ocorrem vários erros, tanto de compilação quanto de execução, decorrentes dessas diferenças, pois a combinação de diferenças sintáxicas faz uma “bola de neve” de complexidade muito maior do que inicialmente aparenta. Há muitas sintaxes válidas em C que são inválidas em MQL e vice-versa, tornando impraticável pensar em todas as exceções e possibilidades de conflitos, por isso a melhor maneira de abordar esse problema é fazer uma plataforma capaz de executar corretamente todo o código MQL4 da mesma forma que executaria no MT4, suportando todos os elementos da linguagem.

 

Há vários módulos da plataforma que, por si, são bastante complexos, como a comunicação entre a plataforma e a corretora, que exige uma pequena equipe para fazer o design, implementar, testar, identificar bugs e situações espinhosas raras, fazer a camada de criptografia etc. Um programador que faça uma análise preliminar do projeto pode imaginar que essa comunicação seja simples, mas quando se começa a analisar todos os padrões de qualidade exigidos, percebe-se novamente que é muito mais complexo do que aparenta.

 

Nossa plataforma é constituída, por enquanto, por 5 programas:

 

  1. Um terminal para se conectar a corretoras e operar no Mercado;

  2. Um compilador MQL4;

  3. Um backtester;

  4. Um otimizador;

  5. Um profiler.

 

Essas são as ferramentas atuais. Elas têm alguns elementos em comum e, claro, repete-se parte do código, mas mesmo assim cada parte exige uma série de decisões de design importantes. A plataforma deve estar no total com mais de 500.000 linhas de código no momento, sendo que o código é bastante compacto, devido à elevada qualificação dos programadores.

 

Para se ter uma ideia da dificuldade e da complexidade dos problemas com os quais nossa equipe precisa lidar, podemos citar alguns casos de empresas que atuam exclusivamente no ramo de conectar plataformas com corretoras, que é o item 1 da lista acima. A empresa FTT (Fair Trading Technologies) atua desde 2010 prestando serviços a algumas das maiores corretoras europeias. Mesmo sendo especializada exclusivamente no serviço de estabelecer comunicação entre a plataforma e a corretora, a FTT apresenta uma extensa lista de bugs que já foram examinados em artigos publicados em nosso site, inclusive notificamos o suporte técnico da FTT sobre todos os bugs que observamos desde 2014, e alguns não foram corrigidos adequadamente até hoje, motivo pelo qual a corretora suíça Dukascopy está deixando de usar os serviços da FTT.

 

Outras empresas, como Boston Technologies, Trade-Commander e jTWSdata também prestam serviço de bridge, similar ao da FTT. Estas bridges trabalham com grandes corretoras e bancos dos Estados Unidos e Europa, como Interactive Brokers, Saxo Bank, FXCM etc. Assim como a FTT, essas bridges também apresentam vários problemas e também não demonstram muito empenho em resolvê-los, quando lhes são apontados. Isso acontece devido a dois motivos principais:

 

1. Essas empresas não aplicam o próprio dinheiro usando o serviço que elas vendem aos clientes, por isso elas não estão sujeitas a sofrer perdas em função das falhas que elas cometem.

 

2. Os problemas a serem resolvidos são mais difíceis e mais complexos do que os programadores que trabalham nessas empresas imaginam, pois eles não operam no Mercado, não conhecem a situação sob o ponto de vista dos operadores, não detectam várias das falhas que podem ocorrer, nem previnem a maioria das falhas teóricas.

 

Em nossa plataforma não só foram evitados todos os bugs que já detectamos em outras bridges, como também foram prevenidos muitos bugs teóricos que nunca foram observados, mas que poderiam acontecer. Além disso, nossa plataforma não é uma bridge. É uma plataforma completa, o que já elimina, por si, grande parte dos bugs inerentes ao uso de bridges.

 

Em 2009, um programador sênior do Google e membro de TNS (Triple Nine Society) adquiriu 0,1% de participação societária no Saturno V e a ideia da plataforma foi retomada. Porém ele também subestimou a complexidade e estimou um prazo excessivamente reduzido para finalizar. Em nossas conversas iniciais, cheguei a comentar sobre a experiência anterior em que houve uma subestimativa de prazo, mas ele comentou que costumava resolver problemas de Ciência da Computação mais rápido e melhor que a grande maioria dos programadores que ele conhecia, e acredito que ele tivesse razão. Houve alguns avanços, mas devido a alguns assuntos familiares foi ficando cada vez mais difícil dar continuidade ao projeto e foi novamente interrompido.

 

No caso da criação de uma plataforma como esta, a habilidade para resolver problemas difíceis e que exigem criatividade é muito importante, mas o ganho de tempo que se consegue com isso representa uma fração pequena do tempo total de trabalho “braçal” necessário à implementação de todo o projeto, por isso mesmo um programador que resolva muito rapidamente os problemas originais não teria como reduzir substancialmente o tempo total de implementação.

 

Por exemplo: há uma lista com mais de 500 macros em MQL4 que precisam ser definidas. Para que o programador implemente essas macros, ele precisa olhar no site da MetaQuotes e escrever na plataforma. É uma tarefa extremamente maçante, que desestimula quem gosta de resolver problemas originais, implementar soluções inovadoras etc. É um trabalho tedioso e muito demorado, mas é essencial que seja feito, e não há margem para erros. Se um programador estiver fazendo tudo sozinho, é muito provável que perca o estímulo. Por outro lado, mas num trabalho em equipe, essa tarefa pode ser menos tediosa. João comenta que sentiu esse efeito enquanto trabalhava sozinho na plataforma, que sua produtividade caía muito e que é algo difícil de controlar, por mais força de vontade que se tenha.

  

Outra vantagem de ter uma equipe trabalhando na plataforma, na opinião de João Antonio, é que “o melhor resolvedor de problemas da nossa equipe é também o programador mais lento :). O bom de ter uma equipe, em vez de uma pessoa, é que pode-se justamente alocar as pessoas otimamente para as tarefas para as quais possuem mais aptidão.”

 

Em 2014, o assunto foi retomado mais uma vez com um membro da Sigma Society e da Mensa, depois outro membro da Mensa, mas o assunto não evoluiu por diferentes razões.

 

No início de 2018, por iniciativa de João Antonio, gestor do fundo europeu que utiliza o Saturno V e sócio de Apollo, esse assunto foi novamente ressuscitado. João foi um garoto prodígio da Computação, foi finalista em Olimpíada da Matemática, e tem outras virtudes muito importantes, tais como disciplina e comprometimento, que são de capital importância para levar a cabo um projeto dessa complexidade. Inicialmente, ele próprio começou o desenvolvimento da plataforma, trabalhando sozinho nisso, mas ao perceber que levaria um tempo muito maior que o previsto, contratou 4 medalhistas em olimpíadas internacionais da Computação, Física e Matemática. Nos meses seguintes, foram contratados mais 2 programadores.

 

Nesse formato de trabalho, João descreve ao chefe da equipe o que deve ser feito, que, por sua vez, delega as tarefas e monitora o trabalho de cada programador. Joao também vai periodicamente acompanhar os resultados. Em algumas etapas específicas, como a implementação do algoritmo genético, sou acionado para descrever detalhadamente como deve ser feito. A bibliografia sobre o tema é relativamente pobre, superficial e genérica. Fiz uma descrição de como deve ser um algoritmo genético exclusivamente projetado para otimizar estratégias de investimentos, dispensando uma série de itens supérfluos que estão presentes em algoritmos genéticos genéricos, e focando nos pontos mais importantes para nosso propósito específico, além de incluir inovações que nos proporcionam importantes vantagens competitivas.

 

João comenta que à medida que foi avançando no desenvolvimento da plataforma, foi percebendo que isso exigiria um trabalho enorme e muito demorado. Algumas soluções poderiam ser abreviadas com “gambiarras”, poupando tempo e trabalho, mas usar gambiarras é uma alternativa que ele não considera aceitável. Seu objetivo não era apenas fazer uma plataforma melhor que o Metatrader 4, mas sim fazer a melhor plataforma possível, assim como tem sido todas as suas escolhas jurídicas e administrativas para o fundo em que atua como gestor. As empresas que prestam serviços ao fundo estão entre as melhores do mundo em suas respectivas especialidades (KPMG, Maples & Calder, CFH), e nesse caso não poderia ser diferente. João resumiu essa situação em uma frase:

 

“Lembro que comentei com você na época que o melhor sistema automático de investimentos merecia a melhor plataforma para sistemas automáticos de investimentos.”

 

Por isso decidiu contratar uma equipe olímpica para executar a tarefa e agora está pronta para uso a versão beta, que começará a ser testada nos próximos dias, com expectativa de que a versão 1.0 esteja pronta antes do final de 2018.

 

A versão beta já oferece uma série de vantagens em comparação às plataformas existentes (Metatrader, Ninjatrader, Amibroker etc.), e provavelmente já é a melhor plataforma para otimizações de estratégias de investimentos.

 

O nome de nossa plataforma ainda não foi definido, mas uma das possibilidades que estamos considerando é que receba o nome “CANTOR” (a pronúncia é “Kêntor”). Esse nome temporário foi escolhido em homenagem ao matemático alemão Georg Cantor, que concebeu o conceito de “números transfinitos” (Aleph-0, Aleph-1 etc.) e desenvolveu a moderna teoria dos conjuntos. Também estamos considerando o nome “Isotropizator”, já que um dos principais objetivos da plataforma é aumentar a isotropia das estratégias no processo de otimização.
  

Comparando a versão beta de nossa plataforma com a versão final do Metatrader 5, alguns diferenciais que já estão presentes em nossa plataforma são elencados a seguir:

 

1. Edição completa de todas as variáveis que existem nas contas reais, inclusive volumes nas diferentes camadas no livro de ofertas, spreads reais, todas as taxas reais, atrasos nas execuções iguais aos da situação real, todas as taxas iguais às das contas reais. Isso possibilita um nível de realismo sem precedentes, garantindo a máxima similaridade entre os backtests e as contas reais. Alguns desses recursos (configurar spreads, commissions, swaps etc.) estavam disponíveis no Metatrader 4 com TickStory e Tick Data Suite, mas havia diversas limitações no Metatrader 4 (e pior ainda no Metatrader 5) que foram resolvidas em nossa plataforma.

 

2. Customização completa dos objetivos a serem alcançados em cada otimização, inclusive Melao_index, índice de Sortino e índice de Sharpe.

 

3. Maior rapidez na execução de cada backtest e cada otimização. É importante enfatizar que o ganho em velocidade se deve a vários procedimentos muito interessantes, inclusive algumas heurísticas inéditas sugeridas por João Antonio.

 

4. Personalização na maneira como o multiprocessamento é realizado, inclusive com possibilidade de distribuir parte das tarefas em GPUs e parte em CPUs. No Metatrader 5, por exemplo, o uso de multiprocessamento se dá por meio da execução simultânea de vários genótipos em cada geração. Em Cantor pode ser feito dessa maneira e de várias outras, entre as quais a segmentação da série histórica em vários trechos (mantendo pequena redundância ao final de cada trecho), o cálculo de grupos de indicadores por diferentes processadores, o uso de alguns processadores exclusivamente para o ranqueamento dos genótipos, enquanto os demais executam o backtest, entre outras possibilidades.

 

5. Customização completa na estrutura de como o algoritmo genético opera, nos critérios para determinar como serão os cruzamentos de genes para formar os indivíduos das próximas gerações, nos critérios para ranquear os genótipos mais eficientes, nos critérios para determinar a taxa de mutação, a taxa de transmissão de caracteres em função da diferença de performance, meta-adaptação dos critérios de otimização e muito mais.

 

6. Possibilidade de conectar em qualquer corretora que utilize protocolo FIX ou qualquer API, isto é, praticamente qualquer corretora de qualquer bolsa do mundo.

 

7. A maneira como o Metatrader lê os ticks e executa as operações no backtest não é idêntica à maneira como faz isso nas contas reais, produzindo uma dissimilaridade inerente à plataforma. Em CANTOR a maneira como as operações são executadas no backtest e nas contas reais é idêntica, bem como a leitura dos ticks.

 

8. O Metatrader apresenta diversos bugs em fechamentos por horário e data, no posicionamento de trailing stop, na divisão de operações em partes menores, no intervalo entre diversas operações consecutivas etc. Esses bugs não existem na nova plataforma.

 

9. Além dos dispositivos de segurança do próprio Saturno V, baseados nas oscilações das cotações (risco de portfólio), CANTOR também inclui outros dispositivos de segurança complementares, para prevenir riscos operacionais que poderiam decorrer de falhas na corretora, falhas no provedor de liquidez, falhas no provedor de Internet, falhas no servidor etc.

 

10. Além de ser inaugurada com diversas vantagens em comparação às melhores plataformas que existiam até o momento, os planos de aprimoramento para CANTOR já incluem numerosos recursos inéditos, que não estão presentes em nenhuma outra plataforma. A possibilidade de implementar novos recursos sempre que necessário, à medida que novas necessidades são identificadas, representa uma vantagem extraordinária. No caso do Metatrader, por exemplo, milhares de usuários no fórum da MetaQuotes solicitaram que o Metatrader 5 possibilitasse importar dados tick-by-tick, mas foram sumariamente ignorados, porque o uso de dados tick-by-tick é importante para os investidores, mas não para as corretoras, e a MetaQuotes vende seu produto às corretoras, não aos investidores.

 

11. A grande maioria das plataformas, como o Metatrader, MetaStock, Ninjatrader, Amibroker, TradingInsight etc., são desenvolvidas por empresas cuja finalidade primária é lucrar com a venda da plataforma, não com o uso da plataforma. Por isso se preocupam com detalhes cosméticos e interfaces amigáveis. No caso de CANTOR é totalmente diferente, porque além de ser desenvolvida por uma equipe excepcionalmente qualificada, tem como objetivo lucrar com o uso desta plataforma na otimização e no ranqueamento de genótipos, por isso tem foco justamente nos itens mais importantes para o investidor: performance e segurança, provendo recursos avançados e úteis. CANTOR foi criada para atender a demandas que as melhores plataformas disponíveis no Mercado não são capazes de atender. Outro ponto importante é que por se tratar de uma plataforma personalizada, desenvolvida exclusivamente para o Saturno, todas as funções são otimizadas com esse propósito. Essa especialização em atender às necessidades específicas do Saturno contribui para maximizar a performance nos processos de otimização. 

 

12. Um recurso relativamente simples, mas que não está presente no Metatrader nem em outras plataformas, é a possibilidade de executar simultaneamente várias estratégias em vários instrumentos financeiros. Existem plataformas complementares, como o EA Analyser, que permitem analisar os resultados combinados de vários relatórios de EAs gerados pelo Metatrader, mas estas plataformas não permitem a integração simultânea com o Metatrader durante o processo de otimização, nem permitem otimizar de forma automática a combinação dos portfolios. No caso de CANTOR, além de ter esse recurso nativo, possibilita também otimizar as combinações de genótipos com diferentes critérios.

 

13. O módulo do profiler identifica os pontos mais lentos do código, as funções mais executadas, para que o programador possa aumentar a eficiência do seu algoritmo e, consequentemente, rodar backtests e otimizações mais velozes.

 

14. Outro recurso simples, mas extremamente útil, e estranhamente ausente no Metatrader, é salvar automaticamente o histórico dos genótipos testados em cada otimização, de modo que a perda de dados seja pequena se a otimização for interrompida.

  

https://www.saturnov.org/historia

o longo de seu desenvolvimento, o Saturno V passou por alguns momentos nos quais houve importantes saltos evolutivos. O uso de séries históricas mais longas foi um detalhe simples que contribuiu para um avanço importante. A edição dos parâmetros no cabeçalho FXT foi mais um detalhe relativamente simples que promoveu um avanço importante. O uso de métodos adaptativos possibilitou aprimoramentos conceituais muito importantes. Mas o que se espera agora, com o uso de CANTOR, é um salto notável, com uma avalanche de novos recursos, ganho em velocidade de otimização, aumento na fidedignidade dos backtests e muito mais. Esse deve ser o mais importante salto evolutivo na história do Saturno desde a fusão das versões 3, 4 e 5, em meados de 2010. 
 
Ainda é cedo para prever a extensão e a profundidade do impacto que CANTOR terá sobre as performances do Saturno V, mas é provável que em poucas semanas tenhamos excelentes notícias sobre isso. 

  • Branca Ícone LinkedIn
  • Branco Facebook Ícone
  • Branca ícone do YouTube
  • Branca Ícone Instagram

CONTATO

Para agilizar seu atendimento, por gentileza, preencha corretamente todos os campos abaixo:

© 2019 Saturno V Todos os direitos reservados. O Saturno V não comercializa nem distribui cotas de fundos de investimento ou qualquer outro ativo financeiro, fornecemos licença de uso do sistema automatizado.