Análise forex em Python
Se você é um comerciante ou um investidor e gostaria de adquirir um conjunto de habilidades de negociação quantitativa, você está no lugar certo.
O curso de Negociação com o Python fornecerá as melhores ferramentas e práticas para pesquisa de negociação quantitativa, incluindo funções e scripts escritos por especialistas em negociações quantitativas. O curso dá o máximo impacto ao seu tempo e dinheiro investidos. Centra-se na aplicação prática da programação à negociação, em vez da informática teórica. O curso se pagará rapidamente economizando seu tempo no processamento manual de dados. Você passará mais tempo pesquisando sua estratégia e implementando negociações lucrativas.
Visão geral do curso.
Parte 1: Noções básicas Você aprenderá por que o Python é uma ferramenta ideal para negociações quantitativas. Começaremos configurando um ambiente de desenvolvimento e, em seguida, apresentaremos as bibliotecas científicas.
Parte 2: Manipulando os dados Aprenda como obter dados de várias fontes gratuitas como Yahoo Finance, CBOE e outros sites. Leia e escreva vários formatos de dados, incluindo arquivos CSV e Excel.
Parte 3: Pesquisando estratégias Aprenda a calcular P & L e acompanhar as métricas de desempenho como Sharpe e Drawdown. Construa uma estratégia de negociação e otimize seu desempenho. Vários exemplos de estratégias são discutidos nesta parte.
Parte 4: Indo ao vivo! Esta parte é centralizada em torno da API Interactive Brokers. Você aprenderá como obter dados de estoque em tempo real e fazer pedidos ao vivo.
Muito código de exemplo.
O material do curso consiste em 'cadernos' que contêm texto juntamente com código interativo como este. Você poderá aprender interagindo com o código e modificando-o ao seu gosto. Será um ótimo ponto de partida para escrever suas próprias estratégias.
Embora alguns tópicos sejam explicados detalhadamente para ajudá-lo a entender os conceitos subjacentes, na maioria dos casos você não precisará escrever seu próprio código de baixo nível, devido ao suporte de bibliotecas de código aberto existentes:
A biblioteca TradingWithPython combina grande parte da funcionalidade discutida neste curso como uma função pronta para uso e será usada durante todo o curso. Os pandas fornecerão a você todo o poder de levantamento pesado necessário para a compactação de dados.
Todo o código é fornecido sob a licença BSD, permitindo seu uso em aplicações comerciais.
Classificação do curso.
Um piloto do curso foi realizado na primavera de 2013, isso é o que os alunos puderam dizer:
Matej curso bem planejado e bom treinador. Definitivamente vale seu preço e meu tempo Lave Jev obviamente sabia suas coisas. A profundidade da cobertura foi perfeita. Se Jev executar algo assim novamente, eu serei o primeiro a me inscrever. John Phillips Seu curso realmente me fez começar a considerar o python para análise de sistemas de estoque.
Biblioteca de Negociação Algorítmica Python.
O PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python, com foco em backtesting e suporte para negociação de papéis e negociação ao vivo. Digamos que você tenha uma ideia para uma estratégia de negociação e gostaria de avaliá-la com dados históricos e ver como ela se comporta. O PyAlgoTrade permite que você faça isso com o mínimo de esforço.
Principais características.
Totalmente documentado. Evento dirigido. Suporta ordens Market, Limit, Stop e StopLimit. Suporta o Yahoo! Arquivos Finanças, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados de séries temporais no formato CSV, por exemplo, o Quandl. Suporte de negociação Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas de Bollinger, expoente de Hurst e outros. Métricas de desempenho como a taxa de Sharpe e a análise de rebaixamento. Manipulando eventos do Twitter em tempo real. Criador de perfil de eventos. Integração TA-Lib.
Muito fácil de dimensionar horizontalmente, isto é, usando um ou mais computadores para fazer backtest de uma estratégia.
O PyAlgoTrade é gratuito, de código aberto e está licenciado sob a Licença Apache, Versão 2.0.
Negociação com Python.
Sábado, 20 de maio de 2017.
Yahoo está morto, viva o Yahoo!
Nota: os dados fornecidos parecem ser ajustados para divisões, mas não para dividendos.
Sábado, 20 de fevereiro de 2016.
Uma borda estatística simples no SPY.
Ocorreu-me que na maioria das vezes que há muita conversa na mídia sobre a queda do mercado (depois de grandes perdas ao longo de vários dias de intervalo), uma recuperação bastante significativa às vezes acontece.
No passado cometi alguns erros ao fechar minhas posições para reduzir as perdas, apenas para perder uma recuperação nos dias seguintes.
Após um período de perdas consecutivas, muitos comerciantes liquidarão suas posições com medo de perdas ainda maiores. Muito desse comportamento é governado pelo medo, e não pelo risco calculado. Comerciantes mais espertos entram então para as barganhas.
Depois de 3 ou mais perdas consectivas, vá muito. Saia no próximo feche.
Isso não parece nada mau! Observando as taxas de sharpe, a estratégia obtém uma descida de 2,2 versus 0,44 para os B & amp; Na verdade, isso é muito bom! (não fique muito empolgado, pois não contei com custos de comissão, escorregões, etc.).
Embora a estratégia acima não seja algo que eu gostaria de negociar simplesmente por causa do longo período de tempo, a própria teoria provoca pensamentos adicionais que poderiam produzir algo útil. Se o mesmo princípio se aplica aos dados intradiários, uma forma de estratégia de escalpelamento poderia ser construída. No exemplo acima, simplifiquei um pouco o mundo contando apenas o * número * de dias de inatividade, sem prestar atenção à profundidade do rebaixamento. Além disso, a saída de posição é apenas um 'próximo dia de fechamento' básico. Há muito a melhorar, mas a essência na minha opinião é esta:
Segunda-feira, 17 de novembro de 2014.
Negociando o VXX com a previsão de vizinhos mais próximos.
Minha definição desses dois é:
prêmio de volatilidade = VIX-realizadoVol delta (inclinação da estrutura de prazo) = VIX-VXV.
Combinar tanto o prêmio quanto o delta em um modelo foi um desafio para mim, mas eu sempre quis fazer uma aproximação estatística. Em essência, para uma combinação de (delta, premium), gostaria de encontrar todos os valores históricos que estão mais próximos dos valores atuais e fazer uma estimativa dos retornos futuros com base neles. Algumas vezes comecei a escrever meus próprios algoritmos de interpolação de vizinhos mais próximos, mas toda vez tive que desistir. até me deparar com a regressão dos vizinhos mais próximos. Isso me permitiu construir rapidamente um preditor baseado em duas entradas e os resultados são tão bons que estou um pouco preocupado por ter cometido um erro em algum lugar.
criar um conjunto de dados de [delta, premium] - & gt; [Retorno do próximo dia VXX] (na amostra) cria um preditor do vizinho mais próximo com base no conjunto de dados acima da estratégia de negociação (fora da amostra) com as regras: go long if predicted return & gt; 0 vai curto se o retorno previsto & lt; 0.
Nos dois últimos gráficos, a estratégia parece realizar o mesmo dentro e fora da amostra. Relação de Sharpe é em torno de 2,3.
Estou muito satisfeito com os resultados e tenho a sensação de que só estive a arranhar a superfície do que é possível com esta técnica.
Quarta-feira, 16 de julho de 2014.
Módulo de backtesting simples.
Minha busca por uma ferramenta de backtesting ideal (minha definição de 'ideal' é descrita nos posts anteriores de 'dilemas de backtesting') não resultou em algo que eu pudesse usar imediatamente. No entanto, rever as opções disponíveis me ajudou a entender melhor o que eu realmente quero. Das opções que eu olhei, o pybacktest foi o que eu mais gostei por causa de sua simplicidade e velocidade. Depois de passar pelo código-fonte, tenho algumas ideias para simplificar e tornar um pouco mais elegante. A partir daí, foi apenas um pequeno passo para escrever meu próprio backtester, que agora está disponível na biblioteca TradingWithPython.
encontrar entrada e saídas - & gt; calcular pnl e fazer gráficos com backtester - & gt; dados de estratégia pós-processo.
Sábado, 7 de junho de 2014.
Aumentando o desempenho com o Cython.
5k amostras como dados de teste. Aí vem a versão original da minha função drawdown (como agora está implementada na biblioteca TradingWithPython)
Hmm 1,2 segundos não é muito rápido para uma função tão simples. Há algumas coisas aqui que podem ser uma ótima alternativa para o desempenho, como uma lista * highwatermark * que está sendo anexada em cada iteração de loop. Acessar Series por seu índice também deve envolver algum processamento que não seja estritamente necessário. Vamos dar uma olhada no que acontece quando esta função é reescrita para trabalhar com dados numpy.
Bem, isso é muito mais rápido que a função original, aproximadamente 40x de aumento de velocidade. Ainda há muito espaço para melhoria, movendo-se para código compilado com cython Agora eu reescrever a função dd de cima, mas usando dicas de otimização que eu encontrei no tutorial de cython. Observe que esta é minha primeira tentativa de otimização de funções com o Cython.
Uau, esta versão corre em 122 micro segundos, tornando-a dez mil vezes mais rápida que a minha versão original! Devo dizer que estou muito impressionado com o que as equipes Cython e IPython conseguiram! A velocidade em comparação com a facilidade de uso é simplesmente incrível!
P. S. Eu costumava fazer otimizações de código no Matlab usando encapsulamento C e. mex puro, era tudo apenas uma dor na bunda em comparação com isso.
Terça-feira, 27 de maio de 2014.
Dilemas de backtesting: revisão de pyalgotrade.
Primeira impressão: ativamente desenvolvida, documentação muito boa, mais do que feautures suficiente (indicadores de TA, otimizadores etc). Parece bom, então eu continuei com a instalação que também correu bem.
O tutorial parece estar um pouco desatualizado, já que o primeiro comando yahoofinance. get_daily_csv () lança um erro sobre a função desconhecida. Não se preocupe, a documentação está atualizada e acho que a função ausente agora é renomeada para yahoofinance. download_daily_bars (símbolo, ano, csvFile). O problema é que essa função só faz o download de dados por um ano, em vez de tudo, desde aquele ano até a data atual. Tão bem inútil.
Depois que eu mesmo baixei os dados e os salvei no csv, eu precisei ajustar os nomes das colunas, porque aparentemente o pyalgotrade espera que Date, Adj Close, Close, High, Low, Open e Volume estejam no cabeçalho. Isso é tudo um pequeno problema.
Seguindo para o teste de desempenho em uma estratégia de SMA que é fornecida no tutorial. Meu conjunto de dados consiste em 5370 dias de SPY:
Isso é realmente muito bom para um framework baseado em eventos.
Mas tentei pesquisar a documentação para obter a funcionalidade necessária para fazer o backtest de spreads e vários portfólios de ativos e simplesmente não consegui encontrar nenhum. Então eu tentei encontrar uma maneira de alimentar pandas DataFrame como uma entrada para uma estratégia e acontece de não ser possível, o que é novamente uma grande decepção. Eu não o afirmei como um requisito no post anterior, mas agora chego à conclusão de que o suporte a pandas é obrigatório para qualquer framework que trabalhe com dados de séries temporais. Pandas foi uma razão para eu mudar de Matlab para Python e eu nunca mais quero voltar.
Conclusão A pyalgotrade não atende ao meu requisito de flexibilidade. Parece que foi projetado com o TA clássico em mente e negociação de instrumento único. Eu não vejo isso como uma boa ferramenta para estratégias de backtesting que envolvem vários ativos, hedge etc.
Segunda-feira, 26 de maio de 2014.
Dilemas de backtesting.
Seja boa aproximação do mundo real. Este é obviamente o requisito mais importante. Permitir flexibilidade ilimitada: o ferramental não deve ficar no caminho de testar ideias prontas para uso. Tudo o que pode ser quantificado deve ser utilizável. Seja fácil de implementar & amp; manter. É tudo sobre produtividade e poder testar muitas ideias para encontrar uma que funcione. Permitir varreduras de parâmetros, testes de avanço e otimizações. Isso é necessário para investigar o desempenho e a estabilidade da estratégia, dependendo dos parâmetros da estratégia. O problema em satisfazer todos os requisitos acima é que os números 2 e 3 são conflitantes. Não há ferramenta que possa fazer tudo sem o custo de alta complexidade (= baixa manutenção). Normalmente, uma ferramenta point-and-click de terceiros limitará severamente a liberdade de teste com sinais personalizados e portfólios ímpares, enquanto no outro extremo do espectro uma solução diy personalizada precisará de dezenas ou mais horas para ser implementada, com grandes chances de terminando com código desordenado e ilegível. Então, na tentativa de combinar o melhor dos dois mundos, vamos começar de alguma forma no meio: use uma estrutura de backtesting existente e adapte-a ao nosso gosto.
Nos posts a seguir, eu vou ver três candidatos possíveis que encontrei:
Zipline é amplamente conhecida e é o motor por trás do PyPlotTub Quantopian parece ser ativamente desenvolvido e o pybacktest bem documentado é um framework baseado em vetores leve, que pode ser interessante por causa de sua simplicidade e desempenho. Eu vou estar olhando para a adequação dessas ferramentas comparando-as com uma estratégia de negociação hipotética. Se nenhuma dessas opções se encaixa nos meus requisitos, terei que decidir se quero investir na criação do meu próprio framework (pelo menos, olhando as opções disponíveis, eu sei o que não funciona) ou manter o código personalizado para cada uma delas. estratégia.
O primeiro para a avaliação é Zipline.
Minha primeira impressão de Zipline e Quantopian é positiva. O Zipline é apoiado por uma equipe de desenvolvedores e é testado em produção, então a qualidade (bugs) deve ser ótima. Existe uma boa documentação no site e um exemplo de caderno no github.
Para pegar um jeito, baixei o caderno do exame e comecei a brincar com ele. Para minha decepção, rapidamente me deparei com o primeiro exemplo do Algoritmo de Zipline Mais Simples: Compre a Apple. O conjunto de dados tem apenas 3028 dias, mas a execução deste exemplo demorou uma eternidade. Aqui está o que eu medi:
Eu não esperava um desempenho estelar, já que o zipline é um backtester baseado em eventos, mas quase um minuto para 3000 samples é muito ruim. Esse tipo de desempenho seria proibitivo para qualquer tipo de varredura ou otimização. Outro problema surgiria quando se trabalha com conjuntos de dados maiores, como dados intradiários ou vários títulos, que podem conter facilmente centenas de milhares de amostras.
Infelizmente, eu terei que eliminar o Zipline da lista de backtesters utilizáveis, já que ele não atende ao meu requisito # 4 por uma margem de gordura.
No post seguinte, eu vou estar olhando para PyAlgotrade.
Nota: Meu sistema atual é um par de anos, rodando um AMD Athlon II X2 @ 2800MHZ com 3GB de RAM. Com backtesting baseado em vetor, eu estou acostumado a calcular tempos de menos de um segundo para um único backtest e um ou dois minutos para uma varredura de parâmetro. Um teste básico de caminhada com 10 passos e uma varredura de parâmetros para 20x20 resultaria em uma convulsiva 66 horas com tirolesa. Eu não sou tão paciente assim.
Quarta-feira, 15 de janeiro de 2014.
Iniciando o notebook IPython a partir do exlorer de arquivos do Windows.
Segunda-feira, 13 de janeiro de 2014.
ETFs alavancados em 2013, onde está sua decadência agora?
Conhecendo o comportamento alavancado do etf, eu esperaria que o ETF alavancado superasse seu benchmark, então a estratégia que tentaria lucrar com a decadência perderia dinheiro.
Quando normalizamos os preços para 100 $ no início do período de backtest (250 dias), fica aparente que o 2x etf supera 1x etf.
O código fonte completo dos cálculos está disponível para os assinantes do curso Trading With Python. Caderno # 307.
Quinta-feira, 2 de janeiro de 2014.
Colocar uma etiqueta de preço no TWTR.
Preço derivado do valor do usuário.
Atualmente, o TWTR é mais valioso por usuário que é FB ou LNKD. Isso não é lógico, pois ambos os concorrentes têm dados pessoais mais valiosos à sua disposição. O GOOG tem se destacado em extrair receita publicitária de seus usuários. Para isso, tem um conjunto de ofertas altamente diversificadas, desde o mecanismo de pesquisa até o Google+, o Documentos e o Gmail. O TWTR não tem nada parecido, enquanto seu valor por usuário é apenas 35% menor do que o do Google. A TWTR tem um espaço limitado para aumentar sua base de usuários, uma vez que não oferece produtos comparáveis às ofertas FB ou GOOG. O TWTR existe há sete anos e a maioria das pessoas que querem um emprego tem sua chance. O resto simplesmente não se importa. A base de usuários do TWTR é volátil e provavelmente passará para a próxima coisa quente quando estiver disponível.
Preço derivado de ganhos futuros.
Conclusão.
Quinta-feira, 19 de setembro de 2013.
Negociação Com o curso de Python disponível!
Domingo, 18 de agosto de 2013.
Estratégia VXX curta.
Em um mundo ideal, se você aguentar o tempo suficiente, um lucro gerado pela decadência do tempo no rebalanceamento dos futuros e do ETN será garantido, mas, no curto prazo, você terá que passar por alguns rebaixamentos bem pesados. Basta olhar para trás no verão de 2011. Tenho sido infeliz (ou bobo) o suficiente para manter uma posição curta do VXX pouco antes do VIX subir. Eu quase explodi minha conta até então: rebaixamento de 80% em apenas alguns dias, resultando em uma ameaça de chamada de margem pelo meu corretor. Chamada de margem significaria descontar a perda. Esta não é uma situação que eu gostaria de estar de novo. Eu sabia que não seria fácil manter a cabeça fria em todos os momentos, mas experimentar o estresse e a pressão da situação era algo diferente. Felizmente eu sabia como o VXX tende a se comportar, então eu não entrei em pânico, mas mudei de lado para o XIV para evitar uma chamada de margem. A história termina bem, oito meses depois meu portfólio voltou à força e aprendi uma lição muito valiosa.
Dito isso, vamos dar uma olhada em uma estratégia que minimiza alguns dos riscos, encurtando o VXX somente quando for apropriado.
O gráfico acima mostra dados do VIX-VXV desde janeiro de 2010. Os dados do ano passado são mostrados em vermelho.
Eu escolhi usar um ajuste quadrático entre os dois, aproximando VXV = f (VIX). O f (VIX) é plotado como uma linha azul.
Os valores acima da linha representam a situação quando os futuros estão em contango mais forte que o normal. Agora eu defino um indicador delta, que é o desvio do ajuste: delta = VXV-f (VIX).
É evidente que as áreas verdes correspondem a retornos negativos no VXX.
VXX curto quando delta & gt; 0 Capital constante (apostar em cada dia é de 100 $) Sem custos de deslize ou transação.
Obtendo um volume curto do BATS.
Quinta-feira, 15 de agosto de 2013.
Construindo um indicador a partir de dados de volume curtos.
Precisamos de mais informações adicionais sobre o que está contido no preço para adivinhar melhor o que vai acontecer no futuro próximo. Um excelente exemplo de combinação de todos os tipos de informações em uma análise inteligente pode ser encontrado no blogue The Short Side of Long. Produzir esse tipo de análise requer uma grande quantidade de trabalho, para o qual simplesmente não tenho tempo, pois troco apenas meio expediente.
Então eu construí meu próprio painel de mercado que automaticamente coleta informações para mim e as apresenta de uma forma facilmente digerível. Neste post vou mostrar como construir um indicador baseado em dados curtos de volume. Este post ilustrará o processo de coleta e processamento de dados.
A troca de BATS fornece dados de volume diários gratuitamente em seu site.
Dados de volume curto da troca de BATS estão contidos em um arquivo de texto que é compactado. Cada dia tem seu próprio arquivo zip. Depois de baixar e descompactar o arquivo txt, este é o que está dentro (primeiro várias linhas):
Esses dados precisam de algum trabalho antes de poderem ser apresentados de maneira significativa.
O que eu realmente quero não são apenas os dados de um dia, mas uma proporção de volume curto para volume total nos últimos anos, e eu realmente não sinto vontade de baixar mais de 500 arquivos zip e copiá-los no Excel manualmente.
Felizmente, a automação completa é apenas um par de linhas de código de distância:
Primeiro, precisamos criar dinamicamente um URL do qual um arquivo será baixado:
Etapa 5: crie um gráfico:
Domingo, 17 de março de 2013.
Negociação Com curso em Python - atualização de status.
A partir de hoje estarei preparando um novo site e material para o curso, que terá início na segunda semana de abril.
Quinta-feira, 12 de janeiro de 2012.
Reconstruindo o VXX a partir dos dados de futuros do CBOE.
Os scripts abaixo automatizam esse processo. O primeiro, downloadVixFutures. py, obtém os dados do cboe, salva cada arquivo em um diretório de dados e os combina em um único arquivo csv, vix_futures. csv.
O segundo script reconstructVXX. py analisa o vix_futures. csv, calcula os retornos diários do VXX e salva os resultados no reconstructedVXX. csv.
Para verificar os cálculos, comparei meus resultados simulados com os dados do índice SPVXSTR, os dois concordam muito bem, veja os gráficos abaixo.
Código para reconstruir o VXX.
Segunda-feira, 26 de dezembro de 2011.
howto: padrão de observador.
Uma classe ouvinte pode ser de qualquer tipo, aqui eu faço um monte de classes ExampleListener, chamadas Bob, Dave & amp; Charlie. Todos eles têm um método, isto é, é inscrito no Sender. A única coisa especial sobre o método inscrito é que ele deve conter três parâmetros: remetente, evento, mensagem. Remetente é a referência de classe da classe Remetente, portanto, um ouvinte saberia quem enviou a mensagem. Event é um identificador, para o qual eu costumo usar uma string. Opcionalmente, uma mensagem é os dados que são passados para uma função.
Um detalhe interessante é que, se um método listener lançar uma exceção, ele será automaticamente cancelado de outros eventos.
Quarta-feira, 14 de dezembro de 2011.
Plotando com guiqwt.
aquisição de dados: ibpy & amp; tradingWithPython. lib. yahooData - verifique.
contêiner de dados: pandas e amp; sqlite - verifique.
biblioteca de plotagem: matplotlib - ehm. Não.
Mas, como muitas vezes acontece com o Python, alguém, em algum lugar, já escreveu um kit de ferramentas que é perfeito para o trabalho. E parece que guiqwt é apenas isso. Gráficos interativos estão a apenas algumas linhas de código agora, dê uma olhada em um exemplo aqui: Criando diálogo de curva. Para isso eu usei o código de exemplo guiqwt com alguns pequenos ajustes.
. Se eu soubesse como definir datas no eixo x.
Sexta-feira, 4 de novembro de 2011.
Como configurar o ambiente de desenvolvimento do Python.
2. Instale o Tortoise SVN. Este é um utilitário que você precisa para puxar o código-fonte do Google Code.
3. Instale Pandas (biblioteca de séries temporais)
Para obter o código, use o menu de contexto do explorador de janelas 'Svn Checkout' que está disponível após a instalação do Tortoise SVN. Checkout como este (mude o diretório Checkout para o local desejado, mas ele deve terminar com tradingWithPython):
Ok, tudo pronto, agora você pode executar os exemplos de \ cookbok dir.
Sexta-feira, 28 de outubro de 2011.
Os pandas do kung fu resolverão seus problemas de dados.
Algum tempo atrás eu encontrei um conjunto de ferramentas de análise de dados especialmente adequado para trabalhar com dados financeiros. Depois de apenas arranhar a superfície de suas capacidades, eu já me surpreendi com o que ela oferece. O pacote está sendo desenvolvido ativamente por Wes McKinney e sua ambição é criar a mais poderosa e flexível ferramenta de análise / manipulação de dados de código aberto disponível. Bem, acho que ele está bem a caminho!
Aqui está o resultado:
Cara, isso poderia ter me poupado uma tonelada de tempo! Mas isso ainda vai me ajudar no futuro, já que vou usar seu objeto DataFrame como padrão no meu trabalho posterior.
Análise forex em Python
Aprenda a usar o Python com Pandas, Matplotlib e outros módulos para coletar insights de e sobre seus dados.
Controle o hardware com a programação Python e o Raspberry Pi.
Como desenvolver sites com os frameworks Flask ou Django para Python.
Crie seus próprios jogos com a biblioteca PyGame do Python ou confira o Kivy multiplataforma.
Aprenda os fundamentos básicos e intermediários do Python.
Crie software com uma interface de usuário usando Tkinter, PyQt ou Kivy.
Go é uma linguagem de programação que visa ser simples, fácil de trabalhar e capaz de alto desempenho.
Calculando Correlações de Pares de Moedas Forex em Python.
Os comerciantes geralmente calculam a correlação entre diferentes instrumentos, como ações e ETFs, ou pares de moedas Forex. É importante saber se sua carteira é bem diversificada. Instrumentos altamente correlacionados em seu portfólio tenderão a subir e descer juntos, comprometendo sua estratégia de diversificação. Manter um olho para correlações altas (positivas ou negativas) é ainda mais importante para os traders de Forex, uma vez que os pares de moedas frequentemente exibem correlações positivas ou negativas altas devido às condições do mercado ou com drivers de mercado similares. Por exemplo, produtores de commodities como o AUD, NZD, CAD tendem a reagir de forma semelhante às mudanças nos preços das commodities. Duas posições com alta correlação negativa basicamente se anulam e podem não fazer sentido manter.
O coeficiente de correlação é uma medida de correlação. É calculado como um valor de ponto flutuante entre -1,0 e 1,0. Instrumentos com valores de correlação próximos de 1,0 são chamados de "correlacionados positivamente", o que significa que eles tendem a se mover juntos. Símbolos com valores de correlação próximos de -1,0 são chamados de "correlacionados negativamente" # 8221; e geralmente se movem em direções opostas. Valores de correlação próximos de zero geralmente significam que os instrumentos não estão relacionados entre si e estão se movendo independentemente no período de tempo refletido no cálculo de correlação.
Calculando Correlações & # 8211; Exemplo.
Neste post, vamos calcular as correlações em Python. Mais especificamente, calcularemos índices de correlação para um conjunto de pares de moedas por um período de 6 meses com base em barras de preço de 15 minutos do final de janeiro até o final de julho deste ano. Os preços são armazenados em arquivos separados por vírgula (csv) em texto sem formatação. Cada arquivo possui: preços de abertura, alta, baixa e fechamento, além de barSize e colunas de data. O valor da coluna de data, na verdade, contém a data e a hora do tamanho da barra. Cada linha representa dados para bar.
Para este post nós baixamos os preços históricos para nove pares de moedas Forex da Interactive Brokers TWS usando nosso IB Data Downloader, no entanto os dados de preços podem ser obtidos de várias maneiras, o que não é importante para este exemplo. Os arquivos de dados de amostra usados neste exemplo podem ser baixados aqui: historical_data_forex_jul2015. Cada arquivo contém um pouco mais de 12.000 linhas.
No exemplo do programa, usaremos Pandas & # 8211; e biblioteca de análise de dados de alto desempenho de código aberto para Python. O Pandas estende a funcionalidade NumPy e fornece estruturas de dados flexíveis e poderosas semelhantes às encontradas em R. Usaremos a poderosa classe DataFrame da Panda, que é modelada a partir do data. frame do R & B, muito mais poderoso. Você pode pensar em um DataFrame como uma tabela em um banco de dados relacional ou em uma planilha do Excel, onde cada coluna possui um nome e um índice (baseado em 0) e um tipo de dados associado, como string, data, integer, etc & # 8230; Coluna diferente pode ter diferentes tipos de dados.
Nós copiamos todos os nossos arquivos de entrada para o diretório / historical_data:
Como você pode ver, cada arquivo contém o nome do par de moedas Forex em seu nome, como: AUDJPY, AUDUSD, EURUSD, etc & # 8230; Isso é importante porque analisaremos esses nomes de par de moedas para usar como colunas no DataFrame associado.
Todos os arquivos têm o mesmo formato, aqui está uma amostra mostrando as primeiras 10 linhas de dados do AUDJPY .:
A linha 2 acima (primeira linha do arquivo) contém nomes de coluna. Como você pode ver, cada linha representa uma barra de dados de preço de 15 minutos, a partir da meia-noite de 29 de janeiro de 2015.
Calculando Correlação em Python.
Código-fonte Python.
Para executar este programa em Python, você precisa ter certeza de ter requerido pacotes instalados.
Você pode consultar as instruções de instalação de cada pacote (fornecemos links abaixo, mas uma simples pesquisa no Google deve ser suficiente). Abaixo está uma seqüência de comandos que usamos para instalar pacotes em nosso MacOS Yosemite com Python 2.7:
Tentamos documentar esse programa tão bem quanto podemos, mas fique à vontade para postar perguntas na parte inferior desta página ou enviá-las para nós por meio do formulário "Fale conosco" à direita.
Abaixo está a saída da função de impressão final (corr_df. head (len (dataframes))), mostrando os valores do coeficiente de correlação no formato da matriz.
Observe que uma correlação negativa significa que os dois pares de moedas se correlacionam nas direções opostas (por exemplo, quando o preço de um sobe, o outro diminui e vice-versa).
Abaixo está a imagem do mapa de calor gerado pelo código acima. Observe que você precisará instalar pacotes Python matplotlib e seaborn.
Alimento para o pensamento.
Os comerciantes devem prestar atenção aos valores de correlação em vários prazos. Os corretores de dia de curto prazo geralmente são aconselhados a monitorar os gráficos de prazos mais longos para estarem cientes da direção da tendência maior. Da mesma forma, ao analisar as correlações entre os pares de moedas, os corretores devem verificar não apenas as correlações para o período de geração de sinal, mas também um ou dois prazos mais longos, pois, assim como as tendências de preço, as correlações de longo prazo são muito mais significativas.
Em conclusão, gostaríamos de agradecer o maravilhoso livro que referenciamos abaixo & # 8211; & # 8220; Python para análise de dados & # 8221 ;. É uma ótima fonte de informações detalhadas sobre pandas e bibliotecas NumPy Python. Economizamos inúmeras horas ao codificar scripts em Python, mantendo este livro em nossa mesa.
2 comentários sobre & ldquo; Calculando Correlações de Pares de Moedas Forex em Python & rdquo;
Obrigado pelo conselho perspicaz relacionado a altas correlações pelo caminho!
Só queria salientar que este é um ótimo artigo. Eu sou novo em python, comecei a aprender há apenas alguns meses e páginas como essa realmente ajudam a tornar a curva de aprendizado muito mais fácil. Obrigado pelos comentários detalhados em seu código, ótimo trabalho!
Deixe uma resposta Cancelar resposta.
IB Data Downloader.
A versão 3.3 do IB Data Downloader já está disponível! Faça o download de dados históricos de Interactive Brokers. Ações, Futuros, ETFs, Índices, Forex, Opções, FOPs. Agora suporta download de dados históricos de opções! Funciona no Windows, MacOS, Linux. Lida automaticamente com violações de andamento da IB API, sem restrições de duração devido a limitações de ritmo! Suporta dados históricos para contratos futuros vencidos.
IB Excel Trader.
IB Excel Trader versão 1.6 já está disponível! Ações de comércio, ETFs, futuros e Forex diretamente do Excel. Implemente regras de negociação personalizadas usando fórmulas de planilha ou VBA. Programar regras de entrada para pedidos de saída únicos ou de colchetes. Mercado, Stop, Limit, Stop-Limit, bem como pedidos de algoritmos complexos são suportados. Folha de registro de pedidos (nova!) Contém uma lista detalhada de cada alteração de status do pedido em uma tabela do Excel filtrável. Use nosso Serviço de Personalização para estender o IB Excel Trader e contratar nossos programadores para desenvolver suas estratégias de negociação personalizadas.
A Interactive Brokers (IB) é uma fornecedora de baixo custo de serviços de execução e compensação de transações para indivíduos, consultores, grupos de negociação de proponentes, corretores e fundos de hedge. A principal tecnologia da IB fornece acesso direto a ações, opções, futuros, forex, títulos e fundos em mais de 100 mercados em todo o mundo a partir de uma única conta da IB Universal.
Membro NYSE, FINRA, SIPC. Visite interactivebrokers para mais informações.
Postagens recentes.
Contate-Nos!
Mensagem enviada.
Obrigado por entrar em contato com a Trading Geeks. Nós responderemos à sua mensagem em breve. Nesse meio tempo - se você tiver alguma dúvida adicional - por favor, não hesite em nos enviar um email para: contacts @ tradinggeeks.
Desculpe, houve um problema e sua mensagem não foi enviada.
Por favor, insira seus dados de contato e uma pequena mensagem abaixo e responderemos à sua mensagem em breve.
Biblioteca de Negociação Algorítmica Python.
O PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python, com foco em backtesting e suporte para negociação de papéis e negociação ao vivo. Digamos que você tenha uma ideia para uma estratégia de negociação e gostaria de avaliá-la com dados históricos e ver como ela se comporta. O PyAlgoTrade permite que você faça isso com o mínimo de esforço.
Principais características.
Totalmente documentado. Evento dirigido. Suporta ordens Market, Limit, Stop e StopLimit. Suporta o Yahoo! Arquivos Finanças, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados de séries temporais no formato CSV, por exemplo, o Quandl. Suporte de negociação Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas de Bollinger, expoente de Hurst e outros. Métricas de desempenho como a taxa de Sharpe e a análise de rebaixamento. Manipulando eventos do Twitter em tempo real. Criador de perfil de eventos. Integração TA-Lib.
Muito fácil de dimensionar horizontalmente, isto é, usando um ou mais computadores para fazer backtest de uma estratégia.
O PyAlgoTrade é gratuito, de código aberto e está licenciado sob a Licença Apache, Versão 2.0.
Aprenda a usar o Python com Pandas, Matplotlib e outros módulos para coletar insights de e sobre seus dados.
Controle o hardware com a programação Python e o Raspberry Pi.
Como desenvolver sites com os frameworks Flask ou Django para Python.
Crie seus próprios jogos com a biblioteca PyGame do Python ou confira o Kivy multiplataforma.
Aprenda os fundamentos básicos e intermediários do Python.
Crie software com uma interface de usuário usando Tkinter, PyQt ou Kivy.
Go é uma linguagem de programação que visa ser simples, fácil de trabalhar e capaz de alto desempenho.
Calculando Correlações de Pares de Moedas Forex em Python.
Os comerciantes geralmente calculam a correlação entre diferentes instrumentos, como ações e ETFs, ou pares de moedas Forex. É importante saber se sua carteira é bem diversificada. Instrumentos altamente correlacionados em seu portfólio tenderão a subir e descer juntos, comprometendo sua estratégia de diversificação. Manter um olho para correlações altas (positivas ou negativas) é ainda mais importante para os traders de Forex, uma vez que os pares de moedas frequentemente exibem correlações positivas ou negativas altas devido às condições do mercado ou com drivers de mercado similares. Por exemplo, produtores de commodities como o AUD, NZD, CAD tendem a reagir de forma semelhante às mudanças nos preços das commodities. Duas posições com alta correlação negativa basicamente se anulam e podem não fazer sentido manter.
O coeficiente de correlação é uma medida de correlação. É calculado como um valor de ponto flutuante entre -1,0 e 1,0. Instrumentos com valores de correlação próximos de 1,0 são chamados de "correlacionados positivamente", o que significa que eles tendem a se mover juntos. Símbolos com valores de correlação próximos de -1,0 são chamados de "correlacionados negativamente" # 8221; e geralmente se movem em direções opostas. Valores de correlação próximos de zero geralmente significam que os instrumentos não estão relacionados entre si e estão se movendo independentemente no período de tempo refletido no cálculo de correlação.
Calculando Correlações & # 8211; Exemplo.
Neste post, vamos calcular as correlações em Python. Mais especificamente, calcularemos índices de correlação para um conjunto de pares de moedas por um período de 6 meses com base em barras de preço de 15 minutos do final de janeiro até o final de julho deste ano. Os preços são armazenados em arquivos separados por vírgula (csv) em texto sem formatação. Cada arquivo possui: preços de abertura, alta, baixa e fechamento, além de barSize e colunas de data. O valor da coluna de data, na verdade, contém a data e a hora do tamanho da barra. Cada linha representa dados para bar.
Para este post nós baixamos os preços históricos para nove pares de moedas Forex da Interactive Brokers TWS usando nosso IB Data Downloader, no entanto os dados de preços podem ser obtidos de várias maneiras, o que não é importante para este exemplo. Os arquivos de dados de amostra usados neste exemplo podem ser baixados aqui: historical_data_forex_jul2015. Cada arquivo contém um pouco mais de 12.000 linhas.
No exemplo do programa, usaremos Pandas & # 8211; e biblioteca de análise de dados de alto desempenho de código aberto para Python. O Pandas estende a funcionalidade NumPy e fornece estruturas de dados flexíveis e poderosas semelhantes às encontradas em R. Usaremos a poderosa classe DataFrame da Panda, que é modelada a partir do data. frame do R & B, muito mais poderoso. Você pode pensar em um DataFrame como uma tabela em um banco de dados relacional ou em uma planilha do Excel, onde cada coluna possui um nome e um índice (baseado em 0) e um tipo de dados associado, como string, data, integer, etc & # 8230; Coluna diferente pode ter diferentes tipos de dados.
Nós copiamos todos os nossos arquivos de entrada para o diretório / historical_data:
Como você pode ver, cada arquivo contém o nome do par de moedas Forex em seu nome, como: AUDJPY, AUDUSD, EURUSD, etc & # 8230; Isso é importante porque analisaremos esses nomes de par de moedas para usar como colunas no DataFrame associado.
Todos os arquivos têm o mesmo formato, aqui está uma amostra mostrando as primeiras 10 linhas de dados do AUDJPY .:
A linha 2 acima (primeira linha do arquivo) contém nomes de coluna. Como você pode ver, cada linha representa uma barra de dados de preço de 15 minutos, a partir da meia-noite de 29 de janeiro de 2015.
Calculando Correlação em Python.
Código-fonte Python.
Para executar este programa em Python, você precisa ter certeza de ter requerido pacotes instalados.
Você pode consultar as instruções de instalação de cada pacote (fornecemos links abaixo, mas uma simples pesquisa no Google deve ser suficiente). Abaixo está uma seqüência de comandos que usamos para instalar pacotes em nosso MacOS Yosemite com Python 2.7:
Tentamos documentar esse programa tão bem quanto podemos, mas fique à vontade para postar perguntas na parte inferior desta página ou enviá-las para nós por meio do formulário "Fale conosco" à direita.
Abaixo está a saída da função de impressão final (corr_df. head (len (dataframes))), mostrando os valores do coeficiente de correlação no formato da matriz.
Observe que uma correlação negativa significa que os dois pares de moedas se correlacionam nas direções opostas (por exemplo, quando o preço de um sobe, o outro diminui e vice-versa).
Abaixo está a imagem do mapa de calor gerado pelo código acima. Observe que você precisará instalar pacotes Python matplotlib e seaborn.
Alimento para o pensamento.
Os comerciantes devem prestar atenção aos valores de correlação em vários prazos. Os corretores de dia de curto prazo geralmente são aconselhados a monitorar os gráficos de prazos mais longos para estarem cientes da direção da tendência maior. Da mesma forma, ao analisar as correlações entre os pares de moedas, os corretores devem verificar não apenas as correlações para o período de geração de sinal, mas também um ou dois prazos mais longos, pois, assim como as tendências de preço, as correlações de longo prazo são muito mais significativas.
Em conclusão, gostaríamos de agradecer o maravilhoso livro que referenciamos abaixo & # 8211; & # 8220; Python para análise de dados & # 8221 ;. É uma ótima fonte de informações detalhadas sobre pandas e bibliotecas NumPy Python. Economizamos inúmeras horas ao codificar scripts em Python, mantendo este livro em nossa mesa.
2 comentários sobre & ldquo; Calculando Correlações de Pares de Moedas Forex em Python & rdquo;
Obrigado pelo conselho perspicaz relacionado a altas correlações pelo caminho!
Só queria salientar que este é um ótimo artigo. Eu sou novo em python, comecei a aprender há apenas alguns meses e páginas como essa realmente ajudam a tornar a curva de aprendizado muito mais fácil. Obrigado pelos comentários detalhados em seu código, ótimo trabalho!
Deixe uma resposta Cancelar resposta.
IB Data Downloader.
A versão 3.3 do IB Data Downloader já está disponível! Faça o download de dados históricos de Interactive Brokers. Ações, Futuros, ETFs, Índices, Forex, Opções, FOPs. Agora suporta download de dados históricos de opções! Funciona no Windows, MacOS, Linux. Lida automaticamente com violações de andamento da IB API, sem restrições de duração devido a limitações de ritmo! Suporta dados históricos para contratos futuros vencidos.
IB Excel Trader.
IB Excel Trader versão 1.6 já está disponível! Ações de comércio, ETFs, futuros e Forex diretamente do Excel. Implemente regras de negociação personalizadas usando fórmulas de planilha ou VBA. Programar regras de entrada para pedidos de saída únicos ou de colchetes. Mercado, Stop, Limit, Stop-Limit, bem como pedidos de algoritmos complexos são suportados. Folha de registro de pedidos (nova!) Contém uma lista detalhada de cada alteração de status do pedido em uma tabela do Excel filtrável. Use nosso Serviço de Personalização para estender o IB Excel Trader e contratar nossos programadores para desenvolver suas estratégias de negociação personalizadas.
A Interactive Brokers (IB) é uma fornecedora de baixo custo de serviços de execução e compensação de transações para indivíduos, consultores, grupos de negociação de proponentes, corretores e fundos de hedge. A principal tecnologia da IB fornece acesso direto a ações, opções, futuros, forex, títulos e fundos em mais de 100 mercados em todo o mundo a partir de uma única conta da IB Universal.
Membro NYSE, FINRA, SIPC. Visite interactivebrokers para mais informações.
Postagens recentes.
Contate-Nos!
Mensagem enviada.
Obrigado por entrar em contato com a Trading Geeks. Nós responderemos à sua mensagem em breve. Nesse meio tempo - se você tiver alguma dúvida adicional - por favor, não hesite em nos enviar um email para: contacts @ tradinggeeks.
Desculpe, houve um problema e sua mensagem não foi enviada.
Por favor, insira seus dados de contato e uma pequena mensagem abaixo e responderemos à sua mensagem em breve.
Biblioteca de Negociação Algorítmica Python.
O PyAlgoTrade é uma Biblioteca de Negociação Algorítmica Python, com foco em backtesting e suporte para negociação de papéis e negociação ao vivo. Digamos que você tenha uma ideia para uma estratégia de negociação e gostaria de avaliá-la com dados históricos e ver como ela se comporta. O PyAlgoTrade permite que você faça isso com o mínimo de esforço.
Principais características.
Totalmente documentado. Evento dirigido. Suporta ordens Market, Limit, Stop e StopLimit. Suporta o Yahoo! Arquivos Finanças, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados de séries temporais no formato CSV, por exemplo, o Quandl. Suporte de negociação Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas de Bollinger, expoente de Hurst e outros. Métricas de desempenho como a taxa de Sharpe e a análise de rebaixamento. Manipulando eventos do Twitter em tempo real. Criador de perfil de eventos. Integração TA-Lib.
Muito fácil de dimensionar horizontalmente, isto é, usando um ou mais computadores para fazer backtest de uma estratégia.
O PyAlgoTrade é gratuito, de código aberto e está licenciado sob a Licença Apache, Versão 2.0.
No comments:
Post a Comment