Modelagem financeira

Digital Twin Financeiro Pessoal: Monte Carlo e Stress Test

ModelMonkey20 de maio de 202614 min de leitura

Por que uma planilha de orçamento não é suficiente

Uma planilha de orçamento mostra onde o dinheiro do mês passado foi parar. Um modelo de três demonstrações mostra para onde você está indo nos próximos 10 anos e o que quebra primeiro quando as coisas saem dos trilhos.

A diferença está na integração. Sua DRE alimenta o fluxo de caixa. O fluxo de caixa constrói o balanço patrimonial. Reduza a premissa de salário em 20% e o impacto se propaga automaticamente pelo patrimônio líquido, pelas projeções de aposentadoria e pelos cenários de stress. É exatamente isso que o torna um modelo e não apenas um acompanhamento.

Estrutura de abas

Um modelo financeiro pessoal minimamente viável precisa de 5 abas:

  • Premissas - todos os inputs ficam aqui, sem exceção
  • DRE - receitas vs. despesas, mensal e anual
  • Balanço Patrimonial - ativos e passivos projetados ano a ano
  • Fluxo de Caixa - operacional, de investimento e de financiamento; alimenta o balanço
  • Cenários / Monte Carlo - outputs da simulação e resultados dos stress tests

Acrescente uma aba de Dashboard para checagens mensais, se quiser. Deixe-a somente leitura. Todas as alterações passam pelas Premissas.

A aba Premissas: fonte única da verdade

Cada número que o restante do modelo utiliza deve ser rastreável até uma célula nomeada em Premissas. Isso não é preferência estética: é auditabilidade. Quando você roda um cenário de stress, altera uma célula e observa tudo atualizar em cascata.

InputValor
Salário bruto (ano corrente)R$ 264.000
Crescimento salarial anual4,5%
Bônus % do salário15%
Contribuição PGBL10%
Matching do empregador4%
Retorno esperado da carteira (média)7,0%
Desvio padrão do retorno15,0%
Horizonte do modelo (anos)10
Carteira investível inicialR$ 720.000
Inflação (IPCA)3,2%
Taxa do financiamento imobiliário11,5%
Saldo do financiamentoR$ 480.000
Início do Ano 101/01/2025
Fim do Ano 131/12/2025

A premissa de IPCA de 3,2% adotada neste modelo está alinhada à mediana das projeções do mercado compiladas pelo Banco Central do Brasil no Boletim Focus (Banco Central do Brasil, Boletim Focus, 16 de maio de 2026). As duas últimas linhas da tabela parecem detalhe, mas são o que permite agregar os dados mensais da DRE em totais anuais no fluxo de caixa via SUMIFS. Cada ano do modelo precisa de um par de células equivalente.

Hardcodar o salário diretamente na aba DRE é o mesmo erro que hardcodar o WACC em um DCF. Não faça isso.

A DRE: seu demonstrativo de resultado pessoal

Trate esta aba como um demonstrativo de resultado no qual o lucro bruto é o salário líquido e o fluxo de caixa livre é o que sobra depois das despesas de vida.

RECEITAS
  Salário bruto                    =Premissas!$B$2
  Bônus (na meta)                  =Premissas!$B$2 * Premissas!$B$4
  Vesting de RSUs                  -- hardcode conforme cronograma
TOTAL RECEITAS BRUTAS

  IRRF                             =(BRUTO - DEDUCOES_PREVIDENCIA) * TabelaIR!$C$3
  INSS                             =MIN(TOTAL_BRUTO, TETO_INSS) * ALIQ_INSS
  Contribuição PGBL                =Premissas!$B$2 * Premissas!$B$7
TOTAL DEDUÇÕES

SALÁRIO LÍQUIDO

DESPESAS
  Habitação (financ. + IPTU + cond.)   R$ 4.200
  Alimentação                          R$ 1.500
  Transporte                           R$ 800
  Assinaturas e utilidades             R$ 400
  Saúde (coparticipação + plano)       R$ 300
  Pessoal e lazer                      R$ 1.200
TOTAL DESPESAS

FLUXO DE CAIXA MENSAL LÍQUIDO    =SALARIO_LIQUIDO - TOTAL_DESPESAS

