Saturday 21 April 2018

Robustez do sistema de negociação


Robustez dos sistemas de negociação algorítmica (que funcionam)
Este é o primeiro de uma série de artigos que discutirão em profundidade o tema dos sistemas de negociação algorítmica para investidores de varejo, com especial atenção para: otimização e ajuste de curva, seleção de mercado, testes de backtesting, walk-forward, criação de portfólio, negociação algorítmica intradía, e assim por diante.
Neste primeiro artigo, vamos discutir como verificar se um determinado sistema de negociação é robusto ou não.
Conforme definido na Wikipedia & # 8220; [& # 8230;], a robustez define a capacidade de um sistema de negociação financeira permanecer efetivo em diferentes mercados e diferentes condições de mercado, ou a capacidade de um modelo econômico permanecer válido sob diferentes pressupostos, parâmetros e condições iniciais. & # 8221;
Existem quatro testes principais para avaliar a robustez de um sistema comercial intradía:
O sistema funciona em uma variedade de combinações de parâmetros? O sistema funciona em vários prazos? O sistema funciona em vários instrumentos? O sistema funciona em pelo menos 6 anos de dados passados ​​sem a necessidade de ser re-otimizado com freqüência?
Deixe-nos usar um sistema intradía simples de volatilidade para fazer um exemplo em ES (S & amp; P 500 Mini). Este é um sistema simples com apenas dois parâmetros principais que podem ser otimizados: Períodos (o período de lookback em barras de um indicador lento) e PeriodF (o período de lookback em barras de um indicador rápido). O sistema possui as seguintes características:
Intraday Entrada: movimento rápido com aumento da volatilidade Sair: perda de parada, mudança de tendência, fim de dia Gerenciamento de riscos: perda de parada baseada em volatilidade, perda de paragem final, filtro de contração de alcance, limitação no número máximo de negócios por dia Dimensionamento da posição: 1 contrato.
O sistema funciona em uma variedade de combinações de parâmetros?
Para verificar a robustez da variedade de combinações de parâmetros, otimizamos Períodos de 100 bar a 500 bar com passos de 25 e PeriodF de 10 bar a 40 bar com passos de 10.
Podemos ver que a média SQN é 4,4, o mínimo 1,9 e o máximo de 5,8.
O Número de Qualidade do Sistema (SQN) é um indicador de uma qualidade do sistema com base na classificação estatística popular popularizada por Van Tharpe e definida como:
SQN = Squareroot (N) Média (do N Lucro e Perda) / Std Dev (da N Lucro e Perda).
Basicamente, é o comércio médio, dividido pelo desvio padrão do comércio médio e multiplicado pela raiz quadrada do número de negócios. Assim: muitas negociações, o alto comércio médio e baixa volatilidade do comércio médio fornecerão um SQN mais elevado.
Você pode encontrar mais informações abaixo. Os valores acima de 2,5 normalmente indicam um bom sistema:
O código para NinjaTrader está disponível gratuitamente para download em nosso site: vbosystems. info/download. html.
A análise acima mostra que este sistema é robusto em uma variedade de combinações de parâmetros.
O sistema funciona em vários prazos?
O segundo teste refere-se a prazos. Um sistema robusto manterá bons resultados em uma variedade de prazos. Para verificar a robustez em vários intervalos de tempo, mantemos os dois parâmetros fixados em 300 (PeriodS) e 30 (PeriodF) e otimizamos o período de 10 a 50 barras com as etapas de 5.
Podemos ver que o valor SQN mais baixo é 3,6 com um cronograma de 25. Os gráficos indicam que este sistema é mais eficaz em intervalos de tempo cada vez mais altos, no entanto, ele mantém um bom valor SQN ao longo do tempo.
O sistema funciona em vários instrumentos?
Um sistema robusto manterá bons resultados em vários instrumentos. Os sistemas mais robustos terão bons resultados com os mesmos parâmetros exatos em vários instrumentos. No mínimo, um deve se concentrar em sistemas que realmente podem funcionar em diferentes instrumentos, mesmo que os melhores parâmetros possam ser diferentes.
Para verificar a robustez em relação a diferentes instrumentos, otimizamos em bares de 27 minutos Períodos de 100 bares a 600 bar com etapas de 25 e Periodo de 5 a 50 bares com etapas de 5 em uma cesta de 12 contratos de futuros diversificados em índices, forex , energia e taxas de juros: 6B, 6E, CL, EMD, ES, FDAX, FGBL, IBEX35, NG, RT, TF, ZB. A otimização fornece os seguintes resultados:
Os resultados acima, de janeiro de 2006 a abril de 2018, mostram que este sistema particular pode ser lucrativo e # 8211; com diferentes parâmetros & # 8211; em vários mercados de futuros. No entanto, os sistemas mais robustos manterão bons resultados em diferentes produtos transáveis, mantendo os mesmos parâmetros. Se analisarmos o heatmap do SQN médio em todos os transáveis, veremos os seguintes resultados:
A tabela acima mostra que o SQN médio em todos os transáveis, em todos os parâmetros, é relativamente estável, com um valor mínimo de 2. Para encontrar os parâmetros mais estáveis, a melhor opção é dividir o SQN médio por seu desvio padrão como em o seguinte heatmap:
A combinação de parâmetros mais estáveis ​​em todos os 12 futuros é PeriodF = 15 e PeriodS = 425 que fornece os seguintes resultados:
Os resultados acima indicam que este sistema possui resultados robustos em 12 contratos de futuros diversificados em índices, divisas, energia e taxas de juros.
O sistema funciona em pelo menos 6 anos de dados passados ​​sem a necessidade de ser re-otimizado com freqüência?
Um sistema robusto manterá bons resultados em vários anos sem a necessidade de ser re-otimizado com freqüência. Deixe considerar os parâmetros do primeiro teste que forneceu o melhor SQN: PeriodS = 150 e PeriodF = 30. Os resultados nas barras ES de 15 minutos são os seguintes:
O número de negócios é bastante consistente a cada ano (exceto 2018, pois os dados são apenas até meados de abril), bem como o% de vitória.
Em conclusão, ao avaliar a robustez de um sistema de negociação, existem quatro testes principais para executar. Somente se um sistema funcionar bem em uma variedade de combinações de parâmetros, uma variedade de intervalos de tempo, uma variedade de instrumentos e ao longo de pelo menos 6 anos de dados passados ​​sem a necessidade de ser re-otimizado com freqüência, pode ser considerado totalmente robusto.
Todas as otimizações descritas neste artigo foram feitas usando dados de NinjaTrader e Kinetick de 1 minuto. Para obter mais informações sobre sistemas de negociação, visite nosso site: vbosystems. info.
& # 8212; Por Amon Licini da VbO Systems. O VbO Systems é um desenvolvedor de sistemas de negociação 100% automatizados codificados no NinjaTrader que podem ser negociados automaticamente em quase todas as classes de ativos. Amon Licini, fundador da Vbo Systems, é comerciante privado há 15 anos e gerente sênior com várias empresas na Itália. Os principais interesses comerciais da Amon residem na área de volatilidade e de breakouts abertos para sistemas intraday. Vive em Milão com sua esposa e 2 filhos e adora viajar quando ele não está desenvolvendo novos sistemas. Amon é licenciada em engenharia mecânica pela Universidade Politécnica de Milão.
Sobre o Autor System Trader Success Contributor.
Os autores contribuintes são participantes ativos nos mercados financeiros e totalmente absorvidos na análise técnica ou quantitativa. Eles desejam compartilhar suas histórias, idéias e descobertas no System Trader Success e espero que você seja um comerciante do sistema melhor. Entre em contato conosco se você quiser ser um autor contribuidor e compartilhar sua mensagem com o mundo.
Posts Relacionados.
A temporada de Natal é alcista para os mercados dos EUA?
Estratégia quebrada ou mudança de mercado: investigação de desempenho insuficiente.
Descobrindo o que funciona, e o que não funciona.
Eu não concordo com algumas coisas ditas aqui.
Primeiro, se um sistema funcionar em um e apenas um ticker, este post sugere que ele não é robusto e não deve ser negociado. Posso visualizar um ticker cuja negociação é dominada por um punhado de instituições bem capitalizadas. Suponha que a maioria desses comerciantes institucionais use um indicador específico. Um sistema que use esse indicador provavelmente será lucrativo # 8211 e continuará a ser lucrativo, desde que esses comerciantes institucionais continuem negociando desse jeito. Independentemente de outros comerciantes institucionais direcionar a comercialização de outros tickers usar esse indicador ou não (ou seja, o sistema é rentável em outros tickers), ele continuará a funcionar.
O meu segundo desacordo é sobre "re-otimização freqüente". # 8221; Eu aceito que a otimização menos freqüente é preferida, mais simples, aparentemente menos curva, etc. No entanto, não é bem concebível ter um sistema rentável usando uma rotina de caminhada que usa dois anos IS e seis meses ( escolha qualquer intervalo de tempo freqüente e # 8221; OOS?
Eu tenho um problema maior com WFO em geral, porque algumas combinações de intervalos de tempo IS / OOS podem funcionar, enquanto outros não podem. Se você escolhe os que trabalham e comercializam, então você está ajustando-se a curva?
Artigo muito interessante, você lê sobre as simulações de monte carlos e a teoria da van tharp? talvez isso também possa ser interessante para você. muito bem, obrigado.
Publicações populares.
Connors 2-Period RSI Update para 2018.
Este indicador simples faz dinheiro novamente e novamente.
The Ivy Portfolio.
Melhorando a Estratégia de Identidade Simples, Parte 1.
Copyright © 2017 da Capital Evolution LLC. - Projetado por temas Thrive | Powered by WordPress.
Por favor faça login novamente. A página de login será aberta em uma nova janela. Depois de efetuar o login, você pode fechá-lo e retornar a esta página.

