SPB Git
2.5 KB · 40 lines python
1#!/usr/bin/env python32"""Figure ch08 — sensibilité des effets de valeur du zonage (DONNÉES SYNTHÉTIQUES / hypothèses déclarées) :3(a) prime espérée d'un rezonage probable selon la probabilité p et le délai T (grille, en milliers de $) ;4(b) valeur du surplus de revenu protégé par droits acquis V_Δ = ΔRNE/(R+λ) selon le taux de risque λ, pour trois R.5Sortie : assets/figures/ch08/ch08-fig-option-sensibilite.pdf"""6import sys, pathlib7ROOT = pathlib.Path(__file__).resolve().parents[3]8sys.path.insert(0, str(ROOT / "analysis/python")); sys.path.insert(0, str(ROOT / "analysis/python/cases"))9import numpy as np, matplotlib.pyplot as plt10from traite.style import setup, palette, savefig, LARGEUR11import ch08_zonage as cas121314def main():15    setup()16    res = cas.exemple_complet()17    E = cas.EXEMPLE18    probs = np.array([0.10, 0.25, 0.40, 0.50, 0.60, 0.75, 0.90, 1.00]); delais = np.array([0.5, 1.0, 1.5, 2.0, 3.0, 4.0])19    G = cas.grille_attendue(E["lot"]["v_actuel"], res["redev"]["valeur_residuelle"], probs, delais, E["option"]["r"]) / 100020    fig, (a, b) = plt.subplots(1, 2, figsize=(LARGEUR, 3.2), gridspec_kw={"width_ratios": [1.15, 1]})21    im = a.imshow(G, cmap=palette.cmap_seq(), aspect="auto", origin="lower")22    a.set_xticks(range(len(delais))); a.set_xticklabels([f"{t:g}" for t in delais]); a.set_yticks(range(len(probs))); a.set_yticklabels([f"{p*100:.0f} %" for p in probs])23    a.set_xlabel("Délai T avant l'autorisation (années)"); a.set_ylabel("Probabilité p d'obtenir le changement"); a.grid(False)24    for i in range(len(probs)):25        for j in range(len(delais)):26            a.text(j, i, f"{G[i, j]:.0f}", ha="center", va="center", fontsize=7, color="white" if G[i, j] > G.mean() else palette.ink)27    a.set_title("(a) prime espérée du rezonage (k$)", loc="left")28    lam = np.linspace(0, 0.08, 81); dn = res["delta_noi"]29    for k, R in enumerate([0.045, 0.055, 0.070]):30        b.plot(lam * 100, [cas.valeur_surplus_derogatoire(dn, R, l) / 1000 for l in lam], color=palette.cat[k], label=f"R = {R*100:.1f} %")31    b.plot(lam * 100, [cas.valeur_surplus_horizon(dn, 0.055, l, E["droits_acquis"]["horizon"]) / 1000 for l in lam], color=palette.cat[1], linestyle="--", label="R = 5,5 %, horizon 25 ans")32    b.set_xlabel("Taux de risque d'extinction λ (% par an)"); b.set_ylabel("V_Δ (milliers de $)")33    b.set_title("(b) surplus dérogatoire : ΔRNE = 3 300 $", loc="left"); b.legend(fontsize=7, loc="upper right")34    fig.tight_layout()35    savefig(fig, "ch08/ch08-fig-option-sensibilite.pdf")363738if __name__ == "__main__":39    main()40
Files · da8a4ee0304be0aa9c54ed0aad08d985fc4539fc
Menu

Theme