Wednesday 12 July 2017

Forex Backtesting Python


Python Algorithmic Trading Library PyAlgoTrade é uma Python Algorithmic Trading Library com foco em backtesting e suporte para papel-trading e live-trading. Digamos que você tenha uma idéia de uma estratégia comercial e que gostaria de avaliá-la com dados históricos e ver como ela se comporta. PyAlgoTrade permite que você faça isso com um esforço mínimo. Principais características Totalmente documentado. Evento conduzido. Suporta pedidos de Mercado, Limite, Parada e StopLimit. Suporta os arquivos do Yahoo Finance, Google Finance e NinjaTrader CSV. Suporta qualquer tipo de dados de séries temporais no formato CSV, por exemplo, Quandl. Suporte comercial Bitcoin através do Bitstamp. Indicadores técnicos e filtros como SMA, WMA, EMA, RSI, Bandas Bollinger, Expositores Hurst e outros. Métricas de desempenho como a taxa de Sharpe e análise de redução. Manipulação de eventos no Twitter em tempo real. Perfil de eventos. Integração TA-Lib. Muito fácil de dimensionar horizontalmente, ou seja, usando um ou mais computadores para testar uma estratégia. PyAlgoTrade é livre, de código aberto, e está licenciado sob a Licença Apache, Versão 2.0. Testando um Crossover Médio Mínimo em Python com pandas No artigo anterior sobre Ambientes de Backtesting de Pesquisa Em Python Com Pandas, criamos um backtesting baseado em pesquisa orientado a objetos Ambiente e testou-o em uma estratégia de previsão aleatória. Neste artigo, faremos uso da maquinaria que introduzimos para realizar pesquisas sobre uma estratégia real, a saber, o Crossover de média móvel na AAPL. Estratégia de Crossover média móvel A técnica de Crossover de média móvel é uma estratégia de impulso simplista extremamente conhecida. Muitas vezes é considerado o exemplo do Hello World para negociação quantitativa. A estratégia descrita aqui é longa apenas. São criados dois filtros de média móvel simples separados, com diferentes períodos de lookback, de uma série temporal específica. Os sinais para comprar o recurso ocorrem quando a média móvel de lookback mais curta excede a média móvel de lookback mais longa. Se a média mais longa exceder a média mais curta, o ativo é vendido de volta. A estratégia funciona bem quando uma série temporal entra em um período de forte tendência e, em seguida, inverte lentamente a tendência. Para este exemplo, escolhi a Apple, Inc. (AAPL) como a série temporal, com um curto lookback de 100 dias e um longo lookback de 400 dias. Este é o exemplo fornecido pela biblioteca de negociação algorítmica de tirolesa. Assim, se quisermos implementar nosso próprio backtester, precisamos garantir que ele coincida com os resultados na linha aérea, como um meio básico de validação. Implementação Certifique-se de seguir o tutorial anterior aqui. Que descreve como a hierarquia de objeto inicial para o backtester é construída, caso contrário, o código abaixo não funcionará. Para esta implementação particular eu usei as seguintes bibliotecas: A implementação do macross. py requer backtest. py do tutorial anterior. O primeiro passo é importar os módulos e objetos necessários: como no tutorial anterior, vamos sub-classificar a classe básica abstrata Estratégia para produzir MovingAverageCrossStrategy. Que contém todos os detalhes sobre como gerar os sinais quando as médias móveis da AAPL se cruzam. O objeto requer uma janela curta e uma longa janela para operar. Os valores foram configurados para padrões de 100 dias e 400 dias, respectivamente, que são os mesmos parâmetros usados ​​no exemplo principal de tirolesa. As médias móveis são criadas usando a função pandas rollingmean nas barras. O preço de fechamento fechado do estoque AAPL. Uma vez que as médias móveis individuais foram construídas, a série do sinal é gerada definindo a coluna igual a 1,0 quando a média móvel curta é maior do que a média móvel longa, ou 0,0 caso contrário. A partir disso, as ordens de posições podem ser geradas para representar sinais de negociação. O MarketOnClosePortfolio é subclassado do Portfolio. Que é encontrado em backtest. py. É quase idêntico à implementação descrita no tutorial anterior, com a exceção de que os negócios são agora realizados em uma base Close-to-Close, em vez de Open-to-Open. Para obter detalhes sobre como o objeto Portfolio está definido, consulte o tutorial anterior. Eu deixei o código em completo e mantenho esse tutorial autônomo. Agora que as classes MovingAverageCrossStrategy e MarketOnClosePortfolio foram definidas, uma função principal será chamada para amarrar toda a funcionalidade em conjunto. Além disso, o desempenho da estratégia será examinado através de um gráfico da curva de equidade. O objeto DataReader de pandas baixa os preços de ações da AAPL da OHLCV para o período de 1º de janeiro de 1990 a 1º de janeiro de 2002, em que ponto os sinais DataFrame são criados para gerar os sinais de longo tempo. Posteriormente, o portfólio é gerado com uma base de capital inicial de 100.000 USD e os retornos são calculados na curva de patrimônio. O passo final é usar matplotlib para plotar um gráfico de dois dígitos de ambos os preços AAPL, superado com as médias móveis e os sinais de buysell, bem como a curva de equidade com os mesmos sinais de compra. O código de plotagem é tomado (e modificado) do exemplo de implementação de tirolesa. A saída gráfica do código é a seguinte. Eu usei o comando de pasta IPython para colocar isso diretamente no console do IPython, enquanto no Ubuntu, de modo que a saída gráfica permaneceu em exibição. As barras-de-rosa cor-de-rosa representam a compra do estoque, enquanto os bastões negros representam vendê-lo de volta: como pode ser visto, a estratégia perde dinheiro durante o período, com cinco comércios de ida e volta. Isso não é surpreendente, dado o comportamento da AAPL durante o período, que estava em uma ligeira tendência descendente, seguido de um aumento significativo em 1998. O período de lookback dos sinais da média móvel é bastante grande e isso impactou o lucro do comércio final , O que de outra forma pode ter tornado a estratégia rentável. Em artigos subseqüentes, criaremos um meio mais sofisticado de análise de desempenho, bem como descrevendo como otimizar os períodos de lookback dos sinais individuais de média móvel. Um aplicativo para testar estratégias de negociação básicas para o mercado FX, com base em dados históricos. Este código está escrito para o Python 2.7 e não é compatível com o Python 3. Pré-requisitos: Tkinter Para executar o programa, baixe todos os arquivos, mantenha a mesma estrutura de diretório e execute o arquivo inputhandling. py do intérprete do Python. As configurações dos parâmetros são as seguintes: StartEnd Date: as datas que vinculam os dados históricos que serão testados Depósito inicial: o valor da moeda (USD) na conta de corretagem para começar com TimeFrame: a largura de cada barra do histórico Dados que serão testados, esse é o prazo utilizado para cada estratégia. Símbolo: suporte para apenas EURUSD, USDJPY, GBPUSD e USDCHF com dados incluídos. Posição ao comércio: restrinja o backtest para incluir apenas posições longas, posições curtas ou ambas. Critério: a principal estratégia utilizada para simular negócios históricos (Moving Average Crossover e Stochastics included) Alavancagem (margem): o índice de alavancagem máximo permitido Tamanho do lote preferido: um tamanho de lote fixo a ser negociado quando uma posição é aberta. Se a margem livre restrinja o tamanho do lote para ser menor, será ajustado durante o teste. Técnica de Modelagem de Propagação: Spreads Médicos - suponha que os spreads permaneçam constantes ao longo dos dados históricos Técnica de Gerenciamento de Comércio: TPSL - defina um lucro fixo fixo e pare o nível de perda em pips do preço de entrada Price SL - ajuste a perda de parada para ser uma porcentagem de preço e Atualizar cada barra Uma vez que esses parâmetros são inseridos, o programa executará um teste de retorno rudimentar usando barra por análise de barras para determinar qual será o saldo final da conta. Este programa pode ser ampliado adicionando mais estratégias de negociação. Eles devem implementar a mesma interface que as estratégias de média móvel e estocástica. 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.

No comments:

Post a Comment