Um backtest mostra um percurso realizado; uma simulação explora percursos gerados por pressupostos declarados. Ordem dos resultados, reamostragem e dimensionamento podem alterar o drawdown. O objetivo é construir e verificar um modelo simples, sem apresentar probabilidades condicionais como risco comprovado de uma conta real não especificada.

O que se está a sortear?

Monte Carlo usa sorteios repetidos de um modelo. Baralhar uma lista fixa de resultados monetários altera o percurso mas conserva a soma, se todos forem executados. Reamostrar com reposição pode alterar ambos. Um modelo paramétrico com vitórias e perdas independentes produz outra distribuição. Declare procedimento e atualização do volume antes de comparar números.

Comece pelo exemplo verificável à mão: capital 1000 unidades, resultados +200, −100, −100; percurso 1000→1200→1100→1000, drawdown máximo 200/1200≈16,67%. Outra ordem, −100, −100, +200, dá 1000→900→800→1000 e drawdown 20%. Ambos terminam em 1000. Inclua o capital inicial nos máximos; omiti-lo subestima a queda quando as primeiras operações perdem.

A regra de paragem muda o que é executado

Modelo original em USD: início 1000, lista +300, −150, −150. Verifique após cada resultado completo e termine se capital ficar em 850 USD ou menos. A ordem A executa os três e termina em 1000; B, −150, −150, +300, chega a 850 no primeiro passo e não executa os restantes. São resultados líquidos fictícios, sem reinvestimento nem fluxos. Duas trajetórias não descrevem probabilidades. A regra de 850 é exercício, não recomendação de limite financeiro.

Mesma lista, resultado final diferente após paragemResultados líquidos fictícios USD, sem reinvestimento nem fluxos; verificação após cada passo completo.EXEMPLO DE CÁLCULOA: +300; −150; −1501000 → 1300 → 1150 →1000B: −150; −150; +3001000 → 850 → paragemLimiteCapital ≤850 USD
Mesma lista, resultado final diferente após paragem. Resultados líquidos fictícios USD, sem reinvestimento nem fluxos; verificação após cada passo completo.

Lista sorteada e lista executada não são a mesma coisa.

A: +300; −150; −150
1000 → 1300 → 1150 → 1000 – Três resultados executados
B: −150; −150; +300
1000 → 850 → paragem – Só primeiro resultado executado
Limite
Capital ≤850 USD – Regra do exercício, não recomendação

Os passos omitidos de B não são operações de resultado zero. Separe lista sorteada e lista executada. Restrições de capital, paragem ou mudança de volume exigem essas regras no modelo; somar indiscriminadamente uma permutação histórica não as reproduz. A função random.shuffle baralha uma sequência; a regra de terminação é uma parte adicional deste exercício.

Perguntas que a simulação pode responder

Calcule drawdown máximo em cada percurso completo e depois o percentil desses máximos. Uma banda de percentis de equity em cada instante não é uma trajetória executada. Declare a convenção de quantil: interpolação e distribuições discretas podem alterar a proporção situada abaixo de um valor. Estes resumos não são limites garantidos de perdas futuras.

No modelo original de 200 operações independentes, probabilidade de ganho 0,55, ganho líquido fixo 100 EUR e perda líquida 80 EUR, esperança por operação é 0,55×100−0,45×80=19 EUR, ou 3800 no conjunto. Se K conta vitórias, lucro final é 180K−16000 EUR. Quantis binomiais exatos, pelo menor K cuja probabilidade acumulada atinge a percentagem, são os seguintes. São valores calculados da distribuição assumida, não resultados observados nem medição de uma estratégia.

Lucro final condicional ao modelo independente, não equity nem drawdown
QuantilK mínimoLucro EUR
1%94920
5%981640
50%1103800
95%1225960

Uma folha Excel que inclui o estado inicial

As fórmulas seguintes mantêm nomes ingleses, ponto decimal e vírgulas técnicas para reproduzir o exemplo EN. Numa instalação portuguesa, traduza funções e separadores segundo a configuração; não altere números e referências indiscriminadamente. A1=0.55, A2=100, A3=−80 e A4=10000 são probabilidade, ganho, perda e capital fictícios. Em C1 coloque =$A$4, em D1 =C1 e em E1 zero. A linha 1 antecede qualquer operação.

