Analisador DCF
Quando usar esta habilidade
Construa uma valoração por Fluxo de Caixa Descontado (DCF) de uma empresa. Use quando o usuário fornecer FCF e WACC da empresa, perguntar pelo valor intrínseco da empresa ou pelo valor justo por ação. Não use se a empresa for uma instituição financeira.
Entrada
- FCFF (fluxo de caixa livre para a empresa) para N anos (N = len(FCFF))
- WACC (Custo Médio Ponderado de Capital) ou todos os seus componentes (custo do capital próprio, custo da dívida, imposto, E/V, D/V)
- Crescimento terminal g
- Dívida líquida da empresa (NetDebt)
- Número de ações (NShares)
O usuário pode fornecer os dados na mensagem ou em um CSV; a habilidade os monta em input.json seguindo o Contrato.
Procedimento
- Valide os valores de entrada, considerando sua métrica, valores e sinal (sem CF negativo, g < WACC).
- Se todas as entradas estiverem corretas, converta as que precisarem (ex.: converter porcentagens em decimais: WACC, g, Ke, t...).
- Se o WACC não for fornecido (mas seus componentes estiverem), calcule-o.
- Escreva as entradas em um JSON temporário, execute
scripts/dcf.py <caminho>via Bash, analise o JSON da saída padrão. - Construa uma tabela de sensibilidade sobre WACC e g.
Saída
Retorne uma tabela com o Valor da Empresa (Enterprise Value), Valor do Patrimônio Líquido (Equity Value) e Valor Justo por Ação (Fair Value per share) da empresa, seguida pela tabela de sensibilidade. Abaixo das tabelas, retorne um breve comentário sobre os resultados.
Casos limite
- Se g ≥ WACC, retorne um aviso e peça ao usuário um valor válido.
- Se uma célula da tabela de sensibilidade tiver g maior que WACC, o fv_share relativo será nulo.
- Se os FCF forem todos negativos, retorne um aviso e não calcule.
- Se houver valores ausentes, pergunte ao usuário se estão faltando e quais valores usar.
- Qualquer outro erro durante o cálculo deve retornar um aviso explicando o problema.
Contrato
A habilidade escreve input.json, que é a entrada para o script Python scripts/dcf.py. Execute-o via Bash: python scripts/dcf.py input.json.
Esquema de ENTRADA (chaves):
{
"FCFF": [float, ...],
"WACC": float | null,
"g": float,
"NetDebt": float,
"NShares": float,
"E_V": float | null,
"Ke": float | null,
"D_V": float | null,
"Kd": float | null,
"t": float | null,
"wacc_steps": [float, ...] | null,
"g_steps": [float, ...] | null
}
Use null para qualquer valor ausente. N é derivado de len(FCFF). Se WACC for null, seus componentes (E_V, Ke, D_V, Kd, t) devem ser fornecidos.
O script imprime um objeto JSON na saída padrão, que a habilidade analisa.
Esquema de SAÍDA (sucesso):
{
"ok": true, "error": null, "field": null,
"enterprise_value": float,
"equity_value": float,
"fair_value_per_share": float,
"sensitivity": [{"wacc": float, "g": float, "fv_share": float | null}, ...]
}
Esquema de SAÍDA (erro):
{"ok": false, "error": "<mensagem>", "field": "<chave>"}
Referências
Para todas as fórmulas, use references/dcf_methodology.md.