Estratégias: Algoritmos de Otimização para Negociação Automatizada.
Publicado na revista Automated Trader Issue 04 de janeiro de 2007.
A automação abre a possibilidade de negociar múltiplos modelos ou o mesmo modelo / similar com múltiplos conjuntos de parâmetros. No entanto, isso levanta a questão de como melhor otimizar esses conjuntos de parâmetros. Chris Donnan, que trabalha com tecnologia de negociação de derivativos de ações em uma das principais empresas de Wall Street, responde.
Muito trabalho em negociação algorítmica tem sido na área de execução comercial. VWAP, TWAP, Implementation Shortfall Algoritmos e seus irmãos se tornaram técnicas onipresentes para a execução de negociações. É inevitável que os algoritmos se tornem elementos componentizados em outras partes do cenário de negociação automatizada, da mesma maneira que esses algoritmos de execução modelaram os aspectos de execução.
É apenas uma questão de tempo antes que os algoritmos de otimização sejam parte integral desse espaço. Esses algoritmos podem ser usados para ajustar ou treinar sistemas de negociação inteiros e / ou qualquer elemento que varia de parâmetros de risco, a parâmetros do VWAP, a parâmetros de regras de entrada e saída.
Os algoritmos de otimização são ferramentas que podem ser aplicadas ao treinamento ou ajuste de sistemas de negociação automatizados. Esse treinamento normalmente acontece durante o final da fase de desenvolvimento dos sistemas de negociação, mas também é possível usar algoritmos de otimização continuamente durante a negociação em tempo real. Neste artigo, vamos nos concentrar no uso de algoritmos de otimização como parte integrante do processo de desenvolvimento do sistema de negociação.
Você desenvolveu seu mais recente e melhor sistema de negociação. Você está certo de que este modelo será colocado em negociação de produção. Você está fazendo justiça a si mesmo rolando como está?
Poderia este mesmo sistema ser ajustado para oferecer maiores retornos? Poderia este mesmo sistema ser ajustado para ter um melhor perfil de risco - rebaixamentos menores, transações maiores? Você poderia evitar perder dinheiro em um sistema que já é ajustado manualmente e falhará em tempo real? Você poderia criar mais de um sistema desse sistema candidato?
Não seria ideal se você pudesse simplesmente expressar suas metas para o computador e ajustá-lo para atender às suas metas?
É aí que os algoritmos de otimização se encaixam. A otimização dos sistemas de negociação é um passo crucial, mas você deve saber no que está se metendo! Existe todo um mundo de técnicas poderosas que poderiam ser usadas para otimizar seu sistema de negociação, mas cada técnica tem seus próprios benefícios e bagagem. Não apenas você tem que escolher um mecanismo específico de otimização, mas tão importante quanto isso, você deve exercitar um processo apropriado para que você não se atire no pé.
Entre o momento em que seu sistema é desenvolvido e o momento em que ele está sendo executado na produção, o processo de otimização visa melhorar suas chances de sucesso e lucratividade.
O que é otimização?
No sentido mais simples, "otimizar seu sistema de negociação" significa aumentar os atributos numéricos desejáveis do seu sistema de negociação e / ou reduzir os atributos numéricos indesejáveis do seu sistema de negociação. Ganhar dinheiro é desejável - então você quer maximizar quanto dinheiro seu sistema faz. Perder dinheiro é indesejável, então você quer minimizar quanto dinheiro seu sistema perde. Isto é, naturalmente, simplesmente declarado em inglês - ainda que não tão simplesmente declarado para um computador em muitos casos. Chamamos esses atributos desejáveis / indesejáveis de "objetivos de adequação" e eles são minimizados ou maximizados. Podemos pensar neles simplesmente como objetivos. Queremos aplicar um 'algoritmo de otimização' à tarefa de otimizar nosso (s) sistema (s) de negociação.
O que significa "melhor" ou ideal para o seu sistema de negociação?
A primeira coisa que você deve fazer é decidir o que "melhor" ou "bom" ou "ideal" significa para você. Este objetivo aparentemente simples pode muitas vezes acabar sendo uma tarefa difícil na realidade prática. Para começar, você pode decidir que "melhor" significa; "faz mais dinheiro". Isso certamente parece razoável para um sistema de negociação. Assim que você fizer isso - você começa a otimizar e descobre que seu 'melhor sistema' agora tem um zilhão de moedas! A partir daqui - você refina sua visão de "melhor" para: "faz mais dinheiro por comércio". Isso soa bem até você ver que você ganha uma troca gigante e um milhão de perdas gigantes - e você está com uma perda líquida. Esse processo continua por um tempo, pensando em como dizer ao computador o que você quer dele.
Em seguida - você pode começar a olhar para coisas como o índice de Sharpe, a razão de Sortino, a proporção de Sterling etc. Esses são todos os cálculos de adequação que combinam seus atributos de aptidão em um único valor numérico - um objetivo. Você poderia, é claro, apresentar seus próprios cálculos que tentam combinar todas as características desejáveis de um sistema de negociação "bom" em um único número. No final do dia, o importante a ser observado é que você precisa expressar sua meta para o otimizador.
Seja qual for o objetivo que você definiu para o seu otimizador - ele deve fazer uma das duas coisas para esse objetivo individual; faça os números que você quer subir - na verdade suba, e / ou os números que você quer descer - realmente baixem. Mais uma vez, na realidade prática, muitas vezes é bastante difícil expressar esses objetivos, todos reunidos em um único número bonito.
Técnicas possíveis.
Existem muitos dispositivos que você pode usar para otimizar seu sistema de negociação. As pessoas geralmente começam a fazer isso manualmente. Este é de longe o mecanismo mais comum de otimização. Traders e / ou quants desenvolvem um modelo, observam, alteram alguns parâmetros de entrada e veem que estão fazendo mais do que querem e menos do que eles não querem. Este é um processo iterativo; muitas vezes consome muito tempo e esforço, anda em círculos e é difícil de medir.
Você pode optar por fazer uma otimização de força bruta. Esse é o tipo de otimização que tenta exaustivamente cada combinação de parâmetros do sistema para ver qual deles é "melhor". Uma otimização de força bruta é apenas prática / possível quando você tem um número relativamente pequeno de entradas e / ou pequena quantidade de dados para avaliar. Se você tem muitas entradas, você pode estar olhando literalmente para completar sua busca exaustiva!
Otimização.
Section DEFINIÇÃO DE 'Otimização'
No contexto da análise técnica, otimização é o processo de ajustar um sistema de negociação na tentativa de torná-lo mais eficaz. Esses ajustes incluem a alteração do número de períodos usados em médias móveis, a alteração do número de indicadores usados ou a remoção do que não funciona.
Por exemplo, se um investidor tem um sistema de negociação simples que é composto apenas por um cruzamento do preço de fechamento e uma média móvel, alterando os períodos da média móvel, o comerciante obterá lucros, riscos, perdas de capital, etc. , otimização ajuda você a escolher os parâmetros ideais para o comércio.
Backtesting
Sistema Forex Trading.
Negociação Forex automatizada.
Forex Trading Robot.
QUEBRANDO PARA BAIXO 'Otimização'
Uma vez que um sistema de negociação é desenvolvido, o próximo passo antes da implementação é o backtesting e a otimização. Encontrar a melhor combinação possível de configurações para os parâmetros do sistema de negociação é vital para o sucesso de geração de lucro de um sistema de negociação. Há muitas armadilhas e armadilhas que os operadores às vezes ignoram inadvertidamente. A otimização excessiva e o período de dados de amostra muito grande ou pequeno são apenas alguns dos erros sutis que levam à falha dos sistemas de negociação.
Otimização excessiva.
Um sistema de negociação é usado para definir um conjunto de regras que determina a entrada e saída de uma negociação que produz lucros consistentes. Com cada regra que é aplicada dentro de um sistema, o número de sinais é diminuído para satisfazer os critérios coletivos estabelecidos pela totalidade das regras. A aplicação de muitas regras para obter resultados de back-test que mostrem lucros mais altos pode resultar no que é chamado de ajuste de curva. É quando os resultados de um back-test em um período de tempo mostram lucratividade, mas se reduzem quando o mesmo sistema e configurações são aplicados a um período de tempo diferente. Por exemplo, imagine um sistema de negociação que use um gráfico diário durante o ano passado e selecione o mês e o dia em que ocorreu uma reversão importante, para indicar um sinal na direção da reversão que produz uma negociação lucrativa. As regras desse sistema hipotético (ainda que impraticável) seriam a lista de datas de mês e dia (sem ano) que resultariam no maior lucro líquido daquele ano. A otimização tenderia ao tempo exato de cada reversão e resultaria no ajuste perfeito (curva). No entanto, quando o sistema é aplicado a um ano diferente ou ao futuro, é muito provável que ele falhe.
Período de Dados de Amostra.
A duração do período de dados em que o back-test é realizado para otimizar as configurações de um sistema de negociação varia dependendo do sistema. Alguns sistemas geram vários sinais de negociação por dia e alguns geram um sinal por mês ou menos. Em ambos os casos, o backtest deve, no mínimo, incluir um número de sinais de negociação que apresentem resultados estatisticamente significativos. Dito isto, deve-se tomar cuidado para garantir que o período de amostragem abranja todas as condições gerais de mercado, incluindo tendências, tendências de baixa e negociação de intervalo. Isso ajudará a evitar resultados de otimização que funcionem em apenas um tipo de condição de mercado.
Codificação de Sistemas de Negociação: Teste, Solução de Problemas e Otimização.
Por Justin Kuepper.
A grande maioria dos aplicativos comerciais que suportam linguagens de programação também suportam ferramentas de teste. Essas ferramentas são divididas em duas categorias:
Ferramentas de teste técnico procuram 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 notificará você de que sua declaração é inválida.
As ferramentas de teste lógico procuram erros lógicos no seu código. Por exemplo, se você usou um sinal "maior que" em vez de um sinal "menor que" (que não é um erro técnico), uma ferramenta de teste lógico mostrará que seus resultados não fazem sentido.
Se seu sistema de negociação é lucrativo Quais condições provam ser mais lucrativas Onde quaisquer erros em suas regras podem existir (Para mais informações, consulte Backtesting: Interpreting The Past.)
Como acontece com qualquer outro tipo de programação, a solução de problemas pode ser uma tarefa tediosa e difícil. Encontrar erros em seu código requer a classificação sistemática de seu código para identificar erros sintáticos que, embora geralmente pequenos, podem interromper seu programa.
Falta de ponto-e-vírgula após as declarações - devem ser depois de cada declaração. Variáveis indefinidas - Lembre-se de que você precisa declará-las antes de usá-las! Erros de ortografia - Se algum nome ou função estiver escrito incorretamente, o aplicativo comercial retornará um erro (veja o exemplo abaixo). Uso incorreto de (=) - Lembre-se de que "=" atribui um valor a outro valor, enquanto "==" significa "igual a". Uso incorreto de funções internas - Consulte a documentação do aplicativo comercial ou a interface de programação de aplicativos (API) para verificar se você está usando a sintaxe correta. Alguns aplicativos de negociação 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 o Tradecision nos dá a localização (linha e coluna) do erro, uma descrição do erro e o tipo de erro (neste caso, é sintático). 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.
Aqui podemos ver que na descrição diz que a variável "BuyNow" não foi definida. Clicar duas vezes nessa mensagem de erro nos levará ao local específico do erro no código.
Alguns aplicativos de negociação permitem selecionar variáveis a serem otimizadas. O Tradecision, por exemplo, permite selecionar facilmente uma variável e substituí-la por um código que tentará a otimização. A otimização em si é simplesmente um processo que encontra o valor ideal para um determinado elemento do sistema comercial baseado em resultados e desempenho passados. Observe que a otimização excessiva resulta em sistemas de negociação que não conseguem se adaptar às condições do mercado; Portanto, é importante apenas otimizar algumas variáveis importantes, não todas as variáveis!
Você pode ver que declaramos duas novas variáveis e as definimos como "#". O "#" simplesmente significa que o programa de negociação irá substituir isso pelo número ideal. Em seguida, você pode ver que 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 pesquise ao infinito).
Até agora você deve ter desenvolvido um sistema comercial em que você possa confiar. 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!
Forex Mecânico
Negociação no mercado de câmbio usando estratégias de negociação mecânicas.
Otimização sem ajuste de curva: seis dicas para evitar a super otimização.
A codificação de estratégias de negociação bem-sucedidas pode ser um processo longo e frustrante, especialmente quando se trata da parte em que você aprimora sua estratégia de negociação para melhorar o desempenho dos dados do mercado. O processo pelo qual um dado sistema tem seus parâmetros ajustados para dar um melhor desempenho no passado é denominado "otimização", um processo pelo qual os resultados com muitos conjuntos de parâmetros diferentes são comparados e os melhores entre aqueles são escolhidos . Otimização é uma parte natural do desenvolvimento do sistema desde mudanças em certas coisas & # 8211; como períodos de indicadores, stop loss e take profit values & # 8211; pode afetar drasticamente o desempenho de uma estratégia de negociação. No entanto, um dos principais problemas de realizar otimizações é a palavra temida: ajuste de curva. Você pode ler mais sobre a definição de ajuste de curva neste post que escrevi no início deste ano e também pode ler este post para saber mais sobre cinco erros muito comuns que as pessoas enfrentam ao realizar otimizações.
Obviamente evitar o ajuste de curvas deve ser uma parte muito importante dos esforços de qualquer desenvolvedor de sistemas, já que não queremos gerar estratégias de negociação com resultados absolutamente surpreendentes que não serão alcançáveis daqui para frente. Como nosso objetivo é produzir sistemas que atinjam o bom desempenho no passado com a maior garantia possível de que esse desempenho será repetido no futuro, torna-se vital tomar medidas para garantir que a otimização não forneça estratégias adaptadas à curva. Aqui estão seis dicas importantes que você deve implementar para evitar estratégias de ajuste de curva ao passado:
1. Evite simulações não confiáveis. Talvez a coisa mais importante que você precisa fazer para evitar uma estratégia de ajuste de curva seja evitar completamente o uso e a otimização de sistemas que não podem ser simulados com precisão. A simulação de sistemas que operam em intervalos de tempo menores que 30 minutos ou sistemas com metas muito pequenas de lucro e stop loss (abaixo de 10 vezes o spread) deve ser absolutamente evitada, pois os resultados não serão viáveis e muito ajuste de curva a dados passados provavelmente ocorrerá sob otimização. Não só os resultados não terão sentido, mas a exploração de erros de interpolação de backtesting e dependência de corretores desempenhará um papel primordial.
2. Codifique sistemas simples. Complexidade é a mãe do ajuste de curvas. Sempre que você der a uma estratégia graus de liberdade suficientes, uma otimização produzirá resultados ajustados à curva. Quanto menos complexidade e menos parâmetros disponíveis dentro de uma dada estratégia, menos provável é que ela seja adaptada à curva, já que sistemas que não possuem critérios complexos tendem a ser incapazes de se encaixar. aos dados se uma verdadeira ineficiência não estiver presente. Portanto, torna-se extremamente importante codificar simples & # 8220; elegante & # 8221; estratégias para evitar a complexidade adicional que resultará em soluções adaptadas à curva.
3. longos períodos de teste. Otimizações devem ser realizadas por longos períodos de tempo, idealmente 9-11 anos de dados devem ser utilizados para o processo, a fim de garantir que uma grande quantidade de condições de mercado se torne disponível. Se uma estratégia simples gerar resultados lucrativos ao longo de um período de dez anos, a probabilidade de ajuste de curva será bastante reduzida, já que o sistema tem graus de liberdade limitados para se ajustar artificialmente a "& # 8221; todas essas condições de mercado diferentes.
4. Mantenha seu sistema simétrico. Uma das primeiras idéias que os novos traders têm quando começam a analisar o desenvolvimento do sistema e os resultados da expectativa matemática é ter um critério separado para entrar e sair de negociações curtas e longas (por exemplo, usando um indicador cruzado em 20 para lançamentos longos e 15 para curtos). Embora seja verdade que, sob dados passados, as tendências para cima e para baixo poderiam ter evoluído de forma diferente nas moedas, não se pode garantir que elas continuem no futuro, pois essas diferenças dependem de diferenciais de taxas de juros ou de variáveis macroeconômicas semelhantes que inevitavelmente mudam nos ciclos econômicos. Adicionar critérios separados para longs e shorts aumenta automaticamente os graus de liberdade da estratégia e torna-a excessivamente propensa a soluções ajustadas por curva.
5. Períodos de teste fora da amostra. Uma prática muito comum no desenvolvimento de sistemas é ter uma certa quantidade de dados históricos - fora & # 8221; o conjunto de otimização & # 8211; geralmente um ano ou dois & # 8211; para realizar um teste simulado & # 8220; de encaminhamento & # 8221; (comumente chamado de teste out-sample) para ver como a estratégia se comportou sob novas condições de mercado, sem ser capaz de se ajustar artificialmente a "& # 8221; para esses dados. Certamente, o teste fora da amostra não precisa ser lucrativo (já que todas as estratégias têm períodos de lucro e de redução), mas deve pelo menos manter correlação com as profundidades de drawdown e períodos lucrativos vistos no passado. Quando um teste fora da amostra mostra uma perda maior do que o dobro do consumo anterior, então a estratégia é certamente ajustada à curva.
6. Evite erros comuns de otimização. Há muitas pequenas coisas diferentes que você pode fazer de errado ao realizar otimizações, como usar procedimentos altamente correlacionados, testes de grade fina ou ignorar o & # 8220; arredors & # 8221; dos resultados pretendidos. Uma parte muito importante de evitar o ajuste de curvas é evitar esses erros comuns de executar otimizações grosseiras e eficientes que não predispõem seu sistema a soluções adaptadas à curva. (leia este post para aprender sobre cinco erros muito comuns que as pessoas enfrentam ao realizar otimizações).
Seguindo as cinco dicas acima, você terá um nível muito maior de desenvolvimento de estratégias que não são adaptadas à curva. Embora não exista qualquer garantia de que uma estratégia não esteja ajustada a dados passados quando as otimizações são feitas, é óbvio que as dicas de desenvolvimento e teste do sistema sugeridas acima reduzem a possibilidade de isso acontecer em grande quantidade. Ao desenvolver estratégias simétricas simples com graus de liberdade limitados e simulações confiáveis por longos períodos de tempo com um ou dois anos de testes fora da amostra, a possibilidade de encontrar uma solução ajustada por curva será extremamente improvável.
Se você gostaria de aprender mais sobre otimização de sistemas e como você também pode desenvolver suas próprias estratégias lucrativas com base em conceitos de negociação, por favor considere juntar-se a Asirikuy, um site repleto de vídeos educacionais, sistemas de negociação, desenvolvimento e um som honesto e transparente. abordagem para negociação automatizada em geral. Espero que tenha gostado deste artigo ! : o)
8 regras para evitar a super otimização.
Aqueles de nós que empregam sistemas de comércio baseados em regras mecânicas, bem como aqueles que “trocam” seus sistemas baseados em regras, estão ambos procurando por uma qualidade muito importante - uma estratégia que funciona tão bem, ou quase tão bem, na negociação ao vivo. como os resultados históricos do teste de retorno indicam.
# 1 Cortar o número de declarações "E".
Use apenas uma ou duas declarações “e” por entrada ou regra de saída. Por exemplo, se a condição 1 existir e Momentum & gt; limiar de sinal, em seguida, comprar.
# 2 Use um princípio de entrada única.
Podemos ter várias regras de entrada, mas todas usam o mesmo princípio de entrada. Por exemplo, a regra 1 pode ser se a pré-condição 1 existir e o momento & gt; limiar de sinal, em seguida, comprar. Regra # 2 pode ser se Bollinger Band® Diferença & lt; 5 pontos e momento & gt; limiar de sinal, em seguida, comprar. Ambas as regras usam exatamente o mesmo "momentum & gt; limiar de sinal ”, mas cada um fornece diferentes circunstâncias pelas quais pode ser seguido.
# 3 Aplicar parâmetros robustos de entrada.
Todo e qualquer parâmetro de entrada usado em uma estratégia de negociação é um parâmetro otimizável. Estamos procurando por uma ampla gama de parâmetros de entrada que sejam satisfatórios. Também procuramos uma queda gradual de cada lado do valor ótimo. As estratégias que exibem essa característica são chamadas de "robustas".
# 4 regras são portáteis entre os mercados.
Portabilidade significa que os mesmos princípios podem ser geralmente aplicados com sucesso a pelo menos alguns mercados não relacionados. A portabilidade das regras de entrada / saída entre os mercados reforça que as regras no trabalho não são adequadas para um determinado conjunto de dados. Portabilidade idêntica absoluta não é necessária, pois também é uma característica dos mercados que eles têm suas próprias personalidades.
# 5 Regras de saída seguem os mesmos requisitos de design como regras de entrada.
Todas as avaliações aplicáveis às inscrições são igualmente aplicáveis às saídas. Os testes iniciais para qualquer entrada baseada em regras devem começar com saídas muito simples, como stop loss do dólar, objetivos de lucro em dólar ou paradas e objetivos de volatilidade. Se alguma abordagem em particular não se mostrar promissora com saídas simples, siga em frente. Torturar os dados com muitas saídas diferentes para fazê-lo funcionar provavelmente levará a uma otimização excessiva e, consequentemente, a uma decepção na negociação ao vivo.
# 6 analise separadamente os resultados do comércio de curto e longo prazo.
Sempre olhe para uma negociação “Long Only” e negociações “Short Only” na avaliação de um sistema de negociação. É assim que se pode ver como o sistema funciona dentro de diferentes tipos de tendências de mercado.
# 7 Não otimize as entradas e as saídas separadamente.
Embora às vezes seja verdade que os mercados às vezes se comportam de maneira diferente no caminho do que quando estão em decadência, e pode-se definitivamente otimizar para obter melhores resultados históricos nessa base, essa abordagem está mais próxima da super otimização. Como o objetivo é quase zero de degradação da estratégia de negociação após o desenvolvimento, sempre use sinais de imagem espelhada para qualquer um dos lados do mercado. Como mencionado acima, seja cauteloso em relação aos sistemas de negociação “somente longo” ou “somente curto”, em que a aparência de sucesso pode ser amplamente dependente de uma tendência secular de muito longo prazo, mais do que o próprio sistema.
# 8 Revise o comprimento do registro de trilha várias maneiras.
Uma métrica muito negligenciada - talvez a métrica mais negligenciada na avaliação do sistema - é a frequência com que um sistema de negociação tem uma posição no mercado longa ou curta.
O excesso de otimização é a queda das estratégias de negociação baseadas em regras e não é fácil de evitar. Seguindo os guias acima, porém, pode-se eliminar uma grande decepção em potencial. Sem dúvida, esses guias dificultam o desenvolvimento de um teste histórico de aparência decente e é exatamente isso que eles pretendem fazer. Se alguém pode seguir esses posts, qualquer sistema de negociação terá uma chance muito maior de sobrevivência ao adotar a estratégia de negociação ao vivo.
Комментариев нет:
Отправить комментарий