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.

Nous appelerons par la suite : m : la valeur moyenne des prix proposés par les clients s : l’écart-type des prix proposés par les clients c : les dépenses hebdomadaires du vendeur engendrées par l’attente a : le taux de revenu de l’argent placé en banque par le vendeur P : prix seuil au-dessus duquel le vendeur cède son bien T : temps moyen d’attente avant la vente F a : flux actualisé moyen au moment où on vend

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) :

rcl ∫_{γ}^{∞} ℙ(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;

Nous allons trouver les zéros de la fonction précédente et ainsi calculer γ par dichotomie, grâce au programme 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 = 20.

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

2

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  Fa
200 000 0,3*m  250  0,001 317 570 38,94 318 130
100 000 0,1*m  100  0,001 116 300 18,41 116 520
5 000 000 0,6*m 500 000 0,003 6 748 500 2,57 7 268 700
200 000 0,01*m 10 000 0,001 189 810 10^{−7} 200 020
200 000 0,01*m 100 000 0,001 99 900  0  200 000

Nous constatons que les résultats paraissent cohérents et nous pouvons avoir une idée intuitive de l’influence des différents paramètres. ATTENTION, si vous trouvez une valeur du flux actualisé qui est plus faible que m, c’est que vous avez un problème... en effet, la stratégie consistant à vendre au temps 0 assure un flux actualisé de 200 000 euros, et elle n’est pas optimale ! ! C’est peut-être que votre dichotomie n’a pas atteint assez de précision (on a dû prendre n = 200 dans le dernier cas).

2.2 Réalisations

Nous simulons ici 3 évolutions d’offres de prix différentes. Dans chacun des cas, nous représentons 2 stratégies de vente :

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.

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. Devinez qui y gagne... Le cercle sur l’axe des abscisses représente le temps moyen d’attente dans le cas de la seconde stratégie.

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

4

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 ?

Nous allons représenter sur des histogrammes les différentes valeurs de flux que nous permettent d’obtenir :

1. la stratégie qui consiste à vendre dès qu’on dépasse P

2. la stratégie qui consiste à vendre dès qu’on dépasse m

Nous avons également fait figurer les comparaisons suivantes :

1. la comparaison entre le flux actualisé obtenu avec la stratégie P et le flux actualisé maximal que l’on aurait pu obtenir en attendant 10∗T (attention, ceci n’est pas une stratégie...)

2. la comparaison entre les stratégies P et m.

6

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.

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 prix de vente plus haut et un temps d’attente en conséquent.

7 8

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

Mais que se passe-t-il ? Pourquoi ce pic ? ? ? ! ! !

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

Bien que n’étant pas un paramètre essentiel, nous constatons tout de même qu’il vaut mieux engager une vente de maison alors que le taux de revenu de l’argent placé est au plus haut. Cependant, le temps d’attente augmente en conséquence.

10