Optimisation d’une vente : illustrations

1 Introduction

1.1 Notations

La partie théorique à été vue en T.D. Nous nous intéressons ici à différentes simulations permettant d’illustrer les résultats obtenus.

Rappelons brièvement le contexte. Nous supposons qu’un propriétaire veuille vendre une de ses maisons. Jusqu’à présent, cette maison était en location et il percevait (charges déduites) un revenu qu’il plaçait. Une fois la maison mise en vente, il perd donc chaque mois : le loyer + les intérêts qu’il aurait perçus en plaçant ce dernier.

Pour rendre le modèle le plus réaliste possible, nous supposerons par la suite que le vendeur reçoit une proposition d’achat par semaine. Nous noterons ainsi :

– m : la valeur moyenne des prix proposés par les clients

– s : l’écart-type des prix proposés par les clients En général, nous prendrons m =200000 et on suppose que les prix sont distribués selon une loi normale centrée en m d’écart-type s où s = 5%m

– c : les dépenses hebdomadaires du vendeur engendrées par l’attente (perte de loyer, paiement des charges...)

– a : le taux de revenu de l’argent placé en banque par le vendeur De même, nous prendrons un loyer de l’ordre de 1000 par mois, soit 250 par semaine. Le taux de revenu est de l’ordre de 4% par an, soit 0, 1% par semaine.

Nous rappelons également que la stratégie élaborée en T.D. consiste à fixer un prix seuil et à attendre qu’un acheteur offre plus que ce prix pour vendre. Nous noterons ainsi :

– P : prix seuil au-dessus duquel le vendeur cède son bien

– T : temps moyen d’attente avant la vente

– e : écart-type du temps d’attente

Nous rappelons enfin que, pour pouvoir comparer des ventes qui ont lieu en des moments différents, il faut ramener la valeur de celles-ci en un même temps de référence. Nous choisissons ici le temps 0. La valeur ainsi calculée (dépendant du taux de revenu des placements) est appelée prix actualisé. Nous noterons ainsi :

– P a : prix actualisé correspondant à une vente donnée effectuée en un temps donné

– P am : prix actualisé moyen (i.e. le prix actualisé réalisé en moyenne en suivant la stratégie élaborée en T.D.)

1.2 Un petit point technique

Nous devons essentiellement calculer la valeur γ introduite dans le T.D. comme étant solution de l’équation

a γ = ∫_{γ}^{∞} ℙ(Z_{n} > y)dy

où Z_{n} ∼ N (m + c/a, s^{2}).

Pour cela, nous sommes amenés à utiliser la queue de la gaussienne définie dans matlab par : normcdf(x, m, s). On constate alors qu’un petit calcul permet d’obtenir (simple application de Fubini et d’une intégration) :

∫_{γ}^{∞} ℙ(Z_{n} > y)dy = \frac{1}{\sqrt{2πs^{2}}} ∫_{−∞}^{∞} ∫_{−∞}^{∞} e^{− \frac{(x−m−c/a)^{2}}{2s^{2}}} 1_{γ<y<x} dx dy
= \frac{s}{\sqrt{2π}} e^{− \frac{(x−m−c/a)^{2}}{2s^{2}}} + (m + c/a − x)(1 − \frac{1}{2πs^{2}} ∫_{−∞}^{γ} e^{− \frac{(x−m−c/a)^{2}}{2s^{2}}} )

Nous sommes ainsi amenés à définir la fonction suivante :

 function g=gamma(x,m,s,c,a)
g1=s/sqrt(2*pi)*exp(-(x-m-c/a)^2/(2*s^2))+(m+c/a-x)*(1-normcdf(x,m+c/a,s));
g=a*x-g1;

Notre but est de trouver les zéros de la fonction précédente. Pour cela, nous allons utiliser une méthode par dichotomie dont le code est le suivant :

%zgamma.m
function  g=zgamma(n,m,s,c,a)
g0=0; g1=m+2*c/a;
for i=1:n
    g2=(g1+g0)/2;
    k0=gamma(g0,m,s,c,a);
    k2=gamma(g2,m,s,c,a);
    if k0*k2<0 g1=g2;
    else g0=g2;
    end
