Wednesday 20 December 2017

Backtesting trading strategies matlab


Workshops Dr. Chan atualmente oferece o curso on-line realizado em tempo real através do Adobe Connect. Este workshop introduz o uso de técnicas de inteligência artificial para identificar variáveis ​​preditivas úteis e regras de negociação para a previsão de retornos. Ele faz uso extensivo de Matlab s Estatística e Máquina Learning Toolbox, bem como a Rede Neural Toolbox. As licenças de teste MATLAB gratuitas serão organizadas para exercícios extensivos em sala de aula. Nenhum conhecimento prévio de MATLAB é necessário como um tutorial pré-gravado sobre programação em MATLAB será incluído, mas alguma experiência com a programação é necessária. Número máximo de participantes: 12. Total de horas: 6. Taxa: 900. Datas e horários: 16 de julho, 23. Sábados. 8: 00-11: 00 am EDT. Inscrição: ernest epchan. O plano do curso está disponível para download aqui. O curso online pré-gravado já está disponível. Isso consiste em sessões gravadas do Adobe Connect. O foco está em descobrir e evitar várias armadilhas durante o processo de backtesting que podem degradar a previsão de desempenho. Exercícios ilustrativos são extraídos de uma estratégia de futuros e uma estratégia de negociação de carteira de ações usando MATLAB. As licenças de teste MATLAB gratuitas serão organizadas para exercícios extensivos em sala de aula. Nenhum conhecimento prévio de MATLAB é necessário, mas alguma experiência com programação é necessária. O requisito de matemática é estatísticas básicas de nível universitário. Total de horas: 7 horas de sessão gravada. Taxa: 500. Inscrição: ernest epchan. O plano do curso está disponível para download aqui. Ernie também conduz três diferentes hands-on em-pessoa workshops em Londres: Momentum Strategies. Arbitragem estatística. E Inteligência Artificial para Comerciantes. O curso de arbitragem estatística é principalmente sobre estratégias de reversão de média. Estas oficinas são organizadas pela revista Technical Analyst e qualificam-se para os créditos do CFA Institute. Clique nos links acima para ver os contornos do curso e os detalhes do registro. Louvor pelos nossos workshops: Andrew B. K. W. Fung, CQF, Fundador do Quants Investment Cedric Yau Avaliação do aluno anônimo Os comentários estão fechados. - suporte a fluxos de dados de baixa latência múltiplos (velocidades de processamento em milhões de mensagens por segundo em terabytes de dados) - gestão de dados de classe institucional / backtesting / solução de implantação de estratégia: - opções, opções, futuros, moedas, C e backtesting e otimização baseados da estratégia - a execução múltipla dos corretores suportou, negociando sinais convertidos em ordens de FIX QuantFACTORY - Solução de solução de backtesting / strategy da gerência de dados / backtesting da instituição-classe: - QuantDEVELOPER - estrutura e IDE para estratégias negociando desenvolvimento debugging backtesting e optimization, Disponível como um plug-in do Visual Studio - QuantDATACENTER - permite gerenciar um data warehouse histórico e capturar dados de mercado em tempo real ou de baixa latência de provedores e intercâmbios - QuantENGINE - permite implantar e executar estratégias pré-compiladas - multi-asset, Dados de baixa latência de período, múltiplos corretores suportados Gestão de dados de classe institucional / backtesting / solução de implantação de estratégia: - OpenQuant - C e VisualBasic sistema de nível de portfólio backtesting e negociação, multi-asset, testes de nível intraday, otimização, WFA etc. Feeds suportados - QuantTrader - ambiente de negociação de produção - QuantBase - gerenciamento de dados centralizado - QuantRouter - roteamento de dados e pedidos Solução de multi-asset, múltiplos feeds de dados suportados, banco de dados suporta qualquer tipo de RDBMS Fornecendo uma interface JDBC, por exemplo Oracle, Microsoft SQL Server, Sybase, MySQL etc - os clientes podem usar IDE para script sua estratégia em Java, Ruby ou Python, ou eles podem usar sua própria estratégia IDE - Gestão de dados de classe / backtesting / solução de implantação de estratégia: - multi-asset solução (forex, opções, futuros, ações, ETF s, commodities, instrumentos sintéticos e spreads derivados personalizados) (IB, JPMorgan, FXCM, etc.) Plataforma de software dedicada integrada com os dados da Tradestation para backtesting e auto-trading: - dados diários intraday (ações da US para 43 (Análise técnica), suporte para linguagem de programação EasyLanguage - suporte a ETFs de ações norte-americanas, futuros, índices norte-americanos, ações alemãs, índices alemães, sem forex para clientes de corretagem da Tradestation - 249,95 Mensal para não profissionais (plataforma de software Tradestation somente, sem corretagem) - 299,95 mensais para profissionais (plataforma de software Tradestation somente, sem corretagem) Plataforma dedicada de software para backtesting e auto-trading: - suporte diário / estratégias intraday, testes e otimização de nível de portfólio (Análise técnica) - link direto para eSignal, Interactive Brokers, IQFeed, myTrack, FastTrack, QP2, TC2000, Qualquer feed compatível com DDE, MS, txtfiles e mais (Yahoo Finance. ) - taxa única 279 para a edição Standard ou 339 para a edição Professional Plataforma dedicada de software para backtesting e auto-trading: - backtesting e negociação do sistema de nível de portfólio, multi-asset, testes de nível intraday, otimização, Auto-trading em linguagem de script Perl com todas as funções subjacentes escritas em C nativo, preparado para servidor de co-localização - nativo FXCM e Interactive Brokers apoio - suporte gratuito FXCM, 100 por mês para a plataforma IB, contato Seertrading vendas para outras opções Plataforma de software dedicado Para backtesting e auto-trading: - suporte a estratégias diárias / intraday, testes de nível de carteira e otimização - melhor para backtesting baseados em preços de sinais (análise técnica), C scripting - extensões de software suportado - manipulação de feeds de dados, execução da estratégia, etc 799 por licença , 150 taxa anual após a plataforma de software dedicado para backtesting, otimização, atribuição de desempenho e análise: - Axioma ou dados de terceiros - análise fatorial, modelagem de risco, análise do ciclo de mercado Plataforma dedicada de software para backtesting e auto-trading: - melhor para backtesting baseado em preço Turtle Edition - motor de backtesting, gráficos, relatórios, testes de EoD - edição profissional - editor de sistema mais, análise dianteira, estratégias intraday, teste multi-threaded etc. - Edição Pro Plus - mais gráficos de superfície 3D, scripts, etc. - Edição de Construtor - IB API, depurador etc. - Edição Turtle 990 - Edição Profissional 1.990 - Edição Pro Plus 2.990 - Edição Construtora 3.990 Plataforma de software dedicada para backtesting e auto-trading : - suporte a estratégias diárias / intraday, testes de nível de carteira e otimização, gráficos, visualização, relatórios personalizados, etc - melhor para backtesting baseados em preços sinais (análise técnica) - link direto para Interactive Brokers, MB Trading, TD Ameritrade, FXCM e outros - Dados de arquivos de texto, eSignal, finanças de Google, finança de Yahoo, IQFeed e outro - funcionalidade básica (funcionalidade de EoD) - livre - funcionalidade avançada - aluguer de 50 / mês ou 995 licença de vida Plataforma de software dedicada para backtesting e auto-negociação: Para backtesting baseados em preços de sinais (análise técnica), apoiando estratégias diárias / intraday, testes de nível de carteira e otimização, gráficos, visualização, relatórios personalizados - suporta C e Visual Basic - link direto para Interactive Brokers, IQFeed, txtfiles e muito mais. ) - licença perpétua - 499 - leasing 50 por mês Plataforma de software dedicada para backtesting e auto-trading: - suporte a estratégias diárias / intraday, testes e otimização de nível de portfólio, gráficos, relatórios personalizados - sinais técnicos e também fundamentais (Suporte a provedores de dados múltiplos e corretores) Plataforma dedicada de software para backtesting e auto-trading: - suporte a estratégias diárias / intraday, testes de nível de portfólio e otimização - melhor para backtesting Preços baseados em sinais (análise técnica) - compilação de dados para ações, futuros e forex (ações diárias dos EUA a partir de 1990, futuros diários de 31 anos, forex a partir de 1983, etc.) - preços de 45 / mês para 295 / mês Disponibilidade de dados) Plataforma de software dedicada para backtesting e auto-trading: - usa a linguagem MQL4, usada principalmente para negociar no mercado forex - suporta múltiplos corretores de forex e feeds de dados - suporta gerenciamento de múltiplas contas Plataforma de software dedicada para backtesting e auto-trading: (Análise técnica), suporte à linguagem de programação EasyLanguage - suporte a vários feeds de dados (Bloomberg, Thomson Reuters, CSI, CQG, eSignal, etc.), suporte direto para Multicharts Pro 9,900 (feed de dados da Bloomberg Thomson Reuters, etc.) Ferramenta de backtesting baseada na Web para testar estratégias de escolha de ações: - ETFs de ações dos EUA (diariamente) - ponto - Em tempo de dados fundamentais desde 1999 - longo / curto estratégias, preços / fundamentais impulsionado sinais - Designer - 139 / mês - Manager - 199 / month - funcionalidade completa Backtesting ferramenta baseada na Web para testar stock picking estratégias: - US estoques (diariamente) Dados fundamentais desde 1988 - preços / sinais fundamentais impulsionados - Estrategista - 995 / ano (dados desde 2000, 10 portfólios salvos) - Gerente - 1.995 / ano - (funcionalidade completa, dados desde 1988, 50 portfólios salvos) Web (Daily / intraday), desde 1998, dados de QuantQuote - dados do forex de FXCM - suportando Trader Interactive Brokers para a troca viva a correia fotorreceptora baseou a ferramenta backtesting: - Os estoques dos EU e os preços de ETFs (diário / intraday) Desde 2002 - dados fundamentais da Morningstar (mais de 600 métricas) - suporte a Interactive Brokers para negociação ao vivo Ferramentas de backtesting baseadas na Web: - simples de usar, estratégias de alocação de ativos, dados desde 1992 - impulso das séries temporais e estratégias de média móvel nos ETFs - Simple Momentum and Estratégias de escolha de ações do Simple Value Ferramenta de backtesting baseada na Web: - até 25 anos de dados para 49 Futures e S P500 stocks - caixa de ferramentas em Python e Matlab - Quantiacs hospeda competições de negociação algorítmica com investimentos variando de 500k a 1 milhão Estratégias de alocação de ativos e estratégias de alocação de ativos: - múltiplos fatores de capital com comprovada alfa sobre benchmarks de mercado, múltiplos universos de investimento, filtros de gerenciamento de risco - estratégias de alocação de ativos backtests, mistura de alocação de ativos e picking de fatores em um portfólio - MATLAB - Linguagem de alto nível e ambiente interativo para computação estatística e gráficos: - computação paralela e GPU, backtesting e otimização, amplas possibilidades de integração, etc. - preço sob consulta aqui Ambiente de software livre para computação estatística e gráficos, muitos quants preferem usá-lo para sua arquitetura aberta excepcional e flexibilidade: - facilidade de tratamento e armazenamento de dados eficazes, instalações gráficas para análise de dados, facilmente estendida via pacotes - extensões recomendadas - quantstrat, Rmetrics, quantmod, quantlib, PerformanceAnalytics, TTR, portfolio, portfolioSim, backtest, etc. Linguagem de programação open source livre, arquitetura aberta, flexível, facilmente estendida através de pacotes: - extensões recomendadas - pandas (Python Data Analysis Library BacktestingXL Pro é um add-in para construir e testar as suas estratégias de negociação no Microsoft Excel 2010 e 2017: - os usuários podem usar o VBA para construir estratégias para o BacktestingXL Pro, o conhecimento do VBA, o Python Algorithmic Trading Library, o Zipline, o ultrafinance etc. É opcional, os usuários podem construir regras de negociação em uma planilha usando padrão pré-fabricados backtesting códigos - suporta pirâmide, limitação de posição curto / longo, comissão de cálculo, controle de patrimônio, fora de dinheiro de controle, Relatórios de risco - 74,95 para BacktestingXL Pro Ferramenta de backtesting baseada na Web: - simples de usar, ferramenta de backtesting baseada na web de nível básico para testar a força relativa e estratégias de média móvel em ETFs - vários tipos de estratégias de backtesting funcionalidade completa gratuita 34,99 mensal FactorWave é simples usar a ferramenta backtesting baseada na correia fotorreceptora para o investimento do fator: - permite que o usuário misture vários fatores do ETF / options / futuros / equidade com alfa comprovado sobre tampões do tampão do mercado - livre - ETF / Stock Screener com 5 fatores - 149 / mo Free free web based back-testing ferramenta para testar estratégias de picking de ações: - ações dos EUA, os dados da ValueLine de 1986- Backtesting Ambientes em Python com Pandas Por BackStage, em 16 de janeiro de 2017 Backtesting é o processo de pesquisa de aplicar uma idéia de estratégia de negociação a dados históricos, a fim de verificar o desempenho passado . Em particular, um backtester não garante o desempenho futuro da estratégia. No entanto, são um componente essencial do processo de pesquisa de pipeline estratégico, permitindo que as estratégias sejam filtradas antes de serem colocadas em produção. Neste artigo (e aqueles que o seguem) um sistema de backtesting orientado a objetos básico escrito em Python será descrito. Este sistema inicial será principalmente um auxiliar de ensino, usado para demonstrar os diferentes componentes de um sistema de backtesting. À medida que avançamos nos artigos, será adicionada uma funcionalidade mais sofisticada. Visão geral do Backtesting O processo de criação de um robusto sistema de backtesting é extremamente difícil. Efetivamente simular todos os componentes que afetam o desempenho de um sistema de negociação algorítmica é um desafio. Fraca granularidade de dados, opacidade do roteamento de ordens em um corretor, latência de pedidos e uma miríade de outros fatores conspiram para alterar o verdadeiro desempenho de uma estratégia versus o desempenho backtestado. Ao desenvolver um sistema de backtesting é tentador querer constantemente reescrevê-lo a partir do zero como mais fatores são encontrados para ser crucial na avaliação de desempenho. Nenhum sistema de backtesting é sempre terminado e um julgamento deve ser feito em um ponto durante o desenvolvimento que fatores suficientes foram capturados pelo sistema. Com estas preocupações em mente o backtester apresentado aqui será um pouco simplista. À medida que exploramos outras questões (otimização de portfólio, gerenciamento de risco, manipulação de custos de transação), o backtester se tornará mais robusto. Tipos de sistemas de Backtesting Existem geralmente dois tipos de backtesting sistema que será de interesse. O primeiro é baseado na pesquisa. Usado principalmente nos estágios iniciais, onde muitas estratégias serão testadas para selecionar aqueles para avaliação mais séria. Estes sistemas de backtesting de pesquisa são muitas vezes escritos em Python, R ou MatLab como velocidade de desenvolvimento é mais importante do que a velocidade de execução nesta fase. O segundo tipo de sistema de backtesting é baseado em eventos. Ou seja, realiza o processo de backtesting em um loop de execução semelhante (se não idêntico) ao próprio sistema de execução de negociação. Ele modelará realisticamente os dados de mercado e o processo de execução de ordens, a fim de proporcionar uma avaliação mais rigorosa de uma estratégia. Os últimos sistemas são frequentemente escritos em uma linguagem de alto desempenho, como C ou Java, onde a velocidade de execução é essencial. Para estratégias de baixa freqüência (embora ainda intraday), Python é mais do que suficiente para ser usado neste contexto. Object-Oriented Research Backtester em Python O projeto e a implementação de um ambiente de backtesting baseado em pesquisa orientada a objetos serão agora discutidos. A orientação do objeto foi escolhida como o paradigma de design de software pelas seguintes razões: As interfaces de cada componente podem ser especificadas antecipadamente, enquanto as internas de cada componente podem ser modificadas (ou substituídas) à medida que o projeto progride. Para testar eficazmente como cada componente se comporta (através de testes de unidade) Ao estender o sistema, novos componentes podem ser construídos sobre ou além de outros, seja por herança ou composição. Nesta fase, o backtester é projetado para facilidade de implementação e um grau razoável de flexibilidade , À custa da verdadeira precisão do mercado. Em particular, este backtestter só será capaz de lidar com estratégias agindo em um único instrumento. Mais tarde o backtester será modificado para lidar com conjuntos de instrumentos. Para o backtestter inicial, são necessários os seguintes componentes: Estratégia - Uma classe Strategy recebe um Pandas DataFrame de barras. I. e. uma lista de pontos de dados Open-High-Low-Close-Volume (OHLCV) a uma frequência particular. A Estratégia produzirá uma lista de sinais. Que consistem numa marca de tempo e num elemento do conjunto indicando um sinal longo, de espera ou curto, respectivamente. Portfolio - A maioria do trabalho de backtesting ocorrerá na classe Portfolio. Ele receberá um conjunto de sinais (conforme descrito acima) e criará uma série de posições, alocadas contra um componente em dinheiro. O trabalho do objeto Portfolio é produzir uma curva de equivalência patrimonial. Incorporar os custos de transação básicos e acompanhar os negócios. Desempenho - O objeto Performance obtém um portfólio e produz um conjunto de estatísticas sobre seu desempenho. Em particular, produzirá características de risco / retorno (Sharpe, Sortino e Ratios de Informação), métricas de lucro / lucro e informações de levantamento. O que está faltando Como pode ser visto, este backtest não inclui qualquer referência ao gerenciamento de portfólio / risco, processamento de execução (ou seja, sem ordens de limite) nem fornecerá sofisticada modelagem de custos de transação. Isto não é muito problema neste estágio. Isso nos permite familiarizar-nos com o processo de criação de um backtester orientado a objetos e as bibliotecas Pandas / NumPy. Com o tempo ele será melhorado. Implementação Vamos agora descrever as implementações para cada objeto. Estratégia O objeto de Estratégia deve ser bastante genérico nesta fase, já que será o manejo das estratégias de previsão, reversão média, momentum e volatilidade. As estratégias aqui consideradas serão sempre baseadas em séries temporais, isto é, orientadas por preço. Um requisito prévio para este backtester é que as classes de Estratégia derivadas aceitarão uma lista de barras (OHLCV) como entrada, em vez de carrapatos (preços de trade-by-trade) ou dados de lista de pedidos. Assim, a granularidade mais fina que está sendo considerada aqui será barras de 1 segundo. A classe Estratégia também produzirá sempre recomendações de sinal. Isso significa que ele irá aconselhar uma instância Portfolio no sentido de ir longo / curto ou segurando uma posição. Essa flexibilidade nos permitirá criar vários conselheiros de Estratégia que forneçam um conjunto de sinais que uma classe de portfólio mais avançada pode aceitar para determinar as posições reais que estão sendo inseridas. A interface das classes será aplicada utilizando uma metodologia de classe base abstrata. Uma classe base abstrata é um objeto que não pode ser instanciado e, portanto, somente as classes derivadas podem ser criadas. O código Python é dado abaixo em um arquivo chamado backtest. py. A classe Estratégia exige que qualquer subclasse implemente o método de geração de sinais. Para evitar que a classe Estratégia seja instanciada diretamente (uma vez que é abstrata) é necessário usar os objetos ABCMeta e abstractmethod do módulo abc. Definimos uma propriedade da classe, chamada metaclasse para ser igual a ABCMeta e, em seguida, decorar o método de geração de sinais com o decorador abstractmethod. Embora a interface acima seja direta, ela se tornará mais complicada quando essa classe for herdada para cada tipo específico de estratégia. Em última análise, o objetivo da classe Estratégia nessa configuração é fornecer uma lista de sinais long / short / hold para cada instrumento a ser enviado para um Portfolio. Carteira A classe Portfolio é onde residirá a maioria da lógica de negociação. Para este backtester de pesquisa, o portfólio é responsável por determinar o dimensionamento de posição, análise de risco, gerenciamento de custos de transação e tratamento de execução (ou seja, ordens de mercado sobre fechamento). Numa fase posterior, estas tarefas serão divididas em componentes separados. Agora eles serão incluídos em uma classe. Esta classe faz uso amplo de pandas e fornece um grande exemplo de onde a biblioteca pode economizar uma enorme quantidade de tempo, particularmente no que diz respeito à disputa de dados padronizada. Como um aparte, o principal truque com pandas e NumPy é evitar iterar sobre qualquer conjunto de dados usando o para d in. Sintaxe. Isso ocorre porque NumPy (que subjaz pandas) otimiza loop por operações vectorized. Assim, você verá poucas (se houver) iterações diretas ao utilizar pandas. O objetivo da classe Portfolio é, em última instância, produzir uma seqüência de negociações e uma curva patrimonial, que será analisada pela classe Performance. Para isso, deve ser fornecida uma lista de recomendações de negociação a partir de um objeto Estratégia. Mais tarde, este será um grupo de objetos Estratégia. A classe Portfolio precisará ser informada sobre como o capital deve ser implantado para um determinado conjunto de sinais de negociação, como lidar com custos de transação e quais formas de ordens serão utilizadas. O objeto Estratégia está operando em barras de dados e, portanto, devem ser feitas premissas em relação aos preços obtidos na execução de uma ordem. Uma vez que o preço alto / baixo de qualquer barra é desconhecida a priori, só é possível usar os preços abertos e fechados para negociação. Na realidade, é impossível garantir que uma ordem será preenchida a um desses preços particulares quando se utiliza uma ordem de mercado, pelo que será, na melhor das hipóteses, uma aproximação. Além de suposições sobre as ordens de ser preenchido, este backtester irá ignorar todos os conceitos de margem / corretagem restrições e irá supor que é possível ir longas e curtas em qualquer instrumento livremente sem restrições de liquidez. Esta é claramente uma suposição muito irrealista, mas é aquela que pode ser relaxada mais tarde. A listagem a seguir continua backtest. py: Nesta fase, as classes básicas abstratas Strategy e Portfolio foram introduzidas. Agora estamos em posição de gerar algumas implementações derivadas concretas dessas classes, a fim de produzir uma estratégia de brinquedo de trabalho. Começaremos gerando uma subclasse de Estratégia chamada RandomForecastStrategy. A única tarefa de que é produzir aleatoriamente escolhidos long / short sinais Embora esta é claramente uma estratégia de negociação absurda, que irá servir às nossas necessidades, demonstrando o objeto orientado backtesting quadro. Assim, vamos começar um novo arquivo chamado random forecast. py. Com a lista para o forecaster aleatório da seguinte forma: Agora que temos um sistema de previsão concreto, devemos criar uma implementação de um objeto Portfolio. Este objeto irá abranger a maioria do código backtesting. Ele é projetado para criar dois DataFrames separados, o primeiro dos quais é um quadro de posições, usado para armazenar a quantidade de cada instrumento realizada em qualquer barra em particular. O segundo, carteira. Na verdade contém o preço de mercado de todas as explorações para cada barra, bem como um comprovante do dinheiro, assumindo um capital inicial. Isso, em última instância, fornece uma curva de equidade sobre a qual avaliar o desempenho da estratégia. O objeto Portfolio, embora extremamente flexível em sua interface, requer escolhas específicas quando se trata de como lidar com os custos de transação, ordens de mercado, etc Neste exemplo básico eu considerei que será possível ir long / short um instrumento facilmente sem restrições ou Margem, comprar ou vender diretamente ao preço de abertura da barra, custos de transação zero (abrangendo derrapagem, taxas e impacto no mercado) e especificou a quantidade de ações diretamente para compra para cada comércio. Aqui está a continuação da lista aleatória de forecast. py: Isso nos dá tudo o que precisamos para gerar uma curva de equidade baseada nesse sistema. A etapa final é amarrar tudo junto com uma função principal: A saída do programa é a seguinte. O seu diferirá da saída abaixo, dependendo do intervalo de datas que você selecionar e da semente aleatória utilizada: Neste caso, a estratégia perdeu dinheiro, o que não surpreende dada a natureza estocástica do antecessor Os próximos passos são criar um objeto de desempenho que aceita um Portfolio e fornece uma lista de métricas de desempenho sobre as quais basear a decisão de filtrar a estratégia para fora ou não. Também podemos melhorar o objeto Portfolio para ter um tratamento mais realista dos custos de transação (como comissões de corretores interativos e deslizamento). Também podemos incluir diretamente um mecanismo de previsão em um objeto Estratégia, que (esperamos) produza melhores resultados. Nos próximos artigos, exploraremos esses conceitos com mais profundidade. Michael Halls-Moore Mike é o fundador da QuantStart e tem estado envolvido na indústria de finanças quantitativas nos últimos cinco anos, principalmente como desenvolvedor quantitativo e, mais tarde, como consultor de comerciante de quant para hedge funds.

No comments:

Post a Comment