Constructeur de Modèle DCF
Aperçu
Cette compétence crée des modèles DCF de qualité institutionnelle pour l'évaluation d'actions, suivant les normes des banques d'investissement. Chaque analyse produit un modèle Excel détaillé (avec une analyse de sensibilité incluse en bas de la feuille DCF).
Outils
- Par défaut, utilisez toutes les informations fournies par l'utilisateur et les serveurs MCP disponibles pour la collecte de données.
Contraintes Critiques - Lisez Ceci en Premier
Ces contraintes s'appliquent tout au long de la construction du modèle DCF. Examinez-les avant de commencer :
Environnement : Office JS vs Python/openpyxl :
- Si vous exécutez dans Excel (complément Office / environnement Office JS) : Utilisez Office JS directement — n'utilisez PAS Python/openpyxl. Écrivez les formules via
range.formulas = [["=D19*(1+$B$8)"]]. Aucune étape de recalcul séparée n'est nécessaire ; Excel calcule nativement. Utilisezrange.format.*pour le style. La même règle formules-plutôt-que-valeurs codées s'applique : définissez.formulas, jamais.valuespour les cellules dérivées. - Si vous générez un fichier .xlsx autonome (pas de session Excel en direct) : Utilisez Python/openpyxl comme décrit ci-dessous, puis exécutez
recalc.pyavant la livraison. - Le reste de cette compétence utilise des exemples openpyxl — traduisez en appels API Office JS lorsque vous êtes dans cet environnement, mais tous les principes (chaînes de formules, commentaires de cellules, points de contrôle de section, boucles de tableaux de sensibilité) s'appliquent à l'identique.
⚠️ Piège des cellules fusionnées dans Office JS : Lors de la construction d'en-têtes de section avec des cellules fusionnées, n'appelez PAS .merge() puis définissez .values sur la plage fusionnée — Office JS signale toujours les dimensions originales de la plage et lèvera InvalidArgument : Le nombre de lignes ou de colonnes dans le tableau d'entrée ne correspond pas à la taille ou aux dimensions de la plage. Au lieu de cela, écrivez la valeur dans la cellule en haut à gauche uniquement, puis fusionnez et formatez la plage complète :
// MAUVAIS — lève InvalidArgument :
const hdr = ws.getRange("A7:H7");
hdr.merge();
hdr.values = [["DONNÉES DE MARCHÉ & ENTRÉES CLÉS"]]; // tableau 1×1 vs plage 1×8 → échec
// CORRECT — valeur d'abord sur une seule cellule, puis fusion + formatage de la plage :
ws.getRange("A7").values = [["DONNÉES DE MARCHÉ & ENTRÉES CLÉS"]];
const hdr = ws.getRange("A7:H7");
hdr.merge();
hdr.format.fill.color = "#1F4E79";
hdr.format.font.bold = true;
hdr.format.font.color = "#FFFFFF";
Ceci s'applique à chaque en-tête de section fusionné dans le DCF (données de marché, blocs de scénarios, projection de flux de trésorerie, valeur terminale, résumé de valorisation, tableaux de sensibilité).
Formules Plutôt Que Valeurs Codées (NON-NÉGOCIABLE) :
- Chaque cellule de projection, marge, facteur d'actualisation, VA (valeur actuelle) et sensibilité DOIT être une formule Excel en direct — jamais une valeur calculée en Python et écrite comme un nombre
- Lors de l'utilisation d'openpyxl :
ws["D20"] = "=D19*(1+$B$8)"est correct ;ws["D20"] = revenu_calculéest MAUVAIS - Les seuls nombres codés en dur autorisés sont : (1) les entrées historiques brutes, (2) les moteurs d'hypothèses (taux de croissance, entrées WACC, g terminal), (3) les données de marché actuelles (cours de l'action, solde de la dette)
- Si vous vous surprenez à calculer quelque chose en Python et à écrire le résultat — ARRÊTEZ-VOUS. Le modèle doit pouvoir s'adapter lorsque l'utilisateur modifie une hypothèse.
Vérifiez Étape par Étape avec l'Utilisateur (NE construisez PAS de bout en bout) :
- Après la récupération des données → montrez à l'utilisateur le bloc d'entrées brutes (revenus, marges, actions, dette nette) et confirmez avant de projeter
- Après les projections de revenus → montrez le chiffre d'affaires projeté et les taux de croissance, confirmez avant de construire la marge
- Après la construction FCF → montrez le calendrier FCF complet, confirmez la logique avant de calculer le WACC
- Après le WACC → montrez le calcul et les entrées, confirmez avant l'actualisation
- Après la valeur terminale + VA → montrez le pont de capitaux propres (VE → valeur des capitaux propres → valeur par action), confirmez avant les tableaux de sensibilité
- Détectez les erreurs à chaque étape — une hypothèse de marge erronée découverte après la construction des tableaux de sensibilité signifie reconstruire tout ce qui est en aval
Tableaux de Sensibilité :
- Utilisez un nombre IMPAIR de lignes et de colonnes (standard : 5×5, parfois 7×7) — cela garantit une cellule centrale réelle
- Cellule centrale = cas de base. Construisez les valeurs des axes de sorte que l'en-tête de ligne du milieu et l'en-tête de colonne du milieu soient exactement égaux aux hypothèses réelles du modèle (par exemple, si le WACC de base = 9,0 %, la ligne du milieu est 9,0 % ; si le g terminal = 3,0 %, la colonne du milieu est 3,0 %). Le résultat de la cellule centrale doit donc être égal au prix implicite réel de l'action du modèle — c'est le test de validation que le tableau est construit correctement.
- Mettez en surbrillance la cellule centrale avec le remplissage bleu moyen (
#BDD7EE) + police en gras afin qu'elle soit immédiatement visible quelle cellule est le cas de base. - Remplissez TOUTES les cellules (typiquement 3 tableaux × 25 cellules = 75) avec des formules de recalcul DCF complètes
- Utilisez des boucles openpyxl (ou des boucles Office JS) pour écrire les formules de manière programmatique
- AUCUN texte d'espace réservé, AUCUNE approximation linéaire, AUCUNE étape manuelle requise
- Chaque cellule doit recalculer le DCF complet pour cette combinaison d'hypothèses
Commentaires de Cellule :
- Ajoutez des commentaires de cellule AU fur et à mesure que chaque valeur codée en dur est créée
- Format : "Source : [Système/Document], [Date], [Référence], [URL le cas échéant]"
- Chaque entrée bleue doit avoir un commentaire avant de passer à la section suivante
- Ne remettez pas à la fin ou n'écrivez pas "TODO : ajouter source"
Planification de la Disposition du Modèle :
- Définissez les positions de ligne de TOUTES les sections AVANT d'écrire des formules
- Écrivez TOUS les en-têtes et étiquettes en premier
- Écrivez TOUS les séparateurs de section et les lignes vides en second
- Ensuite, écrivez les formules en utilisant les positions de ligne verrouillées
- Testez les formules immédiatement après leur création
Recalcul des Formules :
- Exécutez
python recalc.py model.xlsx 30avant la livraison - Corrigez TOUTES les erreurs jusqu'à ce que le statut soit "succès"
- Zéro erreur de formule requise (#REF!, #DIV/0!, #VALEUR!, etc.)
Blocs de Scénarios :
- Créez des blocs séparés pour les cas Pessimiste/Base/Optimiste
- Montrez les hypothèses horizontalement sur les années de projection dans chaque bloc
- Utilisez des formules SI :
=SI($B$6=1,[Cellule Pessimiste],SI($B$6=2,[Cellule Base],[Cellule Optimiste])) - Vérifiez que les formules référencent les cellules de bloc de scénario correctes
Flux de Travail du Processus DCF
Étape 1 : Récupération et Validation des Données
Récupérez les données des serveurs MCP, des données fournies par l'utilisateur et du web.
Priorité des Sources de Données :
- Serveurs MCP (si configurés) - Données financières structurées provenant de fournisseurs comme Daloopa
- Données Fournies par l'Utilisateur - Données financières historiques issues de leurs recherches
- Recherche Web/Récupération - Prix actuels, bêta, dette et liquidités si nécessaire
Liste de Vérification de Validation :
- Vérifiez la dette nette par rapport aux liquidités nettes (crucial pour la valorisation)
- Confirmez les actions diluées en circulation (vérifiez les rachats/émissions récents)
- Validez que les marges historiques sont cohérentes avec le modèle d'entreprise
- Recoupez les taux de croissance des revenus avec les références du secteur
- Vérifiez que le taux d'imposition est raisonnable (généralement 21-28 %)
Étape 2 : Analyse Historique (3-5 ans)
Analysez et documentez :
- Tendances de croissance des revenus : Calculez le TCAC, identifiez les moteurs
- Progression des marges : Suivez la marge brute, la marge EBIT, la marge FCF
- Intensité capitalistique : D&A et CapEx en % du chiffre d'affaires
- Efficacité du fonds de roulement : Variations du BFR en % de la croissance des revenus
- Mesures de rendement : Tendances du ROIC, du ROE
Créez des tableaux récapitulatifs montrant :
Mesures Historiques (LTM) :
Revenus : X millions de $
Croissance des revenus : X% TCAC
Marge brute : X%
Marge EBIT : X%
D&A % du chiffre d'affaires : X%
CapEx % du chiffre d'affaires : X%
Marge FCF : X%
Étape 3 : Construire les Projections de Revenus
Méthodologie :
- Commencez par le dernier revenu réel (LTM ou année fiscale la plus récente)
- Appliquez les taux de croissance pour chaque année de projection
- Montrez à la fois les montants en dollars ET le taux de croissance calculé en %
Cadre des Taux de Croissance :
- Année 1-2 : Croissance plus élevée reflétant la visibilité à court terme
- Année 3-4 : Modération progressive vers la moyenne du secteur
- Année 5+ : Approche du taux de croissance terminal
Structure de la formule :
- Revenus(Y