suite aux pressions générales, je vais reprendre mes discussions d'alcoolique.... ou plutôt reprendre des classiques de finance, en expliquant que ce sont simplement des problèmes que se posent les amateurs de boissons fortes (de là à conseiller plutôt de recruter dans les bars qu'à la sortie des grandes écoles...).
Bref, avant d'avoir entamé sa marche aléatoire dans la rue de la soif (ici, correspondant aux problèmes d'options à barrière traduit en termes financier), puis d'avoir un soucis avec ses clés (), puis la maréchaussée (ici), notre héros (car on peut maintenant l'appeler un héros après 4 billets qui lui sont consacrés) avait du choisir son bar... Le problème est loin d'être simple. Il y a 20 bars dans la rue (disons http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-50.png pour faire quelque chose de plus formel). Il arrive de la place sainte Anne, et là, il souhaite choisir le bar le moins cher. Le soucis est qu'il n'a pas le droit de faire demi-tour1 et il ne connaît pas les prix pratiqués dans les différents bars. Il part avec un a priori qui est que le prix d'une pinte est compris entre 3 et 6 euros, que le prix est uniformément réparti entre ces deux prix, et que les prix sont indépendants d'un bar à l'autre. Pour les financiers, il a une option (de commander une bière), et peut l'exercer quand il le souhaite. Une option américaine en quelque sorte. Supposons qu'on soit arrivé au bar http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-01.png. On peut soit payer http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-02.png (qui est supposé aléatoire, uniformément distribué et indépendant des autres bars), soit espérer que l'on puisse payer moins cher plus loin,
Soit http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-03.png la valeur de cette option, alors

http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-04.png
i.e.
http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-05.png
soit
http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-06.png
où http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-07.png désigne la loi du prix de la bière (soit ici une loi uniforme) avec une condition terminale de la forme
http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-09.png
car il a soif, et ne quittera pas la rue sans avoir bu un verre !
Classiquement, par backward induction, on peut résoudre ce programme, à partir de la loi de http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-10.png. Posons http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-12.png. Alors
http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-13.png
et
http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-14.png
soit simplement
http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-16.png
soit enfin
http://perso.univ-rennes1.fr/arthur.charpentier/latex/opt-am-18.png
Je laisse les plus courageux simplifier les calculs. La "frontière d'exercice" est alors obtenue par récurrence. Numériquement, le code est alors simplement
> n=20
> u=rep(NA,n)
> b=6;a=3
> u[n]=(b+a)/2
> for(k in (n-1):1){
+ u[k]=1/(b-a)*(u[k+1]*(b-u[k+1])+(u[k+1]^2-a^2)/2)
+ }

Dès qu'on atteint la barrière, on s'assoit au bar. On note que plus on avance dans la rue, moins on est exigent: au tout début, on ne s'assoit pas à moins de 3 euros 30... mais plus on avance, plus on relève le seuil d'exigence. Le calcul sous forme intégrale donne ici
> u=rep(NA,n)
> b=6;a=3
> u[n]=(b+a)/2
> for(k in (n-1):1){
+ g=function(x){pmin(x,rep(u[k+1],length(x)))/(b-a)}
+ u[k]=integrate(g,lower=a,upper=b)$value
+ }
J'avais déjà abordé ce problème dans un précédant billet, sur les options américaines, mais on peut maintenant aller un peu plus loin... que se passe-t-il si on suppose que les prix sont discret (par exemple par tranches de 50 centimes ou 1 euro) ? L'avantage avec ces méthodes numériques est que l'on peut très facilement enlever des hypothèses, par exemple ici on aurait
> h=2
> K=(b-a)*h+1
> PRIX=seq(a,b,by=1/h)
> u2=rep(NA,n)
> b=6;a=3
> u2[n]=(b+a)/2
> for(k in (n-1):1){
+ g=function(x){pmin(x,rep(u[k+1],length(x)))}
+ u2[k]=sum(g(PRIX)*1/K)}
pour des seuils à 1 euros (les seuls prix possibles étant 3,4,5 ou 6 euros).

Ou la frontière suivante si les prix varient par tranche de 50 centimes.

Compte tenu de la discrétisation, notons que la vraie frontière devient alors ici

Bref, comme toujours, les problèmes d'alcooliques rejoignent les problèmes d'exercice optimal d'options américaines, problème classique en finance de marché...
1 pour rendre cette histoire crédible, à chaque bar rencontré il demande le prix d'une pinte. S'il estime que c'est trop cher, il s'exclame "mais c'est bien trop cher ici !" et s'en va. Sinon il commande et s'installe. Cette exclamation rend improbable - à ses yeux - l'idée de revenir finalement s'installer au bar....