#!/usr/bin/env python3 """Ch. 31, figure « levier » (DONNÉES SYNTHÉTIQUES, cas 3) : TRI des fonds propres sur dix ans et rendement courant de la première année (cash-on-cash) en fonction du ratio prêt-valeur, achat à la valeur DCF (2 208 566 $), prêt à 4,12 % sur 480 mois ; repères : rendement sans levier 7,25 %, taux de capitalisation implicite 4,07 %, RPV retenu 66,8 % (RCD 1,20) et RPV 75 %. Sortie : ch31-fig-levier.pdf.""" from __future__ import annotations import sys, pathlib sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1])) import numpy as np, matplotlib.pyplot as plt from traite.style import setup, palette, savefig, LARGEUR from cases import ch31_financement as c def main(): setup() r = c.base(); fi = c.financement(r) t = c.tri_fp_courbe(r, np.linspace(0.0, 0.85, 52)) fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(LARGEUR, 3.0)) x = t["rpv"] * 100 ax1.plot(x, t["tri_fp"] * 100, color=palette.cat[0], lw=1.8, label="TRI des fonds propres (10 ans)") ax1.axhline(fi["tri_sans_levier"] * 100, color=palette.ink2, lw=0.8, ls="--"); ax1.text(1, 7.25 + 0.3, "sans levier : 7,25 %", fontsize=7.5, color=palette.ink) ax1.axhline(fi["k_annuel"] * 100, color=palette.cat[2], lw=0.8, ls=":"); ax1.text(1, fi["k_annuel"] * 100 + 0.3, "coût effectif de la dette k ≈ 4,06 %", fontsize=7.5, color=palette.ink) ax1.axvline(fi["rpv"] * 100, color=palette.cat[1], lw=0.8); ax1.text(fi["rpv"] * 100 - 1, 15.6, "RPV retenu\n66,8 % (RCD 1,20)", fontsize=7, ha="right", color=palette.ink) ax1.plot([fi["rpv"] * 100], [fi["tri_fp"] * 100], "o", color=palette.cat[1], ms=4.5) ax1.set_xlabel("Ratio prêt-valeur (%)"); ax1.set_ylabel("Rendement (%)"); ax1.set_xlim(0, 87); ax1.set_ylim(0, 17) ax1.set_title("Rendement total : levier positif", loc="left") ax2.plot(x, t["cash_on_cash_1"] * 100, color=palette.cat[0], lw=1.8) ax2.axhline(fi["R_dcf"] * 100, color=palette.ink2, lw=0.8, ls="--"); ax2.text(1, fi["R_dcf"] * 100 + 0.15, "R = RNE$_1$/V = 4,07 %", fontsize=7.5, color=palette.ink) ax2.axhline(0, color=palette.ink2, lw=0.6) ax2.axvline(fi["rpv"] * 100, color=palette.cat[1], lw=0.8) ax2.plot([fi["rpv"] * 100], [fi["cash_on_cash_1"] * 100], "o", color=palette.cat[1], ms=4.5) ax2.annotate("2,05 %", xy=(fi["rpv"] * 100, fi["cash_on_cash_1"] * 100), xytext=(fi["rpv"] * 100 - 22, 1.2), fontsize=7.5, arrowprops=dict(arrowstyle="-", color=palette.ink2, lw=0.6)) ax2.set_xlabel("Ratio prêt-valeur (%)"); ax2.set_ylabel("Rendement courant, année 1 (%)"); ax2.set_xlim(0, 87); ax2.set_ylim(-2.5, 5) ax2.set_title("Rendement courant : levier négatif (R < f)", loc="left") savefig(fig, "ch31/ch31-fig-levier.pdf") if __name__ == "__main__": main()