Com R$ 264.000 de salário bruto anual e um financiamento de R$ 480.000, uma casa bem administrada gera em torno de R$ 3.500 a R$ 4.500 por mês em fluxo de caixa livre. Esse número flui diretamente para o demonstrativo de fluxo de caixa. É o número mais importante do modelo.

Projeções do Balanço Patrimonial

Projete cada linha de ativo à frente usando o saldo do ano anterior mais aportes mais retornos. Exemplo: carteira de investimentos crescendo a partir de R$ 130.000 com R$ 36.000 em aportes anuais a 7%:

='Fluxo de Caixa'!C14 * (1 + Premissas!$B$6) + 'DRE'!F28

Onde C14 é o saldo final da carteira do ano anterior, B6 é o retorno esperado em Premissas e F28 é o aporte anual puxado da DRE.

Faça isso para cada linha de ativo: PGBL, VGBL, patrimônio imobiliário líquido (usando uma taxa de valorização do imóvel em Premissas). O patrimônio líquido se constrói automaticamente ano a ano. O balanço é o placar; a DRE e o fluxo de caixa são o que o movem.

Fluxo de Caixa: o input dos stress tests

Três seções, mesma estrutura de qualquer modelo corporativo:

FC Operacional: salário líquido menos despesas de vida. Equivale ao resultado final da DRE reexpresso como caixa.

FC de Investimento: aportes para PGBL mais matching do empregador mais aportes em carteira mais eventuais reformas no imóvel. Negativo por convenção quando o caixa sai.

FC de Financiamento: amortização do principal do financiamento imobiliário é uso de caixa. Novo endividamento é fonte.

Para consolidar os dados mensais da DRE em um total anual, você precisa filtrar as linhas da DRE pelo período correto. É aqui que entram as células de data que você definiu em Premissas (por exemplo, B13 e B14 para o Ano 1):

=SUMIFS('DRE'!D:D, 'DRE'!A:A, ">="&Premissas!$B$13, 'DRE'!A:A, "<="&Premissas!$B$14)

Essa fórmula soma cada valor na coluna D da DRE cujas datas (coluna A) estejam entre 01/01/2025 e 31/12/2025. Para o Ano 2, basta trocar B13 e B14 pelas células equivalentes do próximo período. Defina um par de células de data para cada ano que o modelo projetar e a fórmula se replica sem adaptação.

Monte Carlo: quantificando a incerteza

Seus R$ 720.000 em ativos investíveis projetados a 7% de CAGR por 10 anos chegam a cerca de R$ 1,42 milhão. A 4%, chegam a R$ 1,06 milhão. A 10%, a R$ 1,87 milhão. A média aritmética não diz quase nada sobre onde você vai realmente chegar.

Um Monte Carlo roda 1.000 ou mais trajetórias com sequências de retornos anuais aleatórios e mostra a distribuição completa de resultados. Com base na série histórica analisada por Damodaran em seu dataset anual (Damodaran Online, "Annual Returns on Stock, T.Bonds and T.Bills: 1928-Current"), o desvio padrão anualizado dos retornos de ações em mercados desenvolvidos fica em torno de 15% a 17%, dependendo do período. Para uma carteira 60/40, esse número cai para cerca de 10% a 12%.

O Google Sheets tem um problema com RAND(): a função recalcula a cada edição da planilha, o que torna qualquer Monte Carlo baseado em fórmulas puras instável demais para decisões reais. A solução é executar a simulação uma vez, gravar os resultados estáticos e ler os percentis a partir deles. Há duas formas de fazer isso.

Opção 1: com assistente de IA integrado (sem escrever código)

Se você não quer colar código em uma planilha com seus dados financeiros reais, essa é a rota recomendada.

Com o ModelMonkey ativo na planilha, descreva o modelo em linguagem natural no painel lateral e ele gera, instala e executa o Apps Script por você, mostrando o que cada etapa faz antes de rodar:

"Preciso de um Monte Carlo para minha carteira de investimentos. Os parâmetros estão em Premissas: retorno esperado em B6 (7%), desvio padrão em B7 (15%), horizonte em B8 (10 anos) e saldo inicial em B9 (R$ 720.000). Quero 1.000 simulações gravadas estaticamente na aba Monte Carlo, com o valor terminal de cada trajetória na coluna A."