B2: =IF(RAND()<$A$1,$A$2,$A$3)
C2: =C1+B2
D2: =MAX(D1,C2)
E2: =(D2-C2)/D2

Copie B2:E2 até à linha 201: são exatamente 200 operações. Capital final C201; drawdown máximo =MAX(E1:E201). O horizonte não significa necessariamente um ano. Este modelo de dinheiro fixo precisa de regras separadas de margem, insolvência e paragem antes de qualquer aplicação prática.

Para outra trajetória copie o bloco inteiro B:E, incluindo linha inicial, preservando referências absolutas aos parâmetros A. Mantenha distribuição de capital final separada de máximos drawdowns. Para magnitudes positivas de drawdown, =PERCENTILE.INC(range,0.95) olha a cauda adversa superior; cauda desfavorável de capital usa 0,05 ou 0,01. A função pode interpolar. RAND recalcula com a folha: conserve valores sorteados, dados e pressupostos do ensaio que quer rever.

Python e bootstrap com pressupostos explícitos

Bootstrap sorteia resultados registados, em vez de apenas dois montantes fixos assumidos. Excel também o pode fazer com fórmulas adequadas; a linguagem não decide se o modelo está correto. Para história monetária líquida não vazia, new_sequence = rng.choice(history,size=200,replace=True) permite repetição. Inclua o estado inicial no percurso: equity = np.concatenate(([initial_capital], initial_capital + np.cumsum(new_sequence))). Calcule picos correntes e drawdowns de cada trajetória antes de resumir máximos.

Registe dados, semente, versão da biblioteca, horizonte, unidades, custos e regras de paragem. Mais trajetórias reduzem ruído computacional, sem criar observações de novos regimes. Reamostrar operações individualmente quebra a ordem e não conserva agrupamentos de perdas; também não gera um choque ausente da história. Se a dependência importa, considere blocos e cenários de stress separados, reconhecendo o que a amostra limitada não contém.

Mesmos sorteios para comparar dois limiares

Modelo original: resultado +1 quando U uniforme é menor que o limiar e −1 caso contrário. A=0,55 e B=0,60 são hipotéticos. Esperanças 0,10 e 0,20, diferença B−A de 0,10. Com o mesmo U, a diferença é +2 apenas em 0,55≤U<0,60; fora desse intervalo é zero. Variância 4×0,05−0,10²=0,19. Com sorteios independentes, somam-se variâncias 0,99+0,96=1,95. A redução de ruído nesta comparação não reduz incerteza sobre probabilidades do mercado e não ajuda necessariamente estratégias arbitrárias.

Contraprova própria EUR: atribua 10 EUR a cada unidade de resultado. A diferença esperada passa a 1 EUR; variância partilhada torna-se 0,19×10²=19 EUR² e independente 195 EUR². A escala monetária não muda a razão 1,95/0,19≈10,26 nem transforma menor ruído em lucro validado. Não confunda variância, em EUR², com perda monetária ou desvio padrão, em EUR.

Limites honestos e dimensionamento

O exemplo fixo assume independência e estabilidade; o método Monte Carlo também pode modelar dependência e regimes variáveis, mas é preciso especificá-los e avaliá-los. Compare comportamento com história e condições fora dela. Walk-forward organiza períodos sucessivos, sem tornar dados já observados num teste novo ou detetar automaticamente degradação.

Dinheiro fixo e risco recalculado sobre equity produzem experiências diferentes. No modelo idealizado que perde exatamente 5% do capital corrente a cada perda, capital após n perdas é inicial×0,95n, positivo para n finito. Margem mínima, paragem prática, gaps ou perda maior mudam esse modelo. Defina falha antes do estudo e examine custos, execuções ausentes e posições sobrepostas. Um percentil simulado não é teto ou chão probabilístico comprovado do risco real.

Três ações antes de interpretar percentis

  1. Defina história líquida, contagem, cobertura de mercado, unidades e dimensionamento. Não negoceie só para chegar a cem operações; não existe corte universal que resolva caudas.
  2. Verifique à mão os percursos de três resultados e a regra de paragem. Guarde sorteios antes de aumentar repetições; uma hora ou mil trajetórias não certificam adequação.
  3. Examine a cauda adversa com sinais declarados: 95.º percentil para magnitudes positivas de drawdown. Ao reduzir risco ou mudar dados, execute e confira o modelo outra vez; não suponha proporcionalidade garantida nem causa de degradação a partir da mediana.