Monte Carlo - Simulação de jitter de parâmetro
No mundo real das negociações, as condições de mercado estão em constante evolução. A volatilidade muda, a liquidez flutua e o próprio feed de dados pode ter variações mínimas de tick a tick. Consequentemente, mesmo uma estratégia bem otimizada pode não ter um bom desempenho exatamente A estratégia pode não ser tão eficiente quanto previsto por um backtest, pois seus parâmetros principais ou cálculos de indicadores podem sofrer uma leve "instabilidade" quando confrontados com condições reais. Essa simulação de Monte Carlo foi projetada para testar a resistência de sua estratégia a esses pequenos e imprevisíveis desvios do comportamento perfeito do backtest.
Se aplicarmos esse teste de Monte Carlo, a simulação introduz dois efeitos potenciais nas negociações dentro de cada execução de backtest gerada:
-
Condição Flicker (entradas perdidas): Com base no Pular ProbabilitySe o backtest não for realizado, uma porcentagem aleatória de negociações é simplesmente removida do backtest. Isso simula instâncias em que uma leve instabilidade de parâmetros pode fazer com que uma condição de entrada, que foi atendida no backtest histórico, seja perdida por pouco em um cenário ao vivo ligeiramente diferente.
-
Variação do nível de saída (flutuação de P/L): Para os negócios não pulado, uma porcentagem aleatória adicional (definida por Ajustar Probability) terão seu resultado final ligeiramente alterado. Isso é feito modificando o Preço fechado da negociação. O valor da modificação é calculado como uma porcentagem aleatória (até o valor de Percentual de ajuste do preço máximo) da faixa de preço original dessa negociação específica (aberto a fechado). Crucialmente, esse ajuste pode ser positivo ou negativoou seja, o efeito de jitter pode resultar aleatoriamente em um resultado ligeiramente melhor ou preço de fechamento ligeiramente pior, simulando pequenas variações nos pontos de execução de Stop Loss, Profit Target ou trailing stop.
Simplificando, ao executar 500 (ou um número diferente) backtests de simulação, cada um aplicando diferentes saltos aleatórios e ajustes de preço bidirecionais aleatórios à lista de negociações, você obtém uma perspectiva de Monte Carlo sobre a sensibilidade do desempenho de sua estratégia a pequenas instabilidades aleatórias em sua própria lógica de execução ou sua reação aos dados do mercado.
Por exemplo, a execução de 100 simulações usando esse teste gerará 100 curvas de patrimônio diferentes, cada uma representando um caminho de resultado plausível, considerando essas pequenas variações aleatórias.
Esse teste difere significativamente da aplicação de derrapagem fixa ou da simulação de tempo de inatividade aleatório. Ele não apenas degrada os resultados de forma consistente, mas também introduz uma perturbação probabilística diretamente relacionado à sensibilidade potencial dos parâmetros internos da estratégia. Uma simulação pode ignorar as negociações #3 e #25, piorar ligeiramente a negociação #10 e melhorar ligeiramente a negociação #42. Outra simulação poderia ignorar apenas a operação #15, mas aplicar ajustes de preço maiores (tanto positivos quanto negativos) às operações #8, #33 e #50. Ao avaliar a distribuição dos resultados em várias simulações, você pode avaliar a verdadeira robustez da estratégia em relação ao tipo de variações operacionais sutis encontradas com frequência ao vivo.
Como importar snippets personalizados (como este teste Monte Carlo) para o SQX:
https://strategyquant.com/doc/programming-for-sq/import-export-custom-indicators-and-other-snippets/