#!/usr/bin/env python3 """Figure ch13 — biais relatif de l'ajustement de conditions du marché lorsqu'une vente est datée à l'acte notarié plutôt qu'à la promesse d'achat : b(g, δ) = (1+g)^(δ/12) − 1, pour plusieurs croissances annuelles g et un délai δ de 0 à 6 mois. Calcul analytique (aucune donnée) ; la plage de g est illustrative (ordres de grandeur des variations annuelles APCIQ/Teranet 2024-2026). Sortie : assets/figures/ch13/ch13-fig-biais-datation.pdf""" import sys, pathlib ROOT = pathlib.Path(__file__).resolve().parents[3] sys.path.insert(0, str(ROOT / "analysis/python")) import numpy as np, matplotlib.pyplot as plt from traite.style import setup, palette, savefig, LARGEUR def main(): setup() d = np.linspace(0, 6, 121) fig, ax = plt.subplots(figsize=(LARGEUR, 2.7)) for i, g in enumerate((-3, 3, 6, 10, 15)): b = ((1 + g / 100) ** (d / 12) - 1) * 100 ax.plot(d, b, color=palette.cat[i], lw=1.6) ax.annotate(f"g = {g:+d} %/an".replace("+", "+").replace("-", "−"), xy=(6, b[-1]), xytext=(4, 0), textcoords="offset points", fontsize=7.5, va="center", color=palette.ink) ax.axhline(0, color=palette.ink2, lw=0.6) for m in (1, 2, 3): ax.axvline(m, color=palette.grid, lw=0.8, ls=":") ax.set_xlim(0, 7.6); ax.set_xlabel("Délai entre la promesse d'achat et l'acte, δ (mois)") ax.set_ylabel("Biais sur le prix daté à l'acte (%)") ax.set_xticks([0, 1, 2, 3, 4, 5, 6]) out = savefig(fig, "ch13/ch13-fig-biais-datation.pdf"); print("OK", out) if __name__ == "__main__": main()