Tuesday 28 November 2017

Trading System Design And Optimization


Design de sistema de negociação de alta freqüência e gerenciamento de processo Design de sistema de negociação de alta freqüência e gerenciamento de processo Conselheiro: Roy E. Welsch. Departamento: Programa de Design e Gestão de Sistemas. As empresas comerciais hoje em dia são altamente dependentes de mineração de dados, modelagem de computador e desenvolvimento de software. Os analistas financeiros executam muitas tarefas semelhantes às do software e das indústrias transformadoras. No entanto, o setor financeiro ainda não adotou completamente padrões de engenharia de sistemas de alto padrão e abordagens de gerenciamento de processos que tiveram êxito nas indústrias de software e manufatura. Muitas das metodologias tradicionais para o projeto do produto, o controle de qualidade, a inovação sistemática, ea melhoria contínua encontrada nas disciplinas da engenharia podem ser aplicadas ao campo das finanças. Esta tese mostra como o conhecimento adquirido de disciplinas de engenharia pode melhorar a gestão de projetos e processos de sistemas de negociação de alta freqüência. Sistemas de negociação de alta freqüência são baseados em computação. Estes sistemas são sistemas de software automáticos ou semi-automáticos que são inerentemente complexos e requerem um alto grau de precisão de projeto. O design de um sistema de negociação de alta freqüência vincula vários campos, incluindo finanças quantitativas, design de sistemas e engenharia de software. No setor financeiro, onde as teorias matemáticas e os modelos comerciais são relativamente bem pesquisados, a capacidade de implementar esses projetos em práticas comerciais reais é um dos elementos-chave da competitividade das empresas de investimento. A capacidade de converter idéias de investimento em sistemas de negociação de alto desempenho de forma eficaz e eficiente pode dar uma empresa de investimento uma vantagem competitiva enorme. (Cont.) Esta tese fornece um estudo detalhado composto por alta freqüência sistema de comércio design, modelagem de sistemas e princípios e gestão de processos Para o desenvolvimento do sistema. É dada especial ênfase ao backtesting e otimização, que são considerados as partes mais importantes na construção de um sistema de comércio. Esta pesquisa constrói modelos de engenharia de sistemas que orientam o processo de desenvolvimento. Também utiliza sistemas de negociação experimental para verificar e validar os princípios abordados nesta tese. Finalmente, esta tese conclui que os princípios e estruturas de engenharia de sistemas podem ser a chave para o sucesso na implementação de sistemas de negociação de alta freqüência ou de investimento quantitativo. Tese (S. M.) - Instituto de Tecnologia de Massachusetts, projeto do sistema e programa da gerência, 2009. Catalogado da versão do pdf da tese. Inclui referências bibliográficas (p.78-79). Palavras-chave: Projeto de Sistema e Programa de Gestão. Mesmo depois de projetar e construir com sucesso um sistema de negociação, um comerciante pode achar que seu sistema é imperfeito. Pode haver alguns problemas, como um evento que mantém gerando perdas ou talvez as regras sejam muito amplas e precisam ser otimizadas. O que é a maneira mais fácil de corrigir o problema Quão eficaz é a otimização Esta seção mostrará como solucionar problemas e otimizar seu sistema de negociação para maximizar lucros e minimizar perdas. Solução de problemas A solução de problemas é um aspecto muito importante do desenvolvimento do sistema. Um sistema de comércio decente será rentável na maioria das condições de mercado, mas se ocasionalmente torna grandes perdas, você pode trabalhar para identificar e resolver o problema. Aqui estão quatro etapas fáceis: 1. Identificar o problema - Localizar todas as instâncias em que o problema ocorreu durante o backtesting, ou iniciar a gravação quando o problema ocorre durante a negociação ao vivo. Durante cada instância, tome nota de quaisquer tendências dos seguintes quatro fatores: Padrão de gráfico ou série de preços - Pico nos preços.13 Volume - volume grande inicialmente e baixo volume depois disso.13 spread BidAsk - Spike no preço em baixo volume muitas vezes indica um Margem (se usado). 13 13Essas são algumas das áreas nas quais os problemas podem ocorrer, o que podemos ver analisando o quadro abaixo. Observe os picos de preços em baixo volume pela seta verde. Observe também o grande volume (perto da seta azul) seguido por baixo volume depois disso. Se nenhum destes resulta ser o culpado, existem outros fatores que podem ser analisados, tais como blocos de tamanhos e padrões de gráficos avançados. Avaliar o problema - Use as informações coletadas para determinar o que exatamente causou o mau funcionamento do sistema ou gerar uma perda. Isso geralmente é feito usando o senso comum, ou analisando os logs de transações (fornecidos pelo seu corretor). Aqui estão exemplos de como algumas condições dos quatro fatores listados acima podem ser a razão para um problema identificado: Padrão de gráfico ou série de preços - O sistema é incapaz de vender durante declínios acentuados ou comprar durante subidas íngremes. Talvez o sistema não tenha tempo suficiente para comprar ou vender. Volume - O sistema é incapaz de vender durante declínios ou comprar durante aumentos. Talvez a equidade tenha um volume de negociação tão baixo que o sistema é incapaz de comprar ou vender a um preço. Durante essas instâncias, o preço pode ser enganoso sem uma consideração de volume e bidask. BidAsk spread - O sistema faz uma compra, mas doesnt lucro tanto quanto deveria quando a venda. Isso poderia ser devido ao fato de que o comerciante esqueceu de considerar bidask spreads. Se um sistema é programado para comprar e vender ao preço atual que realmente paga a pedir. E quando vendido, não vende a preço atual mas ao preço de oferta. Às vezes, as diferenças entre o lance e pedir pode ser grande, levando a perdas indesejadas. Margin - O sistema de repente vende sem razão aparente. Se isso ocorrer, você pode ter esquecido de considerar chamadas de margem. 13 3. Considere as alternativas - Basta tentar algumas soluções para os problemas que você identificou. Considere as seguintes alternativas correspondentes aos problemas acima. Padrão gráfico ou série de preços - Uma alternativa é simplesmente dizer ao sistema para esperar até que o preço se estabilize antes de comprar. Isso pode ser feito usando as diferenças entre os preços anteriores eo preço atual para criar uma regra. Volume - Para resolver esse problema, você pode criar uma regra que exige o capital próprio para ter uma certa quantidade de volume antes de executar um trade. BidAsk Spread - Aqui você pode querer comprar e vender baseado no lance e pedir preços em vez do preço atual. Margin - Usando margem pode ser rentável se o risco é gerenciado de forma eficaz. Limitar a desvantagem deve impedi-lo de receber chamadas de margem. Isso pode ser feito com trailing stop pontos de perda ou outras táticas semelhantes para limitar o lado negativo. 13 4. Implementar uma solução - Finalmente, precisamos aplicar a solução e ver como ela funciona. Negociação de papel ou teste de volta antes de negociação ao vivo é muitas vezes uma boa idéia depois de aplicar uma solução, porque às vezes as soluções têm consequências não intencionais. Por exemplo, regras adicionais podem limitar estes dias de baixo, mas também diminuir os lucros globais (devido a oportunidades perdidas). Otimização Otimização significa simplesmente encontrar os melhores conjuntos de parâmetros para um determinado mercado. Este processo pode melhorar marginalmente os resultados. No entanto, também traz muitos riscos porque a sua suposição subjacente é que o desempenho passado é indicativo de futuros movimentos de preços. A otimização pode ser realizada alterando os valores do parâmetro que você deseja otimizar e depois testar novamente essas alterações. Tenha em mente que os outros parâmetros devem permanecer constantes para que os efeitos das alterações sejam determinados. Uma vez que você encontrar o valor que produz o maior desempenho no teste de volta, implementá-lo no sistema de comércio. Vamos considerar um exemplo. Digamos que um comerciante analisou o SampP 500 e descobriu que ele ou ela poderia otimizar o sistema usando um gráfico diário. Este mesmo processo também pode ser levado a um grau mais elevado. Por exemplo, se uma média móvel simples de 6 funciona melhor do que 8 para uma estratégia MA-crossover em um determinado mercado, então 6 seria usado. O problema aqui não é apenas na suposição, mas também no fato de que o sistema pode ter um desempenho pior em muitos outros mercados, tornando-o assim menos universal. Muitos desenvolvedores de sistema abandonam o estágio de otimização por duas razões: A otimização muitas vezes exagera resultados. Isso ocorre porque os parâmetros são tão específicos e não universais que qualquer mudança no mercado (ou seja, o futuro) pode causar instabilidade. Em muitos casos, a otimização não melhorará o desempenho de forma significativa. Pequenas melhorias podem ser evidentes no entanto, a perda da universalidade é um preço alto a pagar. 13 Como regra geral, a otimização só deve definir configurações amplas para parâmetros, em vez de estabelecer regras específicas - mesmo se tiver êxito em backtesting e em troca de papel. Conclusão A solução de problemas é crucial para tornar seu sistema funcionando da maneira que você quer. É importante identificar quaisquer problemas, observando os casos em que eles ocorreram e, em seguida, avaliar como certas condições de vários fatores - como padrão de preços, volume, spread bidask e margem - pode ter causado o problema. A otimização pode melhorar seus resultados, mas é importante lembrar que tem suas limitações. Não só é baseado no pressuposto de que o desempenho passado indica o futuro, mas não é o estágio em que o comerciante cria regras específicas - otimização é apenas definir configurações amplas. Na próxima e última parcela, iremos fornecer uma visão geral de tudo weve coberto juntamente com alguns conselhos e recursos para ajudá-lo a ganhar um conhecimento de trabalho do sistema de negociação de design e desenvolvimento. Alta freqüência sistema de comércio design e gestão de processos Alta freqüência sistema de comércio design e Gestão de processos Consultor: Roy E. Welsch. Departamento: Programa de Design e Gestão de Sistemas. As empresas comerciais hoje em dia são altamente dependentes de mineração de dados, modelagem de computador e desenvolvimento de software. Os analistas financeiros executam muitas tarefas semelhantes às do software e das indústrias transformadoras. No entanto, o setor financeiro ainda não adotou completamente padrões de engenharia de sistemas de alto padrão e abordagens de gerenciamento de processos que tiveram êxito nas indústrias de software e manufatura. Muitas das metodologias tradicionais para o projeto do produto, o controle de qualidade, a inovação sistemática, ea melhoria contínua encontrada nas disciplinas da engenharia podem ser aplicadas ao campo das finanças. Esta tese mostra como o conhecimento adquirido de disciplinas de engenharia pode melhorar a gestão de projetos e processos de sistemas de negociação de alta freqüência. Sistemas de negociação de alta freqüência são baseados em computação. Estes sistemas são sistemas de software automáticos ou semi-automáticos que são inerentemente complexos e requerem um alto grau de precisão de projeto. O design de um sistema de negociação de alta freqüência vincula vários campos, incluindo finanças quantitativas, design de sistemas e engenharia de software. No setor financeiro, onde as teorias matemáticas e os modelos comerciais são relativamente bem pesquisados, a capacidade de implementar esses projetos em práticas comerciais reais é um dos elementos-chave da competitividade das empresas de investimento. A capacidade de converter idéias de investimento em sistemas de negociação de alto desempenho de forma eficaz e eficiente pode dar uma empresa de investimento uma vantagem competitiva enorme. (Cont.) Esta tese fornece um estudo detalhado composto por alta freqüência sistema de comércio design, modelagem de sistemas e princípios e gestão de processos Para o desenvolvimento do sistema. É dada especial ênfase ao backtesting e otimização, que são considerados as partes mais importantes na construção de um sistema de comércio. Esta pesquisa constrói modelos de engenharia de sistemas que orientam o processo de desenvolvimento. Também utiliza sistemas de negociação experimental para verificar e validar os princípios abordados nesta tese. Finalmente, esta tese conclui que os princípios e estruturas de engenharia de sistemas podem ser a chave para o sucesso na implementação de sistemas de negociação de alta freqüência ou de investimento quantitativo. Tese (S. M.) - Instituto de Tecnologia de Massachusetts, projeto do sistema e programa da gerência, 2009. Catalogado da versão do pdf da tese. Inclui referências bibliográficas (p.78-79). Palavras-chave: Projeto de Sistema e Programa de Gestão. My AccountTrading Systems Coding: testes, solução de problemas e otimização Agora que você tem um sistema de negociação projetado e codificado, é hora de testá-lo para se certificar de que sua codificação está livre de erros lógicos e técnicos. Nós também vamos olhar para algo conhecido como otimização - um recurso em alguns programas de negociação que permite que você ajuste suas regras de negociação para caber as ações que você planeja na negociação. Testando Seu Sistema de Negociação A grande maioria das aplicações comerciais que suportam linguagens de programação também suportam ferramentas de teste. Essas ferramentas são divididas em duas categorias: 1. Técnico Técnico ferramentas de teste de pesquisa para erros técnicos em seu código. Por exemplo, se você esquecer de adicionar um ponto-e-vírgula após uma instrução, a ferramenta de teste técnico irá notificá-lo de que sua declaração é inválida. A localização da ferramenta de teste técnico depende do aplicativo comercial sendo usado. O MetaTrader exibe um erro ou resultados falhos quando você tenta compilar o código, enquanto os aplicativos comerciais como o Tradecision possuem um utilitário de verificação de código embutido na interface que permite verificar o código antes de aplicá-lo. 2. Logical As ferramentas de teste lógico pesquisam erros lógicos em seu código. Por exemplo, se você usar um sinal maior do que em vez de um sinal menor (o que não é um erro técnico), uma ferramenta de teste lógico mostrará que seus resultados não fazem sentido. A ferramenta de teste lógica mais popular é a ferramenta de backtesting. Esta ferramenta permite-lhe tirar dados passados ​​e aplicar o seu sistema de negociação a esses dados. Isto dá-lhe uma ideia do seguinte: Se o seu sistema de negociação é rentável 13 Quais condições provam ser mais rentáveis ​​13 Onde quaisquer erros em suas regras podem existir (Para mais informações, consulte Backtesting: Interpretando o Passado.) Solução de problemas de sua negociação Sistema Como com qualquer outro tipo de programação, a solução de problemas pode ser uma tarefa tediosa e difícil. A localização de erros no seu código requer a triagem sistemática do seu código para identificar erros sintáticos que, embora frequentemente menores, podem interromper o seu programa. Aqui estão alguns erros comuns para procurar: Faltam pontos e vírgulas depois de declarações - Estas têm de ser depois de cada instrução. 13 Variáveis ​​indefinidas - Lembre-se de que você precisa declará-las antes de usá-las 13 Erros ortográficos - Se algum nome ou função estiver escrito incorretamente, o aplicativo de troca retornará um erro (veja o exemplo abaixo). 13 Uso incorreto de () - Lembre-se de que atribui um valor a outro valor, enquanto significa igual a. 13 Uso incorreto de funções internas - Consulte a documentação de aplicativos comerciais ou a interface de programação de aplicativos (API) para certificar-se de que está usando a sintaxe correta. Alguns aplicativos comerciais contêm um recurso que permite testar seu código antes de usá-lo ou compilá-lo. Este recurso permite que você veja qual é o erro e em qual linha ele pode ser encontrado. Tome Tradecision por exemplo: Aqui podemos ver que Tradecision nos dá a localização (linha e coluna) do erro, uma descrição do erro e do tipo de erro (neste caso, é sintática). Se olharmos para a expressão, podemos ver que na coluna 8 xrossBelow não é uma função válida. Se substituirmos o x (que está na coluna 8) por um c, então teremos um código válido. Se olharmos para MetaTrader, podemos ver que os erros surgem quando tentamos compilar o programa: Aqui podemos ver que na descrição diz que a variável BuyNow não estava definida. Clicar duas vezes nesta mensagem de erro nos levará ao local específico do erro no código. Como você pode ver, a maioria das aplicações de negociação dar-lhe uma maneira fácil de localizar erros técnicos e corrigi-los. Corrigir os erros simplesmente envolve sistematicamente passar por cada mensagem de erro e, em seguida, recompilar o código andor ou aplicar o sistema de comércio para seus gráficos. Otimizando Seu Sistema de Negociação Alguns aplicativos comerciais permitem selecionar variáveis ​​a serem otimizadas. Tradecision, por exemplo, permite que você selecione facilmente uma variável e substitua-a por código que tente a otimização. Otimização em si é simplesmente um processo que encontra o valor ideal para um determinado sistema de comércio elemento baseado em resultados anteriores e desempenho. Observe que a sobre-otimização resulta em sistemas de negociação que são incapazes de se adaptar às condições de mercado, portanto, é importante apenas otimizar algumas variáveis ​​importantes, não todas as variáveis ​​Aqui está o que o recurso de otimização parece na Tradecision: Você pode ver que nós declaramos Duas novas variáveis ​​e defini-las igual a. O simplesmente significa que o programa de troca irá substituir isso com o número ideal. Em seguida, você pode ver que nós usamos as novas variáveis ​​dentro de nossa estratégia de negociação. Finalmente, definimos um intervalo para os números (para que o programa não procure no infinito). Alguns outros programas de negociação têm recursos que operam de forma semelhante, permitindo que você substitua o valor numérico com um e dizendo o aplicativo de negociação para otimizá-lo. Conclusão Até agora você deve ter desenvolvido um sistema de comércio de trabalho em que você pode ter confiança. Na próxima parte desta série, você aprenderá como aplicar seu sistema de negociação a gráficos e como usá-lo para tomar decisões comerciais

No comments:

Post a Comment