Os Sistemas de Negociação Robusto são o Objetivo dos Seguidores de Tendências.
Você sempre pode encontrar anúncios loucos prometendo sistemas de negociação com altos retornos e taxas de sucesso de 100% escolhendo tops e fundos. Estes sistemas chamados conseguem seus resultados usando muitas regras e muitas exceções. Eles estavam perfeitamente desenvolvidos ou curvos. As regras estão sempre otimizadas demais. Olhar bem no papel é tudo o que você obtém. Eles ganharam o último ou aguentaram o mundo real.
Uma boa tendência após o sistema de negociação deve ser robusta. Existem cinco critérios gerais para a robustez do sistema:
Análise de sensibilidade nas regras do sistema (parâmetros). Testando em muitos mercados. Análise de risco em todo o sistema. Consistência do sistema. A sequência de tendências pode ser descrita em termos simples e lógicos?
Um sistema comercial com não mais de três a cinco parâmetros para otimizar é ideal. Os parâmetros são o componente quantitativo das regras ou condições que devem ser atendidas.
Uma indicação significativa de robustez é usar um sistema otimizado para um mercado em muitos mercados diferentes sem alterar nenhum dos parâmetros. Se um sistema otimizado no S & amp; P 500 pode trocar um fundo do Japão, um fundo de pequena capitalização e um fundo de mercados emergentes, aumenta a confiança nesse sistema.
A análise de risco em todo o sistema imagina todas as formas em que o sistema pode subavaliar seus objetivos. Pense nas opções.
Rendimentos consistentes mostram que um sistema, ao longo de muitas negociações, está aproveitando uma vantagem. A vantagem da palavra é usada da mesma forma que um casino tem uma vantagem na roleta, em uma grande quantidade de negócios, um sistema com uma vantagem ganha dinheiro.
A sequência de tendências pode ser descrita em termos simples e lógicos?
Um sistema deve ser explicado em termos simples e lógicos. Se um sistema depende da fase da lua ou da média móvel exponencial do oscilador Fibonacci, rejeite o sistema. Você deve entender a base para o sucesso de um sistema.
Trend After Products.
Michael Covel Trend After Products.
Postagens recentes.
The Trend Following Mantra: Fundamentos são religião 7 de janeiro de 2018 Speculari 6 de dezembro de 2017 Bolhas de sopro deixam grande oportunidade de mercado 17 de novembro de 2017 Mostre-me a tendência após o dinheiro 16 de novembro de 2017 O Jargão de Wall Street foi projetado para confundi-lo 5 de novembro de 2017.
Daily Post Archives.
Arquivo de comerciantes.
Livros clássicos e Filme.
Trend After Podcast.
O Trend Following ™ ocupa o primeiro lugar no iTunes com investimentos de 6M +. Ouça gratuitamente em todos os lugares: iTunes, iHeartRadio, Google, Stitcher, RSS.
Lições do assistente de mercado.
# 1 O cara da cidade pequena começa em um posto de gasolina dos anos 1970 e se torna uma lenda comercial no valor de US $ 100 milhões. Envie e-mail e obtenha o vídeo GRÁTIS.
# 2 O bilionário David Harding começou pequeno, tornou-se um seguidor de tendências e agora é uma lenda comercial. Leia sua história aqui.
Assine e receba o video Market Wizard.
&cópia de; 2004-18 TurtleTrader & reg; e Trend Following & trade; Todos os direitos reservados. | Sitemap | RSS.
Informações sobre o Trend Following & trade; A rede de sites não pode ser copiada, reimpressa ou redistribuída sem a permissão por escrito de Michael Covel e ou Trend Following (mas a permissão por escrito é concedida com facilidade e tipicamente). O objetivo deste site é incentivar o intercâmbio gratuito de idéias em investimentos, riscos, economia, psicologia, comportamento humano, empreendedorismo e inovação. Todo o conteúdo deste site baseia-se nas opiniões de Michael Covel, salvo indicação em contrário. Os artigos individuais são baseados nas opiniões do respectivo autor, que podem reter os direitos autorais como observado. A informação neste site destina-se a compartilhar conhecimento e informações da pesquisa e experiência de Michael Covel e sua comunidade. As informações aqui contidas não foram projetadas para serem usadas como um convite para investimento com qualquer consultor perfilado. Todos os dados neste site são diretos da CFTC, SEC, Yahoo Finance, Google e documentos de divulgação pelos gerentes mencionados neste documento. Assumimos que todos os dados são precisos, mas não assumimos qualquer responsabilidade por erros, omissões ou erros de clerical feitos por fontes. Trend Next & trade; comercializa e vende vários produtos de pesquisa de investimentos e informações de investimento. Os leitores são os únicos responsáveis ​​pela seleção de ações, moedas, opções, commodities, contratos de futuros, estratégias e monitoramento de suas contas de corretagem. Trend Following & trade ;, suas subsidiárias, funcionários e agentes não solicitam ou executam negócios ou dão conselhos de investimento, e não estão registrados como corretores ou conselheiros com nenhuma agência federal ou estatal.
Trend Following & trade ;, TurtleTrader & reg ;, TurtleTrader & reg; são marcas comerciais / marcas de serviço da Trend Following. Outras marcas comerciais e marcas de serviço que aparecem na Trend A seguinte rede de sites pode ser propriedade da Trend Following ou de outras partes, incluindo terceiros não afiliados à Trend Following & trade ;.
The Only Trend Follow & trade; Filme Documentário: Assista.
© 2004-17 Trend Following ™ Todos os direitos reservados.
Trend Following ™, TurtleTrader®, TurtleTrader® são marcas comerciais / marcas de serviço da Trend Following. Outras marcas comerciais e marcas de serviço que aparecem na Trend A seguinte rede de sites pode ser propriedade da Trend Following ou de outras partes, incluindo terceiros não afiliados ao Trend Following.
Confira o lançamento épico de 2017: Tendência seguinte: como fazer uma fortuna nos mercados de touro, urso e cisne preto. Revisado e estendido com o dobro do conteúdo. 5ª edição, 24 de abril de 2017.

