Sunday 22 October 2017

Monte carlo simulação e sistema negociação pdf


PdfSR é um participante no Amazon Services LLC Associates Program, um programa de publicidade afiliada projetado para fornecer um meio para que os sites ganhem taxas de publicidade por publicidade e ligação a Amazon. Monte Carlo Simulation and System Trading. Avaliação de chance, análise de risco e validação de sistemas de negociação mecânica O sistema de negociação com sistemas de negociação mecânica em todo o mundo determina cada vez mais as atividades de mercado financeiro de comerciantes profissionais e privados. Desafortunadamente, o índice de sucesso atual de tais negociações sistemáticas, ou seja, para o comércio lucrativo a longo prazo, não pode até agora acompanhar a crescente popularidade desse método. As razões para isso são, entre outras coisas, processos de desenvolvimento insuficientes, bem como sistemas inadequadamente testados. O uso adicional de simulações de Monte Carlo durante o desenvolvimento do sistema e as fases de teste do sistema contribuem para o fato de que a avaliação casual, a análise de risco e a validação dos sistemas de negociação mecânica podem ser melhoradas qualitativamente claramente. Volker Butzlaff, engenheiro de Planejamento Urbano, atuou muitos anos como gerente de projeto, designer de sistemas e controlador de garantia de qualidade no departamento de tecnologia da informação da DaimlerChrysler na Alemanha. Hoje ele trabalha como engenheiro freelancer com a ênfase no desenvolvimento de sistemas e metodologia de simulação. Esta visualização é fornecida pelo Google, com a permissão de seus editores e autores. Mais infoby Michael R. Bryant A análise de Monte Carlo é uma técnica computacional que permite incluir as propriedades estatísticas dos parâmetros dos modelos em uma simulação. Na análise de Monte Carlo, as variáveis ​​aleatórias de um modelo são representadas por distribuições estatísticas, que são amostradas aleatoriamente para produzir a saída dos modelos. O resultado é, portanto, também uma distribuição estatística. Comparado com métodos de simulação que não incluem amostragem aleatória, o método de Monte Carlo produz resultados mais significativos, que são mais conservadores e também tendem a ser mais precisos quando usados ​​como previsões. Ao usar o uso da análise de Monte Carlo para simular a negociação, a distribuição comercial, conforme representada pela lista de negócios, é amostrada para gerar uma seqüência comercial. Cada uma dessas seqüências é analisada e os resultados são classificados para determinar a probabilidade de cada resultado. Desta forma, um nível de probabilidade ou confiança é atribuído a cada resultado. Sem a análise de Monte Carlo, a abordagem padrão para o cálculo da taxa histórica de retorno, por exemplo, seria analisar a seqüência atual dos negócios usando, por exemplo, o dimensionamento fixo da posição fracionada. Pode verificar-se que a taxa de retorno sobre a sequência foi de 114. Com a análise de Monte Carlo, por outro lado, são analisadas centenas ou milhares de diferentes seqüências de negócios e a taxa de retorno é expressa com um qualificador de probabilidade. Por exemplo, a taxa de retorno determinada pela análise de Monte Carlo pode ser de 83 com confiança 95. Isso significa que, de todas as milhares de seqüências consideradas, 95 apresentaram taxas de retorno maiores ou iguais a 83. A análise de Monte Carlo é particularmente útil para estimar a redução máxima do pico para o vale. Na medida em que a retirada é uma medida útil de risco, melhorar o cálculo da retirada permitirá avaliar melhor um sistema ou método de negociação. Embora não possamos prever como o mercado diferirá amanhã do que vimos no passado, sabemos que será diferente. Se calcularmos a redução máxima com base na seqüência histórica dos negócios, baseamos nossos cálculos em uma seqüência de negócios que sabemos que não serão repetidos exatamente. Mesmo que a distribuição de trades (no sentido estatístico) seja a mesma no futuro, a sequência desses negócios é em grande parte uma questão de chance. O cálculo da redução em função de uma determinada seqüência é algo arbitrário. Além disso, a seqüência de negócios tem um efeito muito grande na redução calculada. Se você escolher uma seqüência de negócios onde cinco perdas ocorrem em uma linha, você poderia obter uma redução muito grande. Os mesmos negócios organizados em uma ordem diferente, de modo que as perdas são uniformemente dispersas, podem ter uma redução desprezível. Ao usar uma abordagem de Monte Carlo para calcular a redução, a seqüência histórica dos negócios é randomizada e a taxa de retorno e redução são calculadas para a seqüência aleatória. O processo é então repetido várias centenas ou mil vezes. Olhando os resultados em conjunto, podemos achar, por exemplo, que em 95 das seqüências, a redução foi menor que 30 quando 4 do capital foram arriscados em cada comércio. Nós interpretaríamos isso para significar que há 95 chances de que a redução seja menor que 30 quando 4 arrisque em cada comércio. Em geral, existem duas maneiras de gerar a seqüência de trades em uma simulação de Monte Carlo. Uma opção é construir cada sequência de trades por amostragem aleatória dos mesmos negócios como na sequência atual, com cada troca incluída uma vez. Este método de amostragem da distribuição comercial é conhecido como seleção aleatória sem substituição. Outro método de amostragem possível é a seleção aleatória com substituição. Se esse método fosse usado, os negócios seriam selecionados aleatoriamente da lista original de negócios, independentemente de o comércio ter sido ou não selecionado. Na seleção com substituição, um comércio pode ocorrer mais de uma vez na nova seqüência. O benefício da seleção sem substituição é que ele duplica exatamente a distribuição de probabilidade da seqüência de entrada, enquanto que a seleção com substituição pode não. A desvantagem para a seleção sem substituição é que as seqüências amostradas aleatoriamente estão limitadas ao número de trades na seqüência de entrada. Se você tem uma seqüência curta de negócios (digamos, menos de 30 negócios), isso pode limitar a precisão de determinados cálculos, como a redução. Um exemplo baseado na amostragem sem substituição é mostrado abaixo. A negociação é simulada usando o dimensionamento da posição fixa começando com um patrimônio da conta de 10.000. Cada simulação emprega 500 seqüências comerciais (amostras). A primeira seção de resultados na figura mostra os principais resultados, como a taxa de retorno, em uma série de níveis de confiança. Observe, por exemplo, que os retornos mais baixos estão previstos para maiores níveis de confiança. Exemplo de resultados de análise de Monte Carlo. Monte Carlo Simulação de seu sistema de negociação NOTA: tópico avançado. Certifique-se de ler as partes anteriores do tutorial primeiro. Para interpretar corretamente os resultados da simulação de Monte Carlo, você precisa ler esta seção do manual. Configurações não triviais e detalhes não óbvios são explicados abaixo. Por favor, não salte. De um modo geral, os métodos de Carlo Carlo descrevem uma ampla classe de algoritmos computacionais que usam amostragem aleatória repetida para obter propriedades estatísticas de um determinado processo. Foi inventado pela matemática polaca Stanislaw Ulam trabalhando em projetos de armas nucleares no laboratório Los Alamos. Como ele não conseguiu analisar processos físicos complexos usando métodos matemáticos convencionais, ele pensou que ele poderia criar uma série de experiências aleatórias, observar os resultados e usá-los para obter propriedades estatísticas do processo. No desenvolvimento do sistema de negociação, a simulação Monte Carlo refere-se ao processo de utilização de seqüências de comércio simuladas aleatorizadas para avaliar as propriedades estatísticas de um sistema comercial. Há muitas maneiras de executar cálculos reais que diferem quando se trata de detalhes de implementação, mas provavelmente o mais simples e confiável é o método de bootstraping que realiza amostragem aleatória com a substituição da lista de comércio real gerada pelo back-test. Vários métodos de simulação de Monte Carlo permitem verificar a robustez do sistema de negociação, descobrir probabilidade de ruína e muitas outras propriedades estatísticas do sistema de negociação. Como funciona na AmiBroker Para executar a simulação de Monte Carlo (ou teste de inicialização) do seu sistema comercial, o AmiBroker executa o seguinte: A. Criando o conjunto de entradas A.1 Execute o teste posterior do seu sistema comercial para produzir o conjunto original de N Negociações B. Repetidamente (1000 vezes) B.1 escolha aleatoriamente trocas da lista de comércio original para produzir novo conjunto aleatório de N trades (chamado realização) Este conjunto aleatório contém o mesmo número de negócios, eles são ordenados aleatoriamente e algumas negociações originais Pode ser ignorado e alguns utilizados mais de uma vez (permutação com repetição, ou amostragem aleatória com substituição). Uma vez que o número de realizações únicas é NN (assim com apenas 100 negócios de entrada, temos 100 100 realizações únicas), com número suficiente de trades (gt100) a probabilidade de escolher uma seqüência idêntica como original é praticamente zero. B.2 executam sequencialmente o cálculo de perda de ganhos para cada comércio escolhido aleatoriamente, usando o dimensionamento de posição definido pelo usuário para produzir equidade do sistema. B.3 registrar a equidade do sistema na distribuição C.1 Dados do processo obtidos em B para gerar estatísticas e gráficos de distribuição. Todos os Acima acontece quando você pressiona o botão Backtest na janela New Analysis. O simulador AmiBrokers Monte Carlo é tão rápido que geralmente custa apenas uma fração de segundo em cima do procedimento de teste normal. Deve ser bem notado que os negócios simulados durante o bootstrap são realizados sequencialmente. Se o seu sistema de negociação original negociasse várias posições ao mesmo tempo (de modo que algumas ou todas as negociações estão sobrepostas), isso pode resultar em reduções menores do sistema sendo relatadas pelo teste bootstrap, porque as retiradas de negócios individuais ocorreram de forma sequencial (não em paralelo, como acontece com as transações sobrepostas ). A maneira como funciona o simulador de Monte Carlo pode ser controlada a partir da página Configurações de análise, como guia QuadMonte Carlota: Habilite a simulação de Monte Carlo, essa caixa de seleção controla sempre que a simulação MC é executada automaticamente como parte do backtest (logo após o backtest gera lista comercial) define o número De simulações de MC para executar (deve ser de 1000 ou mais) Simular usando mudanças de equivalência de carteira essa opção faz com que a simulação de MC use modificações de porcentagem de equivalência de carteira bar-by-bar ao invés de transações individuais. Essas mudanças de equidade individuais são escolhidas aleatoriamente e permutadas para criar a execução da simulação. Neste modo, as mudanças de capital bar-by-bar são calculadas como proporção (então 10 aumento é representado como 1.1), selecionado aleatoriamente e multiplicado cumulativamente. Esta configuração permite lidar com situações quando você possui vários negócios sobrepostas no seu sistema e não requer nenhuma configuração especial para o dimensionamento da posição. Simular usando a lista de comércio, esta opção faz com que a simulação de MC use trades individuais a partir do backtest original para criar a execução da simulação. Para executar a simulação nesse modo, o simulador MC escolhe aleatoriamente negócios originais e aplica novo dimensionamento de posição conforme definido abaixo. Este modo é útil nos casos em que você não possui transações sobrepostas. Define o método de dimensionamento de posição usado pelo simulador de MC no modo de listagem quottrade: não muda - usa o tamanho de posição original usado durante o teste de retorno. Tenha em mente que ele sempre usa o valor em dólar original do comércio (ou qualquer moeda que você usa), mesmo que sua fórmula esteja usando porcentagem do patrimônio da carteira. Tamanho fixo - usa número fixo de contratos de ações por negociação Valor constante - usa valor em dólar fixo para abrir todo o comércio Porcentagem do patrimônio líquido - usa porcentagem definida do valor atual do capital simulado atual. Tenha cuidado ao usar esta configuração - faz com que o tamanho da posição de um comércio dependa dos lucros em negócios anteriores (acumulando lucros) e crie dependência em série. Isso também pode levar a um efeito de composição extra quando você possui transações sobrepostas em seu backtest original, pois o bootstrap executa negócios de maneira sequencial (então eles não se sobrepõem). Por esse motivo, seu uso é limitado aos casos em que não ocorrem trocas de sobreposição. Habilitar as curvas de equidade do MC (MinMaxAvg) liga os gráficos de equidade do MC (incluindo os gráficos de capital mais altos, mais baixos e médios, além dos gráficos de equidade da palha de palha). Note-se que as linhas verdes e vermelhas (equidade minmax) não são realmente únicas e quotbestquot e quotworstquot equity. São os pontos mais altos (max) e mais baixos (mínimos) de TODAS as ações geradas durante a MC. Então eles são realmente melhores pontos de todas as ações e os piores pontos de todas as ações. E a linha azul (média) é a média de todas as linhas de equidade (todas as corridas). Mostrar valores absolutos s em escala linear - exibe ações em valores absolutos do dólar usando gráfico de escala linear Mostrar valor absoluto s em escala logarítmica - exibe ações em valores de dólar absolutos usando gráfico de semi-logs Mostrar Variação de porcentagem - exibe ações como quotrate de mudança desde o início Gráficos de quadros de vassoura de palha - define quantos equivalentes de teste individuais devem ser plotados como gráfico de vassoura de palha (o número grande pode diminuir o processamento do desenho) Use a escala logarítmica para o Equivalente Final Exibe o gráfico de CDF de capital final usando a escala de semi-log em vez de linear Use a escala logarítmica para Drawdown Exibe o gráfico CDF de redução de dólar usando a escala semi-log em vez de linear Use números negativos para Drawdown (Drawdown reverso CDF) Quando esta opção está ativada, tanto o dólar quanto o percentual de redução são relatados como números negativos. Isso também afetou a distribuição de CDF. Ele inverte a ordem de quotdrawdownquot coluna na tabela MC e inverte o significado (ou seja, o valor de 10 percentis significa que há 10 chances de que as cobranças sejam iguais ou pior (mais negativas) do que a quantidade apresentada. Com esta opção desativada (como em versões antigas ), As denominações são reportadas como números maiores que zero (positivo) e o valor de 10 percentil significa 10 chances de que as retiradas sejam iguais ou melhores (menor) do que a quantidade apresentada. Para remover os riscos de correlação serial que afetam os resultados da simulação de Monte Carlo é altamente encorajado Para usar o dimensionamento de posição fixa (ou o valor fixo em dólares das negociações ou o número fixo de contratos de ações), de modo que a ordem em que o dado comércio ocorre na sequência original não afeta a perda de lucro devido à composição. Além disso, dependendo sempre que seu sistema abra múltiplas posições sobrepostas, Escolha o método de simulação da seguinte maneira: Simule usando a lista de comércio - para sistemas com transações que não se sobrepõem ou Simule usando mudanças na equidade do portfólio. Ou sistemas com tradições sobrepostas (posições simultâneas) Os resultados da simulação de Monte Carlo são exibidos na página QuonteMonte Carlota do relatório Backtest. No topo da página, podemos ver uma tabela que fornece valores de algumas estatísticas-chave derivadas dos gráficos de distribuição cumulativa (CDFs) dos resultados da simulação de Monte Carlo. Aqui estão os resultados da amostra (os destaques são adicionados manualmente com a finalidade de ilustração). O patrimônio inicial foi de 10000 neste exemplo. O teste foi feito ao longo de 7 anos (dados EOD). Desta vez, o significado da coluna de retirada é reverso - diz-lhe que as retiradas seriam pior (mais negativas) do que a quantidade especificada, o valor de 99 percentil de -7,23 significa que em 99 dos casos você verá reduções pior (mais negativas) do que - 7.23. O valor de 1 percentil de -63,82 diz que, em 1 dos casos, você experimentaria reduções iguais ou pior (mais negativas) do que -63,82. Assim, a tabela pode ser lida em quotrow-wisequot e a parte superior da tabela (pequenos percentis) refere-se a quotpessimisticquot Cenários. Abaixo da tabela, podemos encontrar o gráfico de vassoura de palha minavgmax de ações simuladas: Observe que as linhas verdes e vermelhas (equidade minmax) não são ações de quotbestquot e quotworstquot. São os pontos mais altos (max) e mais baixos (mínimos) de TODAS as ações geradas durante a MC. Então eles são realmente melhores pontos de todas as ações e os piores pontos de todas as ações. E a linha azul (média) é a média de todas as linhas de equidade (todas as corridas). A nuvem de linhas cinza representa ações de teste individuais - como podemos ver, o mesmo sistema comercial pode gerar resultados diferentes quando as condições do mercado mudam e a simulação MC tenta simular vários resultados e fornecer algumas informações estatísticas sobre o quanto isso pode ser mau. Após o gráfico de palha de palha, você pode encontrar gráficos de função de distribuição cumulativa (CDF) do patrimônio final, CAR, drawdowns e menor capital (novamente linhas de anotações verdes e vermelhas foram adicionadas manualmente): gráficos de distribuição cumulativa apresentam a mesma informação que foi incluída na tabela em O topo da página do quotMonte Carloquot, mas na forma gráfica. Novamente, quando examinamos o gráfico de distribuição de lucro anual (CAR), podemos ver que, em aproximadamente 10 dos casos, o nosso sistema não se romperia (produz CAR Carga negativa). Também podemos ver que, em aproximadamente 35 dos casos, nosso CAR seria inferior a 5. Os lucros acima de 10 por ano só ocorrem no top 20 dos testes. Todos os outros gráficos na página MC são construídos de mesma forma e você pode lê-los usando a mesma metodologia. O gráfico de capital final mostra a função de distribuição cumulativa do valor final do capital próprio (no final do período de teste) O gráfico de retorno anual mostra a função de distribuição cumulativa do retorno percentual anual composto do teste Max. Drawdown e Max. Os gráficos de Drawdown mostram a função de distribuição cumulativa de drawdowns (distâncias dólarpercent máxima em pico para valey) experimentadas durante o teste O gráfico de Equidade mais baixa mostra a função de distribuição cumulativa do menor patrimônio já experimentado durante o teste Como controlá-lo a partir do nível da fórmula Além de usar Configurações Diálogo, você pode controlar o simulador Monte Carlo usando a função SetOption (). Você também pode recuperar esses valores usando a função GetOption. O valor SetOption (quotMCEnablequot, 0) 0 desabilita a simulação MC SetOption (quotMCEnablequot, 1) o valor 1 permite MC somente em backtests de portfólio (padrão) SetOption (quotMCEnablequot, 2) value 2 força MC a ser ativado em todos os lugares (em todos os modos, incluindo otimização - SLOW ) Note que habilitar o MC na otimização é altamente desencorajado, a menos que você realmente use métricas MC como otimização de destino via backtester personalizado ou use as distribuições MC no processo de otimização. O processo de Monte Carlo é computacionalmente caro e, enquanto algumas centenas de milissegundos adicionados a um backtest não importam muito, no caso de otimizações quando são multiplexadas por número de etapas, você pode facilmente aumentar o tempo de otimização por ordens de grandeza. Então, a menos que você REALMENTE precise de distribuição de MC como métrica personalizada e meta de otimização, NÃO habilite MC na otimização. SetOption (quotMCRunsquot, 1000) define o número de corridas de simulação de MC (realizações) Outros parâmetros de MC que podem ser configurados usando SetOption e retrived usando GetOption: quotMCChartEquityCurvesquot (truefalse) quotMCStrawBroomLinesquot (0..100) quotMCPosSizePctEquityquot (0..100) quotMCPosSizeMethodquot - 0 - não muda, 1 - tamanho fixo, 2 - valor constante, 3 por cento do patrimônio líquido, quotMCPosSizeSharesquot (número), quotMCPosSizeValuequot (número) quotMCPosSizePctEquityquot (número) quotMCUseEquityChangesquot (número), 1 significa usar as mudanças de equidade em vez da lista de negociação quotMCChartEquityScalequot (número ), 1 para escala de log, 0 para escala linear quotMCLogScaleFinalEquityquot (número), 1 para escala de log, 0 para escala linear quotMCLogScaleDrawdownquot (número), 1 para escala de log, 0 para escala linear quotMCNegativeDrawdownquot (número), 1 - use números negativos para Drawdown (CDR de retirada reversa) Como adicionar métricas personalizadas com base na distribuição de teste MC ao relatório backtest Além do MC incorporado Porta, você pode adicionar suas próprias métricas personalizadas ao relatório usando o método GetMonteCarloSim () do objeto Backtester e o objeto MonteCarloSim que essa função retorna. Se você é novo em métricas personalizadas, por favor, consulte quotComo adicionar métricas personalizadas ao relatório do relatório do backtester, parte deste manual primeiro. O objeto MonteCarloSim tem uma função GetValue (quotfieldquot, percentil) que permite acessar os valores de CDF. Os valores quotfieldquot disponíveis são: quotFinalEquityquot quotCARquot quotLowestEquityquot quotMaxDrawdownquot quotMaxPercDrawdownquot Agora, aqui é o código de exemplo que apresenta como adicionar o percentil 30 FinalEquity e CAR ao relatório: SetOption (MCEnable. True) SetOption (MCRuns. 1000) SetCustomBacktestProc () if (Status (ação ) ActionBackBacktesterObject () bo. Backtest () execute o procedimento de backtest padrão obter acesso aos resultados de Monte Carlo nota 1: pode ser NULL se o MC não estiver habilitado nota 2: os resultados de MC estão disponíveis após o Backtest () ou PostProcess como simulação de MC É feito na fase final do pós-processamento mc bo. GetMonteCarloSim () se (mc) obter o percentil 30 do patrimônio final e a distribuição do CAR bo. AddCustomMetric (FinalEq30. Mc. GetValue (FinalEquity. 30)) bo. AddCustomMetric (CAR30. Mc. GetValue (CAR. 30)) você também pode combinar estatísticas de MC com estatísticas normais st bo. GetPerformanceStats (0) bo. AddCustomMetric (CAR30MDD. Mc. GetValue (CAR. 30) st. GetValue ( MaxSystemDrawdownPercent)) Uma vez que as métricas personalizadas são adicionadas, ela pode ser usada como otimização alvo (não se esqueça de mudar MCEnable para 2) e usado no processo de teste Walk Forward como função objetiva. Para selecionar métrica personalizada como alvo de otimização, você precisará digitar seu nome exatamente como aparece na chamada AddCustomMetric no campo quotOptimization Targetquot na caixa de diálogo Configurações, Walk Forward. Desta forma, você pode executar um teste avançado de otimização direcionado por valores de distribuição de simulação de MC. Então, por exemplo, em vez de usar o CARMDD, você pode usar o CAR30MDD (CARRO do MC do 30º percentil dividido pela redução do sistema máximo). Como sobre a randomização de Monte Carlo em vez do teste de bootstrap O randomization de Monte Carlo é diferente do teste de bootstrap porque não usa a lista de negócios real (realizada) do backtest, mas tenta usar retornos individuais quotall sempre que eles são realizados ou hfoteticalquot. Por exemplo, quando o sistema de negociação está gerando mais sinais do que podemos negociar devido ao poder de compra limitado, então temos que escolher quais negociações tomamos e quais nós ignoraríamos. Normalmente, esta seleção é parte do sistema de negociação e, na variável AmiBroker PositionScore, diz ao backtester quais posições são preferenciais e devem ser negociadas. No teste de randomização, em vez de usar algum PositionScore analítico determinável, você usa um aleatório. Se houver mais sinais para posições abertas do que poderíamos tomar, esse processo levaria a escolhas de comércio randomizado. Agora, usando a função Optimize () e PositionScore aleatório, podemos executar milhares dessas picaretas aleatórias para produzir o teste de randomização de Monte Carlo: step Optimize (passo 1. 1. 1000. 1) 1000 backtests com seleções de comércio aleatório do universo amplo (certifique-se Você executa isso em grandes listas de exibição) PositionScore mtRandom () O teste de aleatorização tem uma grande desvantagem: não pode ser usado em muitos casos. Quando o sistema não produz sinais suficientes de cada barra, não há muito (se houver) para escolher. Além disso, mais importante ainda, a randomização de MC faz uma suposição falsa de que todas as oportunidades de oferta (sinais) são iguais. Em muitos casos eles não são. Muito frequentemente, nosso sistema comercial possui uma maneira específica e determinista de escolher negócios de muitas oportunidades por algum tipo de ranking. Quando o sistema está usando uma pontuação (rank) como um componente central do sistema (os sistemas rotativos fazem isso) - se você substituir a pontuação analítica de um número aleatório, você está apenas testando o ruído branco e não o sistema.

No comments:

Post a Comment