Advertisement
Guest User

retraite (python3)

a guest
Dec 22nd, 2019
548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.70 KB | None | 0 0
  1. #!/usr/bin/python
  2. # coding:utf-8
  3.  
  4. from pylab import *
  5. from retraites import *
  6.  
  7.  
  8.  
  9. scenarios_labels=["Hausse des salaires: +1,8%/an, Taux de chômage: 7%",
  10.                   "Hausse des salaires: +1,5%/an, Taux de chômage: 7%",
  11.                   "Hausse des salaires: +1,3%/an, Taux de chômage: 7%",
  12.                   "Hausse des salaires: +1%/an, Taux de chômage: 7%",
  13.                   "Hausse des salaires: +1,8%/an, Taux de chômage: 4.5%",
  14.                   "Hausse des salaires: +1%/an, Taux de chômage: 10%"]
  15.  
  16.  
  17. ### fonctions pour générer des graphiques
  18.  
  19.  
  20. dir_image="./fig/"        # répertoire pour les images
  21. ext_image=["jpg","pdf"]   # types de fichier à générer
  22.  
  23. def mysavefig(f):
  24.     for ext in ext_image:
  25.         savefig(dir_image + f + "." + ext)
  26.  
  27. def graphique(v, nom, fs=8, rg=[], leg=False, sc=scenarios):
  28.  
  29.     if nom=="EV":
  30.         an=annees_EV
  31.     else:
  32.         an=annees
  33.  
  34.     for s in sc:
  35.         plot(an, [ v[s][a] for a in an ], label=scenarios_labels[s-1] )
  36.  
  37.     # titres des figures
  38.    
  39.     t=["Situation financière du système (part du PIB)",
  40.        "Niveau de vie des retraités p/r à celui des actifs",
  41.        "Proportion de la vie passée à la retraite",
  42.        "Taux de cotisation de retraite (part du PIB)",
  43.        "Age de départ effectif moyen à la retraite",
  44.        "Ratio (pension moyenne)/(salaire moyen)",
  45.        "B: Part des revenus d'activité bruts dans le PIB",
  46.        "NR: Nombre de retraités",
  47.        "NC: Nombre de cotisants",
  48.        "G: Effectif d'une generation arrivant à l'âge de la retraite",
  49.        "dP: Autres dépenses de retraites",
  50.        "TPR: Taux de prélèvement sur les retraites",
  51.        "TPS: Taux de prélèvement sur les salaires",
  52.        "CNV: (niveau de vie)/[(pension moy))/(salaire moy)]",
  53.        "EV: Espérance de vie à 60 ans"
  54.     ][ ["S","RNV","REV","T","A","P","B","NR","NC","G","dP","TPR","TPS","CNV","EV"].index(nom) ]
  55.        
  56.     title(t,fontsize=fs)
  57.     if rg!=[]:
  58.         ylim(bottom=rg[0],top=rg[1])
  59.     if leg:
  60.         legend(loc="best")
  61.  
  62. def graphiques(T, P, A, S, RNV, REV, fs=8):
  63.  
  64.     for i in range(6):
  65.         subplot(3,2,i+1)
  66.         v,V,r = [ (S,"S" ,[-0.02,0.02]),
  67.                   (RNV,"RNV", [0.6,1.2]),
  68.                   (REV,"REV", [0.2,0.4]),
  69.                   (T,"T", [0.25,0.4] ),
  70.                   (A,"A", [60,70]),
  71.                   (P,"P", [.25,.55]) ][ i ]
  72.         graphique(v, V, fs ,r)
  73.     tight_layout(rect=[0, 0.03, 1, 0.95])
  74.  
  75.    
  76. ##############################################################################
  77.  
  78. def affiche_solutions_simulateur_COR(Ts,Ps,As):
  79.  
  80.     print ("Valeur à rentrer sur le simulateur officiel du COR:")
  81.    
  82.     ans=[2020, 2025, 2030, 2040, 2050, 2060, 2070]
  83.     for s in scenarios:
  84.         print ("")
  85.         print ("Scenario",s,": ",scenarios_labels[s-1])
  86.         print ("Age:        "),
  87.         for a in ans:
  88.             print ("%.1f"%(As[s][a])),
  89.         print ("")
  90.         print ("Cotisation: "),
  91.         for a in ans:
  92.             print ("%.1f"%(100*Ts[s][a])),
  93.         print ("")
  94.         print ("Pension:    "),
  95.         for a in ans:
  96.             print ("%.1f"%(100*Ps[s][a])),
  97.         print("")
  98.  
  99.     print("")
  100.  
  101. ##############################################################################
  102. # SIMULATION NUMERIQUES
  103.    
  104. # génération des graphes pour le statu quo (COR)
  105.  
  106. def simu0():
  107.  
  108.     figure(figsize=(6,8))
  109.     suptitle('Projections du COR',fontsize=16)
  110.    
  111.     T,P,A = get('T'), get('P'), get('A')
  112.     S,RNV,REV = calcule_S_RNV_REV(T,P,A)
  113.  
  114.     graphiques(T,P,A, S,RNV,REV)
  115.  
  116.     mysavefig("cor")
  117.  
  118.  
  119. # génération des graphes sur la conjoncture
  120.  
  121. def simu1():
  122.  
  123.     B,NR,NC,G,dP,TPR,TPS,CNV,EV=get('B'),get('NR'),get('NC'),get('G'),get('dP'),get('TCR'),get('TCS'),get('CNV'),get('EV')
  124.    
  125.     figure(figsize=(10,8))
  126.     suptitle(u"Projections du COR (hypothèses)",fontsize=16)
  127.     for c in range(9):
  128.         subplot(3,3,c+1)
  129.         v,V = [ (B,'B'), (NR,'NR'), (NC,'NC'), (G,'G'), (dP,'dP'), (TPR,'TPR'), (TPS,'TPS'), (CNV,'CNV'), (EV,'EV') ][c]
  130.         graphique(v,V)
  131.     tight_layout(rect=[0, 0.03, 1, 0.95])
  132.    
  133.     mysavefig("conjoncture")
  134.  
  135.    
  136. # génération des graphes pour des réformes à prestation garantie
  137.  
  138. def simu2(ages=[61,0]):
  139.    
  140.     for d in ages:
  141.  
  142.         figure(figsize=(6,8))
  143.         if d!=0:
  144.             suptitle( ("Cotisations adaptées (eq. financier, maintien du niveau de vie & départ à %d ans"%(d)),fontsize=10)
  145.         else:
  146.             suptitle("Cotisations adaptées (équilibre financier & maintien du niveau de vie)",fontsize=10)
  147.                
  148.         Ts,Ps,As = calcule_Ts_Ps_As_fixant_As_RNV_S(d)
  149.         S,RNV,REV = calcule_S_RNV_REV(Ts,Ps,As)
  150.        
  151.         graphiques(Ts,Ps,As, S,RNV,REV)
  152.        
  153.         if d!=0:
  154.             mysavefig( ("%dans"%(d)))
  155.         else:
  156.             mysavefig("cotisations")
  157.  
  158.            
  159. # génération des graphes pour la réforme Macron avec maintien du niveau de vie
  160.  
  161. def simu3(Ts=0):
  162.    
  163.     figure(figsize=(6,8))
  164.     suptitle('Réforme Macron (équilibre financier & maintien du niveau de vie)',fontsize=12)
  165.                
  166.     Ts,Ps,As = calcule_Ts_Ps_As_fixant_Ts_RNV_S(Ts)
  167.     S,RNV,REV = calcule_S_RNV_REV(Ts,Ps,As)
  168.        
  169.     graphiques(Ts,Ps,As, S,RNV,REV)
  170.    
  171.     print ("Maintien du niveau de vie")
  172.     affiche_solutions_simulateur_COR(Ts,Ps,As)
  173.    
  174.     #mysavefig("macron_niveau_de_vie")
  175.  
  176.        
  177. # génération des graphes pour la réforme Macron avec point indexé sur le salaire moyen (rapport (pension moyenne/)(salaire moyen) constant égal à celui de 2020)
  178.  
  179. def simu4(Ps=0,Ts=0):
  180.  
  181.     figure(figsize=(6,8))
  182.     suptitle('Réforme Macron (équilibre financier & ratio pension/salaire fixe)',fontsize=12)
  183.                
  184.     Ts,Ps,As = calcule_Ts_Ps_As_fixant_Ps_Ts_S(Ps,Ts)
  185.     S,RNV,REV = calcule_S_RNV_REV(Ts,Ps,As)
  186.        
  187.     graphiques(Ts,Ps,As, S,RNV,REV)
  188.     mysavefig("macron_point_indexe")
  189.    
  190.     print ("Maintien du rapport pension moyenne / salaire moyen")
  191.     affiche_solutions_simulateur_COR(Ts,Ps,As)
  192.  
  193.    
  194.  
  195.  
  196. ############################################################################
  197. # génération des figures pour les articles mediapart
  198.  
  199. def pour_article_2():
  200.  
  201.     print ("Données et figure pour article 2")
  202.    
  203.     Ts,Ps,As = calcule_Ts_Ps_As_fixant_Ts_RNV_S(0)
  204.     S,RNV,REV = calcule_S_RNV_REV(Ts,Ps,As)
  205.        
  206.     figure(figsize=(9,6))
  207.     graphique(As,"A",14,[],True,range(1,5))
  208.     suptitle("Modèle du COR: Réforme Macron (éq. financier & niveau de vie maintenu)",fontsize=14)
  209.     legend(loc="best")
  210.     mysavefig("macron_68_ans")
  211.  
  212.     figure(figsize=(9,6))
  213.     graphique(As,"A",14,[],True)
  214.     suptitle("Modèle du COR: Réforme Macron (éq. financier & niveau de vie maintenu)",fontsize=14)
  215.     legend(loc="best")
  216.     mysavefig("macron_68_ans_tout")
  217.    
  218.     print ("Maintien du niveau de vie")
  219.     affiche_solutions_simulateur_COR(Ts,Ps,As)
  220.  
  221.  
  222.  
  223. def pour_article_3():
  224.  
  225.     print ("Données et figures pour article 3")
  226.    
  227.     Ts,Ps,As = calcule_Ts_Ps_As_fixant_As_Ts_S(62)
  228.     S,RNV,REV = calcule_S_RNV_REV(Ts,Ps,As)
  229.  
  230.     titre="Modèle du COR: Réforme Macron (éq. financier & départ à 62 ans)"
  231.    
  232.     figure(figsize=(9,6))
  233.     graphique(RNV,"RNV",14,[],True,range(1,5))
  234.     suptitle(titre,fontsize=14)
  235.     legend(loc="best")
  236.     mysavefig("macron_62_ans_nv")
  237.    
  238.     figure(figsize=(9,6))
  239.     graphique(Ps,"P",14,[],True,range(1,5))
  240.     suptitle(titre,fontsize=14)
  241.     legend(loc="best")
  242.     mysavefig("macron_62_ans_p")
  243.    
  244.     print ("Départ à 62 ans")
  245.     affiche_solutions_simulateur_COR(Ts,Ps,As)
  246.    
  247.    
  248. #####################
  249.  
  250.  
  251.  
  252. simu0()
  253. simu1()
  254. simu2()
  255. simu3()
  256. simu4()
  257.  
  258. pour_article_2()
  259. pour_article_3()
  260.  
  261. show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement