Algo trading com Quantopian

Abriremos nossas discussões sobre algorithmic trading, ou algo trading para os iniciados, fazendo um review da plataforma mais popular atualmente, o Quantopian.

Da própria definição sobre a plataforma temos que:

O Quantopian é uma empresa de investimentos quantitativos com origem em crowd source. Nós inspiramos pessoas talentosas de todo o mundo a escrever algoritmos de investimento.

O Quantopian fornece capital, educação, dados, um ambiente de pesquisa e uma plataforma de desenvolvimento para autores de algoritmos (quants).

Mas o que isso tudo significa na prática? O Quantopian nasceu com o desejo de encontrar na multidão de pessoas, talentosos quants que pudessem escrever algoritmos de investimentos bons o suficiente para receberem um aporte de capital. Da necessidade de como fazer esta visão tornar-se realidade, o quantopian foi sendo moldado. Talvez a ordem das palavras destacadas no parágrafo anterior devessem constar na forma inversa. A plataforma surgiu como um ambiente de desenvolvimento, agregou um ambiente de pesquisa, fornece dados gratuitos e pagos (premium), edução na forma de tutorias e lectures e por fim, se o seu algoritmo se destacar na competição, eles financiam um fundo quantitativo que roda o seu algo e lhe paga royalties.

Ambiente de desenvolvimento

A chamada IDE (de Interactive Development Environment) é toda baseda na linguagem Python, a mais utilizada1 atualmente para ciência de dados e machine learnig. É na IDE que a implementação e o backtesting de estratégias deve ser feito. Ela registra automaticamente as principais métricas de desempenho e compara sua estratégia com um benchmark. Algoritmos também podem ser simulados usando dados ao vivo, algo conhecido como paper trading. Operar com dinheiro real, live trading não é mais possível no Quantopian. No passado já houve uma integração com uma conhecida corretora americana, mas esta possibilidade não existe mais.

Nesta IDE três métodos estão definidos para serem implementados pelo quant, um deles é obrigatório que são as definições de setup do backtesting que devem constar no método initialize(context). Os métodos opcionais são handle_data(context, data), em geral utilizado em algoritmos minuto-a-minuto e before_trading_start(context, data) muito utilizado em conjunto com algum método de pipeline que baixa e processa o algoritmo de investimento sobre um determinado universo de ativos.

Na figura abaixo podemos ver uma amostra parcial do ambiente de desenvolvimento, com o código a esquerda e alguns resultados de backtesting a direita e logs da simulação logo abaixo.

Ambiente de desenvolvimento - IDE

Ambiente de pesquisa

O módulo de research do quantopian é fundamentado no conceito de notebooks do IPython. De fato, o ambiente é um Jupyter notebook, como toda a sua interatividade disponível. Neste notebook o quant pode programar seus algoritmos e testá-los sem fazer um backtest completo.

Nesta plataforma aberta pode-se carregar todos os dados disponibilizados pela plataforma e explorar novas ideias de investimento. O ambiente de pesquisa é o lugar para fazer hipóteses e análises, “comprar empresas de baixo P/L realmente dá lucro a longo prazo?”, “se eu montar uma estratégia long-short com os fatores de Fama&French, vou ser bem sucedido?”, estes questionamentos devem ser feitos e analisados no ambiente de pesquisa. Neste ambiente se tem acesso a todos os dados, volume, fundamentos corporativos e outros conjuntos de dados, incluindo dados de sentimento entre outros, para os EUA. Para outros países, incluindo o Brasil, existem dados diários de preço e volume e fundamentos, que exploraremos na seção seguinte.

O ambiente de pesquisa também é útil para analisar o desempenho de backtests. Você pode carregar o resultado do backtest de um algoritmo e analisar resultados e comparar com desempenhos de outros algoritmos.

Por ser implementado em Python, ele abre a possibilidade de usar bibliotecas poderosas para analisar dados de séries temporais, como StatsModels para estatística e scikit-learn para machine learning em Python. Estas bibliotecas também estão disponíveis no ambiente de desenvolvimento e seu algoritmo pode fazer uso destas e participar da competição.

