rr

 

# ========================================================= # Werte- & Selbstwert-Verlustmodell # Negatives Renditeprogramm (Zinseszinseffekt) # ========================================================= from dataclasses import dataclass # --------------------------------------------------------- # MODELLPARAMETER # --------------------------------------------------------- @dataclass class ModellParameter: startwert: float = 100.0 zieljahr: int = 2025 # Verluststufen nach Geburtsjahr VERLUST_STAFFEL = [ (1995, 0.001), # bis 1995 -> 0,1 % (2000, 0.005), # 1996–2000 (2005, 0.010), # 2001–2005 (2010, 0.015), # 2006–2010 (2015, 0.020), # 2011–2015 (2100, 0.025), # ab 2016 ] # --------------------------------------------------------- # HILFSFUNKTIONEN # --------------------------------------------------------- def ermittle_verlust_rate(geburtsjahr: int) -> float: for grenze, rate in VERLUST_STAFFEL: if geburtsjahr <= grenze: return rate return 0.0 def negativer_zinseszins(startwert: float, jahre: int, rate: float) -> float: wert = startwert for _ in range(jahre): wert *= (1 - rate) return wert # --------------------------------------------------------- # KERNMODELL # --------------------------------------------------------- def berechne_indizes(geburtsjahr: int, params: ModellParameter): laufzeit = max(0, params.zieljahr - geburtsjahr) verlust_rate = ermittle_verlust_rate(geburtsjahr) selbstwert = negativer_zinseszins( params.startwert, laufzeit, verlust_rate ) # Moral & Ethik reagieren sensibler moral = selbstwert * 0.95 ethik = selbstwert * 0.90 problemfall = 100 - (selbstwert + moral + ethik) / 3 return { "Geburtsjahr": geburtsjahr, "Selbstwert_%": round(selbstwert, 2), "Moral_%": round(moral, 2), "Ethik_%": round(ethik, 2), "Problemfall_%": round(problemfall, 2), "Verlust_rate_%": round(verlust_rate * 100, 2) } # --------------------------------------------------------- # AUSWERTUNG # --------------------------------------------------------- def analyse_generationen(von: int, bis: int): params = ModellParameter() print( "Jahr | Selbstwert | Moral | Ethik | Problemfall | Verlust/Jahr" ) print("-" * 72) for jahr in range(von, bis + 1): daten = berechne_indizes(jahr, params) print( f"{daten['Geburtsjahr']} | " f"{daten['Selbstwert_%']:>10}% | " f"{daten['Moral_%']:>6}% | " f"{daten['Ethik_%']:>6}% | " f"{daten['Problemfall_%']:>11}% | " f"{daten['Verlust_rate_%']:>6}%" ) # --------------------------------------------------------- # PROGRAMMSTART # --------------------------------------------------------- if __name__ == "__main__": analyse_generationen(1967, 2022)

Kommentare

Beliebte Posts aus diesem Blog

ef

rf