On considère un consommateur souhaitant utiliser de manière optimale sa richesse sur T périodes. Sa richesse à l’instant t est notée wt et sa consommation sur la période [t,t + 1[ est notée ct. On suppose que la richesse non consommée à l’instant t est investie dans un portefeuille financier de rendement Rt ce qui donne la dynamique suivante:
| (1) |
Le bien-être du consommateur est représenté par la somme actualisée des utilités de ses consommations successives et de la richesse finale:
On suppose tout d’abord que le portefeuille est constitué d’un actif sans risque ou de rendement certain R:
On suppose maintenant que l’utilité est de type exponentielle
| (2) |
où les paramètres at,bt,ft,γt sont définis par la récurrence
| (3) |
| (4) |
Donner alors des conditions sur d et R pour que les consommations optimales soient croissantes dans le temps.
Que se passe-t-il en particulier si dR = 1 ?
Question 1 Ouvrir un fichier nom_de_fichier.sce et y recopier les paramètres suivant.
Construire les vecteurs B et F donnés par l’équation (3).
//paramètres Horizon=4; R=1.1;// rendement certain w0=10;// richesse initiale d=0.8;// facteur d'actualisation // Construction de B et F B(Horizon + 1)=1; F(Horizon + 1)=0; for t=Horizon : -1 : 1 do B(t)=R * B(t + 1) / (1 + R * B(t + 1)); F(t)=(-log(d * R) + F(t + 1)) / (1 + R * B(t + 1)); end;
// Consommation et richesse optimales Wopt(1)=w0; for t=1 : Horizon do Copt(t)=B(t) * Wopt(t) + F(t); Wopt(t + 1)=R * (Wopt(t) - Copt(t)); end; // Affichage xbasc(); plot(Copt);plot(Wopt);
Question 3 Répéter l’opération précedente pour différentes valeurs du facteur d’actualisation d entre 0.5 et 1. Quel résultat retrouvez-vous ?
Question 4 Charger dynoptim et consulter le help. Définir la dynamique f et ses dérivées partielles f_w par rapport à l’état et f_c par rapport à la commande. Faire de même avec le coût instantané et le coût final. Écrire les contraintes sur les commandes.
exec "SCI/contrib/dynoptim-1.3/loader.sce" // salle élèves ENPC exec("/home/s/scilab-contrib/dynoptim-1.2/loader.sce"); // CERMICS help "dynoptim" //dynamique function z=f(c,w,t) z=R * (w - c),endfunction; function D=f_w(c,w,t) D=R,endfunction; function D=f_c(c,w,t) D=-R,endfunction; // contrainte controles c_min=zeros(1,Horizon); c_max=zeros(1,Horizon) + exp(100);
// Fonction utilité function z=Utilite(x) z=1 - exp(-x),endfunction; function D=DUtilite(x) D=1 * exp(-x),endfunction; // cout intégral function z=L(c,w,t) z=-(d ^ t) * Utilite(c),endfunction; function D=L_w(c,w,t) D=0,endfunction; function D=L_c(c,w,t) D=-(d ^ t) * DUtilite(c),endfunction; // cout final function z=g(w,t) z=-(d ^ t) * Utilite(w),endfunction; function D=g_w(w,t) D=-(d ^ t) * DUtilite(w),endfunction;
Question 5 Choisir une richesse initiale w0. Initialiser l’algorithme d’optimisation dynamique dynoptim avec un vecteur c_init. Faire un appel à dynoptim et tracer les solutions. Vérifier que les solutions coïncident avec celles des Questions précédentes.
//conditions initiales w0=[10]; c_init=w0 / (Horizon + 1) + zeros(1,Horizon); // Appel dynoptimsc L_noms=["L","L_c","L_w"]; f_noms=["f","f_c","f_w"]; g_noms=["g","g_w"]; [c_opt,w_opt]=dynoptim(L_noms,f_noms,g_noms,c_min,c_init,c_max,w0), //xbasc() plot2d(c_opt); plot2d(w_opt)
Question 6 Que constatez-vous en faisant varier le facteur d’actualisation d entre 0.5 et 1 ?
On suppose maintenant que le portefeuille de rendement Rt est constitué d’un actif risqué dont le rendement est noté A et d’un actif sans risque de rendement B. On appelle αt la proportion d’actif non risqué dans le portefeuille à la période t:
On suppose que le consommateur optimise l’espérance de la somme actualisée des utilités de ses consommations successives et de la richesse finale :
On suppose que L(x) = xγ.
| (5) |
où A est une variable aléatoire de même loi que la loi commune des (At).
| (6) |
et
| (7) |
| (8) |
et le terme
Question 7 Ouvrir un fichier nom_de_fichier.sce et y recopier les paramètres suivants. Écrire une fonction Scilab util pour la fonction d’utilité puissance xγ.
Question 8 On suppose que le rendement risqué A suit une loi du type
Question 9 Construire alors le vecteur b donné par l’équation (6) en utilisant l’équivalent certain du portefeuille optimal et le paramètre a. On définira pour cela une fonction Scilab Ropt qui à un rendement A associe le rendement optimal du portefeuille.
Question 10 Écrire une fonction Scilab dyn-opt qui, à une richesse w et à une valeur A du rendement risqué, associe la richesse au pas de temps suivant résultant de l’application de la commande optimale (c∗(t,w),α∗).
Pour cela, on écrira une fonction Scilab cons-opt qui, à une richesse w, associe la consommation optimale c∗(t,w) en boucle fermée.
Question 11 Écrire une procédure de simulation de la variable aléatoire A. Réfléchir à une écriture vectorielle (plus rapide), sans test, utilisant la fonction Scilab sign.
Question 12 À partir de w0, générer une trajectoire optimale stochastique w∗(t) de richesses. Tracer les trajectoires t(w∗(t),c∗(t)) pour une réalisation de A.
Question 13 Écrire une procédure Scilab fournissant N réalisations des variables aléatoires J(u∗(.)), w∗(t) et c∗(t). En déduire des valeurs approchées pour leur moyenne et variance. Donner un histogramme de J(u∗(.)).