Simulação de Monte Carlo: fórmulas e erro de 1.000 trajetórias
As fórmulas de uma simulação de Monte Carlo de aportes mensais: a recorrência do saldo, percentis, taxa de sucesso e quanto 1.000 trajetórias variam.
Atualizado
As fórmulas de uma simulação de Monte Carlo de aportes mensais: a recorrência do saldo, percentis, taxa de sucesso e quanto 1.000 trajetórias variam.
Atualizado
Uma simulação de Monte Carlo chega a uma resposta repetindo muitas vezes um experimento aleatório e contando como os resultados se distribuem.[1] Num plano de investimento, o experimento leva o saldo adiante um mês de cada vez, com uma fórmula que o atualiza (uma recorrência) e o retorno de cada mês sorteado, até o último mês. No compoundsim, cada trajetória repete esse passo mensal 240 vezes num plano de 20 anos, e o simulador calcula 1.000 trajetórias. A mediana tirada de 1.000 trajetórias varia só alguns por cento quando os números aleatórios mudam, e uma parcela também se move pouco. O que mexe muito mais nos resultados é a forma como os retornos mensais são sorteados.
Este artigo deixa de lado o modelo de retornos e escreve em fórmulas a aritmética que todos os modelos têm em comum. O mesmo assunto sem matemática está em “Simulação de Monte Carlo para investimentos, sem fórmulas”.
Numere os meses , chame de o saldo no fim do mês e de o aporte mensal. A calculadora de juros compostos com taxa fixa transforma a rentabilidade anual , tomada como taxa efetiva, num fator de crescimento mensal e aplica o mesmo fator todo mês:
Uma simulação de Monte Carlo troca esse por um fator de crescimento sorteado a cada mês, em que é o retorno logarítmico do mês (próxima seção):
O aporte entra no fim do mês, depois do retorno do mês, na mesma ordem do cálculo com taxa fixa; tire o acaso e os dois coincidem. Um plano de 20 anos tem , e um percurso pelos 240 meses é uma trajetória. O simulador calcula 1.000 delas.
O simulador de retiradas faz o caminho inverso: a retirada sai no início do mês e o que sobra cresce depois. A retirada começa em um doze avos do valor do primeiro ano e sobe com a inflação todo mês:
No primeiro mês em que uma retirada leva o saldo a zero ou abaixo, o dinheiro da trajetória acabou, e ela fica em zero.
O simulador de Monte Carlo em valores reais, e o de retiradas sempre, dividem o saldo pelo nível de preços da época. Com uma inflação anual suposta (2% por padrão), o saldo real no mês é . Os preços sobem a esse ritmo constante; nenhum número aleatório entra neles.
Se é o retorno simples do mês (0,05 para 5%), o retorno logarítmico é . O modelo do simulador é ajustado aos retornos mensais passados convertidos em logaritmos. Em logaritmos, o crescimento de muitos meses vira uma soma. Com um valor inicial e sem aportes,
A soma dos se aproxima de uma distribuição simétrica conforme os meses se acumulam. Escrevendo para o valor esperado (a média), a mediana dessa soma fica perto de , e a mediana do saldo, perto de . Mas se curva para cima, então a média do saldo sai maior que isso (). Umas poucas trajetórias muito boas puxam a média para cima e quase não mexem na mediana.
A mediana é o número que essas poucas trajetórias quase não afetam. A diferença entre o retorno médio simples e a taxa em que o dinheiro de fato cresce (em inglês, volatility drag) é tratada em “O retorno médio não é a taxa em que seu dinheiro cresce”. Com aportes mensais a fórmula deixa de ter essa forma, mas a média continua acima da mediana pelo mesmo motivo.
Ordene do menor para o maior os saldos das 1.000 trajetórias num dado mês, com . O percentil é o valor na posição ; quando não é um número inteiro, ele é lido na reta entre as duas trajetórias vizinhas ( é arredondado para baixo até um inteiro). Entre as formas que os programas de estatística usam para calcular percentis, esta é a classificada como definição 7.[2] Em símbolos:
A mediana é . No gráfico, a faixa externa vai de a e a interna de a . A faixa de cada mês é calculada separadamente, então a borda da faixa não acompanha nenhuma trajetória específica.
Uma parcela é o número de trajetórias que atendem a uma condição, dividido por . A taxa de sucesso do simulador de retiradas é a parcela de trajetórias em que o dinheiro durou até o fim:
Um drawdown é quanto o saldo está abaixo do maior valor que já tinha alcançado. O pico começa no valor inicial, e o saldo inclui os aportes feitos (em valores reais, ele é medido sobre o saldo real):
O mais fundo ao longo de uma trajetória é o drawdown máximo dela.
Cada e cada aqui descrevem as 1.000 trajetórias que o modelo produziu. Nenhuma quantidade de trajetórias diz se o modelo corresponde ao mundo real.
Com um número finito de trajetórias (experimentos), outro ponto de partida para os números aleatórios (a semente) dá resultados um pouco diferentes. As fórmulas dizem quanto.
Uma parcela conta quantas vezes algo com probabilidade aconteceu em tentativas, então o desvio padrão dela (o erro padrão) é
Para uma taxa de sucesso de 90%, isso dá , um erro padrão de cerca de 0,95 ponto percentual. Dentro de mais ou menos o dobro disso para cada lado, algo como de 88% a 92%, a taxa pode variar só por acaso.
Os percentis têm uma fórmula parecida. Se é a densidade da distribuição do saldo nesse percentil (o quanto as trajetórias se concentram em torno daquele valor),
Nas caudas, onde há poucas trajetórias, é pequena e o erro é maior. As duas fórmulas diminuem na proporção de , então cortar o erro pela metade exige quatro vezes mais trajetórias.
Para ver o tamanho disso, o mesmo cálculo do simulador de Monte Carlo foi rodado 50 vezes, mudando só a semente: o S&P 500 (SPY, dividendos reinvestidos, com o modelo ajustado ao histórico completo desde 1993), em dólares americanos nominais, um dólar por mês durante 20 anos (US$ 240 aportados).
| Saldo após 20 anos | Média de 50 rodadas (múltiplo do valor aportado) | Variação com 1.000 trajetórias | Variação com 250 trajetórias |
|---|---|---|---|
| Percentil 10 | 1,7× | 3,0% | 4,1% |
| Mediana | 3,5× | 2,5% | 5,5% |
| Percentil 90 | 7,6× | 3,1% | 6,5% |
A variação é o desvio padrão dos 50 resultados dividido pela média deles. Com 1.000 trajetórias, a mediana de 20 anos se move cerca de 2,5% de uma rodada para outra, então o melhor é ler uma mediana de 1.000 trajetórias com essa folga de alguns por cento.
A mesma verificação numa parcela: a parcela de trajetórias com drawdown máximo de −30% ou pior teve média de 21,3% nas 50 rodadas. Os desvios padrão da tabela seguinte mostram quanto essa própria parcela se move, em pontos percentuais.
| Parcela com drawdown máximo de −30% ou pior | 1.000 trajetórias | 250 trajetórias |
|---|---|---|
| Desvio padrão medido em 50 rodadas | 1,5% | 2,8% |
| A fórmula | 1,3% | 2,6% |
Na parcela, a variação medida e a fórmula quase coincidem. Com um quarto das trajetórias, a variação mais ou menos dobra na maioria das medidas. Mas um desvio padrão medido em 50 rodadas também tem uma incerteza de cerca de um décimo, e a razão entre dois deles mais ainda, então algumas linhas ficam bem longe do dobro, como a do percentil 10 na primeira tabela.
Cada trajetória primeiro sorteia de novo a sua própria versão dos retornos médios do modelo e das chances de mudar de regime, e só depois sorteia os meses. Mesmo assim, as trajetórias são independentes entre si, então a regra de vale tal como está.
A semente do simulador é a data em que a página foi aberta (UTC), como um número de oito dígitos, . Um pequeno gerador pseudoaleatório, o mulberry32, transforma esse número em números uniformes em , usados em ordem a partir da primeira trajetória. Quem abrir a página no mesmo dia com as mesmas configurações recebe as mesmas 1.000 trajetórias.
Abra a página em outro dia e a semente muda, então a página sorteia 1.000 trajetórias novas (uma página que fica aberta mantém a semente depois da meia-noite). O experimento acima também mudou só a semente nas 50 rodadas, então uma mediana que varia alguns por cento de um dia para outro está dentro da variação medida ali. Diferenças muito maiores vêm de mudar as configurações ou o histórico ao qual o modelo é ajustado, ou de uma atualização dos dados que reajusta o modelo.
Para um único ativo, o da recorrência vem do retorno logarítmico mensal desse ativo. Para uma combinação, com peso no ativo (os pesos somam 1) e rebalanceada para esses pesos todo mês, o fator de crescimento é
O simulador de carteira (sem margem) e o de retiradas colocam esse na recorrência no lugar de .
Vista numa moeda que não o dólar, com “Incluir o câmbio” ativado (o padrão), a variação do mês no valor em dólares de uma unidade dessa moeda é sorteada do modelo junto com os ativos. Sendo a variação logarítmica, o fator de crescimento nessa moeda é , em que é a variação média de longo prazo do câmbio no modelo ajustado ao histórico. A tendência de longo prazo de um câmbio não precisa continuar, então ela é retirada, e ficam as oscilações e o momento em que acontecem.
Como os e os são sorteados, alternando entre um regime calmo e um regime turbulento, está explicado em “Simulação de Monte Carlo para investimentos, sem fórmulas”.
A variação acima vem de calcular um número finito de trajetórias a partir de um modelo dado, e mais trajetórias a reduzem. Duas coisas continuam iguais, não importa quantas trajetórias sejam calculadas.
Uma é o modelo de retornos. O modelo de onde saem os muda a própria distribuição, e um modelo ajustado ao histórico raramente produz mercados diferentes de todos os que estão nele.
A outra é o que o cálculo deixa de fora. Impostos, custos de negociação e taxas da conta não são descontados (as despesas dos próprios ETFs estão nos retornos deles). Os aportes são os mesmos o tempo todo, e os preços sobem a um ritmo constante.
Essas premissas mexem nos resultados muito mais do que os alguns por cento em que 1.000 trajetórias variam. Nas mesmas configurações do experimento acima, mudando só o histórico ao qual o modelo é ajustado e calculando 1.000 trajetórias uma vez com a mesma semente, a mediana de 20 anos é 3,4× o valor aportado com o histórico completo e 4,1× com os últimos 5 anos: uma diferença muito maior que a variação causada pelo número de trajetórias (2,5%).