Wednesday 5 July 2017

Forex backtesting platform


- 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. Net backtesting e otimização de estratégia baseados - execução de múltiplos corretores suportados, sinais de negociação convertidos em pedidos FIX QuantFACTORY - Solução de implantação de estratégia / backtesting / estratégia de dados de classe institucional: - QuantDEVELOPER - estrutura e IDE para estratégias de negociação desenvolvimento, depuração, backtesting e - 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, Multi-período de baixa latência de dados, múltiplos corretores apoiados Institucional de classe de gerenciamento de dados / backtesting / solução de implantação de estratégia: - OpenQuant - C e VisualBasic. NET sistema de nível de backtesting e negociação, multi-asset, testes de nível intraday, otimização, WFA etc. Múltiplos fornecedores e feeds de dados suportados - QuantTrader - ambiente de negociação de produção - QuantBase - gerenciamento de dados centralizado - QuantRouter - roteamento de dados e pedidos Solução de solução de multi-asset, múltiplos feeds de dados suportados, suporte a bancos de dados Qualquer tipo de RDBMS que forneça uma interface JDBC, por exemplo Oracle, Microsoft SQL Server, Sybase, MySQL, etc - os clientes podem usar o IDE para script sua estratégia em Java, Ruby ou Python, ou eles podem usar sua própria estratégia IDE - múltiplos corretores execução suportada, negociação sinais convertidos em ordens FIX Institucional - Gerenciamento de dados de classe / backtesting / solução de implantação de estratégia: - solução multi-asset (forex, opções, futuros, ações, ETFs, commodities, instrumentos sintéticos e spreads derivados personalizados), múltiplas feeds de dados suportados - framework for trading strategies development, debugging , Backtesting e otimização - execução de múltiplos corretores suportados, sinais de negociação convertidos em ordens de FIX (IB, JPMorgan, FXCM, etc.) Plataforma de software dedicada integrada com dados de Tradestations para backtesting e auto-trading: - dados diários intraday (Análise técnica), apoio à 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 mensais para não - (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 a estratégias diárias / 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 DDE compatível Feed, 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 co-location de servidor - nativo FXCM e Interactive Brokers suporte - suporte gratuito FXCM, 100 por mês para plataforma IB, contacte Salesseertrading 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 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 - Turtle Edition - backtesting motor, gráficos, relatórios, testes de EoD - Professional Edition - mais editor de sistema, análise de pé frente, estratégias intraday, testes multi-threaded etc. - Pro Edition Plus - mais gráficos de superfície 3D, scripts, etc - Edição Construtor - IB API, depurador etc - Turtle Edition 990 - Edição Profissional 1.990 - Edição Pro Plus 2.990 - Edição Construtor 3.990 Plataforma de software dedicado para backtesting e auto - - 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 de sinais (análise técnica) - link direto para Interactive Brokers, MB Trading, TD Ameritrade, FXCM e outros - dados De arquivos de texto, eSignal, Google Finanças, Yahoo finance, IQFeed e outros - funcionalidade básica (funcionalidade EoD) - livre - funcionalidade avançada - locação de 50 / mês ou 995 licença de vida Plataforma de software dedicado para backtesting e auto-trading: - melhor 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. NET - 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) - incorporar 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ço 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 estoques Futures e SP500 - 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 Web / - FX (Forex / Moeda) dados em pares principais, que remontam a 2007 - Segundos / Minutos / Horários / Bares diários - negociação ao vivo compatível com qualquer corretor que está usando Metatrader 4 como back backed Web baseado backtesting / 000 US estoques, dados até 20 anos de história - critérios técnicos fundamentais - funcionalidade livre - limitada (1 ano de dados, sem backtests salvo) - 50 por mês - funcionalidade completa ferramenta de backtesting baseado na Web para testar a separação de fatores de capital e alocação de ativos Estratégias de alocação de ativos backtests, mistura de alocação de ativos e fator picking em um portfólio - livre em SP 100 universo - 50 / mês ou 480 / MATLAB - Linguagem de alto nível e ambiente interactivo para computação estatística e gráficos: - computação paralela e GPU, backtesting e optimização, amplas possibilidades de integração, etc. Aqui Ambiente de software livre para computação estatística e gráficos, muitos quants preferem usá-lo para sua excepcional arquitetura aberta e flexibilidade: - facilidade de tratamento e armazenamento de dados eficaz, instalações gráficas para análise de dados, facilmente estendida via pacotes - extensões recomendadas - quantstrat, A 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), pyalgotrade (Python Algorithmic BacktestingXL Pro é um add-in para construir e testar suas estratégias de negociação no Microsoft Excel 2010 e 2013: - os usuários podem usar o VBA para construir estratégias para o BacktestingXL Pro, o conhecimento do VBA é opcional, os usuários podem construir Negociação de regras em uma planilha usando padrão pré-fabricados backtesting códigos - apoia pyramiding, limitação de posição curto / longo, comissão de cálculo, acompanhamento de patrimônio, fora de controle de dinheiro, comprar / vender personalização de preço - vários desempenho / relatórios de risco - 74,95 para BacktestingXL Pro ferramenta de backtesting baseado na Web: - simples de usar, entrada de nível de backtesting ferramenta baseada na web para testar 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 de usar web - based backtesting ferramenta para fator de investimento: - permite ao usuário misturar vários ETF / opções / futuros / fatores de equidade com alfa comprovada sobre benchmarks de mercado-cap - livre - ETF / Stock Screener com 5 fatores - 149 / Estratégias de futuros, estratégias de vix Web-Based Tool - Free Stock Ratings, análise sazonal, gráficos Fundamentos - Free Freemium modelo Free backtesting ferramenta baseada na web para testar estratégias de escolha de ações: - ações dos EUA, dados de ValueLine de 1986-2014 - preço e dados fundamentais , 1700 ações, teste de granularidade mensalChoosing uma plataforma para Backtesting e execução automatizada Neste artigo o conceito de execução automatizada será discutido. De um modo geral, este é o processo de permitir que uma estratégia de negociação, através de uma plataforma de negociação electrónica, gere sinais de execução comercial sem qualquer intervenção humana subsequente. A maioria dos sistemas discutidos no QuantStart até à data foram projetados para serem implementados como estratégias de execução automatizada. O artigo descreverá pacotes de software e linguagens de programação que oferecem backtesting e capacidades de execução automatizadas. A primeira consideração é como backtest uma estratégia. Minha opinião pessoal é que o desenvolvimento personalizado de um ambiente de backtesting dentro de uma linguagem de programação de primeira classe fornece a maior flexibilidade. Por outro lado, uma plataforma de backtesting integrada desenvolvida pelo fornecedor sempre terá que fazer suposições sobre como os backtests são realizados. Apesar disso, a escolha das linguagens de programação disponíveis é grande e diversificada, o que muitas vezes pode ser esmagador. Não é óbvio antes do desenvolvimento qual linguagem é provável ser apropriada. Ao codificar uma estratégia em regras sistemáticas, o comerciante quantitativo deve ter certeza de que seu desempenho futuro será reflexo de seu desempenho passado. Existem geralmente duas formas de backtesting sistema que são utilizados para testar esta hipótese. Em geral, eles são categorizados como testadores de back-back de pesquisa e testadores de back-driven. Vamos considerar backtesters personalizados versus produtos de fornecedores para esses dois paradigmas e ver como eles se comparam. Ferramentas de Pesquisa Ao identificar estratégias de negociação algorítmicas, geralmente desnecessário para simualte completamente todos os aspectos da interação do mercado. Em vez disso, podem ser feitas aproximações que proporcionam uma rápida determinação do desempenho potencial da estratégia. Essas ferramentas de pesquisa muitas vezes fazem suposições irrealistas sobre os custos de transação, os prováveis ​​preços de preenchimento, restrições de curto prazo, dependência local, gerenciamento de risco e dimensionamento de posição. Apesar dessas deficiências, o desempenho de tais estratégias ainda pode ser efetivamente avaliado. Ferramentas comuns para pesquisa incluem MATLAB, R, Python e Excel. Esses pacotes de software vêm com capacidades de vetorização que permitem velocidade de execução rápida e implementação de estratégia mais fácil. MATLAB e pandas são exemplos de sistemas vectorizados. Com tais ferramentas de pesquisa, é possível testar várias estratégias, combinações e variantes de uma maneira rápida e iterativa, sem a necessidade de desenvolver completamente uma simulação de interação de mercado realista. Embora essas ferramentas sejam freqüentemente usadas tanto para backtesting quanto para execução, esses ambientes de pesquisa geralmente não são adequados para estratégias que se aproximam do comércio intraday em freqüências mais altas na escala de sub-minutos. Essas bibliotecas não tendem a ser capazes de se conectar efetivamente a fornecedores de dados de mercado em tempo real ou interagir com as APIs de corretagem de forma robusta. Apesar dessas deficiências de execução, os ambientes de pesquisa são fortemente utilizados dentro da indústria profissional de negociação quantitativa. Eles fornecem o primeiro rascunho para todas as idéias de estratégia antes da promoção para controlos mais rigorosos dentro de um ambiente de backtesting realista. Backtesting conduzido por eventos Uma vez que uma estratégia é considerada adequada na pesquisa, ela deve ser avaliada de forma mais realista. Tal realismo tenta explicar a maioria (se não todas) das questões descritas em postagens anteriores. A situação ideal é ser capaz de usar o mesmo código de geração comercial para backtesting histórico, bem como execução ao vivo. Isto é conseguido através de um backtestter movido a eventos. Os sistemas de eventos são amplamente utilizados na engenharia de software, comumente para manipular a entrada de interface gráfica do usuário (GUI) dentro de sistemas operacionais baseados em janelas. Eles também são ideais para negociação algorítmica como a noção de ordens de mercado em tempo real ou preenchimentos comerciais podem ser encapsulados como um evento. Esses sistemas são freqüentemente escritos em linguagens de alto desempenho como C, C e Java. Considere uma situação em que uma estratégia de negociação automatizada está conectada a um feed de mercado em tempo real e a um corretor (estes dois podem ser um e o mesmo). Novas informações de mercado serão enviadas para o sistema, o que aciona um evento para gerar um novo sinal de negociação e, portanto, um evento de execução. Esses sistemas funcionam em um loop contínuo esperando para receber eventos e lidar com eles adequadamente. É possível gerar subcomponentes, como um manipulador de dados históricos e simulador de corretagem, que pode imitar suas contrapartes vivas. Isso permite backtesting estratégias de uma forma extremamente semelhante à de execução ao vivo. A desvantagem de tais sistemas reside na sua concepção complicada quando comparada com uma ferramenta de pesquisa mais simples. Daí o tempo para o mercado é mais longo. Eles são mais propensos a bugs e exigem um bom conhecimento de programação e metodologia de desenvolvimento de software. Latência Em termos de engenharia, a latência é definida como o intervalo de tempo entre uma simulação e uma resposta. Na negociação quantitativa, refere-se geralmente ao atraso de tempo de ida e volta entre a geração de um sinal de execução ea recepção das informações de preenchimento a partir de um corretor que executa a execução. Essa latência raramente é um problema nas estratégias de interdias de baixa frequência. O movimento de preços esperado durante o período de latência não afetará a estratégia em grande medida. O mesmo não acontece com as estratégias de maior freqüência, onde a latência se torna extremamente importante. O objetivo final em HFT é reduzir a latência, tanto quanto possível, para reduzir o deslizamento. A latência decrescente envolve a minimização da distância entre o sistema de negociação algorítmica ea troca final na qual uma ordem está sendo executada. Isso pode envolver o encurtamento da distância geográfica entre os sistemas, reduzindo assim os tempos de viagem ao longo do cabeamento da rede. Também pode envolver a redução do processamento realizado em hardware de rede ou a escolha de uma corretora com infra-estrutura mais sofisticada. Muitas corretoras competem em latência para ganhar negócios. Diminuir latência torna-se exponencialmente mais caro em função da distância à Internet, que é definida como a distância de rede entre dois servidores. Assim, para um comerciante de alta frequência, um compromisso deve ser alcançado entre a despesa de redução de latência eo ganho de minimizar o deslizamento. Essas questões serão discutidas na seção sobre Colocação abaixo. Escolhas de Idioma Alguns problemas que direcionam a escolha de idioma já foram descritos. Agora vamos considerar os benefícios e desvantagens de linguagens de programação individuais. Eu categorizei amplamente as línguas em desenvolvimento de alto desempenho / mais duro contra desempenho mais baixo / desenvolvimento mais fácil. Estes são termos subjetivos e alguns discordarão dependendo de seu fundo. Um dos aspectos mais importantes da programação de um ambiente de backtesting personalizado é que o programador está familiarizado com as ferramentas utilizadas. Para aqueles que são novos para o cenário de linguagem de programação, o seguinte vai esclarecer o que tende a ser utilizado dentro de negociação algorítmica. C, C e Java C, C e Java são exemplos de linguagens de programação orientadas a objetos de uso geral. Isso significa que eles podem ser usados ​​sem um correspondente ambiente de desenvolvimento integrado (IDE), são todos cruz-plataforma, têm uma ampla gama de bibliotecas para quase qualquer tarefa imaginável e permitir velocidade de execução rápida quando utilizados corretamente. Se a velocidade de execução final é desejada, então C (ou C) é provável que seja a melhor escolha. Oferece a maior flexibilidade para gerenciar a memória e otimizar a velocidade de execução. Esta flexibilidade tem um preço. C é complicado para aprender bem e muitas vezes pode levar a bugs sutis. O tempo de desenvolvimento pode levar muito mais tempo do que em outras linguagens. Apesar dessas deficiências, ela é generalizada no setor financeiro. C e Java são semelhantes, uma vez que ambos exigem que todos os componentes sejam objetos com exceção de tipos de dados primitivos, como flutuadores e inteiros. Diferem de C executando a coleta automática de lixo. A coleta de lixo adiciona uma sobrecarga de desempenho, mas leva a um desenvolvimento mais rápido. Essas linguagens são boas escolhas para o desenvolvimento de um backtester, pois possuem recursos GUI nativos, bibliotecas de análise numérica e velocidade de execução rápida. Pessoalmente, eu uso de C para a criação de backersters evento-driven que precisa de velocidade de execução extremamente rápida, como para sistemas HFT. Isso é somente se eu senti que um sistema de evento Python foi gargalo, como o último idioma seria a minha primeira escolha para tal sistema. MATLAB, R e Python MATLAB é um IDE comercial para computação numérica. Ganhou ampla aceitação nos setores acadêmico, de engenharia e financeiro. Tem muitas bibliotecas numéricas para computação científica. Possui uma velocidade de execução rápida sob o pressuposto de que qualquer algoritmo a ser desenvolvido está sujeito a vectorização ou paralelização. Apesar dessas vantagens, é caro torná-lo menos atraente para os comerciantes de varejo com um orçamento. MATLAB é usado às vezes para a execução direta a uma corretora tal como corretores interativos. R é um ambiente dedicado de scripts de estatísticas. É livre, open-source, multi-plataforma e contém uma riqueza de livremente disponíveis pacotes estatísticos para a realização de análise extremamente avançada. R é muito utilizado nas estatísticas acadêmicas e na indústria de fundos de hedge quantitativos. Embora seja possível conectar R a uma corretora não é bem adequado para a tarefa e deve ser considerado mais de uma ferramenta de pesquisa. Também não tem velocidade de execução a menos que as operações sejam vectorizadas. Ive agrupados Python sob este título, embora ele fica em algum lugar entre MATLAB, R e as linguagens de finalidade geral acima mencionados. É livre, open-source e multi-plataforma. É interpretado como oposto a compilado. O que o torna nativamente mais lento do que C. No entanto, ele contém uma biblioteca para realizar quase todas as tarefas imagináveis, desde a computação científica até o design de servidor web de baixo nível. Em particular, contém NumPy, SciPy, pandas, matplotlib e scikit-learn, que fornecem um ambiente de pesquisa numérica robusta que, quando vectorizada, é comparável à velocidade de execução de linguagem compilada. Python também possui bibliotecas para conexão com corretoras. Isso faz com que seja um balcão único para criar um backtesting orientado a eventos e um ambiente de execução ao vivo sem ter que entrar em outras linguagens mais complexas. Velocidade de execução é mais do que suficiente para comerciantes intraday trading na escala de tempo de minutos e acima. Python é muito simples de pegar e aprender quando comparado a linguagens de nível inferior como C. Por estas razões, fazemos uso extensivo de Python dentro de artigos QuantStart. Ambientes de Desenvolvimento Integrados O termo IDE tem múltiplos significados dentro da negociação algorítmica. Desenvolvedores de software usá-lo para significar uma GUI que permite a programação com realce de sintaxe, navegação de arquivos, depuração e execução de código recursos. Os traders algorítmicos usam isso para significar um ambiente de backtesting / trading totalmente integrado com dados históricos ou em tempo real, gráficos, avaliação estatística e execução ao vivo. Para nossos propósitos, eu uso o termo para significar qualquer ambiente de backtest / trading, muitas vezes baseado em GUI, que não é considerado uma linguagem de programação de propósito geral. Excel Enquanto alguns comerciantes quant pode considerar Excel para ser inadequado para a negociação, achei que é extremamente útil para sanidade verificação de resultados. O fato de que todos os dados estão disponíveis diretamente à vista torna fácil a implementação de estratégias de sinal / filtro muito básicas. Corretoras como Interactive Brokers também permitem plugins DDE que permitem ao Excel receber dados de mercado em tempo real e executar ordens de negociação. Apesar da facilidade de uso do Excel é extremamente lento para qualquer escala razoável de dados ou nível de computação numérica. Eu só usá-lo para verificar erros ao desenvolver contra outras estratégias. Em particular, é extremamente útil para verificar se uma estratégia está sujeita a viés prospectivo. Isso é fácil de detectar no Excel devido à natureza da planilha do software. Se você está desconfortável com linguagens de programação e estão realizando uma estratégia interday, em seguida, Excel pode ser uma boa escolha. Comercial / Retail Backtesting Software O mercado de gráficos de varejo, análise técnica e backtesting software é extremamente competitivo. As características oferecidas por tal software incluem a cartografia em tempo real dos preços, uma riqueza dos indicadores técnicos, do backtesting personalizado langauges e da execução automatizada. Alguns fornecedores oferecem uma solução tudo-em-um, como o TradeStation. TradeStation são uma corretora on-line que produzem software comercial (também conhecido como TradeStation) que fornece a execução de ordens eletrônicas em várias classes de ativos. Atualmente não tenho conhecimento de uma API direta para execução automatizada. Em vez disso, as ordens devem ser feitas através do software GUI. Isso contrasta com os Interactive Brokers, que possuem uma interface de negociação mais simples (Trader WorkStation), mas oferecem tanto as APIs proprietárias de execução de ordens de mercado em tempo real como uma interface FIX. Outra plataforma extremamente popular é o MetaTrader. Que é usado no comércio de câmbio para a criação de Expert Advisors. Estes são scripts personalizados escritos em uma linguagem proprietária que pode ser usada para negociação automatizada. Eu não tive muita experiência com o TradeStation ou o MetaTrader assim que eu não gastarei demasiado tempo que discute seus méritos. Essas ferramentas são úteis se você não está confortável com o desenvolvimento de software em profundidade e desejo um monte de detalhes a serem atendidos. No entanto, com tais sistemas um monte de flexibilidade é sacrificado e você está muitas vezes vinculado a uma corretora única. Ferramentas abertas e baseadas na Web Os dois sistemas populares de backtesting baseados na web são Quantopian e QuantConnect. O primeiro faz uso de Python (e ZipLine, veja abaixo), enquanto o último utiliza C. Ambos fornecem uma riqueza de dados históricos. Quantopian atualmente suporta negociação ao vivo com Interactive Brokers, enquanto o QuantConnect está trabalhando para negociação ao vivo. A Algo-Trader é uma empresa sediada na Suíça que oferece uma licença de código aberto e comercial para seu sistema. Do que eu posso reunir a oferta parece bastante maduro e eles têm muitos clientes institucionais. O sistema permite backtesting histórico completo e processamento de eventos complexos e eles se ligam em Interactive Brokers. A edição Enterprise oferece recursos substancialmente mais de alto desempenho. Marketcetera fornecer um sistema de backtesting que pode amarrar em muitas outras línguas, como Python e R, a fim de aproveitar o código que você já pode ter escrito. O Estúdio de Estratégia fornece a capacidade de escrever backtesting código, bem como algoritmos de execução otimizada e, posteriormente, a transição de um histórico backtest ao papel vivo trading. I havent utilizado antes. ZipLine é a biblioteca Python que alimenta o serviço de Quantopian mencionado acima. É um ambiente de backtest totalmente voltado para eventos e atualmente suporta ações dos EUA em uma base minuciosa. Eu havent fez uso extensivo de ZipLine, mas eu sei que outros que sentem que é uma boa ferramenta. Ainda há muitas áreas para melhorar, mas a equipe está constantemente trabalhando no projeto e é muito ativamente mantida. Há também alguns Github / Google Code hospedado projetos que você pode querer olhar. Eu não passei muito tempo investigando-os. Tais projetos incluem OpenQuant. TradeLink e PyAlgoTrade. Software de backtesting institucional Sistemas de backtesting de nível institucional como Deltix e QuantHouse não são freqüentemente utilizados por comerciantes de algoritmos de varejo. As licenças de software são geralmente bem fora do orçamento para infra-estrutura. Dito isto, esse software é amplamente utilizado por fundos quant, casas comerciais proprietárias, family offices e similares. Os benefícios de tais sistemas são claros. Eles fornecem uma solução completa para coleta de dados, desenvolvimento de estratégia, backtesting histórico e execução ao vivo em instrumentos únicos ou carteiras, até o nível de alta freqüência. Tais plataformas tiveram testes extensivos e muitos do uso de campo e por isso são considerados robustos. Os sistemas são orientados a eventos e os ambientes de backtesting podem freqüentemente simular os ambientes ao vivo para um alto grau de precisão. Os sistemas também suportam algoritmos de execução otimizados, que tentam minimizar os custos de transação. Isto é particularmente útil para comerciantes com uma base de capital maior. Eu tenho que admitir que eu não tive muita experiência de Deltix ou QuantHouse. Dito isto, o orçamento sozinho os coloca fora do alcance da maioria dos comerciantes de varejo, então eu não vou me debruçar sobre esses sistemas. Colocação O cenário de software para negociação algorítmica foi agora pesquisado. Podemos agora voltar nossa atenção para a implementação do hardware que irá executar nossas estratégias. Um comerciante do varejo provavelmente estará executando sua estratégia do repouso durante horas do mercado. Isso envolveu ligar o PC, conectar-se à corretora, atualizar seu software de mercado e, em seguida, permitir que o algoritmo para executar automaticamente durante o dia. Por outro lado, um fundo de quantos profissionais com ativos significativos sob gestão (AUM) terá uma infra-estrutura dedicada de servidor de troca-colocated, a fim de reduzir a latência, na medida do possível, para executar suas estratégias de alta velocidade. Home Desktop A abordagem mais simples para a implantação de hardware é simplesmente realizar uma estratégia algorítmica com um computador de secretária conectado à corretora através de uma conexão de banda larga (ou similar). Embora esta abordagem é simples de começar, sofre de muitas desvantagens. A máquina de mesa está sujeita a falha de energia, a menos que seja copiada por uma UPS. Além disso, uma conexão à Internet em casa também está à mercê do ISP. Perda de energia ou falha de conexão à internet pode ocorrer em um momento crucial na negociação, deixando o comerciante algorítmico com posições abertas que não podem ser fechadas. Esse problema também ocorre com reinicializações obrigatórias do sistema operacional (isso realmente aconteceu comigo em um ambiente profissional) e falha de componente, o que leva aos mesmos problemas. Pelas razões acima, eu hesito em recomendar uma abordagem de desktop doméstico para negociação algorítmica. Se você decidir seguir essa abordagem, certifique-se de ter um computador de backup e uma conexão de Internet de backup (por exemplo, um dongle 3G) que você pode usar para fechar as posições em uma situação de inatividade. VPS O próximo nível acima de um desktop em casa é fazer uso de um servidor virtual privado (VPS). Um VPS é um sistema de servidor remoto, muitas vezes comercializado como um serviço de nuvem. Eles são muito mais baratos do que um servidor dedicado correspondente, uma vez que um VPS é realmente uma partição de um servidor muito maior. Eles possuem um ambiente de sistema operacional virtual isolado, disponível apenas para cada usuário individual. A carga da CPU é compartilhada entre vários VPS e uma porção dos sistemas que a RAM é alocada ao VPS. Tudo isso é realizado através de um processo conhecido como virtualização. Fornecedores comuns de VPS incluem Amazon EC2 e Rackspace Cloud. Eles fornecem sistemas de nível de entrada com baixa RAM e uso básico de CPU até a RAM de alta empresa, servidores de alta CPU. For the majority of algorithmic retail traders the entry level systems suffice for low-frequency intraday or interday strategies and smaller historical data databases. The benefits of a VPS-based system include 24/7 availability (albeit with a certain realistic downtime), more robust monitoring capabilities, easy plugins for additional services, such as file storage or managed databases and a flexible architecture. One drawback is the ongoing expense. As the system grows dedicated hardware becomes cheaper per unit of performance. This price point assumes colocation away from an exchange. Compared to a home desktop system latency is not always improved by choosing a VPS provider. Your home location may be closer to a particular financial exchange than the data centres of your cloud provider. This is mitigated by choosing a firm that provide VPS services geared specifically for algorithmic trading which are located at or near exchanges. These will likely cost more than a generic VPS provider such as Amazon or Rackspace. Exchange Colocation In order to get the best latency minimisation it is necessary to colocate dedicated servers directly at the exchange data centre. This is a prohibitively expensive option for nearly all retail algorithmic traders unless theyre very well capitalised. It is really the domain of the professional quantitative fund or brokerage. As I mentioned above a more realistic option is to purchase a VPS system from a provider that is located near an exchange. As can be seen, there are many options for backtesting, automated execution and hosting a strategy. Determining the right solution is dependent upon budget, programming ability, degree of customisation required, asset-class availability and whether the trading is to be carried out on a retail or professional basis. Strategy Backtesting Platforms To the point, I am currently testing several software package for backtesting strategies to choose the best one to use for a big project. I have to say that I have been away from such details for the past 2-3 years and I am sure my information is outdated and I need a refresher from the experts here who are using the current software packages and their experiences. I am testing/demoing/trying the following packages right now (So, please if you have any feedback about any of them, it would be much appreciated to post a detailed reply): 1- Matlab 2- Trading Blox 3- MultiCharts 4- Trade Station 5- AmiBroker 6- NinjaTrader Now, I know that most of the mentioned packages and platforms are mainly retail ones and they will be as good as retail usage for all tiers, however, I am open to institutional packages as well, if any member here does have a previous experience with one (Just to clarify, institutional packages means platforms used by hedge funds or prop desks in large banks). No talk about MT (Metatrader) or Metastock please as I will not be using any of them. MT uses some variation of C and I am not willing to learn C as I dont have time. Metastock, I already tried and I have to say its rubbish, very basic, limited and a lot of constrains, so it wont fit even a mid-tier retail needs. I have used Matlab back in my old engineering days and I have to say its a very handy tool, but again it will require a lot of code management and I am trying to minimize the coding as much as possible. Here is what I am looking for in the backtesting platform, so if you have already experienced this in one of the above mentioned or in another platform not mentioned, your feedback is much appreciated: 1- The platform must be precise, accurate and as realistic as possible in backtesting, i. e. backtesting strategies as close as possible to reality 2- System design and construction must be as flexible as possible, allowing for all components and conditions to be created and with the possibility to link those components together, i. e. the package must offer the possibility of components dependency For example, when simulating entries, one has to have the ability to construct the rules of the entries based on any possible condition or set of conditions, dependent or independent, without removing the possibility of integrating the entry component from other system components. To clarify this, lets say that a strategy has a simple entry rule, which is going long when the price crosses above its 20-EMA by 1 on an intraday basis, however, if the past 3 consecutive trades lost money, the entry rule should be crossing above the 20-EMA by 1.35 instead and if the past 2 consecutive trades were winners with an average of 15 profit or more, the entry rule should be crossing above the 20-EMA by 0.5 only. I hope you got my point. The same applies not only to entry rules, but also to stop loss exits and profit exits. 3- Position sizing component/conditions can be constructed by any set of conditions or rules. As an example, if I need the position sizing to be dynamic based on the percentage difference between the price and a 250-EMA, I must be able to do this, where 100 of the position to be taken when the price is above/below the 250-EMA by 1 and position size decreases incrementally by 10 for every 1 step away from the 250-EMA in either directions. Needles to say that position sizing custom formula calculation must be supported and I must have the ability to use data from the equity curve serially to dynamically change the position size of next trades. Another very important thing in supporting position sizing calculations is to have the ability to use the calculated probabilities from results at a certain point to adjust position sizing according to a formula. As an example, lets say that I will be using a certain position sizing formula for the first 100 trades and then based on the account value after those 100 trades and the distribution of those 100 trades, I will be using different position sizing formulas afterwards. To elaborate: If after the first 100 trades, the account value grew by 30 or more and the first 100 trades were 60 winners and 40 losers, win/loss ratio of 2.5/1, I need to have the ability to use another position sizing formula in this case for the next 100 trades and so on. The main idea behind this, is that as you go, the system expectancy changes over time as you take on more and more trades and the basic concept is that if your system expectancy is getting better, you want to lift up your position size and make the most out of the enhanced expectancy and if your system expectancy is getting worse, you need to cut down your position size and trade smaller since when the system expectancy gets better, you are practically getting more rewards for each dollar you risk and vice-versa. 4- Execution details/conditions must be as flexible as possible and very close to real-life situations allowing for a variable or formula based slippage. The execution must also support formulas to precisely determine where and how to enter taking into consideration volume and liquidity (To be defined by formulas and filters) 5- Multiple system testing at the same time on multiple instruments must be supported, i. e. if I have 3 different trading systems and 100 instruments to trade based on the systems conditions, the package must allow for back testing all 3 trading systems among the 100 instruments at the same time, taking trades in the order they come based on the rules of the 3 systems and then combine the results in a single portfolio, as if the package is simulating a scan on a daily basis for the 100 instruments to see which system generated signals and execute the signals based on the system programmed conditions and so on managing multiple positions at the same time 6- Reporting and testing results must be comprehensive and exportable to excel. Basic statistical metrics must be included besides the profitability of the system or the combination of systems being tested. Equity curve data must be exportable to excel as well. Basic equity curve measures like max. drawdown, and average monthly drawdowns, variability of returns and standard deviation of the equity curve data, etc. are preferred to be present within the package 7- Optimization for 1 or more variables should be part of the package and the package should be able to optimize for non-standard variables, like optimize to achieve the min. drawdown, etc. 8- The package must have the ability to get data either from a real-time or automatic source, or manually through csv or excel files. It has to support continuous futures contracts data as well as options data 9- Financial Instruments to be supported are stocks, options, futures and OTC FX data and fields to be supported in the package database are Timestamp, open, high, low, close, volume, bid, bid volume, ask, ask volume, settlement price and open interest Finally, sorry for the long post and sorry that I kept you reading all this. Your feedback is really really appreciated. Joined Jan 2005 Status: Happy Forum Member 1,152 Posts Thanks a lot Sti for your reply and for your offer as well, very generous from you. Time is a bit limited here thats why I am leaving the programming option as the last one if I didnt find a ready-made package which is good for what I am looking for. So far, out of all the packages I mentioned, Trading Blox looks good for what I am looking for, not the exact match, but it seems fine, but I will not compromise on quality and features anyway, so still need more in-depth testing. Thanks again and will keep in touch. I fully understand where youre coming from with your first post. But, I really believe that for the requirements that you state, youll have to take a different route. I do not think there will be any package out of the box (other than the ones you mentioned) that will be able to meet such requirements. I do a lot of testing myself and had the need for backtesting a lot of things. In the end i wrote my own backtesting software in c. I understand that you stated that youre not keen on going this road, but. im really affraid.

No comments:

Post a Comment