7 Tipos de Robustez de Negociação: Construa Robôs que Weather Todas as Tempestades.
Então você ouviu falar sobre como os computadores governarão o mundo comercial, como os robôs inteligentes fazem milhões nos mercados, e agora você quer construir o seu robô comercial owb todo-poderoso que pode conquistar todos. Bem, este artigo não promete a fórmula mágica ou o Santo Graal ao seu robô invencível, mas está tão perto quanto é possível.
PS. Os conceitos de negociação mencionados aqui não se aplicam à negociação de alta freqüência (negociação em milissegundos).
Faça seus robôs inteligentes, mas não muito inteligentes.
O que significa "Weather All Storms"
Para que nossos sistemas de comércio "resistam a todas as tempestades", aka permanecem efetivos em diferentes condições de mercado, eles precisam se adaptar ao mercado. Isso implica uma lógica de negociação que são eficazes em diferentes períodos, backtesting frameworks que minimizam o viés e regras de aparência ao contrário que não são muito rígidas.
Este critério pode ser resumido em uma palavra: robustez.
O que é robustez.
Definição oficial de robustez: em economia, a robustez é a capacidade de um sistema de negociação financeira permanecer efetivo em diferentes mercados e diferentes condições de mercado, ou a capacidade de um modelo econômico permanecer válido sob diferentes pressupostos, parâmetros e condições iniciais.
Para traduzir isso em palavras mais simples:
Um sistema de negociação é robusto se ele pode permanecer efetivo na mudança das condições do mercado.
Codificar, testar e avaliar os robôs comerciais hoje em dia é barato.
Tipos de robustez.
A robustez parece ser uma palavra em excesso. Muitas pessoas falam sobre robustez em um sistema comercial sem referência específica a um único tipo de robustez. Existem muitos tipos de robustez, este artigo irá falar sobre os sete principais:
Período Robustez Sazonal Robustez Prazo Robustez Instrumento Robustez Otimização Robustez Parâmetro Robustez Portfolio Robustez.
Robustez do período.
Definição: um sistema de negociação é robusto em todos os períodos, se ele pode permanecer efetivo em diferentes períodos de mercado.
Os períodos de mercado podem ser caracterizados em 2 tipos: genérico e estratégico.
Figura 1: Seis períodos de mercado genéricos.
A Figura 1 nos mostra os seis principais períodos de mercado genéricos. Neste caso, estamos analisando o desempenho de nossos sistemas de negociação nestes seis períodos.
No entanto, note que algumas tabelas genéricas do período de mercado são 5 por 5 ou maiores.
5 por 5 & # 8211; Eixo Y: volatilidade muito baixa, baixa volatilidade, neutro, alta volatilidade, volatilidade muito alta.
5 por 5 & # 8211; Eixo X: forte tendência ascendente, tendência ascendente, variação, tendência descendente, forte tendência de baixa.
A classificação de 5 por 5 é apenas uma variação do original 2 por 3, mas não há nada de errado com o 5 por 5 ou qualquer classificação maior.
Se o nosso sistema comercial for efetivo nos 6 períodos básicos, isso significa que ele é robusto.
Períodos Estratégicos de Mercado.
Os períodos de Mercado Estratégico são definidos pelo comerciante. Isso depende de condições específicas que influenciam fortemente o ativo que você está negociando. Claro, essas condições específicas variam para diferentes ativos.
Por exemplo, se estamos negociando EURUSD, a política monetária do Federal Reserve dos EUA influenciará fortemente nossa negociação. Assim, analisaremos 2 períodos de mercado estratégicos: 1) Fed Easing 2) Fed Tightening. Se você estiver negociando ações, um exemplo seria 1) Justo antes do lançamento dos resultados 2) Após a liberação dos ganhos.
Isso significa que, se meu sistema comercial não for robusto, não é rentável?
Isso é incorreto. Existem muitos sistemas de negociação que são projetados para capturar uma ineficiência específica do mercado. Nosso objetivo aqui é entender as características do nosso sistema comercial para que possamos saber como e quando implementá-los.
Robustez sazonal.
Definição: um sistema de negociação é sazonalmente robusto se for capaz de se manter eficaz apesar dos efeitos sazonais.
A robustez sazonal pode ser considerada como um subconjunto da robustez do período.
Um efeito sazonal é qualquer anomalia de mercado ou efeito econômico que pareça estar relacionado ao calendário. Dizemos que existem efeitos sazonais no mercado se houver comportamento repetitivo nos mercados ao longo do tempo. Existem cinco principais tipos de efeitos sazonais:
Efeito intra-dia: comportamento específico dos mercados em determinados momentos do dia.
Efeito diário: comportamento específico dos mercados em determinados dias da semana.
Efeito do mês: comportamento específico dos mercados em determinados meses do ano.
Quarter Effect: comportamento específico dos mercados em uma base trimestral.
Efeito de vários anos: o termo às vezes inclui efeitos de vários anos, como o ciclo de dez anos (decadal).
Na maioria dos casos, os efeitos sazonais não são profecias auto-realizáveis. Eles são criados pelos fundamentos do mercado.
1) Os mercados de Forex são mais ativos durante determinadas horas do dia por causa das sobreposições do mercado global.
2) Janeiro O efeito existe por razões de redução de impostos.
3) Os mercados tendem a ser mais silenciosos na metade anterior da primeira sexta-feira de cada mês devido à folha de pagamento não agrícola.
Figura 2: Examinando o efeito de janeiro. Créditos: aboutsmallcap.
Por que não exploramos essa ineficiência recorrente? É definitivamente possível, mas há várias razões pelas quais isso pode ser difícil:
O tempo e a extensão dos efeitos sazonais são instáveis.
Os participantes do mercado estão constantemente tentando explorar os efeitos sazonais. Essas ações influenciam a extensão eo comportamento dos efeitos sazonais. Portanto, isso cria uma situação dinâmica onde os efeitos sazonais estão mudando constantemente.
O efeito sazonal pode existir porque o custo para explorar o efeito é muito alto. O alto custo atua como uma barreira natural para proteger os efeitos sazonais.
Não acreditamos que o mercado seja completamente eficiente, mas acreditamos que seja eficiente até certo ponto. Em muitos casos, é difícil explorar um efeito sazonal porque a eficiência é fixada o preço. Por exemplo, você pode querer comprar um straddle (uma estrutura de opções que ganha em valor quando a volatilidade aumenta) durante a folha de pagamento não agrícola porque você espera maior volatilidade. No entanto, os vendedores do straddle têm tido em conta a alta volatilidade e, portanto, cobrado isso no preço de estrade (prémios de opção).
Robustez do período de tempo.
Definição: um sistema de negociação é um período robusto se for capaz de se manter efetivo ao negociar em diferentes prazos.
O cronograma refere-se ao período do candelabro (1min, 5min, 15min, 1 hora, Diariamente, etc.). Nosso sistema de negociação é um prazo robusto se sua estratégia de negociação subjacente for efetiva em diferentes prazos.
Precisamos entender a robustez do tempo em dois tipos de condições de mercado:
1) Nosso ativo se comporta como um fractal em cronogramas.
2) Nenhum comportamento fractal.
Cenário 1: Nosso ativo se comporta como um fractal em cronogramas.
Não, não nos referimos ao padrão do candelabro quando falamos sobre Fractals.
Definição oficial de fractals: um fractal é um fenômeno natural ou um conjunto matemático que exibe um padrão de repetição que é exibido em todas as escalas. Se a replicação é exatamente a mesma em cada escala, ela é chamada de padrão auto-similar.
Para simplificá-lo: Um fractal é um padrão que se repete em diferentes visualizações ou escalas de tempo.
Figura 3: Fractals em diferentes prazos.
Ao ampliar os prazos inferiores, vemos que as formas (características) do recurso permanecem as mesmas.
Nosso sistema de negociação sempre será robusto quando for negociar um recurso que se comporte como um fractal em um prazo maior. Se o mercado se comportar da mesma maneira em cada período de tempo, não deve haver qualquer diferença no comportamento do nosso sistema comercial.
Cenário 2: Nenhum comportamento fractal.
Uma regra geral é que o ruído (volatilidade) aumenta à medida que avançamos no prazo mais baixo. Nosso sistema de negociação será um prazo robusto aqui se sua lógica subjacente for efetiva apesar dos diferentes níveis de ruído e do comportamento do mercado em diferentes prazos.
Se o nosso sistema de negociação for robusto, funciona em todos os períodos de tempo. No entanto, isso não significa que permanecemos indiferentes ao prazo que trocamos.
Devemos negociar em prazos inferiores. Isso maximizará o número de oportunidades comerciais por tempo. Imagine uma média de 1 comércio por 5 barras. Se você negociar no prazo diário, você disparará 52 negócios por ano (260 dias da semana / 5). Se você negociar em 1 horário, você pode disparar 1248 (260 * 24/5) comércios por ano. Portanto, seu lucro será 24 vezes maior (sem considerar os efeitos da composição!)
Devemos trocar o prazo mais baixo possível?
Seguindo a lógica indicada acima, se devêssemos negociar no prazo mais baixo possível (1min para MT4), devemos ser massivamente rentáveis, certo? Infelizmente e sem surpresa, não.
É improvável que um sistema de negociação seja perfeitamente robusto. É improvável que um bem se comporte de maneira perfeita. À medida que vamos para prazos inferiores, o ruído aumenta. O comportamento do ativo torna-se mais imprevisível devido a influências em tempo real de eventos atuais, microestrutura de mercado e especulação por participantes do mercado. Portanto, devemos escolher um prazo que equilibre a redução do ruído ea maximização do lucro.
Se o nosso sistema comercial não for rigoroso, precisamos entender qual prazo é mais adequado para o nosso sistema comercial em diferentes condições de mercado.
Robustez do instrumento.
Definição: um sistema de negociação é robusto em todos os instrumentos (ativos) se ele puder permanecer efetivo em diferentes instrumentos.
Um sistema de negociação é robusto para instrumentos se ele funcionar como esperado em diferentes ativos. Isso significa que a lógica de negociação subjacente do sistema comercial está capturando uma ineficiência que existe em múltiplos ativos.
A robustez dos instrumentos não é um indicador do desempenho de um sistema comercial. Na verdade, a maioria dos sistemas de negociação não são robustos por instrumentos. Os sistemas de negociação são projetados para capturar ineficiências específicas do mercado e essas ineficiências tendem a ser específicas de instrumentos. Assim, não é incomum que a maioria dos sistemas comerciais não sejam robustos por instrumentos.
Em vez de apontar para a robustez do instrumento, devemos entender como nossos sistemas de negociação funcionam em diferentes ativos. Isso nos permitirá descobrir ineficiências comuns em diferentes ativos e implementar nosso portfólio de sistemas de negociação de forma mais eficaz.
Robustez de otimização.
Definição: um sistema de negociação é robusto na otimização se a função do objetivo do sistema de negociação for maximizada e minimizando o ajuste da curva.
Antes de explicar em detalhes o que é o Optimization Robustness, vamos entender brevemente o que é otimização, função objetiva e ajuste de curva.
Otimização: o processo em que ajustamos a estrutura e as regras de um sistema de negociação para maximizar ou minimizar sua função objetiva.
Objective Function: Esta é a saída de desempenho de um backtest que estamos tentando maximizar ou minimizar.
Uma maneira fácil (e preguiçosa) de escolher uma função objetiva é usar o Lucro Líquido. Isso raramente é uma boa idéia. Na negociação, este resultado deve consistir em 3 coisas & # 8211; recompensa, consistência e risco.
Curve Fitting: o processo de restauração do sistema comercial tão próximo aos dados históricos que se torna ineficaz no futuro.
Por quê? Porque o futuro raramente reflete o passado!
Como o futuro raramente reflete o passado, precisamos de um processo de otimização que minimize o ajuste da curva. Isso aumentará as chances de sucesso do nosso sistema comercial. Um sistema de negociação que atravessa esse processo pode ser considerado otimizado de forma robusta.
Isso nos leva à nossa solução - The Walk Forward Optimization.
Definição de acordo com a Wikipedia:
A estratégia de negociação é otimizada com dados na amostra para uma janela de tempo em uma série de dados. O restante dos dados é reservado para testes fora da amostra. Uma pequena parcela dos dados reservados após os dados na amostra é testada com os resultados registrados. A janela de tempo na amostra é deslocada para a frente pelo período coberto pelo teste fora da amostra e o processo repetido. No final, todos os resultados registrados são usados ​​para avaliar a estratégia de negociação.
Para traduzir em palavras mais simples:
Otimizamos nosso sistema de negociação usando um período (na amostra) e aplicamos os parâmetros otimizados no próximo período (fora da amostra). Repetir. O desempenho do sistema de negociação é coletado usando todos os períodos fora da amostra.
Figura 4: Períodos in-sample e out-of-sample.
1) Otimizar o sistema de negociação usando In-Sample A.
2) Testar o desempenho do sistema comercial em Out-Sample A.
3) Otimizar o sistema de negociação usando In-Sample B.
4) Teste o desempenho do sistema de negociação em Out-Sample B.
5) Repita para o Período C para E.
6) Avaliaremos o desempenho do sistema comercial em Out-Sample A para E.
O objetivo deste processo é examinar como nosso sistema comercial será executado quando executado em território desconhecido (fora da amostra).
Parâmetro Robustiça.
Definição: um sistema de negociação é um parâmetro robusto se seu desempenho não mudar drasticamente devido a uma ligeira alteração nos valores dos parâmetros.
Se a lógica de negociação subjacente for boa, a alteração dos valores dos parâmetros ligeiramente não deve afetar significativamente o desempenho. Se o desempenho muda drasticamente, o sistema de negociação exibe sinais de ajuste de curva.
Os resultados de uma otimização podem ser visualizados em um espaço de otimização de superfície / parâmetro (se estamos apenas otimizando dois parâmetros). O eixo x e o eixo y representam nossos dois parâmetros. O eixo z representa a nossa função objetiva.
Figura 5: Superfície de otimização com picos espinhosos.
Figura 6: Superfície de otimização com colinas planas.
As duas figuras acima representam a superfície de otimização de um sistema comercial que usa dois parâmetros, uma média móvel rápida e uma lenta. Quando examinamos essa superfície de otimização, preferimos colinas planas sobre picos espinhosos. Montanhas planas indicam pouca mudança no desempenho, mesmo que mudemos ligeiramente os valores dos parâmetros.
Robustez do portfólio.
Definição: A robustez da carteira ocorre quando um grupo de sistemas de negociação pode permanecer efetivo em diferentes condições de mercado.
A robustez da carteira e a robustez do período são diferentes, uma vez que a robustez da carteira se concentra nos efeitos complementares de sistemas de negociação separados. Diferentes sistemas comerciais têm diferentes pontos fortes e fracos. Eles podem ser combinados de forma a maximizar nossa função objetiva do portfólio a longo prazo.
Para ilustração, suponha que possamos dois sistemas de negociação que são rentáveis ​​a longo prazo, mas que estão correlacionados negativamente um com o outro.
Figura 7: curva patrimonial líquida de um portfólio de dois robôs.
Ao combinar esses dois sistemas de negociação, podemos cancelar o risco em seu desempenho e alcançar um resultado positivo líquido longo com risco significativamente menor.
Ao aplicar este conceito a um portfólio de diferentes sistemas de negociação, buscamos alcançar a robustez da carteira.
Conclusão.
Este artigo serve para apresentar brevemente os sete principais tipos de robustez. No entanto, para realmente ter uma boa compreensão na construção de grandes sistemas de negociação, você precisa desses três elementos: design do sistema de negociação, codificação de comércio algorítmico e conhecimento de mercado. Qual é o próximo? Vá no Google esses tópicos e comece!
AlgoTrading101 é o primeiro curso on-line abrangente sobre negociação algorítmica. Aprenda os fundamentos do algo trading e coloque suas idéias em ação junto com mais de 10 mil alunos. Saiba mais sobre nós no AlgoTrading101.
Lucas Liew.
Este cara executa o AlgoTrading101, uma academia de negociação algorítmica com mais de 13.000 alunos. Clique no link "Autor" acima para saber mais sobre ele.

