Monte Carlo - degradação aleatória da execução
Imperfeições de execução, como derrapagem de preços ou spreads temporariamente maiores, são ocorrências comuns em negociações ao vivo. Esses fatores podem fazer com que o preço de fechamento real de uma negociação seja menos favorável do que o preço ideal observado ou visado durante o backtest. Essa simulação de Monte Carlo modela o impacto de tais problemas de execução aleatória.
Se aplicarmos esse teste de Monte Carlo, uma porcentagem aleatória de negociações (Probability) durante o backtest terão seu resultado de execução degradado. Isso é obtido piorando a FecharPreço das negociações selecionadas. O valor pelo qual o FecharPreço também é aleatório para cada comércio afetado, calculado como uma porcentagem aleatória (até Porcentagem máxima de degradação) da faixa de preço coberta por essa negociação específica (de OpenPrice para o original FecharPreço). Um preço "pior" significa um inferior preço de fechamento para negociações longas e um maior preço de fechamento para negociações a descoberto, reduzindo assim os lucros ou aumentando as perdas.
Dito de forma simples, ao executar 500 (ou um número diferente) backtests, em que cada backtest aplica essa degradação aleatória de preço a um subconjunto diferente de negociações e com gravidade variável, você pode adquirir uma perspectiva de análise de Monte Carlo sobre a sensibilidade da estratégia às variações da qualidade de execução.
Neste exemplo específico, podemos executar 100 simulações com degradação de execução aleatória aplicada conforme descrito.
Esse teste difere da aplicação de um valor fixo de derrapagem a todas as negociações. Aqui, o efeito de degradação é probabilístico:
-
Que negociações são afetadas é aleatório (baseado em Probability).
-
Quanto cada comércio afetado é degradado é também aleatório (até Porcentagem máxima de degradação de seu alcance).
Portanto, cada execução de simulação representa um cenário de backtest exclusivo. Em uma simulação, as negociações #5, #23 e #58 podem sofrer uma pequena degradação, enquanto outra simulação pode afetar as negociações #12, #23, #45 e #70, sendo que a negociação #23 pode sofrer uma degradação de preço maior do que na primeira simulação. Se o número de simulações de Monte Carlo for definido como 500, haverá 500 resultados exclusivos de backtest, cada um refletindo um padrão plausível diferente de imperfeições de execução aleatórias. Isso ajuda a avaliar a robustez da estratégia em relação às variações imprevisíveis de execução encontradas nos mercados ativos.
Como importar snippets/indicadores personalizados para o SQX:
- https://strategyquant.com/doc/programming-for-sq/import-export-custom-indicators-and-other-snippets/