end g=g2;

Nous remarquerons que la convergence est très rapide et l’algorithme peu coûteux en temps. Nous prendrons par la suite n = 100.

2 Simulation de résultats

2.1 Une idée d’ordres de grandeur

Nous allons dans cette partie donner des ordres de grandeur obtenus pour les valeurs caractérisant notre problème. Pour cela, nous avons utilisé le code suivant pour différentes valeurs de m, s, c, a.

 %calcul.m
P=zgamma(20,m,s,c,a)-c/a
g=zgamma(20,m,s,c,a);
p=1-normcdf(g-c/a,m,s);
T=(1-p)/p Fa=g*(1+a)-c/a

Faisant varier les valeurs précédentes, nous pouvons établir le tableau suivant. Ces valeurs sont purement indicatives ; nous étudierons plus précisément l’évolution du flux actualisé et du temps moyen en fonction des différents paramètres ultérieurement.

m  s  c  a  P  T  e  Pam  c/a
200 000 0,05*m 200 0,001 213 450 10,19 10,7 213 860 200 000
200 000 0,05*m 250 0,001 212 920 9,19 9,7 213 380 250 000
200 000 0,01*m 800 0,001 199 620 0,74 1,1 200 620 800000

– Dans le cas d’une location à pertuité, le gain est de c/a. On ne décidera donc de vendre une maison que si la dernière colonne du tableau est inférieure à l’avant-dernière.

– On pourrait considérer la stratégie qui consiste à vendre dès la première semaine. On vend alors en moyenne à 200000 . Cette stratégie n’étant pas optimale (résultat du T.D.), on a ainsi forcément : P am ≥200000

– Une dernière question se pose : pourrait-on avoir P > P am?

2.2 Réalisations

Nous allons dans cette partie simuler des évolutions d’offres d’achat et comparer 2 stratégies : la stratégie P et la stratégie m :

1. le premier vendeur vend sa maison dès qu’on lui propose un prix supérieur à la valeur moyenne m

2. le second vendeur vend dès que le prix qu’on lui propose dépasse le seuil P.

Simulons une évolution d’offres de prix. Nous pouvons calculer chaque semaine le prix actualisé correspondant. C’est ce dernier graphique que nous dessinerons. Nous pouvons également déterminer les moments où l’acheteur 1 et l’acheteur 2 signent l’acte de vente et calculer les prix actualisés correspondant.

Chacun des graphiques décrit une évolution du flux actualisé. Nous avons représenté par une barre verticale le moment où le premier vendeur signe l’acte de vente, la seconde barre verticale figurant le moment où le second vendeur signe et par des barres horizontales les flux actualisés correspondant. La différence entre les 2 lignes horizontales représente donc la différence de gain réalisée entre les 2 stratégies. Devinez qui y gagne... Le cercle sur l’axe des abscisses représente le temps moyen d’attente dans le cas de la stratégie P.

Les paramètres que nous avons pris sont les suivants : m = 200 000, s = 0, 1 ∗ m, c = 200, a = 0, 001.

Les éléments importants du code correspondant à ce graphique sont les suivants :

%Simulation des 3 situations d'offres de prix
Offres=zeros(3,t); for i=1:3
    Offres(i,:)=m*ones(1,t)+randn(1,t)*s;
end
%Temps de dépassement du prix cible P
v=ones(1,3); for i=1:3
    j=1;
    while Offres(i,j)-P<0
        v(i)=v(i)+1;
        j=j+1;
    end
end
%Temps de dépassement de la valeur moyenne m
v1=ones(1,3); for i=1:3
    j=1;
    while Offres(i,j)-m<0
        v1(i)=v1(i)+1;
        j=j+1;
    end
end
%Calcul du flux actualisé
F=zeros(3,t); A=(1+a)^(-1)*ones(1,t); for i=1:3
    for j=1:t
        A1=cumsum(cumprod(A(1,1:j)));
        F(i,j)=Offres(i,j)*(1+a)^(-j)-c*A1(1,j);
    end
end

2.3 Que se passe-t-il sur un grand nombre de ventes ?