robustez do sistema de negociação
Voltando da história da barata e da chita, parece que a robustez é sobre a sobrevivência. Para um sistema de negociação automatizado, isso significa que o sistema "sobrevive e prospera" # 8221; depois que você decidir colocá-lo & # 8220; live & # 8221 ;.
No entanto, existem maneiras diferentes de ver a robustez em um sistema de negociação mecânica.
Diferentes definições de robustez.
A robustez do sistema comercial geralmente implica que o sistema exibe desempenho semelhante quando sujeito a pequenas variações. No entanto, pensando nisso, você percebe que isso pode significar várias coisas:
Robustez aos preços futuros (aspecto de sobrevivência) Robustez às mudanças internas (isto é, variação nos parâmetros do sistema) Robustez às mudanças externas (isto é, variação nos dados de preços) Robustez no projeto do sistema Robustez no teste do sistema.
Verifique também se o fórum do Trading Blox for mais discussão sobre robustez (alguns dos quais inspiraram idéias diretamente nesta publicação).
Existem 2 pressupostos que podem ser feitos:
O primeiro: um sistema robusto para mudanças (interna e externa) provavelmente será robusto para os preços futuros: isso ocorre porque os mercados sempre evoluem e mudam # 8211; e seu sistema deve ser capaz de lidar com essas mudanças.
O segundo é que a criação de um sistema que utiliza conceitos e procedimentos robustos, tanto no design como no teste, deve garantir que o sistema mostre robustez.
Design robusto do sistema.
Isso geralmente começa com uma estratégia de negociação que faz sentido, com poucos parâmetros, sem muitos sinos e assobios (não queremos que a Ferrari se pareça boa e percorrer a trilha, mas que não pode ultrapassar os solavancos de velocidade ou os parques de estacionamento subterrâneos e # 8230 Bem, eu realmente # 8230; mas você obtém o ponto! ;-)
Outro aspecto a considerar quando se pretende construir um sistema comercial robusto é ilustrado por esta citação de Bill Eckhardt, que pretende usar ferramentas e componentes robustos em seus sistemas:
Desenvolvemos todos os nossos sistemas exclusivamente em casa, de modo que não há qualquer tipo de indicadores publicamente reconhecíveis que eu possa mencionar. Definitivamente, utilizamos sistemas não lineares e indicadores não-lineares. Os indicadores lineares, como os filtros com médias móveis, foram extraídos em seco.
Em estatísticas, a mediana é uma ferramenta mais robusta do que a média / média (está sujeita a mudanças de dados subjacentes, como outliers). Possivelmente, o uso da mediana em vez da média em uma estratégia de negociação é mais robusto. Uma média móvel & # 8220; # 8221; o sistema de cruzamento apresentaria maior robustez do que o uso de um sistema de cruzamento médio móvel médio e # 8211; Isso é algo que eu estou planejando testar.
Teste robusto do sistema.
O principal aspecto do teste robusto do sistema é assegurar que o back-test seja realista e que não exista encaixe excessivo. Não iremos muito detalhadamente porque estes foram bem documentados (eu recomendo o livro de Perry Kaufman & # 8217; que tem um capítulo completo sobre Testes de Sistema e robustez).
Pontos importantes são dados de boa qualidade, dados em amostra, dados fora da amostra, hipóteses realistas (custos, deslizamento, etc.), lógica na estratégia.
Robustez às mudanças internas.
Isto é, quando você altera os parâmetros do sistema de negociação. Provavelmente é bastante fácil testar e medir. Suponha que você tenha um sistema Donchian Channel Breakout com comprimento de canal a 20 dias e parada com base em ATR aos 30 dias com um multiplicador de 2.
Um sistema robusto apresentaria desempenho muito semelhante com parâmetros ligeiramente diferentes: a robustez poderia ser quantificada pela medição da diferença geral / desvio padrão no desempenho do sistema quando variando parâmetros (por exemplo, em uma faixa de +/- 10%), por exemplo Sistema Donchian Channel Breakout com comprimento do Canal aos 22 dias e parada ATR com 33 dias com um multiplicador de 1.8, etc.
Robustez às mudanças externas.
Aqui, este é principalmente o & # 8220; parâmetros & # 8221; dos dados de preços que podem ser alterados para testar a robustez. Existem algumas coisas que podem ser alteradas, como o conjunto de instrumentos negociados (pequenas permutações não devem afetar a performance drasticamente), o período de teste (o sistema funciona de forma semelhante em todos os períodos de tempo), ou mesmo aleatórias alterações em preços reais.
Robustez aos preços futuros.
Infelizmente, os futuros preços dos dados são bastante difíceis de encontrar (CSI são muito bons, mas eles apenas fornecem dados históricos! Sinta-se à vontade para me enviar um e-mail se você encontrou um bom fornecedor ;-), então você, obviamente, não pode testar seu sistema para a robustez do preço futuro antes colocando-o ao vivo.
Provavelmente, o objetivo de se concentrar na robustez com os quatro pontos anteriores é garantir que o sistema seja igualmente bom em preços futuros. No entanto, esses quatro aspectos de robustez em um sistema comercial só podem atuar como proxy para a robustez dos preços futuros.
Embora nós, como desenvolvedores de sistemas de negociação, gostem de obter algum tipo de "reconfortante" # 8221; certeza, temos que ter em mente que o futuro será imprevisível, os mercados mudarão e, portanto, projetar um sistema para negociar futuros preços sempre conterão algum grau de incerteza. Cabe a nós decidir (e prever) quais parâmetros e proxies são importantes para garantir a robustez no futuro.
Isso pode parecer um paradoxo, mas projetar um sistema de negociação automatizado envolve mais discrição e previsão do que se poderia pensar.
8 comentários até agora e darr;
Bom artigo sobre robustez, um termo que tem sido usado tanto e tão vagamente que começou a perder o significado.
Além disso, essa foi uma citação interessante sobre como um comerciante abandonou as médias móveis e desenvolve seus indicadores internamente. Sua idéia sobre mediana vs média é interessante. Outra variável que pode ser curvada (e deve suportar algum estresse) é a definição de preço. Normalmente usamos o próximo como a definição de preço. Compre por que não o alto ou o baixo, dependendo de como o mercado está em tendência? E quanto ao conceito de preço médio (HLC / 3)?
É uma ideia interessante dividir a robustez em componentes. Não tenho certeza se penso sobre isso da mesma maneira.
Aqui é como pensamos sobre isso. A robustez é a capacidade do sistema de funcionar bem em condições de mudança.
Since the future conditions are never exactly the same as past conditions, a more robust system will make money in real trading than a less robust system.
So, robustness is a measure of the likelihood that the system will perform similarly in real trading compared to development.
Your analysis does bring up an interesting question. If we can make our system robust to external changes, then how do we measure those changes?
@milk – good idea about these price variations. As long as you are inventive (as you did with your excellent breakfast spread ;-), you might get off the “beaten tracks” and find something interesting.
@George, I think I was trying to expres a similar concept: if the system you develop is robust to changes (such as parameter changes or price, instruments changes) it might be robust on future prices (as these will always change)… But this contains an assumption that changes in the future will be similar (in terms of impact on your system) to the changes you test on your system during development.
In terms of measuring some robustness, I would think you can design an objective function to evaluate your trading systems and measure the standard deviation of this objective function when subjecting your system to changes.
I agree with your concluding statement that systems testing and design is far from an exact science.
Though we cannot test on “future” data, I think out-of-sample testing is as good a tool as possible.
In addition to Kaufman’s excellent book, I would also recommend Robert Pardo’s Design, Testing, and Optimisation of Trading Systems.
Turns out Robert Pardo is also a top trader.
Yes, that makes sense. I would like to design an experiment or measure the”assumption that changes in the future will be similar”.
Hi, I once researched a system for forex. It can make money in each of 7 major currency pairs from 2000 to 2018 with very small maximum drawdown. Even after changing the parameters somewhat, it is still very profitable. The problem is it doesn’t perform well from 1990 to 2000’s currency market, and it is just breakeven during that time. I guess the reason is the introduction of Euro and the market price pattern changed somewhat after 2000, so this system works well only at 2000-2018. Do you think this kind of systems which can only perform well on recent 10-year period is robust enough and should I confidently use it?
Bem & # 8211; the problem with this kind of approach is that you are anticipating that the markets will be similar in the future to the 2000-2018 period. I think I prefer an approach that can be “robust” to whatever conditions the market might throw at you, which includes a return to the 1990-2000 conditions. Usually that would mean lower performance on 2000-2018 period though…
Now, even in system development there is some discretion involved and if you believe that conditions will stay as they are, you might want to stay with a system that works well only on the recent market conditions. You could also potentially keep developing and monitoring your system to try and adapt it to changing conditions.
I think your suggestion is very reasonable. This system is a pull-back system. It follows the long-term trend, and wait the market has a pullback, then enter the market when the price exceed previous level. From my observation of 2000-2018 currency market, for each significant resistance level, there will be many limit/stop orders around it. The result is if the price successfully surpass a significant resistance, it has a higher chance to continue higher. But it seems this is not the case in 1990-2000. In that period, many times the price just exceed an important resistance by a small amount and then quickly revert back. So this system didn’t performance well at that time.
I am not sure whether future price patterns will be like in 2000-2018, so I may prefer a system which can perform well in both time periods even with lower performance on 2000-2018. Your suggestion to keep developing and monitoring the system to try and adapt to changing conditions is very helpful! Obrigado!
Deixe um comentário (Cancelar)
Atualizações gratuitas.
Posts Populares.
Procure o blog Au. Tra. Sy.
Global Futures Broker.
Au. Tra. Sy blog, Systematic Trading, pesquisa e desenvolvimento, com um sabor de Trend Following.
Descargo de responsabilidade: o desempenho passado não é necessariamente indicativo de resultados futuros. O comércio de futuros é complexo e apresenta o risco de perdas substanciais; Como tal, pode não ser adequado para todos os investidores. O conteúdo deste site é fornecido apenas como informação geral e não deve ser tomado como conselho de investimento. Todo o conteúdo do site, não deve ser interpretado como uma recomendação para comprar ou vender qualquer instrumento financeiro ou de segurança, ou para participar de qualquer estratégia de negociação ou de investimento específica. As idéias expressas neste site são apenas as opiniões do autor. O autor pode ou não ter uma posição em qualquer instrumento financeiro ou estratégia acima referida. Qualquer ação que você toma como resultado de informações ou análises neste site é, em última análise, sua exclusiva responsabilidade.
RESULTADOS DE DESEMPENHO HIPOTÉTICOS TEM MUITAS LIMITAÇÕES INERENTES, ALGUNS DESCRITOS ABAIXO. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VOCE OU POSSIBILIDADE DE ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS; POR FAVOR, HÁ DIFERENÇAS FREQUENTEMENTE SHARP ENTRE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E OS RESULTADOS REAIS REALIZADOS POR TODOS OS PROGRAMAS DE NEGOCIAÇÕES PARTICULARES. UMA DAS LIMITAÇÕES DOS RESULTADOS DE DESEMPENHO HIPOTÉTICOS É QUE ESTÃO GERALMENTE PREPARADAS COM O BENEFÍCIO DE HINDSIGHT. ADICIONALMENTE, A NEGOCIAÇÃO HIPOTÉTICA NÃO IMPORTA RISCOS FINANCEIROS, E NENHUM GRUPO DE NEGOCIAÇÃO HIPOTÉTICA PODE COMPLETAMENTE CONTA PARA O IMPACTO DO RISCO FINANCEIRO DE NEGOCIAÇÃO REAL. POR EXEMPLO, A CAPACIDADE DE PERDER OU DE ADESIVAR A UM PROGRAMA DE NEGOCIAÇÃO ESPECÍFICO EM ESPIRRO DE PERDAS DE NEGOCIAÇÃO SÃO PONTOS MATERIAIS QUE PODEM IGUALMENTE AFETAR EFECTUAR RESULTADOS REAIS DE NEGOCIAÇÃO. HÁ NOMBROSOS OUTROS FATORES RELACIONADOS COM OS MERCADOS EM GERAL OU NA EXECUÇÃO DE QUALQUER PROGRAMA DE NEGOCIAÇÃO ESPECÍFICO QUE NÃO PODE SER TOTALMENTE COMPTABILIZADO NA PREPARAÇÃO DE RESULTADOS DE DESEMPENHO HIPOTÉTICOS E TODOS OS QUE PODEMOS ADVERSAMENTE EFECTUAR OS RESULTADOS DE NEGOCIAÇÃO.
ESTAS TABELAS DE DESEMPENHO E RESULTADOS SÃO HIPOTÉTICOS DE NATUREZA E NÃO REPRESENTA NEGOCIAÇÕES EM CONTAS REAIS.

Trading system robustness


Testes de estresse para estratégia de negociação Robustez.
por Michael R. Bryant.
In the article on multi-market trading strategies, I discussed the concept of robustness, which I described as insensitivity to variations in the data on which the strategy is based. Building a trading system over multiple markets is one way to increase robustness. However, what if you already have a strategy and you want to see how robust it is?
Testing a trading strategy for robustness is often referred to as sensitivity analysis, or more colloquially as stress testing . The basic idea is to see what happens when small changes are made to the strategy inputs, price data, or other elements of the strategy or the trading environment. A robust strategy exhibits a proportional and relatively muted reaction to such changes, whereas a strategy that is not robust will react disproportionally and sometimes fail outright when small changes are made to its inputs or environment.
Why is This Important?
Put simply, robustness is important because the markets never stay the same. Take the strategy inputs, for example. Inputs such as the look-back length for a moving average might be optimal over the back-test period, but going forward, different values might be optimal. We want to know how well the strategy will perform when the inputs are no longer optimal. One way to address that is to see how the results change when the input values are changed.
As explained in the earlier article, the idea of robustness is related to strategy over-fitting. We want to make sure that the strategy has not been fit so tightly to the market during the development process that it can't withstand any changes to the market. Generally speaking, we can test for that by changing the market, changing the strategy, or both. A strategy that does not stand up well to relatively small changes is not robust and is likely to be over-fit. Such a strategy should not be expected to do well in the future.
Types of Stress Testing.
There are many different ways that a strategy can be stress tested. We can make changes to the strategy itself or to the price data on which we back-test it. We can change the trading costs, such as the amount of slippage, or change the position sizing. In principle, anything that affects the strategy back-testing results can be varied. In this article, the following three types of stress testing will be discussed:
Changing the strategy inputs.
Making small changes to individual prices.
Changing the starting bar.
The rationale for changing the strategy inputs was discussed above. To change them, a percentage will be chosen randomly between - Max and +Max, where Max might be on the order of 1% or 5%. This percentage will be applied to the range of values for each input. For example, if we choose the look-back length for an indicator from the range of values from 1 to 100, then the range would be 100, and the randomly chosen change percentage would be applied to 100. The change amount, either positive or negative, would then be added to the original input value to make it higher or lower by that amount. We'll also specify a minimum possible change amount, such as 1 for the amount to change an indicator look-back length. That way, if the random change percentage is a small number, the input will still be changed.
One way that a strategy can be over-fit, and therefore not robust, is if it's fit too closely to specific prices in the back-test. For example, if the strategy enters long on a stop and several large, profitable trades enter at the high price of the day, that should raise a red flag. What would the results look like if the high had been one tick lower on those days? If such a small change would ruin the results, the strategy is clearly not robust. A stress-testing technique to detect that kind of over-fitting is to make random changes to individual prices and evaluate the results.
To randomly change the price data, we'll use two settings. One is the probability of changing a price. For example, if the probability is 50%, that means there's a 50% chance that any price -- open, high, low, close of each bar -- will be changed. The second setting is the maximum percentage change that will be applied to a price that is being changed. As with the input values, the actual amount of the change is randomly chosen between - Max and +Max, where Max is the maximum percentage price change. The value of Max is taken as a percentage of the average true range over the past 100 bars. For example, if the average true range is 10 points and the maximum percentage change is 20%, then the change amount is a randomly chosen number between -2 and +2 points. Let's say the actual number is -1.25 points, and the closing price is 1250.50. The modified close would then be 1249.25. Finally, it's possible that changing a price will invalidate the normal price ordering, such as reducing the open so that it's below the low. To prevent that, the prices may need to be adjusted after making the change to keep the open and close within the high/low range.
The last stress testing method that will be discussed involves changing the starting bar. It's probably obvious that a good strategy should not fall apart when you start the back-test on a different bar. It might be less obvious how this can happen. Consider a hypothetical strategy that enters long on a moving average crossover. It then holds the trade exactly five bars before exiting at market. Putting aside the suitability of the logic, imagine what the trade history might look like on a price chart. If the moving average entry condition uses a short-term average crossing above a long-term average, it's entirely possible that in a sustained up-trend, the entry condition could be true for a long period of time; i. e., the short-term average might be higher than the long-term average for many bars in a row.
If the back-test were started during that period, the first trade would enter on the next bar after the starting bar, and each trade would last five bars, followed immediately by the next entry, and so on. Now consider what would happen if the starting bar were changed. If the starting bar was one bar later, for example, the whole series of trades would be shifted one bar to the right. It's entirely possible that some of those series of five-bar trades would be much more profitable than others, depending on how the trades aligned with any underlying five-bar trend cycle that existed. So, depending on the starting bar, the strategy might be highly profitable or unprofitable because of where the trades started and ended. It might not be obvious during development that the strategy logic had this type of dependency on the starting bar, particularly for more complex types of logic.
To test for the effect of the starting bar, the bar on which the strategy back-test is started will be varied by a random number chosen between 1 and N. In the example below, N was chosen to be 300. So the starting bar was varied by adding a randomly chosen number between 1 and 300 to the original starting bar number.
A Monte Carlo Approach.
Varying the inputs, prices, or the starting bar by a random amount only provides one alternative to compare against the original results. To get a more complete picture of how robust a strategy is, we can repeat the process many times until we have a distribution of results. Generally speaking, varying the input variables randomly over a large number of iterations in order to generate a statistical distribution of results for the function that depends on those inputs is called Monte Carlo analysis.
In this case, the function is the trading strategy and the function inputs are the strategy inputs, market prices, and/or the starting bar. By repeating the stress test many times, we end up with multiple sets of trading results. To understand how the Monte Carlo process works, consider the example shown in Fig. 1.
Figure 1. Original equity curve for a forex trading strategy .
The equity curve depicted in Fig. 1 is for a trading strategy developed for the EURUSD forex market on daily bars, with one standard lot (100,000) per trade and $50 per lot for trading costs. This is one of the bonus strategies included with Adaptrade Builder. It was developed in March 2018. The last 100 trades or so have been since release, which shows that it has held up well in real-time out-of-sample tracking.
To illustrate how stress testing results can be analyzed using a Monte Carlo approach, consider the results of stress testing the forex strategy on the price data, as shown in Fig. 2, which depicts a total of 20 equity curves, 19 of which correspond to a different set of randomly-modified price data.* The original price series for the EURUSD was modified 19 times as described above, using a probability of price change of 50% with a maximum percentage change of 20%. Along with the original curve, shown as the thicker green line, there are a total of 20 sets of results. The total number was kept as small as possible for illustrative purposes; more iterations will be used below in the remaining examples.
Figure 2. Stress testing the forex strategy by varying the price data 19 times .
The total net profit corresponding to each equity curve in Fig. 2 is as follows:
The highest value, $147,855, corresponds to the original file of price data. The lowest value is $50,201. In a Monte Carlo analysis, we can ask what the net profit is likely to be with a specified degree of confidence given the variation in the results. A confidence level of 95% is typical, which means there would be a 5% chance of the net profit being lower than our selected value. To obtain the value of net profit at 95% confidence, the list above is sorted from highest to lowest, and the value 95% of the way down the list is selected. Since we have 20 items in the list, we select the 19th item in the sorted list, which would be a net profit of $68,459; i. e., the second lowest value in the list.
We can interpret this result as follows: if the randomization of the price data is representative of the kind of random differences we would expect in the market, then we can expect that 95% of the time, the net profit will be at least $68,459.
The same approach can be applied to any performance metric we might want to track. If the metric is one where a lower value is better, such as maximum drawdown, the list would be sorted in the opposite order before selecting the value 95% of the way down the list.
Examples of Stress Testing.
Now consider a more representative example, in which a total of 100 samples were generated for the Monte Carlo analysis. Fig. 3 shows the different equity curves resulting from varying the price file 99 times (plus the original curve).
Figure 3. Stress testing the forex strategy by varying the price data 99 times, for a total of 100 equity curves.
Applying the Monte Carlo approach to the results for the stress test, the results in Table 1 were generated at 95% confidence (shown next to the results for the original data for comparison).
Table 1. Stress testing the forex strategy by varying the price data.
As expected, the Monte Carlo results from modifying the price data show a reduction in performance compared to the results for the original price data. However, the stress test results are still positive, indicating that the strategy is at least moderately robust.
In Fig. 4, below, the same approach has been applied to the strategy input values. The modification percentage was set at 1%, which, for many inputs, meant that the minimum change amount was applied. All of the inputs were modified by at least the minimum amount for each evaluation. The original equity curve is shown near the top of the chart as the thicker, green line. Compared to the results for the price modifications, modifying the strategy inputs had a stronger effect on performance.
Figure 4. Stress testing the forex strategy by varying the strategy inputs 99 times, for a total of 100 equity curves.
The Monte Carlo results for the same sample of performance metrics as above are shown in Table 2 below, which includes the results for the original input values.
Table 2. Stress testing the forex strategy by varying the strategy inputs.
The results from varying the starting bar for the same forex strategy are shown below in Fig. 5. Compared to the results from the other two tests, relatively little effect is seen from varying the starting bar, suggesting that the strategy is mostly insensitive to this variable.
Figure 5. Stress testing the forex strategy by varying the starting bar 99 times, for a total of 100 equity curves.
The Monte Carlo results from this test are shown in Table 3 below, where they're compared to the results for the original starting bar.
Table 3. Stress testing the forex strategy by varying the starting bar.
It's also possible to modify everything together or to modify combinations of variables, such as modifying the strategy inputs at the same time as the price data. In Fig. 6, below, all three stress tests were performed together. This means the strategy inputs, price data, and starting bar were randomly modified at the same time prior to evaluating the strategy.
Figure 6. Stress testing the forex strategy by varying the starting bar 99 times, for a total of 100 equity curves.
Clearly, this combination of stress tests is a severe test of the strategy's robustness. One or two of the equity curves shown in Fig. 6 appear to show a net negative (or nearly so) net profit. Only one equity curve approaches the original one. The Monte Carlo results based on this test are shown below in Table 4.
Table 4. Stress testing the forex strategy by varying the price data, strategy inputs, and starting bar.
Sumário e conclusões.
Over-fitting is always a concern when developing a trading strategy. So-called stress tests measure how robust a trading strategy is, which is an indication of whether or not the strategy is over-fit. While any variable that affects a trading strategy's results can potentially be the subject of a stress test, this article focused on three important factors in determining back-test results: the price data, the strategy's input values, and the starting bar for the back-test.
The strategy used to illustrate each stress test demonstrated moderate robustness with respect to the price data and input values and good robustness with respect to the starting bar. It's worthwhile to note that the example strategy had a three-year record of positive real-time tracking results, yet, in some cases, the stress test results were worse than the actual out-of-sample results achieved by the strategy. This suggests that the stress tests may have been too severe in those cases. This was particularly evident when all three tests were combined, as shown in Fig. 6 and Table 4.
The stress test for the strategy inputs may have been unrealistically strict in that it modified all the inputs for each test iteration. A better approach may be to apply the same method used to modify the price data, in which a price was modified with a specified probability. Rather than modifying all the inputs each time, a probability could be applied to determine if a given input should be modified. If so, it would be modified in the way described above; otherwise, the input would be unmodified.
It was shown how the stress test results could be analyzed using Monte Carlo analysis. This allowed us to quantify the results and provide an estimate of performance that was generally more conservative than the back-test results based on the original data.
The focus of the article was on testing a trading strategy after it had been developed. In principle, however, the same approach could be used as part of the strategy development process. In Adaptrade Builder, the strategies are evolved based on the back-tested performance on the in-sample period. Instead of using the performance obtained from back-testing the strategy on the original data, the Monte Carlo results at 95% confidence from the stress test could be used. The top strategies in the population would be the ones with the best Monte Carlo results, which would tend to drive the population towards robust strategies. Unfortunately, if each Monte Carlo analysis were based on N simulations, the build process would take N times as long using this approach.
Along with out-of-sample testing and other methods discussed in this series of articles, stress testing provides another tool to help identify robust trading strategies and avoid over-fitting. If applied as part of the strategy evaluation process, stress testing may help weed out strategies that are overly sensitive to changes in the trading environment, which could help avoid losses and increase your chances of success in the markets.
* All stress tests were performed using Adaptrade Builder.
This article appeared in the March 2018 issue of the Adaptrade Software newsletter.
OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES INERENTES. DESEJO UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO SEJAM REALMENTE EXECUTOS, OS RESULTADOS PODEM TENER SOB OU COMENTÁRIOS COMPLEMENTARES PARA O IMPACTO, SE HAVER, DE CERTOS FATORES DE MERCADO, TAL COMO FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VÁ OU SEJA PROBABILITÁVEL PARA ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS.
Se você quiser ser informado de novos desenvolvimentos, novidades e ofertas especiais do Adaptrade Software, por favor, junte-se à nossa lista de e-mail. Obrigado.
Copyright © 2004-2018 Adaptrade Software. Todos os direitos reservados.

No comments:

Post a Comment