Guia para o desenvolvimento do sistema de negociação.
A evolução contínua do software de análise técnica simplificou a criação de sistemas de negociação automatizados por computador. Alguns sistemas apenas geram os sinais para o comerciante seguir, enquanto outros colocam os negócios no mercado em nome do comerciante. No entanto, ser capaz de programar sua plataforma de negociação favorita é apenas o começo. Você deve ter uma estrutura para testar suas teorias de negociação para ter certeza de que os backtests rentáveis não são apenas por causa da sorte, mas são os resultados da modelagem robusta do comportamento de um mercado.
Esta série de artigos apresentará uma abordagem simplificada para o desenvolvimento de um sistema de negociação para o mercado cambial de varejo. A ferramenta de desenvolvimento do sistema que usamos será o MetaTrader 4 (MT4), embora as idéias e o processo apresentados se apliquem a uma ampla gama de plataformas de software. A metodologia abordará conceitos gerais direcionados ao comerciante do sistema inicial. Quando tomamos atalhos por conveniência, iremos ao leitor para obter recursos adicionais para obter informações mais detalhadas.
Existem cinco fases distintas no desenvolvimento do sistema de negociação:
Fase 1: Desenvolvimento do modelo de mercado e do sistema automatizado básico e mdash; O sistema automatizado básico implementa este modelo, mas não incorpora perdas de parada ou metas de lucro. O sistema básico é para o único propósito de coletar dados para análise estatística utilizada nas fases de desenvolvimento posterior.
Fase 2: Gerenciamento de risco & mdash; a perda de parada inicial (ISL). Usando os dados coletados na Fase 1 e com base na análise estatística desses dados, adicionamos uma ISL à estratégia de negociação. Usamos a otimização para encontrar um parâmetro de paragem que atenda às nossas necessidades. Usaremos análise walk-forward para testar esta versão do sistema.
Fase 3: Gerenciamento de lucro e mdash; o objetivo de lucro (PT). Como na Fase 2, usaremos a análise estatística de nossos dados para incorporar um objetivo de lucro no sistema. Mais uma vez, usaremos a otimização para encontrar um objetivo de lucro apropriado e, em seguida, usaremos a análise walk-forward para testar esta versão do sistema.
Fase 4: Gerenciamento de dinheiro & mdash; o algoritmo de tamanho de comércio (TSA). Esta fase não depende dos dados coletados na Fase 1. Em vez disso, incorporaremos o método de tamanho de comércio de fração fixa popular para determinar quantos lotes são alocados para cada comércio. A literatura de comércio popular está repleta de conselhos para restringir o risco por comércio dentro de um intervalo de 1% a 3% do patrimônio da conta. Nós administraremos nossa otimização usando essas porcentagens e, mais uma vez, usaremos a análise walk-forward para testar esta versão do sistema.
Tomados em conjunto, as fases 2 a 4 compreendem o gerenciamento comercial, mas há um passo mais crítico:
Fase 5: análise de Monte Carlo e mdash; Muitos comerciantes param após a Fase 4. No entanto, nossos testes não estão completos naquele momento e o sistema não está pronto para a implantação (assumindo que é lucrativo). Apesar da nossa análise progressiva, não podemos ter certeza de que nossos resultados não são por causa da sorte. Em outras palavras, nosso modelo pode não descrever com precisão o comportamento do mercado; resultados favoráveis podem ter beneficiado de um ambiente de mercado cuja ação de preço acabou de coincidir com nossa lógica. A análise de Monte Carlo ajudará a determinar se nosso modelo foi bem sucedido devido à sorte (aleatoriedade) ou à sua capacidade de identificar e explorar um padrão de mercado real.
Este artigo abordará a Fase 1; Os artigos subsequentes abordarão as Fases 2 a 5.
YPY - sistema de negociação automatizado e desenvolvimento de consultores especializados.
IPA Investments LTD - especializa-se em desenvolvimento de software inovador sob a marca YPY no campo da negociação algorítmica para suas próprias necessidades, bem como na implementação de objetivos de clientes corporativos.
1. Produtos pagos - para todos os indivíduos, que utilizam depósitos de 10 mil para um milhão de dólares para negociação.
2. Produtos pagos da empresa - para todos os clientes institucionais, que utilizam depósitos de um milhão de dólares ou mais.
3. Uma ampla gama de produtos absolutamente gratuitos - para todos os usuários, que usam depósitos de menos de 10 mil dólares americanos para negociação.
Nossos engenheiros qualificados (não freelancers) desenvolvem um novo sistema de negociação YPY de alta tecnologia que, em regra, usa uma grande quantidade de estratégias diferentes para negociação em um nível virtual. No coração de quaisquer algoritmos de negociação que usamos, sempre usamos apenas estratégias viáveis que asseguram um comércio seguro e estável durante períodos futuros. A base para o comércio estável no futuro é a viabilidade das estratégias, porque os resultados dos testes no histórico anterior não podem garantir isso. Desenvolvemos uma técnica especial de know-how e software proprietário para analisar a viabilidade de cada estratégia. Para cada sistema comercial, criamos uma base de vários milhões a vários trilhões de estratégias diferentes. Selecionamos regularmente as estratégias mais relevantes para o mercado atual a partir desta base e criamos o portfólio diversificado mais efetivo com a correlação mínima que o sistema comercial usa. Este é um trabalho muito sério que só é possível se usarmos nossas tecnologias de know-how e software especializado que não possui análises e requer muito tempo e dinheiro.
Geralmente, essa etapa leva cerca de um ano.
Nossos especialistas realizam vários testes e depuração do sistema de negociação automatizado em nossos servidores com o objetivo de criar uma versão PRO especial do produto para testes abertos.
Normalmente, esta etapa leva cerca de 3-6 meses.
Nós declaramos o teste aberto deste novo sistema de negociação automática YPY gratuitamente para qualquer um. Em regra, vários milhares de usuários usam isso por vários meses. Isso nos permite encontrar e corrigir erros rapidamente e melhorar significativamente a estabilidade e a eficiência da negociação.
Normalmente, esta etapa leva cerca de 3-12 meses.
Publicamos três versões (Basic, PRO, ELITE) de cada novo sistema de negociação YPY no mercado. As versões PRO e ELITE são pagas, enquanto a versão ELITE é criada especificamente para o gerenciamento de grandes recursos e possui funcionalidades expandidas. Definimos o custo mínimo de aluguel para a versão PRO pela primeira vez. Um usuário pode tentar versão básica gratuita com a mesma funcionalidade para obter a idéia do produto.
Oferecemos condições individuais para clientes institucionais, incluindo cooperação em termos de pagamento somente após o cliente receber lucro com base nos resultados do comércio (se não tivesse lucro, não há pagamentos).
Todos os nossos produtos pagos não estão disponíveis para compra, eles só estão disponíveis para aluguel. Somente o aluguel fornece um compromisso entre os interesses dos usuários e desenvolvedores. Como o desenvolvedor está interessado no desenvolvimento ativo e finalizando o produto de acordo com as mudanças atuais do mercado.
Geralmente, essa etapa leva pelo menos dois anos.
Depois que o sistema de negociação automatizado YPY acumulou sérias estatísticas comerciais, começamos a considerar as propostas de bancos bem conhecidos e hedge funds que desejam obter uma licença exclusiva. Se tomarmos a decisão de emitir uma licença exclusiva, então removemos o produto de uso público. Apenas os usuários ativos de ELITE têm a capacidade de continuar a usar o sistema de negociação individualmente após a sua remoção do uso público (no caso da emissão de uma licença exclusiva).
1. Perda de proteção real e níveis de lucro para todos os pedidos reais abertos. Em regra, tentamos usar níveis baixos de perda de parada (dez vezes menor do que os níveis de lucro)
2. Níveis virtuais individuais de stop-loss e take-profit para todos os pedidos virtuais abertos.
3. Fechamento automático forçado de posições e operação de parada em caso de detecção de movimentos perigosos anormais de preços de mercado.
4. Fechamento automático forçado de posições em caso de ultrapassar os limites de volatilidade aceitáveis para a lógica de negociação.
5. Fechamento automático de pedidos virtuais quando uma estratégia virtual excede sua redução máxima permitida. Isso funciona para cada estratégia virtual de forma independente.
6. Controle automático de expansão de expansão adaptativa, que não permite abrir novas encomendas em condições comerciais inadequadas.
7. Ativação automática do & quot; PauseTrade & quot; modo se o tamanho real da alavanca for menor que o tamanho permitido.
8. Ativação automática do & quot; PauseTrade & quot; modo em caso de detecção de margem de nível inferior ao tamanho aceitável.
9. A capacidade para o usuário (se desejado) para além disso, limitar manualmente o tamanho da redução total máxima permitida para ordens abertas.
1. Nunca elogiamos nossos produtos e não prometem montanhas de lucro porque sabemos que o mercado não é previsível.
2. Não seguimos as práticas padrão dos desenvolvedores: tire dinheiro primeiro, e só então permite que você use o software em modo completo. Por esse motivo, publicamos absolutamente gratuitamente nossos novos especialistas, que os resultados dos testes superaram muitos conselheiros pagos.
apenas para usuários institucionais (comerciantes institucionais, empresas comerciais de propriedade, gestores de ativos e CTAs, hedge funds, bancos, corretores)
Caros usuários, se você controla ativos com volume de cem mil dólares ou mais, estamos prontos para fornecer as modificações especiais do complexo de negociação YPY EA Amet ELITE, YPY EA Immortalis ELITE e YPY Math Catcher ELITE para testes gratuitos.
Se você está interessado, por favor escreva-nos por email.
20 de dezembro de 2017.
0 de setembro de 201 6.
23 de dezembro de 2018.
Publicamos um artigo sobre testes do YPY EA Fulgur neste blog MQL.
19 de outubro de 2018.
Publicamos um artigo sobre o teste do YPY Code Protector neste blog MQL.
Pela primeira vez, abrimos uma segunda geração de um complexo de negociação "Virtual Collider Auto NG & quot; para uso público em contas especializadas Roboforex com execução de mercado.
Começamos uma discussão sobre testar a versão SE do analisador Check Your Broker neste fórum.
Publicamos um artigo sobre testes do analisador Check Your Broker (versão SE) neste blog MQL.
Começamos uma discussão sobre testar a versão SE do assistente comercial do Collider Virtual Manual neste fórum.
Publicamos um artigo sobre o teste do manual de Collider Virtual Virtual (versão SE) neste blog MQL.
Começamos uma discussão sobre testar a versão Pro do indicador Sensvol2018 neste fórum.
Publicamos um artigo sobre o teste do indicador Sensvol2018 (versão Pro) neste blog MQL.
Começamos uma discussão sobre o teste da versão Pro do robô comercial YPY EA Tekvilidy neste fórum.
Começamos uma discussão sobre o teste da versão Pro do robô comercial YPY EA Classic neste fórum.
Publicamos um artigo sobre testes do YPY EA Tekvilidy (versão Pro) neste blog MQL.
Publicamos um artigo sobre o teste do YPY EA Classic (versão Pro) neste blog MQL.
Publicamos um artigo sobre o teste do indicador Atlantis2018 (versão Pro) neste blog MQL.
Começamos uma discussão sobre o teste da versão Pro do indicador Atlantis2018 neste fórum.
11 de fevereiro de 2018.
Desenvolvemos um módulo para visualização de trocas de amostra no gráfico de histórico do indicador metatrader Atlantis (YPY)
Desenvolvemos um módulo de análise exclusivo para detectar automaticamente o melhor tamanho da perda de parada e Tire lucro para o indicador Atlantis (YPY)
Desenvolvemos um algoritmo melhorado que aumenta a estabilidade do comércio para o robô comercial YPY.
Desenvolvemos um algoritmo de múltiplas moedas para o primeiro indicador de metatrader da versão Atlantis (YPY)
Começamos a desenvolver um algoritmo de múltiplas moedas para o novo indicador Atlantis (YPY)
Nós desenvolvemos um algoritmo de múltiplas moedas para o consultor especial da YPY com parâmetros totalmente adaptativos (volatilidade atual do mercado)
Começamos a desenvolver um algoritmo de múltiplas moedas para o nosso YPY EA.
Desenvolvemos um algoritmo para a primeira versão YPY metatrader expert adviser (para um único par de moedas EURUSD)
Obrigatório FOREX Disclaimers:
O comércio Forex é especulativo, envolve um risco substancial e não é adequado para todos os investidores. considere a adequação da negociação Fore x / Futures antes de tomar qualquer decisão de investimento. O desempenho passado não é necessariamente indicativo de resultados futuros. A negociação de câmbio em margem comporta um alto nível de risco e pode não ser adequada para todos os investidores. O alto grau de alavancagem pode funcionar contra você, bem como para você. Antes de decidir trocar câmbio você deve considerar cuidadosamente seus objetivos de investimento, nível de experiência e apetite de risco. Existe a possibilidade de que você possa sustentar uma perda de algum ou todo seu investimento inicial e, portanto, você não deve investir dinheiro que não pode perder. Você deve estar plenamente consciente de todos os riscos associados à negociação cambial.
Desenvolvimento Automatizado do Sistema de Negociação com MATLAB.
Stuart Kozola, MathWorks.
Quer aprender como criar um sistema de negociação automatizado que pode lidar com várias contas de negociação, várias classes de ativos e comércio em vários locais de negociação? Simultaneamente?
Neste webinar, apresentaremos um exemplo de fluxo de trabalho para pesquisar, implementar, testar e implementar uma estratégia de negociação automatizada, oferecendo a máxima flexibilidade no que e com quem você troca. Você aprenderá como os produtos MATLAB® podem ser usados para coleta de dados, análise e visualização de dados, desenvolvimento e calibração de modelos, teste de retorno, teste avançado, integração com sistemas existentes e, finalmente, implantação para negociação em tempo real. Examinamos cada uma das partes neste processo e veremos como o MATLAB fornece uma plataforma única que permite a solução eficiente de todas as partes desse problema.
Temas específicos incluem:
Opções de coleta de dados, incluindo dados diários históricos, intradiários e em tempo real Construção de modelos e prototipagem em MATLAB Teste e calibração de um modelo Teste avançado e validação do modelo Interação com bibliotecas e software existentes para execução comercial Implementação da aplicação final em vários ambientes, incluindo JAVA e Excel Tools para comércio de alta freqüência, incluindo computação paralela, GPUs e geração de código C do MATLAB.
Foco no produto.
Outros recursos.
Não iremos vender ou alugar suas informações pessoais de contato. Veja nossa política de privacidade para obter detalhes.
Você já iniciou sessão na sua Conta MathWorks. Por favor, pressione o & # 34; Enviar & # 34; botão para completar o processo.
Produtos relacionados.
Vídeos e Webinars relacionados.
Escolha o seu país.
Escolha o seu país para obter conteúdo traduzido, quando disponível, e veja eventos e ofertas locais. Com base na sua localização, recomendamos que você selecione:.
Você também pode selecionar um local da seguinte lista:
Canadá (Inglês) Estados Unidos (Inglês)
Bélgica (Inglês) Dinamarca (Inglês) Deutschland (Deutsch) España (Español) Finlândia (Inglês) França (Français) Irlanda (Inglês) Italia (Italiano) Luxemburgo (Inglês)
Holanda (Inglês) Noruega (Inglês) Österreich (Deutsch) Portugal (Inglês) Suécia (English) Suíça Deutsch English Français Reino Unido (Inglês)
Ásia-Pacífico.
Austrália (Inglês) Índia (Inglês) Nova Zelândia (Inglês) 中国 (简体 中文) 日本 (日本語) 한국 (한국어)
Explore produtos.
Experimente ou compre.
Aprenda a usar.
Obter Suporte.
Sobre o MathWorks.
Acelerando o ritmo da engenharia e da ciência.
MathWorks é o principal desenvolvedor de software de computação matemática para engenheiros e cientistas.
Lunarpages Web Hosting.
Fale Conosco 877-586-2772 877-586-7207 - Sales Intl. 714-521-8150 Suporte - Opção 1 Chat ao vivo com vendas Siga-nos Facebook Twitter Google Plus.
Entre em contato com o suporte 877-586-2772 - Suporte ao bate-papo ao vivo com vendas Siga-nos Facebook Twitter Google Plus / ul>
Nós lamentamos!
Esta conta não está disponível no momento.
Isso pode ser por muitas razões, incluindo um problema de excesso de largura de banda ou um problema de uso de recursos. Verifique o endereço de e-mail no registro para esta conta para obter uma notificação da Lunarpages.
Se você é o proprietário desta conta, entre em contato conosco por e-mail em support @ lunarpages ou via Lunarpages Helpdesk em support. lunarpages.
Cloud Hosting.
O Lunarpages agora oferece planos Cloud Hosting que permitem aos clientes controlar seus recursos e pagar com base no que eles usam. Com a rápida implantação de serviços de computação, hardware de alto desempenho e nossa equipe especializada de profissionais de TI, o Cloud Hosting da Lunarpages pode dar ao seu negócio a vantagem de competir no mercado.
Programa de Afiliados.
A Lunarpages oferece uma oportunidade emocionante para nossos clientes existentes que se inscrevem no nosso programa exclusivo de afiliados. O Programa de afiliados Lunarpages funciona como um serviço de referência, onde recompensamos você apenas por divulgar a boa palavra sobre Lunarpages Internet Solutions, referindo seus amigos, familiares, clientes, colegas de trabalho, de fato absolutamente qualquer um para usar nossos serviços. Nos últimos 10 anos, pagamos cerca de 5 milhões de dólares em comissões! Nosso programa de afiliados é gratuito e, quando você compra hospedagem de Lunarpages, você está automaticamente matriculado.
LINKS RÁPIDOS.
Lunarpages | 1908 N. Enterprise St. | Orange, CA 92865 | 877-586-2772 | 714-521-8150.
& copy; 2000 - 2017 Add2Net, Inc. "Lunarpages", "Add2Net", "Símbolo Lunar" e "Intelligent Web Hosting" são marcas comerciais ou marcas registradas da Add2Net, Inc.
Todos os direitos reservados. É proibido o uso não autorizado.
Desenvolvimento de sistema de negociação automatizado baseado em nuvem com aprendizado de máquina.
Este artigo é o projeto final apresentado pelos autores como parte de seus cursos em Programa Executivo em Negociação Algorítmica (EPAT) na QuantInsti.
Derek começou sua carreira no chão do CBOT, em seguida, mudou-se para se concentrar em negociação proprietária e desenvolvimento de estratégia. Ele gerencia portfólios globais de várias estratégias, focando no espaço de futuros e opções. Atualmente, é Diretor Adjunto de Negociação Sistemática da Foretrade Investment Co Ltd.
No final do Programa Executivo em Palestras de Negociação Algorítica (EPAT), Derek e eu estávamos passando uma quantidade significativa de tempo trocando pontos de vista sobre uma variedade de mídia. Nós discutimos idéias para um projeto, e os mesmos temas nos despertaram. Primeiro, estávamos interessados em lidar com futuros e não com instrumentos de caixa. Em segundo lugar, nós dois tivemos uma experiência sólida usando R para pesquisas quantitativas e interessados em deixar nossas mãos sujas no lado da execução, especialmente na implementação de estratégias orientadas a eventos em Python (que nenhum de nós sabia antes do programa EPAT) . Terceiro, passamos horas conversando e avaliando o desempenho da Aprendizagem de Máquinas para aplicações comerciais e ficamos bastante ansiosos para tentar nossas idéias. Finalmente, estávamos muito interessados em design de arquitetura prática, particularmente no que era a melhor maneira de gerenciar as necessidades de recursos variáveis de qualquer estrutura de Aprendizagem em Máquina (treinamento versus avaliação).
O escopo do nosso projeto, portanto, surgiu naturalmente: o desenvolvimento de um sistema de negociação automatizado totalmente baseado na nuvem que alavancasse algoritmos de execução simples, rápidos de reversão ou de tendência e chamasse a tecnologia de aprendizado de máquina para alternar entre estes.
Descrição do Projeto.
A classe de aprendizagem da máquina do programa EPAT apresentou o uso de uma Máquina de Vetores de Suporte e evidenciou como melhorou um pouco melhor do que um modelo GARCH na previsão de volatilidade. A literatura sugeriu que os modelos das Redes Neurais Recorrentes poderiam ser ainda melhores nas circunstâncias adequadas [1], e que os modelos de combinação ("modelagem de espessura") podem mitigar as preocupações sobre-ajustadas [2]. Isso realmente foi uma perspectiva atraente, mas o nosso uso de estruturas ML (principalmente e1071, caret e nnet para R, e o excelente scikit-learn ou o pirein mais fácil em Python) deram luz sobre um problema-chave: gerenciamento de recursos. A fase de aprendizagem da maioria dos modelos pode ser dolorosamente longa em um computador desktop de médio alcance, e o tamanho total da maioria dos conjuntos de dados absorverá uma quantidade considerável de RAM. Um PC relativamente alto, por exemplo, provavelmente faria razoavelmente bem usando otimização de GPU. No entanto, isso traria mais desafios além do custo: administrar esse sistema é uma arte em si mesma, e uma que não tivemos experiência. Além disso, a maioria das bibliotecas mencionadas acima pode ser complicada para configurar corretamente; Isso é particularmente problemático para a pesquisa de aprendizagem em máquina, pois os coeficientes dos neurônios, por exemplo, não possuem valores salientes que podem ser facilmente verificados pela sanidade. Um modelo que funciona mal tem causas potenciais suficientes para não adicionar uma camada de administração de amadores, especialmente em nossa escala.
Figura 1: Pilha de Tecnologia.
Nossa arquitetura é relativamente simples e foi projetada para viver em servidores remotos. Após a seqüência de inicialização quando os dados históricos do mercado são puxados, um processo de cronometrista desencadeia uma atualização do desvio padrão e padrão [3], juntamente com uma atualização incremental da barra de dados de minutos. A cada 5 minutos, ele ativará uma chamada da pilha de aprendizado da máquina para obter uma avaliação dos próximos 5 minutos. Os dados transmitidos do corretor são enfileirados e processados pelo manipulador para atualizar todos os principais parâmetros de negociação. Uma estratégia muito simples avalia continuamente os sinais: se a pilha de aprendizagem da máquina indicou um regime de tendências, ele observará um limite de Z-Score como uma tendência inicial, caso contrário, ele irá para um comércio de reversão média. Os sinais estão em fila onde a execução da ordem irá buscá-los e "ingenuamente" processar ordens. Praticamente, a execução executa uma ordem limite na oferta (longa) ou pergunte (curta) e aguarde um ack (as mensagens ack são inseridas em uma terceira fila quando capturadas pela API do corretor). Se um ack não for detectado dentro de um parâmetro de tempo limite, a ordem é considerada obsoleta e cancelada se for uma ordem de posição inicial ou alterada para uma ordem de mercado se for uma tomada de lucro ou uma ordem de parada. Os preenchimentos inferidos de acks são adicionados ao monitor plot. ly (traçado de fluxo externo do stream).
Figura 2: monitoramento gráfico em tempo real, com execução comercial e indicadores.
Não divulgaremos os detalhes completos do modelo de aprendizagem da máquina, mas o princípio geral é que temos dois "hemisférios" treinados separadamente para prever condições de variação ou tendência. Cada hemisfério possui três modelos diferentes com parâmetros específicos, e cada lado examina seus modelos para decidir sobre as próximas condições. No caso de ambos os lados discordarem (por exemplo, condições de "intervalo" e "tendência" detectadas), a pilha avalia os parâmetros de confiança dos modelos a serem decididos.
Figura 3: Visão geral da pilha de aprendizado de máquina.
Figura 4: Distribuição de resultados fora da amostra.
Um dos recursos muito agradáveis sobre o Azure Machine Learning Studio é que ele permite o desenvolvimento de funções personalizadas. No nosso caso, desenvolvemos uma metodologia de pesquisa simples para pesquisar ambos os "hemisférios" e, caso ocorram inconsistências, acompanhar o lado cuja confiança foi coletivamente mais alta.
R Snippet 1: dispositivo de polling simples, conectado à rede Azure Stack.
Em alguns casos raros, nenhum dos lados conclui a um sinal, caso em que não fazemos nada por 5 mn. A escolha deste 5 mn não foi totalmente arbitrária, mas sim um compromisso educado entre nossa visão sobre um ambiente de negociação "estável" (mesmo temporariamente) e os períodos definitivos definitivos do WTI [4] (o pacote wavelet foi bastante útil).
Figura 5: Vista Wavelet (espectral) dos preços WTI.
O desempenho fora da amostra foi um impressionante 74%, com a ressaltação muito importante de que nossa amostra foi limitada a 6 meses de barras de 1 minuto. O código R para contornar dados faz parte do repositório github e, essencialmente, converte uma série em indicadores "padrão" (SMA, LMA, RSI, ATR, etc.) para os 5 mn anteriores em apenas 50 pontos de dados (entrada) + 1 saída. Treinamento no framework Azure é rápido e a interface brilhante facilita a inclusão no código personalizado em python ou R. Ir do treinamento para uma API RESTful ao vivo é bem-vinda e o tempo de resposta claramente abaixo de 100ms.
R Snippet 2: função Eyeball para gerar as Figuras 6 e amp; 7.
Desenvolvimento de Estratégia de Negociação.
Determinamos três princípios orientadores que mantivemos durante o desenvolvimento de nossa estratégia. Principalmente, precisávamos de uma estratégia que dependesse significativamente e aproveitasse a arquitetura de aprendizagem de máquinas. Em segundo lugar, precisávamos da estratégia para realizar de tal forma que a análise empírica do desempenho de diferentes estados de regime nos permitisse julgar a própria estratégia de negociação, mas também ver se o aprendizado da máquina estava funcionando bem em tempo real. Finalmente, é claro, com todas as estratégias de negociação, queríamos que fosse lucrativo.
As complexidades inatas da nossa arquitetura de aprendizagem de máquinas nos levam a permanecer relativamente simplistas em nossa estratégia comercial. Isso foi essencial por várias razões, a lógica de negociação simplificada nos permitiu evitar armadilhas clássicas de desenvolvimento de estratégias. Por exemplo: sobre montagem, limitando graus de liberdade, erros de lógica de confusão e contaminação de dados. Ao executar vários tipos diferentes de treinamento e testes de volta, primeiro para a arquitetura de aprendizagem de máquinas, então o desenvolvimento da lógica de negociação em si representou duas vezes mais oportunidades para cair nas armadilhas clássicas de desenvolvimento de estratégias.
O sistema de negociação é baseado na inferência estatística frequente para nossos cálculos. Decidimos usar uma medida estatística simples, o Z-score como base de nossa estratégia. Esta é uma fórmula estatística padrão extremamente simples. A razão para isso é porque não queremos que a complexidade adicional surgisse da combinação da estrutura ML mais nosso modelo de lógica comercial.
Python Snippet 1: trecho da fórmula z-score.
Processo de disparo de entrada.
A condição da nossa entrada baseava-se simplesmente em dois fatores, principalmente o estado do regime de mercado de aprendizado de máquina e uma condição de gatilho gerado por Z.
Tabela 1: matriz lógica de condição de entrada.
Python Snippet 2: condição de gatilho da lógica de negociação.
Nosso raciocínio para o uso de lógica de gatilho simétrico simples é o seguinte. Ao manter o método mais simples e absoluto para o desencadeamento, podemos maximizar nossa dependência da aprendizagem da máquina. Se o regime de mercado for incorreto devido à natureza simplista do gatilho, a quantidade de alfa independente gerada deve ser próxima de 0 ou negativa se você incluir fricções de mercado. Isso faz com que o pressuposto de que os mercados para curtos períodos de dados de alta freqüência são um Processo de Movimento Browniano Geométrico (GBM), e. Caminhada aleatória.
Se o aprendizado da máquina pode detectar quando esse não é o caso e há alguma distribuição onde as caudas são divergentes de uma distribuição log-normal, então podemos gerar alfa. Por exemplo, temos três estados de regime: tendência, alcance e nada. Se o GBM for verdade, a série temporal deve estar em nada ou no alcance. Isso é esclarecido pela Figura 4, no entanto, mostramos que uma parcela estatisticamente significativa do tempo é gasto na área de tendências. O que mostraria que as séries temporais têm variação na kurtosis e volatilidade estocástica. Isso leva a áreas onde podemos gerar alfa a partir de estratégias de tendências devido ao excesso de curtose. No entanto, um escore Z padrão é incapaz de discernir esses diferentes regimes de séries temporais e faz a suposição de uma distribuição normal. Portanto, o gatilho de negociação pode tornar-se lucrativo se e somente se a arquitetura de aprendizagem da máquina puder discernir com precisão o estado do regime de mercado.
Esta estratégia também inclui o mesmo tipo de premissas que estão presentes em nossa máquina aprendendo dois hemisférios, que em diferentes regimes devemos ter dois tipos de distribuições de preços de mercado. Um seria mais leptokurtic e levaria a caudas mais gordo, marcando um regime de tendência. O outro seria um platykurtic mais normal ou mesmo com caudas comparativamente mais finas, levando a um regime de alcance.
O escore Z assumiria uma distribuição normal, o que significa que toda a atividade segmentável que procuramos aproveitar está nas caudas. Portanto, usando um gatilho de Z-score, podemos simplesmente fazer isso e ter apenas pontos de gatilho no que julgamos ser valores extremos, buscando aproveitar as diferentes condições da cauda. Nosso ponto de gatilho de parâmetro foi qualquer pontuação Z entre 2 e 2,5 (Z_THRESH e Z_THRESH + Z_THRESH_UP)
Nossas saídas são extremamente simples, dado os nossos principais objetivos. Usamos dois tipos de condições de saída. Para o regime de "gama", significa que as negociações de reversão são usadas como um Z-score maior que o nosso Z_TARGET para longos ou baixos para shorts. Esperamos uma atividade de reversão média que seria um escore Z de 0, mas nós temos um intervalo um pouco maior para fechar uma posição de +/- 0,2 nos nossos parâmetros. Nós também temos uma parada adicional de 4 carrapatos, isso foi usado para ambos os sistemas. No entanto, o comércio de tendências foi a única condição de saída.
Parâmetros.
Nosso conjunto de parâmetros foi tomado diretamente da suposição de distribuição normal. Estes são controlados por um arquivo de configuração separado em nossa arquitetura, o que facilita a modificação. Utilizamos um limite de Z-score (Z_THRESH) de 2 e limitado a 2.5 (Z_THRESH + Z_THRESH_UP). É por isso que não tentamos entrar em comércios que já divergiram extremamente longe. O STOP_OFFSET está em tiques para uma parada final, e Z_TARGET é Z-score de 0,2 onde fechamos posições de reversão médias em torno da média.
Python Snippet 3: parâmetros da lógica de negociação.
Como o projeto foi?
Os parâmetros que utilizamos levam a uma curva 14x-16x por hora (7-8 voltas redondas). É significativo, especialmente se estiver olhando o número de uma perspectiva nominal: é aproximadamente 16,5MUSD nominal negociado todos os dias, em cerca de 5KUSD de margem (o último, no entanto, é o único parâmetro interessante da perspectiva ROE)
A estratégia foi bastante bem: 45% ganhou cerca de 1,8 tiques por contrato, 29% de perdas em torno de 1,7 carrapatos por contrato e 26% de risco. No entanto, o lucro médio, em ca. 0.32 tick por troca de ida e volta deve ser colocado em perspectiva com o 1.42USD que o IB nos cobra para cada comércio [5]; A economia dos comerciantes de varejo é difícil. O lucro líquido de 3,2USD para taxas de corretagem e câmbio de 2,84 USD renderia um retorno teórico de 20% a 30% na margem lançada. Isso pode parecer impressionante, mas, dada a alavancagem envolvida, não compensa quase a perda potencial que poderia surgir de condições de mercado imprevistas e estranhas (pico ligado a anúncios, quedas de liquidez) e ainda menos para riscos operacionais (quebra de erro ou sistema) . Além disso, não está claro que poderíamos ter escalado a estratégia o suficiente para fazer retornos que valem alguns investimentos "verdadeiros" sem uma derrapagem significativa.
Por outro lado, os custos dos recursos eram ridiculamente baixos: a micro instância da AWS é gratuita durante um ano, e dado o levantamento pesado (ML) é feito no azul, que era o poder de processamento suficiente para nós, e a pilha Azure aparece abaixo de 10USD / m ("assento" e, em seguida, 50ct para 1000 chamadas API)
Conclusão.
No que diz respeito ao comércio, nossas três principais conclusões são:
O software como serviço de aprendizagem de máquina faz sentido absoluto sempre que possível. O tempo de resposta em 50ms-100ms é um limite claro, mas o investimento incremental e o risco operacional para entrar nessa marca são muito significativos. Para qualquer aplicação de horizonte mais longo, a tecnologia e o Azure ML Studio da Microsoft, em particular, merecem ser explorados. Ainda é possível ganhar dinheiro com negociação automatizada com recursos limitados, mesmo em direitos autorais. No entanto, as taxas de câmbio / corretagem podem rapidamente corroer ou mesmo cancelar lucros. O programa Incentivo / Nível é de importância primordial para que tais estratégias sejam lucrativas. E sim, isto está afirmando o óbvio, mas agora temos uma experiência de primeira mão. Entre a pesquisa óbvia e a parte de codificação, engenharia de conceitos abstratos em objetos e códigos acionáveis é provavelmente mais arte do que ciência. Existe um prémio claro para ter uma experiência real (e falhas) sob o cinto naquela área.
Recomendações para futuros alunos / codificadores:
Explore as bibliotecas e obtenha uma compreensão completa do que eles podem / vão fazer. O IBPY, por exemplo, tem o mérito de simplesmente existir. A documentação é quase inexistente, mas tem um grande número de wrappers chamando todas as funcionalidades da API. As possibilidades são que acabamos reescrevendo algumas funcionalidades que existiam (e quando fizemos, nossa implementação provavelmente será a pior) "Um jogo de xadrez é como um combate de espadas, você deve pensar primeiro antes de se mudar" - Wu-Tang Clan . Esta antiga sabedoria definitivamente também se aplica ao desenvolvimento, especialmente quando as classes e a concorrência estão envolvidas. Como não tínhamos experiência de tal desenvolvimento ou projetando arquitetura de software, começamos por hackear o projeto James Ma "High Frequency". É seguro dizer que quase nada resta do excelente trabalho de James em nosso projeto; Trabalhar em torno de limitações induzidas pelas diferenças do escopo sempre terminou eventualmente em blocos e refatoração. No final, teríamos economizado muito tempo pensando mais sobre blocos conceituais e depois trabalhando para eles desde o início (com a advertência de que, na época, não tínhamos idéia de como fazer isso, e o trabalho de Jame era um bom bootstrap ). Ironicamente, nossa arquitetura final se parece muito com a arquitetura de sistema 101 da Quantinsti. A maioria de nossos R / Python no trabalho envolve fluxo de trabalho seqüencial, desenvolvido iterativamente. Os sistemas de negociação envolvem dados que são transmitidos das trocas, sendo as ordens pressionadas com base em sinais, confirmações ou ordens, etc. Em retrospectiva, isso, é claro, grita "threads" e "concorrência", mas James (muito bem) conseguiu manter a sua trabalho seqüencial e confia apenas em aulas. Isso não funcionou para nós, e agravado com a questão mencionada levou à primeira refatoração (sem sucesso, já que apostamos na biblioteca errada para o trabalho: threading). Nós incentivamos qualquer pessoa que olhe para o Python para negociar para cavar em asyncio se alguém estiver usando o python 3.5 ou concorrente. Funções que também são devolvidas para 2,7 (nós usamos o posterior). Agora, o multiprocessamento tem seus próprios desafios frustrantes: o thread morrendo em silêncio, (não) objetos thread-safe, etc. e geralmente é um paradigma de design muito diferente. No lado positivo, é incrivelmente gratificante quando funciona, o Quality Assurance é provavelmente o aspecto menos sexy do desenvolvimento. É também o que temos e vamos investir muito tempo de aprendizagem / leitura. Esta não é uma habilidade que é tão crítica em um ambiente de tipo caderno, porque a depuração pode ser realizada em grande parte, uma um passo de cada vez. Claro, quando vários segmentos interagem com dados de várias fontes, esta é uma situação muito diferente. Escrever declarações de impressão em todos os lugares não vai cortá-lo, e tanto o log e o rastreamento são bibliotecas muito vale a pena investir tempo. Para ser justo, nenhum deles é particularmente intuitivo (nem o uso da classe Exception, por sinal), mas a tentativa sistemática / exceto e Os pontos de registro realmente são um salvavidas O antigo "sentir a dor agora ou sentir a dor mais tarde" é especialmente apático quando se trata de desenvolvimento. O uso de classe e outra taxonomia menos do que intuitiva de objeto e processo é uma espada de dois gumes. A maioria das classes e funções não serão diretas para testar e tentar testar funcionalidades básicas (digitação correta de saída, por exemplo) em um teste integrado é uma receita para o desastre. Acabamos usando o muito agradável __main__ python semântico para "encalhar" as classes individuais com o básico necessário para executar, como unidade de um homem pobre (outra biblioteca não-sexy que é realmente crítica). No final, o tempo necessário para desenvolver características de teste não é insignificante (nós assumimos que poderia ter sido em torno de 20%), mas é um uso muito bom do recurso. Um bom exemplo é que não construímos um simulador de mercado. Essa foi uma decisão que tomamos com base no interesse limitado que tínhamos negociado muito com o IB (devido em grande parte às restrições contratuais) e, francamente, nas habilidades que tivemos no início. Esta foi uma decisão muito má a partir de uma perspectiva de tempo sozinha: a seqüência de inicialização para se registrar no IB é de aproximadamente 20 segundos de duração. Contabilizando um sinal para acontecer, este é provavelmente um mínimo de 30 segundos, que em uma sequência de desenvolvimento de 4 horas pode exigir 20 a 30 reinicializações. Conservativamente, 10-20 minutos de tempo desperdiçado ou 5% -10% ou perda de produtividade. Isso é antes mesmo de poder testar situações específicas em vez de esperar que aconteça uma, e não há dúvida em nossa mente de que mesmo morder a bala no meio do caminho ainda teria sido bastante benéfico (incluindo o ajuste de parâmetros).
Em termos gerais, esta foi a chave para levar: conseguir um projeto feito com 80% é a parte fácil e divertida. O difícil e tedioso é o último 20%, e é também o que as habilidades reais importam (especialmente na garantia de qualidade).
Ganhamos muito no processo e agradecemos aos professores por sua ajuda e orientação. Não planejamos manter a divulgação pública do programa, atendendo às nossas respectivas limitações contratuais, mas planejamos trabalhar novamente novamente no curto prazo.
Referências.
[1] Modelos de séries temporais não lineares em Finanças empíricas & # 8211; Philip Hans Franses, Dick van Dijk; Previsão de mudança de direção usando uma rede de neurônios recorrente baseada em volatilidade - Stelio Bekiros e Dimitris Georgoutsos.
[2] Combina os classificadores melhor do que escolher o melhor - Saso Dzeroski e Bernard Zenko; Métodos do conjunto popular: um estudo empírico - D Opitz e R. Maclin.
[3] Para o desvio padrão, utilizamos o estimador imparcial (R Almgren - Time Series Analysis e Statistical arbitrage, NUY)
[4] Análise de Multi-Resoluções Wavelet da Série de Tempo Financeiro - M. Ranta.
[5] As comissões de varejo seriam corretoras de 0,85 USD mais 1,45 USD para taxas de câmbio da NYMEX. No entanto, no âmbito do programa Tiered volume de NYMEX / CME e IB, as taxas provavelmente seriam 0.65USD e 0.77USD por comércio, respectivamente.
Próximos passos.
Para mais desses projetos de estudantes, verifique Statistical Arbitrage Strategy usando R. Se você é um codificador ou um profissional de tecnologia que procura iniciar sua própria mesa de negociação automatizada. Aprenda a negociação automatizada de palestras interativas ao vivo por praticantes diários. Programa Executivo em Negociação Algorítmica abrange módulos de treinamento como Statistics & amp; Econometria, Computação Financeira e Tecnologia e Algorítmica e Negociação quantitativa. Inscreva-se agora!
Posts Relacionados:
Um pensamento sobre "Desenvolvimento de sistema de negociação automatizado baseado em nuvem com aprendizado de máquina"
Foi muito útil para mim. Continue compartilhando essas ideias no futuro também. Este foi realmente o que eu estava procurando, e fico feliz em vir aqui! Obrigado por compartilhar essa informação conosco.
No comments:
Post a Comment