O fim da planilha estática: Por que construí um motor estocástico de fluxo de caixa
Qualquer pessoa que já operou uma tesouraria ou geriu as finanças de uma empresa sabe de uma verdade inconveniente: o Excel aceita qualquer coisa.
Quando você projeta um fluxo de caixa tradicional, você está lidando com um modelo determinístico. Você diz para a planilha que vai receber R$ 50 mil no dia 15, e que vai pagar R$ 30 mil no dia 20. A planilha faz a conta e te diz que no fim do mês vai sobrar R$ 20 mil. Parece ótimo, certo?
O problema é que o mundo real não obedece planilhas. Clientes atrasam, a inadimplência acontece e choques macroeconômicos mudam as regras do jogo do dia para a noite. Basear a liquidez de uma empresa em um "cenário médio" é um dos maiores riscos que um CFO pode correr. É o que na estatística chamamos de falha das médias.
Foi exatamente para resolver essa cegueira matemática que decidi desenvolver o Algoritmo de Liquidez Preditiva.
Trocando a certeza ilusória por probabilidade real
A ideia do projeto era sair da projeção estática e entrar no mundo estocástico aplicando simulações de Monte Carlo. Em vez de calcular um único futuro irrealista, o motor cria até 100.000 "universos paralelos" para o caixa da empresa nos próximos 90 dias.
Ele faz isso injetando "ruídos" diários nas receitas e despesas (usando a Transformada de Box-Muller para gerar uma distribuição normal) e aplicando um risco de default.
O resultado não é um número fixo, mas sim uma matriz de probabilidade que me permite responder a duas perguntas cruciais de governança:
- Qual o Liquidity at Risk (LaR)? Ou seja, com 95% de confiança, qual é o pior cenário de caixa possível no final do trimestre?
- Qual a Probabilidade de Ruína? Aqui está o pulo do gato. Uma empresa pode terminar o mês no azul, mas ter "quebrado" no dia 15 porque as despesas caíram antes das receitas. O algoritmo escaneia toda a trajetória e acusa se o caixa cruzou a linha zero no meio do caminho.
Sob o capô: O desafio da performance
Fazer as contas é a parte fácil. O desafio de engenharia de software foi fazer tudo isso rodar no navegador do usuário sem travar a máquina.
Calcular 100.000 cenários de 90 dias significa gerar e desenhar cerca de 9 milhões de pontos de dados na tela. Se eu usasse o ciclo normal do Javascript misturado com bibliotecas pesadas de gráficos, a aba do navegador ia congelar por vários segundos.
Para resolver isso, fui direto para os fundamentos:
- Web Workers: Isolei todo o motor de cálculo em uma thread separada. Enquanto o robô faz a matemática bruta, a interface do usuário continua fluida.
- Canvas API: Abandonei bibliotecas prontas. O gráfico "espaguete" que mostra as linhas de sobrevivência (em azul) e de insolvência (em vermelho) é desenhado nativamente usando a Canvas API com Javascript puro (Vanilla).
- Infra: Tudo isso foi empacotado e servido via Nginx em um container Docker na minha infraestrutura.
O resultado é um processamento quase instantâneo. A resposta visual sai na casa dos milissegundos.
Teste você mesmo
Deixei a aplicação no ar para quem quiser fazer um stress test e ver como as linhas de risco se comportam quando as despesas se aproximam demais das receitas.
🔗 Você pode acessar a ferramenta aqui: liquidez.matheusrocha.cloud
Lá dentro da aplicação, também incluí uma aba inteira de documentação abrindo a "caixa preta" do algoritmo, detalhando a equação diferencial que usei no código.
Se você trabalha com engenharia financeira, dados ou tesouraria, faz o teste lá e me diz o que achou da abordagem.