Salut nbc,
J’ai un peu enquêté sur ce qu’il se passe. Je pense avoir une idée assez claire.
Pour rappel, le problème que l’on cherche à résoudre est un problème de maximisation d’une certaine fonction de valeur. Cette maximisation se fait sur différents nœuds de richesse, à chaque pas de temps (imaginez une grille (richesses, temps)). Ensuite, ce qui est renvoyé est simplement le résultat (donc l’allocation), qui maximise la fonction à chaque niveau de richesse et à chaque pas de temps.
À chaque nœud, on cherche à résoudre un problème type Markowitz, donc un problème où l’on maximise le rendement à niveau de variance donné et à niveau de patrimoine illiquide donné. À cela s’ajoute une contrainte que l’on doit avoir des poids positifs sur les actifs liquides (actions, obligations, or, managed futures, …) et un niveau de levier maximum.
Pour que le calcul ne prenne pas trop longtemps, les problèmes de Markowitz sont calculés explicitement, à partir de leur solution exacte, mais cette solution n’inclut pas les contraintes. Puis, on fait une sorte de projection pour respecter les contraintes. Ici, c’est cette projection qui pose problème. Le souci dans ton allocation est qu’il y a beaucoup d’immobilier et que le solveur a envie de prendre énormément de bonds avec du levier, mais est limité par le levier maximum de 150 %. La projection trouve ensuite une solution assez discutable. Si tu modifies le levier maximum pour aller au-delà de 150 %, par exemple, la borne maximale de 400 %, tu devrais voir l’allocation obtenue avant les contraintes évoquées ci-dessus et observer le comportement discutable de cette projection.
Pour corriger cela, il faudrait supprimer la résolution exacte de Markowitz + projection par un algorithme d’optimisation type descente de gradient, sauf que ces alternatives sont plusieurs ordres de grandeur plus lentes, cela reviendrait donc à passer d’un temps de calcul de l’ordre de 1 s à un temps de calcul de l’ordre de la minute actuellement. Donc cette solution est, sauf très bonne idée, plutôt exclue pour l’heure.
Je vais réfléchir à une solution pour résoudre ton cas, le plus probable à court terme est de trouver un moyen d’améliorer cette projection pour qu’elle fasse des choses plus cohérentes, j’ajouterais un message sur le forum lorsqu’on aura une solution satisfaisante.