![24.08 - montecarlo.png](https://images.squarespace-cdn.com/content/v1/5a2a067e8dd04151f6e8250d/1629814960586-V92NHLJWKRT93KOSDTAF/24.08+-+montecarlo.png)
Uma abordagem estatística para tomar decisões em condições incertas
A simulação de Monte Carlo é um método que consiste em estimar o valor de uma quantidade desconhecida, com a ajuda de estatísticas inferenciais. Isso acontece por meio de um algoritmo, que faz uso de uma técnica chamada amostragem aleatória repetida.
A simulação de Monte Carlo foi criada na década de 1940 por John Neumann e Ulam Stanislaw, cientistas que trabalharam na bomba atômica norte-americana. Hoje, seu uso tem o objetivo de melhorar a tomada de decisões em condições incertas. Recebeu o nome de uma cidade turística de Mônaco conhecida por seus cassinos, pois a abordagem de modelagem se assemelha a um jogo de roleta.
Essa técnica é usada em diversas áreas, como finanças, gerenciamento de projetos, energia, manufatura, engenharia, pesquisa e desenvolvimento, seguros, petróleo e gás, transporte, meio ambiente e tantas outras, tendo uma aplicabilidade geral bem vasta.
A simulação de Monte Carlo fornece ao tomador de decisão uma gama de resultados possíveis e as probabilidades de ocorrerem para qualquer escolha de ação.
Como funciona
A ideia é simples. Digamos que você precise decidir entre duas estradas para voltar para casa. A primeira leva em média 20 minutos. Tem poucos semáforos e pouco trânsito. As chances são muito boas de você chegar exatamente no horário estimado. A segunda rota leva em média 15 minutos. No entanto, geralmente há muito mais tráfego, semáforos, etc. Há muitas incertezas e isso pode levar entre 10 e 45 minutos.
A Simulação de Monte Carlo constrói um modelo de resultados possíveis alavancando uma distribuição de probabilidade. Simulando o experimento, digamos 10.000 vezes, você tem uma boa ideia de como as várias opções são arriscadas. Você pode então decidir qual estrada funciona melhor para você.
Essas simulações são uma ótima metodologia para:
-
Simular processos que consomem muito tempo, ou seja, demoram muito para configurar as condições certas ou demoram muito para serem executados antes que se possa observar resultados significativos;
-
Executar um grande número de experimentos em um curto período de tempo. Com poder de computação suficiente, é possível executar milhares, até milhões, de experimentos em um tempo relativamente curto e em paralelo;
-
Ajustar e repetir experimentos rapidamente. As simulações podem ser executadas muito mais rápido do que realizar o experimento manualmente ou aguardar as condições ideais para observar os fenômenos. Assim, é possível executar a simulação algumas vezes, fazer ajustes rapidamente, corrigir bugs e retomar o experimento. Por exemplo, em uma simulação de computador, alterar a concentração de uma molécula significa atualizar um número em seu código, enquanto na vida real significaria ter que criar o composto do zero, ser preciso em suas medições e obter todo o laboratório equipamento funcionando novamente. Às vezes, isso não é uma tarefa fácil.
![A simulação de Monte Carlo ajuda a encontrar o equilíbrio ideal entre tempo, ciclos de iteração rápidos e volume de experimentos.](https://images.squarespace-cdn.com/content/v1/5a2a067e8dd04151f6e8250d/1629815046391-IDLACNEVNH0FFO3BLG8W/monte+carlo2.jpeg)
A simulação de Monte Carlo ajuda a encontrar o equilíbrio ideal entre tempo, ciclos de iteração rápidos e volume de experimentos.
Conceituando
Um dos experimentos que antecedeu as primeiras simulações de Monte Carlo foi conduzida pelo matemático e naturalista Buffon, em 1777. Ele jogou uma moeda 2.048 vezes e registrou os resultados, para estudar a distribuição desses possíveis resultados. Mas o experimento de sorteio de Buffon é fácil de configurar, executar e obter resultados. Porém, existem muitos métodos de Monte Carlo, variando em diferentes níveis de complexidade.
Mas os métodos mais simples incluem o usado por Buffon, onde é possível utilizar as tentativas de Bernoulli e registrar a probabilidade associada ao sucesso e ao fracasso, sendo o sucesso cara e o fracasso coroa, ou vice-versa.
E outra forma é calcular o valor esperado de uma variável aleatória. Nesse caso, a saída da variável aleatória é definida por uma função, e essa função pode ser qualquer coisa. Se sua variável aleatória representa o lançamento de uma moeda justa, essa função retorna cara ou coroa com uma probabilidade de 1/2. Mas você tem controle sobre a variável aleatória e pode ser qualquer coisa que faça sentido no contexto do seu problema.
Para calcular o valor esperado da variável aleatória, se repete o seguinte processo várias vezes:
-
Escolher um valor do conjunto de valores possíveis que a variável aleatória aceita;
-
Inserir o valor na função que gera a saída da variável aleatória;
-
Registrar a saída.
Então, pegamos a média de todas as saídas e acabamos de simular o valor esperado dessa variável aleatória!
Isso só funciona se executarmos um número grande o suficiente de simulações e, portanto, a Lei dos Números Grandes pode ser aplicada. A lei afirma que os resultados obtidos com a realização de um grande número de tentativas devem ser próximos ao valor esperado. E ele ficará mais próximo do verdadeiro valor esperado, quanto mais tentativas você realizar.
Independentemente do método utilizado, as simulações de Monte Carlo compartilham uma estrutura:
-
Modelar o processo ou fenômeno que deseja simular;
-
Definir as entradas e saídas;
-
Executar o experimento, ou seja, executar as entradas por meio do modelo e agregar os resultados.
Um exemplo hipotético
O cientista de dados Bassel Karami traz um exemplo hipotético de negócios em seu artigo no Medium. Vamos supor a partir de um serviço baseado em assinatura online. Os dados disponíveis são:
-
A taxa de assinatura é de US$ 10 mensais por usuário e pode ser cancelada em qualquer mês;
-
São 10.000 usuários. O MRR (receita recorrente mensal) é 10.000 x $ 10 = US$ 100.000.
-
O custo anual de manutenção do serviço é fixado em US$ 1 milhão por ano, independente dos usuários;
-
Abaixo, há o crescimento líquido mensal na % de usuários nos últimos 5 anos, que pode ser negativo se o churn exceder o crescimento. Para simplificar, não há sazonalidade e espera-se que os próximos 12 meses no próximo ano sejam semelhantes a qualquer um dos 60 meses anteriores.
![Crescimento líquido de usuários nos últimos 5 anos](https://images.squarespace-cdn.com/content/v1/5a2a067e8dd04151f6e8250d/1629815291038-EKRQIBKW3NGL5QY4VO7V/montecarlo3.png)
Crescimento líquido de usuários nos últimos 5 anos
Problema: reservar dinheiro suficiente hoje para garantir, com 99% de confiança, que terá pelo menos US$ 1 milhão para pagar seus custos anuais de manutenção do serviço no próximo ano.
O que podemos fazer neste caso é simular cenários de como seriam os próximos 12 meses com base no histórico disponível.
No exemplo abaixo, o crescimento de -5,4% no Mês 1 foi escolhido aleatoriamente dos dados históricos (Mês 4 no histórico), o crescimento de 0,3% no Mês 2 corresponde ao Mês 45 nos dados históricos e assim por diante…
![Amostra de 12 meses escolhida a partir de dados históricos ](https://images.squarespace-cdn.com/content/v1/5a2a067e8dd04151f6e8250d/1629815336596-AXGG268DR11SLZPGSA25/montecarlo4.png)
Amostra de 12 meses escolhida a partir de dados históricos
Em seguida, com base nos 12 meses simulados aleatoriamente, calculamos a receita total acumulada ao longo dos 12 meses simulados.
![Exemplo de cálculo de receita](https://images.squarespace-cdn.com/content/v1/5a2a067e8dd04151f6e8250d/1629815408073-XTHALVESFLZDWQX3GLTW/montecarlo5.png)
Exemplo de cálculo de receita
No exemplo acima, podemos ver que US$ 1,18 milhão foi gerado neste cenário, o que é suficiente para cobrir os US$ 1 milhão de despesas. Se a receita for inferior a US 1 milhão, devemos ter acesso a algum caixa que foi reservado para cobrir as despesas.
Simulando 10.000 cenários possíveis com o algoritmo de simulação de Monte Carlo, chegamos à seguinte projeção:
![Probabilidade de ver valores de receita diferentes ao longo dos 12 meses simulados](https://images.squarespace-cdn.com/content/v1/5a2a067e8dd04151f6e8250d/1629815437739-QDOXTAKPR5BJW5G3OD9Q/motnecarlo5.png)
Probabilidade de ver valores de receita diferentes ao longo dos 12 meses simulados
A receita média anual é de US$ 1,2 milhão em todos os 10.000 cenários simulados. O gráfico acima mostra a distribuição de probabilidade da receita anual acumulada total. Por exemplo, se olharmos para a área entre US$ 800.000 e US$ 1 milhão, podemos ver as pequenas barras refletindo que esses números de receita baixa têm baixa probabilidade de ocorrer, mas ainda são possíveis.
Para resolver nosso problema, precisamos saber qual receita anual podemos atingir ou superar com 99% de confiança. Podemos classificar os 10.000 resultados simulados de receita total do menor para o maior e obter o 101º resultado mais baixo. 100 de 10.000 (1%) resultados de receita total simulados são inferiores a esse número, 99% são iguais ou superiores, portanto, estamos 99% confiantes de que atingiríamos ou excederíamos esse número.
Estamos 99% confiantes de que podemos atingir ou exceder US$ 950.497 nos próximos 12 meses com base nesta simulação. Isso n manteria US$ 49.503 abaixo do US$ 1 milhão necessário para cobrir nossas despesas anuais.
Precisamos reservar US$ 49.503 para termos 99% de certeza de que seremos capazes de pagar US$ 1 milhão de despesas anuais no próximo ano.
Esse exemplo pretende demonstrar um exemplo de problemas em que as simulações de Monte Carlo podem ajudar. Para muitos casos de uso da vida real, a implementação seria mais detalhada onde é necessário colocar um esforço adicional, especialmente no tratamento de correlações.