Além disso, o Quantopian desenvolveu2 várias ferramentas internas, como o Alphalens – uma nova ferramenta para análise de fatores “alfa”. Aqui deixo o alfa entre parentêses pois a ideia deles é encontrar uma métrica, que chamam de “fator”, que explique os retornos do portfolio. Portanto, no melhor entendimento deste autor, se trata de beta e não de alfa.

Na figura abaixo temos um amostra do ambiente de pesquisa. Pode-se verificar que em muito pouco este difere de um típico Jupyter notebook.

Bases de dados

Certamente o foco da empresa ainda é os EUA. Para aquele mercado a plataforma conta com dados históricos em barras de 1 minuto para ações, ETFs e futuros dos EUA desde 2002 até o último dia completo de negociação.

Os dados históricos de preço ou volume é ajustado para splits, fusões e dividendos na data atual da simulação. Esse ajuste é feito para que o algoritmo possa fazer cálculos corretos usando os valores da janela histórica.

O Quantopian também fornece acesso a dados fundamentalistas e de demonstrações contábeis. Os dados da Morningstar consistem em mais de 600 métricas que medem o desempenho financeiro das empresas. Também estão disponívei dados do vendor Factset. O uso mais comum desses dados é a filtragem para um subconjunto de ativos para uso posterior em um algoritmo.

O banco de dados inclui todas as ações e ETFs negociados desde 2002, mesmo aqueles que não são mais negociados. Isso é muito importante porque ajuda a prevenir o famoso survivorship bias, um dos vilões de “super” algoritmos que funcionam somente no backtesting. Bancos de dados que omitem títulos que não são mais negociados ignoram falências e outros eventos importantes, e levam a um falso otimismo sobre um algoritmo.

Uma lista com todas as bases de dados disponíveis pode ser consultada aqui. Uma interessante opção para aqueles que desejam utilizar a plataforma como meio de pesquisa é a possibilidade de colocar no ambiente o seu próprio conjunto de dados! Mesmo que este conjunto de dados não possa fazer parte de um algoritmo de competição, esta possibilidade é muito interessante para descobrir novas estratégias lucrativas com dados que por ventura não estejam disponíveis no Quantopian, e após esta descoberta, utilizar a plataforma de sua preferência para negociar.

Felizmente, e para alegria geral da nação, nem só de EUA vive o Quantopian. No final de 2018 a plataforma anunciou que passou a suportar, no ambiente de pesquisa, dados de preço/volume e dados fundamentalistas de 26 países. O Brasil está entre eles. Os dados de preços e fundamentos para cada um desses países estão disponíveis desde 2004. Os dados de preços são diários, incluindo as barras do OHLCV (Open-High-Low-Close-Volume). Os dados de fundamentos são do FactSet Fundamentals.

Educação

No quesito educação do investidor a plataforma oferece recursos como um ativo fórum de discussões, tutoriais para aprendizagem inicial e uma série de lectures que são vídeos demonstrando alguns usos mais avançados dos recursos.

No fórum podem ser compartilhados tanto backtests quanto notebooks e a troca de ideias de aloritmos é fomentada. Entretanto, predominam as discussões acerca de implementação dos algos e correção de bugs. Os tutoriais são bastante instrutivos, e recomenda-se iniciar por ali. Apesar de a linguagem de programação ser o conhecido Python, a plataforma faz uso intenso de sua API proprietária. São diversas classes, métodos e atributos que não fazem parte do core ou mesmo das famosas bibliotecas da linguagem e sim, são criações do Quantopian. Como iniciar diretamente pela referência a API é muito difícil e certamente logo afastaria iniciantes da plataforma, a empresa fez bons e simples tutoriais que já permitem ao quant wannabe criar seus primeiros algos, analisá-los através do Alphalens e rodar o backtesting na IDE.

Mas, na opinião deste autor, a verdadeira estrela desta seção são as lectures que podem ser vistas nesta lista. Estas são vídeos, no estilo webinar, e são acompanhadas de seus respectivos notebooks que podem ser clonados e modificados ao gosto do usuário. Os temas abordados são abragentes e relevantes, indo desde introdução ao NumPy e pandas, passando por conceitos importantes como momentos estatísticos e regressão múltipla, indo até assuntos avançados e muito pertinentes para qualquer algo trader como pairs trading, cointegração, análise de componentes principais e filtros de Kalman. São ao todo 56 lectures, material de ótima qualidade.