Dans cette partie, nous simulons un grand nombre d’évolutions de prix. Nous allons représenter sur des histogrammes les différentes valeurs de flux que nous permettent d’obtenir :

1. la stratégie P

2. la stratégie m

3. le prix actualisé maximal que l’on aurait pu obtenir en attendant 10 ∗ T (ATTENTION ceci ne constitue bien évidemment pas une steatégie)

Quelques petites remarques quant à ces graphiques :

– Ponctuellement, en suivant la stratégie P, le prix actualisé peut être inférieur à 200 000 .

– On peut espérer, en augmentant le nombre d’expériences, obtenir le même résultat avec la stratégie m.

– La comparaison des graphiques du haut nous montre que : le prix actualisé moyen obtenu avec la stratégie P est supérieur à celui obtenu avec la stratégie m, comme attendu...

– La comparaison entre les prix actualisé obtenu avec la stratégie P et le max des prix M sont souvent égaux. En plus d’être optimale sur l’ensemble des stratégies, la stratégie P est très bonne en valeur absolue.

– Le dernier histogramme confirme le fait que, en moyenne, la stratégie P est meilleure que la stratégie m. Le code ne présente pas de difficultés principales par rapport au paragraphe précédent.

3 Influence des différents paramètres

Dans cette partie, nous exposons l’influence des différents paramètres sur le flux actualisé F a et le temps moyen T. Nous présenterons les éléments principaux du code suivis des graphiques. Il est à noter qu’ici il n’est plus question de simulations. Toutes les valeurs calculées sont des valeurs moyennes de variables aléatoires.

3.1 Influence de la variance s

Le code est le suivant :

 %infs.m
for i=1:50
    s(i)=i*0.01;
end ls=length(s); m=200000;c=250;a=0.001;
Fa=zeros(1,ls); for i=1:ls
    Fa(i)=zgamma(20,m,s(i)*m,c,a)*(1+a)-c/a;
end
T=zeros(1,ls); for i=1:ls
    g(i)=zgamma(20,m,s(i)*m,c,a);
    p(i)=1/2*erfc((g(i)-m-c/a)/sqrt(2*(s(i)*m)^2));
    T(i)=(1-p(i))/p(i);
end

Comme attendu, un grand échelonnement des prix fait prévoir des propositions plus élevées, donc un espoir d’obtenir un prix actualisé plus haut. En contrepartie, il faut bien entendu accepter d’attendre...

3.2 Influence des charges c

%infc.m
for i=1:200
    c(i)=10*i;
end lc=length(c); m=200000;s=0.3*m;a=0.001;
Fa=zeros(1,lc); for i=1:lc
    Fa(i)=zgamma(200,m,s,c(i),a)*(1+a)-c(i)/a;
end
T=zeros(1,lc); for i=1:lc
    g(i)=zgamma(20,m,s,c(i),a);
    p(i)=1/2*erfc((g(i)-m-c(i)/a)/sqrt(2*s^2));
    T(i)=(1-p(i))/p(i);
end

A nouveau, on trouve un résultat ”intuitif”. Plus le loyer payé est cher, plus on a tendance à vendre tôt pour ne pas avoir un trop grand manque à gagner. Le flux actualisé est alors bas.

3.3 Influence du taux de revenu a

%infa.m
for i=1:6
    a(i)=i*0.001;
end la=length(a); m=200000;s=0.3*m;c=250;
Fa=zeros(1,la); for i=1:la
    Fa(i)=zgamma(20,m,s,c,a(i))*(1+a(i))-c/a(i);
end
T=zeros(1,la); for i=1:la
    g(i)=zgamma(20,m,s,c,a(i));
    p(i)=1/2*erfc((g(i)-m-c/a(i))/sqrt(2*s^2));
    T(i)=(1-p(i))/p(i);
end

Le paramètre a n’est pas un paramètre essentiel. En effet, son évolution est lente. Nous constatons tout de même qu’il est préférable de lancer une procédure de vente alors que le taux de revenu est au plus bas. En effet, on ne perd pas alors beaucoup sur le loyer qu’on n’a pas placé. Cependant, le temps d’attente est en conséquence.