def calcul_taux_rendement_fonds_propres(rf_pct, beta, prime_pct): """ Calcule le taux de rendement des fonds propres selon le MEDAF. Formule : E(Ri) = rf + β × prime """ rf = rf_pct / 100.0 prime = prime_pct / 100.0 rFP = rf + beta * prime return rFP, rf, prime def calcul_croissance_moyenne(DPA_ancienne, DPA_recente, nb_annees): """ Calcule le taux de croissance moyen des dividendes. Formule : g = (DPA_recente / DPA_ancienne)^(1/nb_annees) - 1 """ g = (DPA_recente / DPA_ancienne)**(1.0/nb_annees) - 1 return g def valeur_titre_gordon(D0, rFP, g): """ Calcule la valeur du titre selon Gordon. Formule : P0 = D1 / (rFP - g) avec D1 = D0 × (1+g) """ D1 = D0 * (1 + g) P0 = D1 / (rFP - g) return P0, D1 def croissance_implicite(P0, D0, rFP): """ Calcule la croissance implicite g. Formule de Gordon : P0 = (D0 × (1 + g)) / (rFP - g) On résout pour g : g = (rFP*P0 - D0) / (P0 + D0) """ g_implicite = (rFP*P0 - D0) / (P0 + D0) return g_implicite # Programme principal # On affiche les paramètres et on récupère les données de l'utilisateur nb_actions = float(input("Nb d'actions : ")) capitalisation = float(input("Capitalisation : ")) beta = float(input("bêta : ")) taux_sans_risque_pct = float(input("Taux sans risque (%): ")) prime_risque_pct = float(input("Prime de risque (%): ")) DPA_1 = float(input("DPA 1 : ")) DPA_2 = float(input("DPA 2 : ")) nb_annees = float(input("Nb d'années entre les deux DPA : ")) # Calcul du cours actuel à partir de la capitalisation et du nb d'actions P0_actuel = capitalisation / nb_actions # 1) Taux de rendement des fonds propres (rFP) selon MEDAF rFP, rf, prime = calcul_taux_rendement_fonds_propres(taux_sans_risque_pct, beta, prime_risque_pct) # 2) Taux de croissance moyen des dividendes # On considère DPA_2 comme la DPA la plus récente DPA_ancienne = DPA_1 DPA_recente = DPA_2 g = calcul_croissance_moyenne(DPA_ancienne, DPA_recente, nb_annees) # 3) Valeur du titre selon le modèle de Gordon P0_gordon, D1 = valeur_titre_gordon(D0=DPA_recente, rFP=rFP, g=g) # 4) Croissance implicite à partir du cours actuel g_implicite = croissance_implicite(P0_actuel, D0=DPA_recente, rFP=rFP) # Affichage des résultats et formules avec substitutions print("\n----- RÉSULTATS -----") # a) Taux de rendement des fonds propres print("1) Taux rendement fonds propres (MEDAF) :") print("Formule : E(Ri) = rf + β × prime") print("Substitution :") print("rf = {}% => {:.4f}".format(taux_sans_risque_pct, rf)) print("prime = {}% => {:.4f}".format(prime_risque_pct, prime)) print("E(Ri) = {:.4f} + ({:.2f} × {:.4f})".format(rf, beta, prime)) print("E(Ri) = {:.2f}%".format(rFP*100)) # b) Taux de croissance moyen des dividendes print("\n2) Taux croissance moyen des dividendes :") print("Formule : g = (DPA_recente / DPA_ancienne)^(1/nb_annees) - 1") print("Substitution : g = ({:.2f} / {:.2f})^(1/{:.0f}) - 1".format(DPA_recente, DPA_ancienne, nb_annees)) print("g = {:.2f}%".format(g*100)) # c) Valeur du titre selon Gordon print("\n3) Valeur du titre avec Gordon :") print("Formule : P0 = D1 / (rFP - g) avec D1 = D0 × (1+g)") print("Substitution de D1 : D1 = {:.2f} × (1 + {:.4f}) = {:.4f}".format(DPA_recente, g, D1)) print("Substitution de P0 : P0 = {:.4f} / ({:.4f} - {:.4f})".format(D1, rFP, g)) print("P0 = {:.2f}".format(P0_gordon)) # d) Croissance implicite print("\n4) Croissance implicite :") print("Formule : P0 = (D0 × (1 + g)) / (rFP - g)") print("=> g = (rFP*P0 - D0)/(P0 + D0)") print("Substitution : g_implicite = (({:.4f} × {:.2f}) - {:.2f}) / ({:.2f} + {:.2f})".format(rFP, P0_actuel, DPA_recente, P0_actuel, DPA_recente)) print("g implicite = {:.2f}%".format(g_implicite*100))