Conclusão

O Quantopian é uma excelente plataforma para pesquisar e implementar estratégias de negociação. Entre seus pontos fortes destacamos o ambiente de pesquisa, baseado na interatividade dos notebooks, a vasta base de dados, o uso da linguagem Python e os tutoriais e lectures que fornecem um bom suporte para o iniciante. Entre os pontos negativos da plataforma o uso de muitas classes e métodos proprietários, com pouca documentação, soam como uma caixa preta para o usuário e dificultam bastante o aprendizado inicial.

Ainda assim, se você está procurando um lugar para começar, a plataforma é uma das mais completas e sugere-se iniciar pelos tutoriais e então aprofundar seus conhecimentos com a série Lectures.

Em um próximo artigo, o Clube de Finanças implementará um algoritmo de demonstração, explicando o passo-a-passo para realizar a pesquisa e implementar o backtesting na IDE.


  1. Retirado de https://www.kaggle.com/kaggle/kaggle-survey-2017#multipleChoiceResponses.csv 

  2. Desenvolveu e mantém em código aberto boa parte de sua estrutura no repositório: https://github.com/quantopian 

Posted by Rafael F. Bressan

Foi membro do Clube de Finanças Esag e gerente do núcleo de pesquisa em riscos e derivativos, no período 2018 a 2019. Bacharel em Ciências Econômicas pela UDESC/Esag. Aluno do mestrado acadêmico em Economia na FGV/EESP.

12 comments

Depois do algoritmo desenvolvido, com qual corretora posso colocar meu programa em python para rodar na pratica?

Rafael Bressan

O Quantopian já ofereceu este serviço no passado, mas não mais. O QuantConnect se não me engano, oferece esta possibilidade. Assim como algumas corretoras online como a Interactive Brokers que possui uma API Python para integrar na plataforma deles.

Ricardo Correa

existe alguma corretora brasileira que possui api python?

Rafael F. Bressan

Olá Ricardo! Até onde eu sei, as corretoras tradicionais (entenda-se aquelas reguladas pela CVM) no Brasil não possuem este serviço, elas oferecem pacotes prontos e comerciais do tipo Profitchart, Protrader, Tryd, etc. Se ficar sabendo de alguma que ofereça API Python poste aqui para todos nós, por favor!

Felipe Barreta

Pelo que vi até o momento só plataformas proprietárias. Dá pra desenvolver a estratégia no MetaTrader 5 e operar. Mas nunca testei. Python e plataformas open source, como Lean na QuantConnect pelo que vi ainda não rola nas nossas corretoras.

Claudio Ugo T

Olá ótima matéria . Estou tentando uma API para o Metatrader conversar com o Python. Diretamente com o servidor da corretora somente pra quem for “amigo do rei” .

Olá Rafael. Tudo bem.
Algumas corretoras brasileiras possibilitam acesso às cotações em tempo real através de link DDE ou RTD.
Pergunto: há como o phyton ler estas for.as de comunicação?
Antecipadamente agradeço a atenção!

Thiago Ranzolin Barreto

Danilo, tudo bem?

Respondendo a sua dúvida, não sei especificamente de um módulo em python para ler DDE ou RTD. Conheço o módulo xlwings (https://www.xlwings.org/) para “consumir” um arquivo xls (excel). Uma forma seria utilizar o excel para obter as informações com DDE ou RTD e ler essas informações em python.

Abs.

Paulo Moreno

O caminho está aqui, pode ser que necessite algum ajuste.

https://github.com/richardgsands/python-dde

Olá.
Algumas corretoras no Brasil oferecem integração com a plataforma MetaTrader 5 (Clear, Rico, XP, ModalMais, Terra). Com o MetaTrader é possível integrar com Python 3, enviando e recebendo dados.

Para maiores informações:
https://www.metatrader5.com/pt/releasenotes/terminal/2085
https://www.mql5.com/pt/articles/5691

EVERTON TOLEDO DE LIMA

Boa tarde, e para linguagem R, temos alguma plataforma?

Olá a Quantopian fornece conhecimentos de mercado para formação de mercado?

Leave a Reply

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

This site uses Akismet to reduce spam. Learn how your comment data is processed.