O output é o mesmo: 1.000 valores terminais estáticos na aba Monte Carlo, prontos para leitura via PERCENTILE.

Opção 2: Apps Script direto

Para quem quer entender e controlar cada linha do processo. O código tem 29 linhas e faz três coisas: lê as premissas, roda 1.000 trajetórias de retornos com distribuição normal e grava os resultados sem fórmulas voláteis.

function runMonteCarlo() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const assum = ss.getSheetByName('Premissas');
  const out   = ss.getSheetByName('Monte Carlo');

  // Lê parâmetros da aba Premissas
  const mean  = assum.getRange('B6').getValue();  // ex: 0.07
  const sd    = assum.getRange('B7').getValue();  // ex: 0.15
  const yrs   = assum.getRange('B8').getValue();  // ex: 10
  const start = assum.getRange('B9').getValue();  // ex: 720000
  const runs  = 1000;

  const results = [];
  for (let i = 0; i < runs; i++) {
    let val = start;
    for (let y = 0; y < yrs; y++) {
      // Transformada Box-Muller: converte dois números aleatórios uniformes
      // em um número com distribuição normal (média 0, desvio padrão 1)
      const u = 1 - Math.random();
      const v = Math.random();
      const z = Math.sqrt(-2 * Math.log(u)) * Math.cos(2 * Math.PI * v);
      // Aplica o retorno desse ano sobre o saldo acumulado
      val *= (1 + (mean + sd * z));
    }
    results.push([val]); // valor terminal desta trajetória
  }
  // Grava os 1.000 valores como dados estáticos: sem RAND(), sem recálculo
  out.getRange(2, 1, runs, 1).setValues(results);
}

Cole em Extensões > Apps Script, salve e execute uma vez. Os valores ficam gravados e não mudam até a próxima execução.

Lendo os resultados

Independentemente de qual opção você usou, as fórmulas de leitura são as mesmas:

=PERCENTILE('Monte Carlo'!A2:A1001, 0.10)   // Percentil 10 (sequência ruim)
=PERCENTILE('Monte Carlo'!A2:A1001, 0.50)   // Mediana
=PERCENTILE('Monte Carlo'!A2:A1001, 0.90)   // Percentil 90 (sequência favorável)

Com 7% de média, 15% de desvio padrão, 10 anos e R$ 720.000 de partida, uma execução típica mostra um resultado no percentil 10 em torno de R$ 700 mil a R$ 750 mil (aproximadamente estável em termos nominais) e um resultado no percentil 90 por volta de R$ 2,1 milhão a R$ 2,3 milhões. Essa dispersão é o que o risco de investimento realmente parece quando você para de escondê-lo atrás de uma projeção pontual.

Stress Tests

O Monte Carlo cobre a faixa de resultados normais. O stress test cobre o que acontece quando o normal deixa de existir.

Rode pelo menos 3 cenários nomeados em uma seção dedicada da aba Cenários. Cada um altera apenas as células de Premissas relevantes e o restante do modelo atualiza automaticamente.

Cenário 1: Demissão (6 meses) Defina o salário como R$ 0 por 6 meses via uma célula de controle que multiplica na DRE. Uma casa com R$ 4.200/mês em habitação e R$ 2.500 em despesas essenciais de vida queima no mínimo R$ 6.700 por mês. Uma reserva de emergência de 3 meses (R$ 20.100) não cobre uma busca de recolocação séria em um mercado competitivo. A maioria dos analistas descobre que a meta da reserva de emergência estava errada na primeira vez que roda esse cenário.

Cenário 2: Queda do mercado (-40%) Aplique um choque de -40% nos ativos investíveis no Ano 1. O Ibovespa registrou quedas da ordem de 40% a 50% do pico ao fundo nos ciclos de 2008 e 2020, conforme as séries históricas do índice publicadas pela B3 (B3, Séries Históricas do Ibovespa, b3.com.br/pt_br/market-data-e-indices/indices/indices-amplos/ibovespa.htm). Uma carteira 60/40 perde menos, mas ainda pode recuar 25% a 30% em um ano ruim. A -40%, uma carteira de R$ 720.000 vira R$ 432.000. Sua projeção de patrimônio líquido em 10 anos ainda alcança a meta de aposentadoria a partir desse ponto de partida?

