К основному контенту

Estratégias comerciais com python


Estratégias comerciais com python
Puxe pedidos 0.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Estratégias comerciais com python
Puxe pedidos 8.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use o Git ou o check-out com o SVN usando o URL da web.
Com a versão 1.9.50.117 amostras de dados e feeds de dados do YahooFinance foram atualizados para a última informação disponível. Mas sendo o formato não documentado, ainda pode haver mudanças e cantos inesperados.
Aqui, um trecho de um CrossOver médio simples simples. Isso pode ser feito de várias maneiras diferentes. Use os documentos (e exemplos) Luke!
Incluindo um gráfico completo. De uma chance! Isso está incluído nas amostras como sigsmacross / sigsmacross2.py. Ao longo é sigsmacross. py, que pode ser parametrizado a partir da linha de comando.
Live Trading e backtesting plataforma escrita em Python.
Feed de dados ao vivo e negociação com corretores interativos (precisa de IbPy e beneficia muito de uma pira instalada) Gráfico visual (precisa de um garfo de comtypes até que uma solicitação de tração seja integrada na versão e benefícios de pira) Oanda (precisa de oatoterapia) (apenas API REST - v20 não suportou a transmissão em sequência quando implementado) Os feeds de dados de csv / arquivos, fontes on-line ou de pandas e chama Filtros para dados (como quebrar uma barra diária em pedaços para simular intradía) Múltiplos fluxos de dados e estratégias múltiplas suportadas Múltiplos cronogramas ao mesmo tempo Integrados Resampling e Repetição Step-Step backtesting ou de uma só vez (exceto na avaliação da Estratégia) Bateria de indicadores integrada Suporte do indicador TA-Lib (precisa de python ta-lib / verificar os documentos) Desenvolvimento fácil de indicadores personalizados Analisadores (por exemplo: TimeReturn , Ratio de Sharpe, SQN) e integração do pacto. Definição flexível dos esquemas de comissão. Simulação de corretores integrada com Mercado, Close, Limit, Stop, StopLimit, StopTrail, StopTrailLimit * e * OCO, ordens, deslizamento e ajuste contínuo de caixa para instrumentos futuros. Plotting (requer matplotlib)
Leia a documentação completa em:
Lista de indicadores embutidos (116)
Python 2.7 Python 3.2 / 3.3 / 3.4 / 3.5 / 3.6 Também funciona com pypy e pypy3 (sem traçado - matplotlib não é suportado em pypy)
A compatibilidade é testada durante o desenvolvimento com 2.7 e 3.5.
As outras versões são testadas automaticamente com Travis.
O backtrader é autônomo sem dependências externas (exceto se desejar traçar)
pip instalar backtrader.
pip instalar backtrader [plotting]
Se matplotlib não estiver instalado e você deseja fazer algum planejamento.
A versão mínima matplotlib é 1.4.1.
Um exemplo para IB Data Feeds / Trading:
IbPy não parece estar no PyPi. Ou:
ou (se git não estiver disponível no seu sistema):
Para outras funcionalidades como: Visual Chart, Oanda, TA-Lib, verifique as dependências na documentação.
Coloque o diretório backtrader encontrado nas fontes dentro do seu projeto.
X: Número de versão principal. Deve ficar estável, a menos que algo grande seja alterado como uma revisão para usar numpy Y: Número de versão menor. Para ser alterado após a adição de um novo recurso completo ou (Deus proibe), uma mudança de API incompatível. Z: número de versão de revisão. Para ser alterado para atualizações de documentação, pequenas mudanças, pequenas correções de bugs I: Número de Indicadores já incorporados na plataforma.
Se depois de ver os documentos e algumas amostras (veja o blog também) você sente que essa não é sua xícara de chá, você sempre pode dar uma olhada em plataformas semelhantes de Python:
bt ligeiramente pré-data backtrader e tem uma abordagem completamente diferente, mas é divertido, bt também foi escolhido como abreviatura para backtrader durante as importações e que alguns dos métodos têm a mesma denominação (nomeação óbvia de qualquer forma): executar, traçar.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Estratégias comerciais com python
Olá e bem-vindo à parte 13 da série tutorial Python for Finance. Neste tutorial, vamos começar a falar sobre o back-testing da estratégia. O campo de teste de volta e os requisitos para fazê-lo direito são bastante maciços. Basicamente, o que é necessário para nós é criar um sistema que levará dados de preços históricos e simulará a negociação nesse ambiente e, em seguida, nos dará os resultados. Isso pode parecer simples, mas, para analisar a estratégia, precisamos rastrear um conjunto de métricas, como o que vendemos, quando, com que freqüência trocamos, o que nossa Beta e Alpha é, além de outras métricas, como a redução, Sharpe Relação, volatilidade, alavancagem e muito mais. Juntamente com isso, geralmente queremos visualizar tudo isso. Então, podemos escrever tudo isso a nós mesmos, ou podemos usar uma plataforma para nos ajudar com isso.
. É por isso que vamos introduzir a Quantopian, que é uma plataforma que nos permite escrever e testar as estratégias de negociação com Python facilmente.
O que o Quantopian faz é adicionar uma camada de GUI em cima da biblioteca de testes de Zipline para Python, além de um conjunto de fontes de dados, muitas das quais são completamente gratuitas para trabalhar. Você também pode obter alocações de capital da Quantopian, ao licenciar sua estratégia para elas se você atender a determinados critérios. Geralmente, um beta entre -0.3 e +0.3 é um bom ponto de partida, mas você também precisa ter outras métricas saudáveis ​​para competir. Mais sobre isso mais tarde, vamos aprender sobre os princípios de Quantopian primeiro. Uma vez que a partpian é alimentada por bibliotecas primariamente abertas, como Zipline, Alphalens e Pyfolio, você também pode executar uma plataforma semelhante a Quantopian localmente, se quiser. Eu acho que a maioria das pessoas interessadas em atuar localmente estão interessadas em manter seus algoritmos privados. A Quantopian não vê os seus algoritmos, a menos que você dê permissão, e a comunidade só vê seus algoritmos se os compartilhar. Eu altamente encorajar você a ver seu relacionamento com a Aspian não como um adversário, mas sim como uma parceria. Se você chegar com algo de alta qualidade, a Quespian está muito interessada em trabalhar com, e tem o financiamento para investir em você. Nessa relação, a Quantopian está trazendo a plataforma, o financiamento e outros especialistas no campo para ajudá-lo, é um bom negócio na minha opinião.
Para começar, dirija-se a Quantopian, crie uma conta se você não tiver uma, e faça login. Sinta-se à vontade para puxar um pouco. Os fóruns da comunidade de Quantopian são um ótimo lugar para absorver algum conhecimento. Quantopian também executa um concurso freqüente para preços em dinheiro. Vamos começar com os algoritmos. Uma vez lá, escolha o botão azul "novo algoritmo". Por enquanto, vamos passar a maior parte do tempo em dois lugares, que podem ser encontrados no botão "Meu Código". Para começar, iremos para algoritmos e criamos um novo algoritmo usando o botão azul "Algoritmo novo".
Quando você cria o algoritmo, você deve ser levado para sua página de algoritmos de edição ativa com o algoritmo clonado, que se parece com isso (menos as caixas coloridas) e algumas mudanças possivelmente para a IU.
Python Editor - É onde você codifica sua lógica Python para o algoritmo. Resultados do algoritmo construído - Quando você cria o algoritmo, os resultados gráficos aparecerão aqui. Saída de registro / erro - Qualquer informação de saída / log do console virá aqui. É comum que o seu programa libere vários bits de texto para depuração ou apenas para obter mais informações. Algoritmo de criação: use isso para testar rapidamente o que você escreveu. Os resultados não serão salvos, mas você pode ver o resultado na seção de resultados do algoritmo incorporado. Full Backtest - Isso executará um teste de retorno completo com base no seu algoritmo atual. Os testes completos completos vêm com um pouco mais de análise, os resultados são salvos e o algoritmo que gerou esses resultados também é salvo, para que você possa rever os testes de volta e visualizar o código exato que gerou um resultado específico.
O código de exemplo inicial é algo como:
O que é ótimo, mas talvez seja um pouco demais para começar. Quantopian também fornece alguns algoritmos de exemplo se sua conta for nova. Sinta-se livre para verificar esses, mas você pode achar que eles são confusos. As únicas duas funções que você precisa em cada algoritmo são: initialize e handle_data. A função de inicialização é executada uma vez, no início do seu script. Você usará isso para configurar globals como regras, funções para usar mais tarde e vários parâmetros. Em seguida, a função handle_data que é executada a cada minuto em relação aos dados do mercado.
Vamos escrever nossa estratégia simples para ficar confortável com o Lespian. Vamos implementar uma estratégia de cruzamento de média móvel simples e ver como isso acontece.
Se você não está familiarizado com as médias móveis, o que faz é ter um certo número de "janelas" de dados. No caso de correr contra preços diários, uma janela seria um dia. Se você tivesse uma média móvel de 20, isso significaria uma média móvel de 20 dias. A partir daqui, a idéia é dizer que você tem uma média móvel de 20 e uma média móvel de 50. Traçar isso em um gráfico pode parecer algo como:
Aqui, a linha azul é o preço das ações, a linha vermelha é a média móvel de 20 e a linha amarela é a média móvel de 50. A idéia é que quando a média móvel de 20, que reage mais rápido, ultrapassa a média móvel de 50, isso significa que o preço pode estar tendendo, e podemos querer investir. Por outro lado, se a média móvel de 20 cai abaixo da média móvel de 50, isso indica talvez que o preço está a diminuir, e que queremos vender ou investir, ou mesmo vender a empresa, onde você apostou.
Para os nossos propósitos aqui, apliquemos uma estratégia de cruzamento em média móvel para a Apple (AAPL), entre as datas de 7 de outubro de 2018 e 7 de outubro de 2018. Para esse período, as ações da AAPL diminuíram, e depois, com muito pouca mudança líquida global . Nossa estratégia de cruzamento deve, espero, ficar longe ou curto (apostar contra) à medida que o preço cai e, em seguida, pular quando o preço está aumentando. O shorting de uma empresa implica o empréstimo de partes de outra pessoa, vendendo-as e, em seguida, reabastecimento das ações em uma data posterior. Sua esperança é que o preço das ações caia, e você os recompõe de volta muito mais barato e dê ao proprietário original suas ações, embolando a diferença. Para começar, vamos construir o método de inicialização:
Por enquanto, vamos definir o nosso estoque de maçã. Se você realmente começar a digitar o sid (o Quantopian possui uma funcionalidade de preenchimento automático agradável, onde você pode começar a digitar o nome da empresa ou o símbolo do ticker para encontrar o sid. O motivo para usar o sid é porque os tickers da empresa podem mudar ao longo de períodos de tempo . Esta é uma maneira de garantir que você esteja recebendo o ticker que você realmente pretende obter. Você também pode usar o símbolo () para usar o ticker e tornar seu código um pouco mais fácil de ler, mas isso não é recomendado , uma vez que o ticker pode mudar.
Toda vez que você cria um algoritmo com Zipline ou Quantopian, você precisará ter os métodos initialize e handle_data.
O método de inicialização é executado uma vez no início do algoritmo (ou uma vez por dia, se você estiver executando o algoritmo ao vivo em tempo real). Handle_data é executado uma vez por minuto.
Dentro do nosso método de inicialização, passamos esse parâmetro de contexto. Contexto é um dicionário de Python, que é o que usaremos para rastrear o que de outra forma poderemos usar variáveis ​​globais. Simplificando, a variável de contexto é usada para rastrear nossa atual situação de investimento, com coisas como nossa carteira e dinheiro.
Em seguida, ainda precisamos da nossa função handle_data. Esta função leva contexto e dados como parâmetros.
O parâmetro de contexto já foi explicado e a variável de dados é usada para rastrear o ambiente fora do nosso portfólio atual. Isso rastreia coisas como preços de ações e outras informações sobre empresas nas quais podemos ser investidos, ou não, mas são empresas que estamos rastreando.
Para iniciar a função handle_data:
Podemos usar o método. history para obter os preços históricos da Apple, nos últimos 50 dias, em intervalos de 1 dia. Agora podemos fazer:
O valor sma_50 é apenas o que é a média / média para os dados do histórico que acabamos de tirar. O sma_20 é os últimos 20 dias de dados. Observe que isso está contido no método handle_data, que é executado para todos os períodos, então é tudo o que temos a fazer para rastrear os valores diários das médias móveis 50 e 20 simples.
No próximo tutorial, vamos falar sobre fazer pedidos.

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Frank Smietana em 18 de julho de 2017.
Neste artigo, Frank Smietana, um dos colaboradores experientes do QuantStart, descreve a paisagem do software de backtesting de código aberto da Python e fornece conselhos sobre quais framework de backtesting são adequados para suas próprias necessidades de projeto.
Backtesting é indiscutivelmente a parte mais crítica do processo de produção da Sistemática de Negociação Sistemática (STS), sentado entre o desenvolvimento da estratégia e a implantação (negociação ao vivo). Se uma estratégia é defeituosa, um teste rigoroso provavelmente expõe isso, evitando que uma estratégia de perda seja implantada.
Uma série de capacidades relacionadas se sobrepõem com backtesting, incluindo simulação comercial e negociação ao vivo. O Backtesting usa dados históricos para quantificar o desempenho STS. Os simuladores de negociação levam backtesting um passo adiante, visualizando o desencadeamento de trades e desempenho de preços em uma base bar-a-bar. A negociação simulada / ao vivo implementa um STS testado em tempo real: negociações de sinalização, gerando ordens, roteando ordens para corretores e mantendo as posições à medida que as ordens são executadas.
A maioria dos quadros vai além do backtesting para incluir algumas capacidades de negociação ao vivo. Isso é conveniente se você deseja implantar a partir de sua estrutura de backtesting, que também funciona com o seu fornecedor preferido e fontes de dados. Quantopian / Zipline vai um passo adiante, fornecendo uma solução totalmente integrada de desenvolvimento, backtesting e implantação.
A comunidade Python é bem servida, com pelo menos seis estruturas de backtesting de código aberto disponíveis. No entanto, estão em vários estágios de desenvolvimento e documentação. Se você gosta de trabalhar em uma equipe construindo uma estrutura de backtesting de código aberto, confira seus reembolsos Github.
Antes de avaliar quadros de teste, vale a pena definir os requisitos do seu STS.
Qual classe de ativos você está negociando? Embora a maioria dos frameworks ofereça suporte aos dados da US Equities via YahooFinance, se uma estratégia incorporar derivados, ETFs ou títulos de EM, os dados precisam ser importados ou fornecidos pela estrutura. As coberturas de classe de ativos vão além dos dados. O framework pode lidar com futuros e opções de tamanho finito e gerar negociações de roll-over automaticamente? E quanto aos mercados ilíquidos, quão realista é uma suposição ao executar grandes encomendas?
Qual a frequência e o detalhe dos dados do seu STS? Um sistema de negociação que exige que cada marca ou lance / peça tenha um conjunto muito diferente de problemas de gerenciamento de dados do que um intervalo de 5 minutos ou horário. Os hedge funds e as lojas HFT investiram significativamente na construção de quadros robustos e escaláveis ​​de backtesting para lidar com esse volume e freqüência de dados. Algumas plataformas fornecem um conjunto rico e profundo de dados para várias classes de ativos, como ações da S & P, com resolução de um minuto.
Qual (s) tipo (s) de ordem o seu STS requer? No mínimo, o limite, as paradas e o OCO devem ser suportados pela estrutura.
Nível de suporte e amp; documentação necessária. Os quadros de estágio inicial têm escassa documentação, poucos têm suporte além de placas comunitárias.
Os Componentes de um Quadro de Teste de Backtesting.
Dados e aquisição de STS: os componentes de aquisição consomem o arquivo de script / definição STS e fornecem os dados necessários para testes. Se a estrutura exige que qualquer STS seja recodificado antes do teste posterior, a estrutura deve suportar funções enlatadas para os indicadores técnicos mais populares para acelerar o teste STS. Os usuários determinam o tempo de um período histórico para fazer backtest com base no que o framework fornece, ou o que eles são capazes de importar.
O teste de desempenho aplica a lógica STS à janela de dados históricos solicitada e calcula uma ampla gama de riscos & amp; métricas de desempenho, incluindo redução máxima, taxas Sharpe e Sortino. A maioria dos frameworks suporta um número decente de capacidades de visualização, incluindo curvas de equidade e estatísticas decimais.
A otimização tende a exigir a maior parte dos recursos de computação no processo STS. Se o seu STS precisar de otimização, concentre-se em uma estrutura que suporte processamento escalável distribuído / paralelo.
No contexto de estratégias desenvolvidas usando indicadores técnicos, os desenvolvedores de sistemas tentam encontrar um conjunto ideal de parâmetros para cada indicador. Mais simplesmente, a otimização pode achar que um fluxo de média móvel de 6 e 10 dias STS acumulou mais lucro sobre os dados de teste históricos do que qualquer outra combinação de períodos de tempo entre 1 e 20. Já com este exemplo trivial, 20 * 20 = 400 combinações de parâmetros devem ser calculado & amp; classificado.
No contexto de um portfólio, a otimização procura encontrar a ponderação ideal de cada ativo na carteira, incluindo os instrumentos em curto e alavancado. Em uma base periódica, o portfólio é reequilibrado, resultando na compra e venda de participações da carteira, conforme necessário, para alinhar com os pesos otimizados.
O dimensionamento de posição é um uso adicional da otimização, ajudando os desenvolvedores de sistemas a simular e analisar o impacto da alavancagem e dimensionamento de posição dinâmico no STS e no desempenho do portfólio.
Seis quadros de teste para o Python.
As capacidades padrão das plataformas open source Python backtesting parecem incluir:
Gerenciamento de eventos, flexível e irrestrito Coleta decente de indicadores técnicos pré-definidos Captação de desempenho padrão / visualização / geração de relatórios.
PyAlgoTrade.
PyAlgoTrade é uma estrutura de backtesting mutuamente documentada, juntamente com capacidades de negociação em papel e ao vivo. O suporte a dados inclui Yahoo! Finanças, Google Finance, NinjaTrader e qualquer tipo de série de tempo baseada em CSV, como Quandl. Os tipos de pedidos suportados incluem Market, Limit, Stop e StopLimit.
O PyAlgoTrade suporta a negociação Bitcoin via Bitstamp e o gerenciamento de eventos do Twitter em tempo real.
bt - Backtesting para Python.
bt "visa promover a criação de blocos de lógica de estratégia facilmente testáveis, reutilizáveis ​​e flexíveis para facilitar o rápido desenvolvimento de estratégias comerciais complexas".
O framework é particularmente adequado para testar STS com base em portfólio, com algos para ponderação de ativos e reequilíbrio de portfólio. A modificação de uma estratégia para executar em diferentes freqüências de tempo ou pesos de ativos alternativos envolve um mínimo de ajuste de código. bt é construído em cima do ffn - uma biblioteca de funções financeiras para Python.
Backtrader.
Esta plataforma está excepcionalmente bem documentada, com um blog acompanhante e uma comunidade on-line ativa para postar perguntas e solicitações de recursos. O Backtrader suporta uma série de formatos de dados, incluindo arquivos CSV, Pandas DataFrames, iteradores de incandescência e feeds de dados em tempo real de três corretores. Esses feeds de dados podem ser acessados ​​simultaneamente e podem até representar diferentes cronogramas. Os corretores suportados incluem Oanda para negociação de Forex e negociação de classes de ativos múltiplos através de Interactive Brokers e Visual Chart.
Pysystemtrade.
O desenvolvedor da Pysystemtrade, Rob Carver, tem uma ótima postagem em discussão sobre o porquê ele se propôs a criar mais uma nova estrutura de teste do Python e os argumentos para e contra o desenvolvimento do framework. A estrutura backtesting para pysystemtrade é discutida no livro Rob, "Systematic Trading".
Pysystemtrade lista uma série de recursos de roteiro, incluindo um testador de back-up completo, que inclui técnicas de otimização e calibração e negociação de futuros totalmente automáticos com Interactive Brokers. Os contribuidores da fonte aberta são bem-vindos.
Zipline é um simulador de negociação algorítmica com recursos de papel e negociação ao vivo. Acessível através da interface do navegador IPython baseado no navegador, a Zipline fornece uma alternativa fácil de usar para ferramentas de linha de comando. Suportado e desenvolvido por Quantopian, Zipline pode ser usado como uma estrutura de backtesting autônomo ou como parte de um ambiente completo de desenvolvimento, teste e implantação de STS, de Aosta / Zipline STS. A Zipline fornece 10 anos de dados de estoque históricos históricos de última hora e uma série de opções de importação de dados.
QSTrader é uma estrutura de backtesting com capacidades de negociação ao vivo. O fundador da QuantStart, Michael Halls-Moore, lançou o QSTrader com a intenção de construir uma plataforma robusta e escalável o suficiente para atender às necessidades dos fundos de hedge quantitativos institucionais, bem como aos comerciantes quantos de varejo. O QSTrader atualmente suporta dados de resolução "barra" da OHLCV em várias escalas de tempo, mas permite que dados de marca sejam usados.
Tanto o backtesting como o comércio ao vivo são completamente orientados para eventos, simplificando a transição das estratégias da pesquisa para o teste e, finalmente, a negociação ao vivo. A estratégia básica / código do portfólio geralmente é idêntico em ambas as implementações.
O principal benefício do QSTrader é em sua modularidade, permitindo uma ampla personalização de código para aqueles que possuem requisitos específicos de gerenciamento de risco ou portfólio.
Abraçando o Backtest.
É a natureza humana se concentrar na recompensa de desenvolver um STS (esperançosamente lucrativo), então apressar-se a implantar uma conta financiada (porque esperamos), sem gastar tempo e recursos suficientes para testar completamente a estratégia. Mas backtesting não é apenas um gatekeeper para nos impedir de implementar estratégias erradas e perder capital comercial, também fornece uma série de diagnósticos que podem informar o processo de desenvolvimento STS. Por exemplo, testando um STS idêntico em dois intervalos de tempo diferentes, compreendendo a redução máxima de uma estratégia no contexto de correlações de ativos e criando portfólios mais inteligentes por backtesting de alocações de ativos em várias regiões geográficas.
Em futuras postagens, iremos abordar frameworks de backtesting para ambientes que não sejam Python e o uso de várias técnicas de amostragem como bootstrapping e jackknife para testar modelos de negociação preditivos.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

O'Reilly.
Em nosso radar.
Em nosso radar.
Negociação algorítmica em menos de 100 linhas de código Python.
Se você está familiarizado com o comércio financeiro e conhece o Python, você pode começar com o comércio algorítmico básico em nenhum momento.
Se você quiser saber mais sobre a análise de dados financeiros com o Python, confira Python for Finance pela Yves Hilpisch.
Negociação Algorítmica.
A negociação algorítmica refere-se à negociação automatizada e automatizada de instrumentos financeiros (com base em algum algoritmo ou regra) com pouca ou nenhuma intervenção humana durante as horas de negociação. Quase qualquer tipo de instrumento financeiro - sejam ações, moedas, commodities, produtos de crédito ou volatilidade - pode ser negociado de tal forma. Não só isso, em certos segmentos de mercado, os algoritmos são responsáveis ​​pela maior parte do volume comercial. Os livros The Quants de Scott Patterson e Mais dinheiro do que Deus por Sebastian Mallaby pintam uma imagem vívida dos começos do comércio algorítmico e das personalidades por trás do seu aumento.
As barreiras à entrada para negociação algorítmica nunca foram menores. Não muito tempo atrás, apenas investidores institucionais com orçamentos de TI em milhões de dólares poderiam participar, mas hoje mesmo indivíduos equipados apenas com um notebook e uma conexão com a Internet podem começar em poucos minutos. Algumas tendências principais estão por trás desse desenvolvimento:
Software de código aberto: cada pedaço de software que um comerciante precisa para começar na negociação algorítmica está disponível na forma de código aberto; especificamente, Python tornou-se o idioma e o ecossistema de escolha. Abrir fontes de dados: cada vez mais valiosos conjuntos de dados estão disponíveis a partir de fontes abertas e gratuitas, fornecendo uma grande quantidade de opções para testar hipóteses e estratégias de negociação. Plataformas de negociação on-line: existe um grande número de plataformas de negociação on-line que fornecem acesso fácil e padronizado aos dados históricos (através de APIs RESTful) e dados em tempo real (através de APIs de streaming de soquete) e também oferecem recursos comerciais e de portfólio (por meio de APIs programáticas ).
Este artigo mostra como implementar um projeto de negociação algorítmica completo, desde testar a estratégia até realizar negócios automatizados em tempo real. Aqui estão os principais elementos do projeto:
Estratégia: escolhi uma estratégia de impulso de séries temporais (ver Moskowitz, Tobias, Yao Hua Ooi e Lasse Heje Pedersen (2018): "Time Series Momentum". Journal of Financial Economics, Vol. 104, 228-250.), Que basicamente, pressupõe que um instrumento financeiro que tenha funcionado bem / mal continuará a fazê-lo. Plataforma: escolhi Oanda; Isso permite que você troque uma variedade de contratos de alavancagem por diferenças (CFDs), que essencialmente permitem apostas direcionais em um conjunto diversificado de instrumentos financeiros (por exemplo, moedas, índices de ações, commodities). Dados: obteremos todos os nossos dados históricos e dados de transmissão da Oanda. Software: Usaremos o Python em combinação com os poderosos pandas da biblioteca de análise de dados, além de alguns pacotes Python adicionais.
O seguinte pressupõe que você tenha uma instalação Python 3.5 disponível com as principais bibliotecas de análise de dados, como NumPy e pandas, incluídas. Caso contrário, você deve, por exemplo, baixar e instalar a distribuição do Anaconda Python.
Conta Oanda.
No oanda, qualquer pessoa pode se inscrever para uma demonstração de demonstração gratuita ("paper trading") em poucos minutos. Depois de ter feito isso, para acessar a API Oanda por meio de programação, você precisa instalar o pacote Python relevante:
Para trabalhar com o pacote, você precisa criar um arquivo de configuração com o nome do arquivo oanda. cfg que possui o seguinte conteúdo:
Substitua as informações acima com o ID e o token que você encontra em sua conta na plataforma Oanda.
A execução deste código o equipa com o objeto principal para trabalhar programaticamente com a plataforma Oanda.
Backtesting.
Nós já criamos tudo o que é necessário para começar com a análise da estratégia de impulso. Em particular, podemos recuperar dados históricos da Oanda. O instrumento que utilizamos é EUR_USD e é baseado na taxa de câmbio EUR / USD.
O primeiro passo no backtesting é recuperar os dados e convertê-lo em um objeto DataFrame de pandas. O conjunto de dados é para os dois dias 8 e 9 de dezembro de 2018, e tem uma granularidade de um minuto. A saída no final do seguinte bloco de código fornece uma visão geral detalhada do conjunto de dados. Ele é usado para implementar o backtesting da estratégia de negociação.
Em segundo lugar, formalizamos a estratégia de impulso ao dizer a Python que obtenha o retorno de registro médio nas últimas barras de 15, 30, 60 e 120 minutos para derivar a posição no instrumento. Por exemplo, o retorno do log médio para as últimas barras de 15 minutos dá o valor médio das últimas 15 observações de retorno. Se esse valor for positivo, vamos / ficamos longos o instrumento negociado; Se é negativo, vamos / ficamos curtos. Para simplificar o código que se segue, apenas confiamos nos valores closeAsk que recuperamos através do nosso bloco anterior de código:
Em terceiro lugar, para derivar o desempenho absoluto da estratégia momentum para os diferentes intervalos de momentum (em minutos), você precisa multiplicar os posicionamentos derivados acima (deslocados por um dia) pelos retornos do mercado. Veja como fazer isso:
A inspeção da parcela acima revela que, ao longo do período do conjunto de dados, o próprio instrumento negociado tem um desempenho negativo de cerca de -2%. Entre as estratégias de impulso, a baseada em 120 minutos é melhor com um retorno positivo de cerca de 1,5% (ignorando a propagação / oferta). Em princípio, essa estratégia mostra "alfa real": ele gera um retorno positivo mesmo quando o próprio instrumento mostra um negativo.
Negociação automatizada.
Depois de decidir qual estratégia de negociação implementar, você está pronto para automatizar a operação de negociação. Para acelerar as coisas, estou implementando a negociação automatizada com base em doze barras de cinco segundos para a estratégia de momentum da série temporal, em vez de barras de um minuto, como usadas para testes anteriores. Uma única e bastante concisa classe o truque:
O código abaixo permite que a classe MomentumTrader faça seu trabalho. O comércio automatizado ocorre no impulso calculado em 12 intervalos de comprimento cinco segundos. A classe automaticamente interrompe a negociação após 250 carrapatos de dados recebidos. Isso é arbitrário, mas permite uma demonstração rápida da classe MomentumTrader.
A saída acima mostra os negócios únicos executados pela classe MomentumTrader durante uma execução de demonstração. A captura de tela abaixo mostra a aplicação de área de trabalho fxTradePractice da Oanda, onde uma negociação da execução da classe MomentumTrader em EUR_USD está ativa.
Todos os exemplos de resultados apresentados neste artigo são baseados em uma conta demo (onde apenas o dinheiro do papel é usado em vez do dinheiro real) para simular o comércio algorítmico. Para mudar para uma operação comercial ao vivo com dinheiro real, você simplesmente precisa configurar uma conta real com a Oanda, fornecer fundos reais e ajustar o ambiente e os parâmetros da conta usados ​​no código. O próprio código não precisa ser alterado.
Conclusões.
Este artigo mostra que você pode iniciar uma operação básica de negociação algorítmica com menos de 100 linhas de código Python. Em princípio, todas as etapas de um projeto desse tipo são ilustradas, como recuperar dados para fins de backtesting, testar uma estratégia momentum e automatizar a negociação com base em uma especificação estratégica momentum. O código apresentado fornece um ponto de partida para explorar muitas direções diferentes: usando estratégias alternativas de negociação algorítmica, trocando instrumentos alternativos, trocando múltiplos instrumentos ao mesmo tempo, etc.
A popularidade do comércio algorítmico é ilustrada pelo aumento de diferentes tipos de plataformas. Por exemplo, a Quantopian - uma plataforma de teste back-test baseada em web e Python para estratégias de negociação algorítmica - informou no final de 2018 que atraiu uma base de usuários de mais de 100.000 pessoas. As plataformas de negociação on-line como a Oanda ou aquelas para criptografia como o Gemini permitem que você comece em mercados reais em poucos minutos e atenda a milhares de comerciantes ativos ao redor do globo.
Se você quiser saber mais sobre a análise de dados financeiros com o Python, confira Python for Finance pela Yves Hilpisch.
Yves Hilpisch.
O Dr. Yves J. Hilpisch é fundador e sócio-gerente da The Python Quants (tpq. io), um grupo que se concentra no uso de tecnologias de código aberto para ciência de dados financeiros, negociação algorítmica e finanças computacionais. Ele é o autor dos livros Python for Finance (O'Reilly, 2018), Derivatives Analytics com Python (Wiley, 2018) e Volatilidade e Derivados de Variância (Wiley, 2017). Yves palestras em finanças computacionais no Programa CQF (cqf), na ciência dos dados na Universidade de Ciências Aplicadas (htws.
Como posso passar parâmetros para um comando em C #?
Saiba como passar dados para um comando sem violar o padrão de comando em C #.
Como uso o padrão singleton em C #?
Saiba como criar instâncias thread-safe com o padrão singleton em C #.
Como eu deveria formatar consultas Transact-SQL?
Aprenda as possibilidades de formatação para consultas Transact-SQL e desenvolva sua própria estrutura de código.
Como localizar dados em minhas tabelas do SQL Server usando os diagramas do SQL Server Management Studio?
Localize os dados de forma rápida e fácil com a ferramenta de diagrama do SQL Server Management Studio.

Комментарии

Популярные сообщения из этого блога

Estratégia diversificada não relacionada

Diversificação de Conglomerados / Diversificação / Estratégias não relacionadas. A diversificação do conglomerado é uma estratégia de crescimento que envolve a adição de novos produtos ou serviços que são significativamente diferentes dos produtos ou serviços atuais da organização. A diversificação do Conglomerat ocorre quando a empresa se diversifica em uma (s) área (s) totalmente independente do negócio atual da organização. A maioria das diversificações de conglomerados baseia-se na fundamentação de que a expansão em indústrias não relacionadas tem um potencial muito atraente: ". A premissa básica da diversificação não relacionada é que qualquer empresa que possa ser adquirida em bons termos financeiros representa um bom negócio para se diversificar em" (Thompson e Strickland). Normalmente, os estrategistas corporativos exibem empresas candidatas usando critérios como: Se o negócio pode atingir metas corporativas para rentabilidade e retorno sobre o investimento. Se o novo...

Ação de preço de negociação forex

8 segredos de ação de preço que todo comerciante deve saber. 8 segredos de ação de preço que todo comerciante deve saber. A ação de preço é um dos conceitos comerciais mais populares. Um comerciante que sabe usar a ação de preço do jeito certo geralmente pode melhorar seu desempenho e sua maneira de olhar os gráficos de forma significativa. No entanto, ainda existem muitos mal-entendidos e meio verídicos que circulam que confundiram os comerciantes e configurá-los para o fracasso. Neste artigo, exploramos os 8 segredos de ação de preços mais importantes e compartilhamos as melhores dicas de ação de preço. As zonas de suporte e resistência do n. ° 1 são melhores que os níveis. Suporte e resistência é provavelmente o conceito de ação de preço mais popular, mas apenas muito poucos comerciantes podem realmente ganhar dinheiro com ele. O motivo é muitas vezes muito simples, embora não seja tão óbvio à primeira vista. A maioria dos comerciantes apenas usa níveis únicos e horizontais quando s...

Análises de sistemas de negociação swing

Análises de sistemas de negociação Swing. Análises de sistemas de negociação Swing. Análises de sistemas de negociação Swing. Forex Trading System Reviews | theforexgeek. Desenvolva estratégias de negociação de swing e estratégias de negociação de futuros seguindo o conselho de um comerciante de campeão verificado. Swing Trading | Stock News & amp; Análise do mercado de ações - IBD. O software AbleTrend Swing Trading fornece sinais claros de timing de mercado - quando comprar / vender / manter / sair para qualquer mercado. 6 maneiras simples de procurar oportunidades de negociação Swing. 28.12.2018 & # 0183; & # 32; Este Sistema permite que você identifique as melhores entradas, Swing Trading (Técnico) - Duração: 14:16. vantageforexanalysis 89.335 visualizações. 14:16. Forex Trading Systems Review Site. Análises de sistemas de negociação de sistemas como Black Dog Forex, sistemas Karl Dittmann, Megadroid e muitos outros sistemas de negociação forex mecânicos e discricionári...