Analyseur DCF
Quand utiliser cette compétence
Construire une évaluation par flux de trésorerie actualisés (DCF – Discounted Cash Flow) d'une entreprise. À utiliser lorsque l'utilisateur fournit le FCF et le WACC de l'entreprise, demande la valeur intrinsèque de l'entreprise, ou demande la juste valeur par action. Ne pas utiliser si l'entreprise est une institution financière.
Entrées
- FCFF (flux de trésorerie disponible pour l'entreprise) pour N années (N = len(FCFF))
- WACC (coût moyen pondéré du capital) ou tous ses composants (coût des fonds propres, coût de la dette, impôt, E/V, D/V)
- Taux de croissance terminale g
- Dette nette de l'entreprise (NetDebt)
- Nombre d'actions (NShares)
L'utilisateur peut fournir les données dans le message ou un CSV ; la compétence les assemble dans input.json en suivant le Contrat.
Procédure
- Valider les valeurs d'entrée, en tenant compte de leur métrique, de leurs valeurs et de leur signe (pas de CF négatif, g < WACC).
- Si toutes les entrées sont correctes, convertir celles qui nécessitent une conversion (par exemple, convertir les pourcentages en décimales : WACC, g, Ke, t...).
- Si le WACC n'est pas donné (mais ses composants le sont), le calculer.
- Écrire les entrées dans un JSON temporaire, exécuter
scripts/dcf.py <chemin>via Bash, analyser le JSON depuis la sortie standard. - Construire un tableau de sensibilité sur le WACC et g.
Sortie
Retourner un tableau avec la valeur d'entreprise, la valeur des capitaux propres et la juste valeur par action de l'entreprise, suivi du tableau de sensibilité. Sous les tableaux, retourner un bref commentaire des résultats.
Cas limites
- Si g ≥ WACC, retourner un avertissement et demander à l'utilisateur une valeur valide.
- Si une cellule du tableau de sensibilité a g supérieur à WACC, la fv_share correspondante sera nulle.
- Si les FCF sont tous négatifs, retourner un avertissement et ne pas effectuer le calcul.
- S'il y a des valeurs manquantes, demander à l'utilisateur si elles sont manquantes et quelles valeurs utiliser à la place.
- Toute autre erreur lors du calcul doit retourner un avertissement expliquant le problème.
Contrat
La compétence écrit input.json, qui est l'entrée du script Python scripts/dcf.py. L'exécuter via Bash : python scripts/dcf.py input.json.
Schéma d'ENTRÉE (clés) :
{
"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
}
Utiliser null pour toute valeur manquante. N est dérivé de len(FCFF). Si WACC est null, ses composants (E_V, Ke, D_V, Kd, t) doivent tous être fournis.
Le script imprime un objet JSON sur la sortie standard, que la compétence analyse.
Schéma de SORTIE (succès) :
{
"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}, ...]
}
Schéma de SORTIE (erreur) :
{"ok": false, "error": "<message>", "field": "<key>"}
Références
Pour toutes les formules, utiliser references/dcf_methodology.md.