Cenário 3: Pico de inflação Eleve a premissa de IPCA de 3,2% para 6,5%. Um retorno nominal de 7% com IPCA a 6,5% equivale a um retorno real de apenas 0,47%. Sua projeção de 10 anos sai de R$ 1,42 milhão nominal para algo consideravelmente menos interessante em reais de hoje.

O valor do stress test não está nos números que ele produz: está no limiar de decisão que ele revela. Você descobre exatamente qual variável, em qual nível, quebra o seu modelo. Esse limiar é o que você está de fato administrando no mundo real.

Mantendo o modelo atualizado

Um digital twin com 6 meses de defasagem é só uma planilha com números velhos. A cadência mínima de manutenção é trimestral:

  1. Atualize os saldos reais das contas no Balanço Patrimonial
  2. Atualize os valores realizados no ano na DRE versus o orçamento
  3. Reexecute o Monte Carlo via Apps Script (um clique em Extensões > Apps Script > Executar)
  4. Confirme que os stress tests estão puxando os valores atuais do balanço

Vale a pena fazer isso mensalmente se você tem remuneração variável complexa: RSUs, bônus variável ou renda extra. Um saldo de carteira com 6 meses de defasagem em um mercado volátil pode estar errado em R$ 80.000 ou mais, o que distorce todas as projeções downstream.

Em maio de 2026, quem ainda usa uma premissa de crescimento com taxa única sem ajuste pelo IPCA está subestimando o risco. A diferença entre retorno nominal e retorno real importa mais hoje do que importava quando a inflação rodava em torno de 2%.

Se você quiser pular a fase de construção do template e se concentrar na lógica de modelagem, há ferramentas de IA para Google Sheets que podem ajudar a escrever as fórmulas entre abas, integrar toda a estrutura e configurar o Monte Carlo sem exigir que você escreva uma linha de código.

Perguntas frequentes

Qual é a diferença entre um digital twin financeiro pessoal e uma planilha de orçamento comum? Uma planilha de orçamento registra o passado. Um digital twin é um modelo prospectivo integrado: a DRE alimenta o fluxo de caixa, que constrói o balanço, que projeta o patrimônio líquido ao longo de 10 anos. Qualquer mudança em uma premissa se propaga automaticamente por todo o modelo.

Preciso saber programar para rodar o Monte Carlo no Google Sheets? Não. O Apps Script necessário tem 29 linhas comentadas e pode ser colado diretamente em Extensões > Apps Script. Você lê o que cada parte faz antes de executar e os valores ficam gravados como dados estáticos após a primeira rodada. Ferramentas de IA integradas ao Google Sheets também conseguem gerar e instalar esse código a partir de uma descrição em linguagem natural, sem exigir conhecimento de programação.

Quantas simulações são suficientes para um Monte Carlo confiável? 1.000 iterações já produzem percentis estáveis para os fins deste modelo. Aumentar para 5.000 melhora a precisão das caudas (percentis 5 e 95), mas raramente muda a decisão prática. Para planejamento pessoal, 1.000 é o ponto de equilíbrio entre velocidade e confiabilidade.

Com que frequência devo atualizar o modelo? A cadência mínima é trimestral para quem tem renda fixa. Para quem tem remuneração variável (bônus, RSUs, comissões), a atualização mensal é recomendada: um saldo de carteira desatualizado por 6 meses pode distorcer as projeções em R$ 80.000 ou mais.

Por que não usar RAND() diretamente para o Monte Carlo em vez de Apps Script? RAND() recalcula toda vez que você edita qualquer célula da planilha. Em um Monte Carlo com 1.000 iterações baseado em fórmulas, o resultado muda a cada tecla pressionada, o que o torna inútil para decisões reais. O Apps Script resolve isso rodando a simulação uma vez e gravando os valores finais como dados estáticos que não se alteram até a próxima execução manual.

Quais premissas têm maior impacto no resultado final do modelo? A taxa de retorno real da carteira e o fluxo de caixa mensal livre são as duas variáveis com maior alavancagem. Um aumento de 1 ponto percentual no retorno anual sobre R$ 720.000 ao longo de 10 anos representa uma diferença de aproximadamente R$ 120.000 a R$ 130.000 no valor terminal. O stress test de inflação revela isso com clareza quando você compara retorno nominal e retorno real lado a lado.