Os melhores pacotes Python para negociação algorítmica
Foto de Markus Spiske em Unsplash.com
Escrevi mais de 100 postagens sobre negociação algorítmica e, durante minha pesquisa, encontrei alguns pacotes Python incríveis que tornam a negociação automática muito fácil.
Neste post listei pacotes que são úteis para codificar as diferentes áreas funcionais de um sistema de negociação automática.
Naturalmente, esta não é uma lista exaustiva. Existem milhares de bibliotecas Python disponíveis para diferentes finalidades, dependendo das bolsas, provedores, estilos de negociação, complexidade de implementação e estratégias de negociação específicas que você preferir. No entanto, se você quiser descobrir quais pacotes Python eu uso, confira este post.
Esta história é apenas para fins de informação geral e não deve ser utilizada para recomendações de negociação ou aconselhamento financeiro. O código-fonte e as informações são fornecidos apenas para fins educacionais e não devem ser considerados para tomar uma decisão de investimento. Por favor, reveja toda a minha orientação preventiva antes de continuar.
Processamento e manipulação de dados
numpy
numpy é uma biblioteca Python essencial para lidar com matrizes multidimensionais, funções matemáticas, geradores de números aleatórios, álgebra linear e muito mais.
pandas
pandas é um pacote de processamento e análise de dados para DataFrames (pense em planilhas do Excel) que pode ser usado para processar dados de séries temporais, como dados de preços OHLC.
Web Scraping e extração de dados
BeautifulSoup
BeautifulSoup é um pacote para analisar dados HTML e XML, essencial para raspar e processar páginas do site.
Requests
Requests é uma classe Python integrada para enviar solicitações HTTP e manipular respostas em formato JSON ou HTML.
Scrapy
Scrapy é uma biblioteca popular que fornece web spider e funcionalidade de extração de dados.
Selenium
O Selenium é uma estrutura de automação da Web que funciona em conjunto com navegadores como Chrome ou Firefox para automatizar a navegação no site e a coleta de dados.
Urllib
Urllib é um pacote com funções de conveniência para leitura e processamento de URLs e arquivos robots.txt.
Preço, informações da empresa e importação de dados fundamentais
Muitas corretoras, como binance, coinbase e alpaca, oferecem suas próprias APIs para dados de precificação, portanto, se você usar uma delas, não há necessidade de pagar por dados financeiros. Aqui estão algumas bibliotecas para provedores adicionais de dados financeiros gratuitos e pagos:
coingecko
coingecko é uma biblioteca wrapper para as APIs da Coingecko , que fornecem acesso gratuito a informações de preços de criptomoedas, taxas de câmbio e informações gerais sobre moedas.
data-link
data-link é um pacote Python que usa a API Nasdaq Data Link, que fornece acesso a uma grande variedade de dados diferentes em classes de ativos, estimativas, motivos geográficos, setores, etc.
eod-data
O pacote eod-data fornece acesso ao vasto provedor de informações financeiras EOD Historical Data, por exemplo, preços de ações, dividendos, desdobramentos e dados financeiros fundamentais.
finviz
finviz é um pacote Python que fornece acesso à grande quantidade de dados financeiros do FinViz, como preços de ações, avaliações de fundamentos, negociações privilegiadas.
norgatedata
O pacote norgatedata https://pypi.org/project/norgatedata/ fornece acesso ao banco de dados local da Norgate Data, abrangendo dados do mercado de ações da Austrália, Canadá e EUA, além de futuros, commodities, forex e dados fundamentais. Para backtesting, as assinaturas de dados de nível superior fornecem acesso aos constituintes do índice histórico e ações excluídas, o que elimina o viés de sobrevivência no backtesting.
tiingo
O Tiingo SDK oferece acesso às APIs do provedor de dados financeiros Tiingo, como dados de preços de criptomoedas, dados de preços de ações, dados de preços forex, notícias e informações financeiras fundamentais da empresa.
simfin
simfin é um pacote que fornece acesso aos dados financeiros do simfin, que incluem preços de ações, índices financeiros da empresa e fundamentos financeiros.
ultrafinance
ultrafinance é um pacote para coleta de preços e dados fundamentais, análise de dados e backtesting.
tia
tia oferece acesso à API de dados da Bloomberg e fornece utilitários como geração de PDF, indicadores técnicos e backtesting.
yahoo_fin
O yahoo_fin fornece uma riqueza de dados gratuitos, como dados de preços, dados de capitalização de mercado, declarações de renda, balanços e informações sobre quais ativos estão disponíveis em quais bolsas.
yfinance
yfinance é outro pacote Python que oferece acesso conveniente aos dados da API do Yahoo Finance.
Notícias e mídias sociais e sentimento de notícias
SDK do Facebook
O SDK do Facebook fornece acesso e recurso de consulta para a plataforma de mídia social do Facebook.
flair
flair é um modelo NLP para análise de sentimento de texto.
keybert
keybert é uma biblioteca para extração de palavras-chave de informações de texto, postagens ou notícias.
praw
praw fornece acesso à plataforma de mídia social ' Reddit ' e permite que você pesquise subreddits e postagens.
pygooglenews
pygooglenews é um pacote Python para consultar o Google Notícias gratuitamente. No entanto, aplicam-se limites de taxa.
textblob
textblob é uma biblioteca de processamento de dados de texto compatível com NLP para extração de frases, marcação de partes da fala e análise de sentimentos.
tiingo
O Tiingo SDK oferece acesso às APIs do provedor de dados financeiros Tiingo, como dados de preços de criptomoedas, dados de preços de ações, dados de preços forex e informações financeiras fundamentais da empresa. Eles também têm uma API de notícias especificamente para notícias financeiras.
tweepy
tweepy é um pacote Python para acessar e consultar a plataforma de mídia social Twitter.
Análise de dados e estatísticas
numpy
Embora o numpy seja mais conhecido por seus recursos de manipulação de array, ele também oferece uma ampla gama de funções matemáticas, álgebra linear, randomização e funções de Transformação de Fourier.
pandas
pandas não é apenas a biblioteca para manipulação de dados de séries temporais, mas também contém uma grande seleção de funções estatísticas matemáticas e descritivas para operar nos DataFrames.
scipy
scipy fornece um grande número de funções de otimização, interpolação, transformação de Fourier e álgebra linear
statistics
statistics é um conjunto integrado de funções da linguagem Python para estatísticas como média, correlação, desvios padrão e regressão linear.
statsmodels
statsmodels fornece um grande número de classes e funções para modelos estatísticos, testes e exploração de dados.
Indicadores técnicos e padrões de velas
finta
finta implementa mais de 80 indicadores técnicos, alguns deles menos comuns como Stop-and-Reverse ou Fractal Adaptive Moving Average.
pandas-ta
O pandas-ta fornece uma grande variedade de indicadores técnicos e padrões de velas e pode ser facilmente usado com DataFrames.
TA-Lib
TA-Lib é uma biblioteca de indicadores técnicos com mais de 150 indicadores e padrões de velas.
ta
ta é outra biblioteca de indicadores técnicos construída sobre numpy e pandas para calcular os indicadores técnicos mais comuns.
Visualização de dados e gráficos de preços
matplotlib
matplotlib é uma biblioteca de visualização abrangente para gráficos estáticos e interativos.
ploty
plotly é uma biblioteca de visualização de código aberto que fornece muitos gráficos diferentes, como gráficos de linha, gráficos de dispersão, gráficos de área, gráficos de barras, barras de erro, gráficos de caixa, histogramas, mapas de calor, subplots, eixos múltiplos, gráficos polares e gráficos de bolhas.
seaborn
seaborn é um pacote de visualização construído sobre o matplotlib para criar gráficos estatísticos atraentes.
Análise de desempenho e risco
ffn
ffn é uma biblioteca financeira quantitativa que fornece avaliação de desempenho e gráficos relacionados.
finmarketpy
finmarketpy é um pacote para analisar dados de mercado e analisar a lucratividade das estratégias de negociação e visualizar os resultados.
pyfin
pyfin é um pacote para avaliação de opções usando modelos como Black-Scholes, treliça de simulação de Monte-Carlo.
pyfolio
pyfolio é uma biblioteca Python para análise de desempenho e risco de carteiras financeiras desenvolvida pela Quantopian Inc.
QuantPy
QuantyPy é uma biblioteca financeira quantitativa no estado Alpha que oferece cálculo de retornos, rações de risco, fronteira eficiente, etc.
QuantStats
QuantStats é uma biblioteca Python que realiza a criação de perfis de portfólio, permitindo que quants e gerentes de portfólio entendam melhor seu desempenho, fornecendo-lhes análises detalhadas e métricas de risco.
thepassiveinvestor
thepassiveinvestor é um pacote Python para criar vários relatórios de fundos mútuos no formato Excel.
vollib
vollib é uma biblioteca python para calcular preços de opções, volatilidade implícita e gregos usando Black, Black-Scholes e Black-Scholes-Merton.
Inteligência artificial
keras
keras é uma biblioteca que fornece utilitários para tensorflow para simplificar a construção, treinamento e otimização de modelos.
prophet
prophet é uma biblioteca suportada por IA desenvolvida pelo Facebook especificamente para análise preditiva de séries temporais.
pytorch
pytorch é outra estrutura avançada de aprendizado de máquina de código aberto para prototipagem rápida.
Scikit Learn
Skikit Learn é uma biblioteca que fornece ferramentas preditivas de aprendizado de dados e é construída sobre numpy, Skipy e matplotlib.
tensorflow
tensorflow é uma das estruturas de IA mais populares para processamento de ML, NLP, visão e áudio desenvolvido pelo Google.
TensorTrade
TensorTrade é uma biblioteca Python para criar, treinar e executar algoritmos de negociação usando aprendizado de reforço profundo.
Backtesting
backtesting.py
backtesting.py é minha estrutura de backtesting favorita porque é simples de implementar, mas muito poderosa, oferecendo gráficos dinâmicos e otimização.
backtrader
backtrader é uma estrutura de backtesting que suporta desenvolvimento de estratégia, backtesting, otimização e negociação ao vivo.
bt
bt é uma estrutura de backtesting flexível para testar estratégias de negociação quantitativas. Atualmente está na fase Alfa.
lean
lean é um mecanismo de negociação algorítmica para pesquisa de estratégia, backtesting e negociação ao vivo.
pybacktest
pybacktest é uma estrutura de backtesting simples, mas poderosa, que cria estatísticas e visualizações de desempenho.
QuantRocket
QuantRocket é uma plataforma de negociação que oferece acesso a dados, desenvolvimento e otimização de estratégias, backtesting, etc.
zipline
zipline é uma biblioteca de backtesting desenvolvida pela Quantopian para backtesting orientado a eventos e negociação ao vivo.
Negociação ao vivo
Muitas trocas oferecem suas próprias APIs e SDKs REST, por exemplo, Binance, Alpaca, Coinbase, etc. Listá-los todos iria além do escopo deste post. Verifique na seção 'Desenvolvimento' de sua bolsa quais ferramentas de desenvolvimento estão disponíveis. Aqui estão alguns pacotes que suportam múltiplas trocas.
cctx
cctx é uma biblioteca que simplifica o acesso à API para muitas trocas de criptomoedas e serviços de processamento de pagamentos, fornecendo uma API comum. Atualmente suporta 115 trocas.
cex-io-api-python
O pacote cex-io -api-python fornece uma interface de API ridiculamente simples para a troca de moeda criptográfica cex-io . Na verdade, é a API de corretora mais simples que já vi.
FreqTrade
FreqTrade é um bot de negociação que fornece acesso a muitas trocas de criptografia e pode ser controlado via Telegram ou Web UI. Ele também fornece plotagem, gerenciamento de dinheiro, backtesting e otimização.
HummingBot
O HummingBot é um Python Framework de código aberto que ajuda a criar bots fornecendo conectores para mais de 30 trocas centralizadas e descentralizadas.
Pyalgotrade
Pyalgotrade é uma biblioteca para negociação algorítmica e backtesting usando a troca de criptografia Bitstamp .
QuantRocket
QuantRocket é uma plataforma de negociação que oferece acesso a dados, desenvolvimento e otimização de estratégias, backtesting, etc.
Tradelogics
Tradelogics é uma plataforma de negociação em nuvem com recursos para acesso a dados e pesquisa de estratégia que suporta várias linguagens de programação e muitas trocas.
Até mais
Neste post, listei pacotes Python úteis em diferentes áreas funcionais, como processamento de dados, análise técnica, desempenho e análise de risco, backtesting e negociação ao vivo que podem ser usados para construir um sistema de negociação automática.
Espero que você tenha achado este post digno de seu tempo.