Category Archives: Economics

De la symbolique des grandeurs statistiques

Ce matin, je suis suis un peu emporté sur Twitter, alors que d’ordinaire je préfère éviter…

Il faut dire que j’étais tombé sur un article dans les Echos qui m’a énervé…

J’ai ensuite passé beaucoup de temps à essayer de comprendre pourquoi j’avais été autant énervé par ce titre, cet article… car il n’apprenait rien de bien nouveau… Je pense que c’est vraiment la forme qui m’a agacé, et la symbolique du” temps” y joue (je pense) pour beaucoup. Pourtant, utiliser l’année calendaire comme métaphore pour expliquer des statistiques n’est pas nouveau.

Je pense que la première fois que je ai vu cette idée, je devais avoir dix ans, quand on nous parlait de l’histoire de l’univers, de la terre et l’humanité. Parce que mine de rien, manipuler des grands chiffres n’aide pas à avoir une représentation (ce qui est le cas quand on parle du budget de l’Etat). Oui, le big-bang a eu lieu il y a un peu moins de 15 milliards d’années, Lucy date d’environ 3,2 millions d’années, et le Christ est né il y a 2000 ans. Mais jongler entre les milliers, les millions et les milions est compliqué. Alors dans les cours d’histoire, on utilise une image basée sur le calendrier. Le Big Bang a eu lieu le 1er janvier à zéro heure et nous sommes aujourd’hui le 31 décembre à minuit, autrement dit chaque seconde équivaut à un peu plus de 400 années. Début septembre la terre se forme, les poissons et les premières plantes terrestres arrivent juste avant l’hiver, vers le 20 décembre. Lucy se met debout à 22h30, les Pyramides d’Égypte datent de minuit moins dix secondes, et le Christ naît à minuit moins cinq secondes. Voilà en gros pour l’image. En 90 minutes (sur une année) on a l’histoire de l’humanité, et en 10 secondes, l’histoire telle qu’on l’apprend à l’école. Mais dans cette image, on transforme du temps en un autre temps. Un peu comme dans la métaphone du système solaire, où notre soleil aurait le diamètre d’un ballon de Basket-Ball, la Terre serait à 27 mètres et aurait la taille d’une toute petite bille, de 2.3 millimètres de diamètre), on utilise des distances (et des volumes, qui proposer de représenter des distances par d’autres distances, bien plus petites.

Ici, l’exercice est, je pense, différent: on utilise le temps pour avoir une représentation d’une grandeur monétaire. Certes, un vieil adage prétend que le temps c’est de l’argent, mais je pense que la symbolique est vraiment forte ici. Si les décodeurs du Monde revenaient sur le calcul de cette grandeur (la “date de libération fiscale”) en le questionnant, personnellement c’est la symbolique attachée qui me fait m’interroger.

Les statistiques cachées derrière cette date du 29 juillet comme “date de libération fiscale”, ce sont

  • la dépense publique (ratio entre dépense publique et richesse créée) qui est de l’ordre de 57% en France (mais on ne voit pas vraiement le lien avec la fiscalité ici)
  • le “taux de taxation réel du salarié moyen” utilisé par certains, qui est aussi de l’ordre de 57% en France

Et 57% d’une année, c’est (en gros) entre le 1er janvier et fin juillet, d’où la date mentionnée dans l’article. Symboliquement, que lit-on, avec cette seconde statistique ? Qu’entre le 1er janvier et le 29 juillet on travaille “pour l’état”, pour payer ses impôts, et qu’ensuite, on peut (enfin) travailler “pour soi”. Au début, on travaille pour “les autres” par opposition à la fin où on travaille pour “soi”. Avec cette représentation calendaire, on se dit qu’on perd son temps, probablement. Mais à y regarder de plus près, est-ce que je travaille vraiment pour moi ensuite ? Personnellement, je pense que je passe aussi quelques jours à travailler pour ma banque, pour payer les intérêts du crédit que je rembourse tous les mois pour avoir acheté mon logement il y a quelques temps. Parce que mine de rien, des charges, il y en a beaucoup, il n’y a pas que l’Etat. Pour avoir cotisé pour ma retraite lorsque je travaillais au Canada, puis pour une assurance maladie, j’ai bien vu qu’à l’époque, je travaillais peut-être moins pour payer ces “charges fiscales”, mais je devais travailler plusieurs jours par an (voire semaines) pour payer l’assurance maladie qui couvrait la famille. Bref, le “pour moi” me dérange. Et que dire du “pour les autres” ? La base de la fiscalité, c’est la redistribution, non ? C’est la solidarité… Je ne paye pas des impôts pour les autres, mais “pour nous”, non ?

Bref, cette séparation binaire du temps me paraît fallacieuse et dangereuse car au lieu d’éclairer, elle n’a qu’une visée idéologique…. et c’est dommage.

Les dérives du principe de précaution

« Dans le doute, abstiens-toi » dit la sagesse populaire. Le principe de précaution (en allemand Vorsorgeprinzip) est né de l’idée qu’il convient d’accepter qu’il existe un doute, ou une incertitude (scientifique), dans la connaissance des risques. Il y a un peu plus de 20 ans, la loi Barnier introduisait le principe de précaution dans le droit français, pour le « risque de dommages graves et irréversibles à l’environnement », communément appelés “risque environnemental”. Il y a un peu plus de 10 ans, il a été inscrit dans la Constitution, approuvé par 531 députés, exprimant ainsi un très large consensus politique, probablement aussi social. Mais aujourd’hui, le principe de précaution est évoqué dans des contextes tout aussi divers que le risque d’actes de terrorisme, mais aussi des procédures de droit civil, ou pénal. Quelles sont les conséquences de cette dérive de l’utilisation du principe de précaution ?

Continue reading Les dérives du principe de précaution

Histoire et analyse de la blogosphère économique francophone

Ce billet est cosigné avec Thomas Renault, aka @captaineco_fr

Les blogs économiques prennent aujourd’hui une place centrale dans le débat et l’analyse économique, comme le notait Alex Tabarrok. Mais si la blogosphère économique francophone est encore relativement modeste, elle n’en est pas moins active, et pourrait connaître le même succès que les blogs anglophones dans les années à venir.

La genèse de la blogosphère économie

Au début de l’année 2005, Bernard Salanié – alors professeur à l’Université de Columbia (New York) – publiait le premier billet de son blog « L’économie sans tabou », dans la continuité d’un ouvrage éponyme publié l’année précédente. A la même époque, Alexandre Delaigue et Stéphane Ménia – tous deux anciens étudiants de l’Ecole Normale Supérieure de Cachan et respectivement enseignants en école militaire et au secondaire – lançaient un blog “éconoclaste“, avec une vocation de vulgarisation assez proche de celle de Stephen Dubner et Steven Levitt, les auteurs du best-seller Freakonomics.

Ce mouvement en France faisait écho à celui qui se développait aux Etats-Unis, où des économistes de renom comme Bradford DeLong, (« Grasping Reality »), Tyler Cowen (« Marginal Revolution ») ou encore Gary Becker et Richard Posner (« The Becker-Posner blog ») commençaient à bloguer. Pour reprendre les propos de Gary Becker, prix Nobel d’économie, la blogosphère avait alors le pouvoir de remplacer le marché dans l’optimisation du processus de partage de connaissance entre les individus.

Blogging is a major new social, political, and economic phenomenon. It is a fresh and striking exemplification of Friedrich Hayek’s thesis that knowledge is widely distributed among people and that the challenge to society is to create mechanisms for pooling that knowledge. The powerful mechanism that was the focus of Hayek’s work, as as of economists generally, is the price system (the market). The newest mechanism is the « blogosphere »

Continue reading Histoire et analyse de la blogosphère économique francophone

Données et santé : valeurs, acteurs et enjeux

Ce billet a été rédigé avec Raphaël Suire.

Les données numériques nous concernent tous. En tant qu’usager d’objets connectés ou de services, nous laissons des traces à mesure que nous utilisons, consultons, notifions, commentons des contenus ou des services. D’ailleurs, même quand l’usager de fait rien, l’objet ou la plateforme qui propose du contenu sont en capacité de remonter cette inactivité, ce qui constitue bel et bien une information. En soit, chaque trace prise isolément donne peu d’information sur qui nous sommes. En outre, moins nous sommes routiniers dans l’usage de nos objets ou des services et moins il est simple d’identifier des régularités dans ce que nous faisons. Le caractère routinier peut être difficile à observer. Un horaire d’arrivée au bureau peut sembler complètement aléatoire, et pourtant, la personne prend régulièrement le premier bus qui passe devant chez lui, en sortant à 8 heures très précisément. Un comportement parfaitement déterminé et prévisible, qui se heurte à des obstacles aléatoires peut sembler aléatoire. Il n’en demeure moins que ces données numériques, pour qui sait les stocker et les croiser, constituent de l’or noir et un carburant d’une performance renouvelée pour de nombreuses organisations. Symétriquement, cette exploitation, constitue une source de tension entre des usagers sensibles à la protection de leur donnée personnelle (notion de « privacy concern ») et ces mêmes acteurs. Elle interroge également en profondeur le régulateur, car les réels gagnants seront peu nombreux. Il faut entendre ici, ceux qui au final vont posséder et capturer la valeur des données agrégées. Et enfin, c’est sans compter avec un nouveau terrain de jeu, aux promesses stratosphériques, celui de la santé connectée et un marché mondial estimé à 308 milliards de dollars (Grand View Research, 2015).

Continue reading Données et santé : valeurs, acteurs et enjeux

Où ont été observées les fortes hausses du prix de l’essence ?

Vendredi, dans mon billet “le prix de l’essence en cas de pénurie“, j’essayais de visualiser l’explosion du prix de l’essence dans certaines stations services, ces dernières semaines. Mais plus généralement, on peut se demander où ont été observées les fortes hausses.

A partir de la base téléchargeable sur http://www.prix-carburants.economie.gouv.fr/, il est possible de récupérer les informations les prix, par jour, dans toutes les stations essence de France. Pour ça, on utilise la fonction suivante,

> spatial=function(dt){
+  base=NULL
+  for(no in 1:length(l)){  
+    prix=list()
+    date=list()
+    j=0
+    for(i in 1:length(l[[no]])){
+    v=names(l[[no]])
+    if(!is.null(v[i])){
+    if(v[i]=="prix"){
+    j=j+1
+    date[[j]]=as.character(l[[no]][[i]]["maj"])
+    }}
+  }
+ n=j
+ D=as.Date(substr(unlist(date),1,10),"%Y-%m-%d")
+ k=which(D==D[which.max(D[D<=dt])])
+ if(length(k)>0){
+ B=Vectorize(function(i) l[[no]][[k[i]]])
+   (1:length(k))
+ if("nom" %in%  rownames(B)){  
+   k=which(B["nom",]=="Gazole")
+   prix=as.numeric(B["valeur",k])/1000
+   if(length(prix)==0) prix=NA
+   base1=data.frame(indice=no,
+ lat=as.numeric(l[[no]]$.attrs["latitude"])
+    /100000,
+ lon=as.numeric(l[[no]]$.attrs["longitude"])
+    /100000,
+ gaz=prix,
+ cp=l[[no]]$.attrs["cp"])
+ base=rbind(base,base1)
+ }}}
+ return(base)}

Par exemple, on peut récupérer les prix fin mai

> B1=spatial(as.Date("2016-05-31"))

et début mai,

> B2=spatial(as.Date("2016-05-01"))

En fusionnant ces deux bases, on peut récupérer la variation du prix, sur un mois,

> names(B1)=c("indice","lat","long","fin","cp")
> names(B2)=c("indice","lat","long","debut","cp")
> B=merge(B1,B2)
> B$var=(B$fin-B$debut)/B$debut*100

Plus particulièrement, on va s’intéresser aux stations dans lesquelles le prix a augmenté de plus de 10%,

> idx=which((B$lon>(-10))&(B$lon<20)&
+             (B$lat>35)&(B$lat<55))
> B=B[idx,]
> B=B[!is.na(B$var),]
> B$Y=(B$var>10)*1

Notons déjà que dans plus de 90% des stations, le prix a augmenté entre début mai, et fin mai

> mean(B$var > 0)
[1] 0.9288522

mais les hausses de plus de 10% restent rares (moins de 5% des stations essence)

> mean(B$var > 10)
[1] 0.03305452

La distribution de la variation des prix (en %) est la suivante

> plot(density(B$var),xlim=c(-5,20))

Si on regarde maintenant où ont été observées ces fortes hausses, on observe qu’elles peuvent avoir lieu n’importe où

> library(maps)
> map("france")
> points(B$lon,B$lat,pch=19,col=c(rgb(0,0,1,.25),
+ rgb(1,0,0,.95))[1+(B$var>10*1)],cex=.5)

et c’est encore plus flagrant quand on regarde les hausses de plus de 5%

> points(B$lon,B$lat,pch=19,col=c(rgb(0,0,1,.35),
+ rgb(1,0,0,.95))[1+(B$var>5*1)],cex=.5)

Et si on regarde les endroits où la proportion des stations ayant fortement augmenté les prix est la plus forte, on obtient la carte suivante,

Autrement dit la hausse des prix a pu être observée un peu partout en France. On peut alors comparer avec la carte des pénuries, mise en ligne sur https://mon-essence.fr/

Si certaines régions avec des fortes hausses de prix correspondent à des pénuries d’essence, ce n’est pas le cas partout. Bref, comprendre ce qui s’est passé sur les prix ce mois de mai est loin d’être simple… à suivre donc….

Le prix de l’essence en cas de pénurie

Cet après midi, sur le site de 60 millions de consommateurs, Lionel Maugain revenait sur les stations services qui avaient de très fortes variations de prix pendant les jours de pénurie.

En utilisant la base des prix des carburants à la pompe, téléchargeable sur http://www.prix-carburants.economie.gouv.fr/, il est possible de visualiser ces fortes variations de prix. Pour lire la base, rien de plus simple

> rm(list=ls())
> annee=year=2016
> fichier="PrixCarburants_annuel_2016.xml"
> library(plyr)
> library(XML)
> library(lubridate)
> l=xmlToList(fichier)

Ensuite, on transforme la grosse liste en une série temporelle, à l’aide de la fonction suivante

> time_series=function(no,type_gas="Gazole"){
+    prix=list()
+    date=list()
+    nom=list()
+    j=0
+    for(i in 1:length(l[[no]])){
+      v=names(l[[no]])
+      if(!is.null(v[i])){
+      if(v[i]=="prix"){
+      j=j+1
+      date[[j]]=as.character(l[[no]][[i]]["maj"])
+      prix[[j]]=as.character(l[[no]][[i]]["valeur"])
+      nom[[j]]=as.character(l[[no]][[i]]["nom"])
+     }}
+    }
+    id=which(unlist(nom)==type_gas)
+    n=length(id)
+    jour=function(j) as.Date(substr(date[[id[j]]],1,10),"%Y-%m-%d")
+    jour_heure=function(j) as.POSIXct(substr(date[[id[j]]],1,19), format = "%Y-%m-%d %H:%M:%S", tz = "UTC")
+    ext_y=function(j) substr(date[[id[j]]],1,4)
+    ext_m=function(j) substr(date[[id[j]]],6,7)
+    ext_d=function(j) substr(date[[id[j]]],9,10)
+    ext_h=function(j) substr(date[[id[j]]],12,13)
+    ext_mn=function(j) substr(date[[id[j]]],15,16)
+    prix_essence=function(i) as.numeric(prix[[id[i]]])/1000
+    base1=data.frame(indice=no,
+   id=l[[no]]$.attrs["id"],
+   adresse=l[[no]]$adresse,
+   ville=l[[no]]$ville,
+   lat=as.numeric(l[[no]]$.attrs["latitude"])
    /100000,
+   lon=as.numeric(l[[no]]$.attrs["longitude"])
    /100000,
+   cp=l[[no]]$.attrs["cp"],
+   saufjour=l[[no]]$ouverture["saufjour"], 
+   Y=unlist(lapply(1:n,ext_y)),
+   M=unlist(lapply(1:n,ext_m)),
+   D=unlist(lapply(1:n,ext_d)),
+   H=unlist(lapply(1:n,ext_h)),
+   MN=unlist(lapply(1:n,ext_mn)),
+   prix=unlist(lapply(1:n,prix_essence)))
+   base1=base1[!is.na(base1$prix),]
+   date_d=paste(year,"-01-01 12:00:00",sep="")
+   date_f=paste(year,"-06-01 12:00:00",sep="")
+   vecteur_date=seq(as.POSIXct(date_d, format =
+   "%Y-%m-%d %H:%M:%S"),
+   as.POSIXct(date_f, format = 
+   "%Y-%m-%d %H:%M:%S"),by="days")
+   date=paste(base1$Y,"-",base1$M,"-",base1$D,
+   " ",base1$H,":",base1$MN,":00",sep="")
+   date_base=as.POSIXct(date, format = 
+   "%Y-%m-%d %H:%M:%S", tz = "UTC")
+   idx=function(t) sum(vecteur_date[t]>=date_base)
+      vect_idx=Vectorize(idx)(1:length(vecteur_date))
+      P=c(NA,base1$prix)
+      vp=P[1+vect_idx]
+      vp=vp*100/(vp[!is.na(vp)][1])
+      base2=ts(vp,start=year,frequency=365)
+      list(base=base1,ts=base2)
+    }

Dans l’article, la plus forte variation a été observée à Sevran. Pour récupérer la liste des stations services, on utilise

> ville=list()
> for(no in 1:length(l)) 
      ville[[no]]=l[[no]]$ville
> ville=unlist(ville)
> idx=which(ville=="Sevran")

Pour la première station, l’évolution du prix est relativement modérée

> plot(time_series(idx[1])$ts,col="red",type="l")
> abline(h=100,lty=2)

Même si le prix semble avoir augmenté de 5% pendant les dernières semaines. Mais ce n’est effectivement rien en comparaison de l’autre station,

> plot(time_series(idx[2])$ts,col="red",type="l")
> abline(h=100,lty=2)

avec un prix qui a augmenté de 50% en 2 mois, et presque 30% en quelques jours.

A Villeneuve-d’Asq, on retrouve un comportement similaire, mais moins important

> idx=which(ville=="Villeneuve-d'Ascq")
> plot(time_series(idx[3])$ts,col="red",type="l")
> abline(h=100,lty=2)

Picking an asset to invest

Yesterday, Andrew Lo spent some time on a nice graph, discussing attitudes towards risk. Here are four assets (thanks  for improving the terminology), real data (no information here about time, but it’s the same scale for the four of them)

The question raised was quite simple

if you could invest in one, and only one, asset which one will you pick ?

Continue reading Picking an asset to invest

Fibonacci, les lapins, le nombre d’or et les calculs actuariels

Léonard de Pise, souvent plus connu sous le nom de Fibonacci, a laissé sa trace dans les livres de mathématiques pour avoir étudié, ou plutôt modélisé, la reproduction des lapins. De la dynamique du nombre de lapins est né le nombre d’or, le fameux ratio magique, que l’on retrouve dans toute la peinture et l’architecte classique. Mais la contribution la plus importante est probablement le Liber Abaci, datant de 1202, dans lequel Fibonacci a introduit explicitement le principe d’actualisation financière en Europe. Fibonacci a grandi dans la colonie pisane de Bougie, en Algérie, où son père était officier des douanes. Et c’est probablement grâce à la culture arabe que les premiers calculs actuariels ont été formalisés.

La dynamique de reproduction des lapins et le nombre d’or

Fibonacci est connu par tous les étudiants du monde pour avoir posé le problème suivant:

partant d’un couple, combien de couples de lapins obtiendrons-nous après un nombre donné de mois sachant que chaque couple produit chaque mois un nouveau couple, lequel ne devient productif qu’après deux mois ?

Formellement, on cherche à décrire le comportement de la suite définie par la relation https://latex.codecogs.com/gif.latex?u_n=u_{n-1}+u_{n-2} (avec deux valeurs initiales). Comme cette suite est linéairement récurrente d’ordre deux, on peut écrire son équation caractéristique. On obtient une équation du second degré, https://latex.codecogs.com/gif.latex?x^2-x-1, dont une des racines est connue sous le nom de « nombre d’or »,

https://latex.codecogs.com/gif.latex?\varphi=\frac{1+\sqrt{5}}{2}

qui vaut environ 1,618. On peut alors montrer que l’on obtient la formule dite de Binet,

https://latex.codecogs.com/gif.latex?u_n=\frac{1}{\sqrt{5}}\left(\varphi^n-\left(\frac{-1}{\varphi}\right)^n\right)

Comme l’avait déjà remarqué Johannes Kepler, vers 1611, le taux de croissance des nombres de Fibonacci, c’est-à-dire , converge vers le nombre d’or, https://latex.codecogs.com/gif.latex?\varphi. Ce nombre est appelé en anglais « golden ratio », car il s’agit aussi d’une proportion, d’un ratio, défini comme l’unique rapport https://latex.codecogs.com/gif.latex?a/b entre deux longueurs https://latex.codecogs.com/gif.latex?a et https://latex.codecogs.com/gif.latex?b, telles que la somme https://latex.codecogs.com/gif.latex?a+b sur la plus grande des deux (https://latex.codecogs.com/gif.latex?a sur la Figure 1) soit identique, autrement dit

https://latex.codecogs.com/gif.latex?\frac{a+b}{a}=\frac{a}{b}

Alors forcément, la plus grande longueur est 61,8% plus grande que la petite. Euclide évoquait ce ratio très particulier dans ses Eléments. Comme le montre la Figure 1, ce ratio est utilisé pour construire une spirale. Luca Pacioli, un moine franciscain italien du Moyen Age, l’appelle la “divine proportion“. En effet, comme l’avait énoncé Saint Thomas d’Aquin, « les choses qui sont dotées de proportions correctes réjouissent les sens », ce qui semble conférer un caractère quasi-divin à ce nombre.

Figure 1 : interprétations géométriques du nombre d’or

Comme le montre la Figure 1, à gauche, à partir de rectangles dont le rapport des longueurs des deux côtés est égal au nombre d’or, on peut construire itérativement une succession de carrés emboîtés, sous forme de spirale. On retrouve ce découpage dans la composition d’un grand nombre de tableaux de la Renaissance, mais aussi dans plusieurs ouvrages architecturaux. Et si l’on colle deux rectangles dont le ratio des longueurs des côtés est égal au nombre d’or, un verticalement et un horizontalement, le prolongement de la diagonale du rectangle horizontal passera par le sommet du rectangle verticale. Cette figure se retrouve dans de nombreux croquis de Le Corbusier.

La notion de récursivité

Au-delà du fait que c’est à Fibonacci que l’on doit le fameux nombre d’or, cette suite récursive est surtout très populaire en informatique pour introduire la notion de récursivité. En effet, un algorithme pour calculer les termes de cette suite est

F = function(n) {

if(n>1) Fn = F(n-1) + F(n-2)

if(n<=1) Fn = n

return(Fn) }

Cet algorithme est simple, mais le temps d’exécution est long, très long. Si certains notent qu’il croit exponentiellement vite, on peut montrer assez simplement que le temps d’exécution est donné par une relation de type de celle de Fibonacci.

La comptabilité, en chiffres romains

Mais souvenons-nous que Fibonacci est né à la fin du XIIème siècle. Si la géométrie n’a pas beaucoup changé, l’arithmétique, elle a beaucoup changé. Pour rappel, on comptait alors encore bien souvent à l’aide de la numérotation romaine. Cette dernière est basée sur 7 symboles, I (pour 1), V (pour 5), X (10), L (50), C (100), D (pour 500) et enfin M (1000). A partir de ces symboles, certains nombres se construisent par addition (par exemple 11 va s’écrire XI) et d’autres par soustraction (4 va s’écrire IV): un symbole plus petit placé avant correspond à une soustraction, et un symbole plus petit placé après, à une addition. On s’attend ainsi à ce que tous les symboles soient placés par ordre décroissant (et si c’est le cas, on les ajoute), mais s’il y en a un qui est placé avant, on va le soustraire. Aussi, DCXIV contient les symboles D (500), C (100), X (10), I (1) et V (5). Comme 1 est avant 5, c’est qu’il faut lire -1, et pas +1. Et donc DCXIV vaut 500+100+10-1+5 soit 614. De même XLV correspond à -10+50+5, soit 45. Il existait aussi une forme d’écriture multiplicative. Par exemple 300 pouvait s’écrire CCC ou IIIC. Et 80 IVXX (d’où une explication possible de la forme française de “quatre-vingt”).

L’origine de ces symboles se trouve dans les entailles pratiques par les étrusques, sur des bouts de bois, ou des os. Mais chez les étrusques, seule l’addition de symboles était autorisée. Par la suite, les égyptiens ont adopté un système décimal, et introduit l’addition (uniquement), ce qui a permis aux scribes de faire des observations statistiques, et des prévisions. Lorsqu’ils adoptèrent la langue et les pratiques grecques, vers 300 avant Jésus Christ, les égyptiens ont commencé à tenir de véritables documents comptables, avec des stocks de données agricoles, et des flux monétaires. A la même époque en Grèce, les lettres de change existaient, et le prêt à intérêt était fréquent. A Athènes, la cour des logistes avait le rôle d’expert-comptable. Les romains ont poursuivi et amélioré cette tradition, avec des livres de recettes et de dépenses. L’arithmétique était complexe, comme en témoigne Schärlig (2014), et pourtant, ce système d’encoches a été utilisé probablement jusqu’au XVIIème siècle, en Europe.

Le livre des calculs, Liber Abaci, et la règle de trois

Fibonacci est l’auteur d’un Liber Abaci, correspondant à un livre des calculs (Abaci donnera par la suite le terme abaque). En fait, alors que la norme à l’époque était d’utiliser l’arithmétique romaine, Leonardo s’est énormément inspiré des mathématiques arabes. Les nombres arabes présentaient l’avantage d’utiliser le système décimal, ce qui a fait gagner énormément de temps de calcul (on peut aussi remonter à l’arithmétique indienne, basé sur le même système). Il y avait ainsi neuf symboles correspondant à 1, 2, 3, 4, 5, 6, 7, 8, 9 (et le 0 a été introduit au Vème siècle). Afin d’illustrer la simplicité des calculs, Fibonacci évoque intensément l’utilisation de la « règle de trois » (même s’il ne l’appelle pas ainsi, il faudra attendre Le Gendre (1684) pour voir évoqué cette terminologie). Cette règle, relative à la théorie des proportions, se retrouve aussi beaucoup utilisée chez Euclide (au IIIème siècle avant Jésus Christ): « si quatre nombres sont en proportions, le produit des extrêmes [le plus grand et le plus petit] est égal au produit des moyens ». En fait, la règle de trois permet de trouver ce qui s’appelle parfois la « quatrième proportionnelle », qui est le quatrième nombre à mettre dans un tableau de proportionnalité dont 3 cases sur 4 sont déjà remplies. Certains ont appelé la règle de trois la « règle d’or ».

En actuariat, le calcul des provisions pour sinistres à payer par conservation des cadences de paiements, repose historiquement sur cette règle. Le Tableau 1 illustre ainsi l’utilisation de la règle de trois pour estimer les paiements futurs : fin 2014, 57 millions d’euros avaient été payé au titre des sinistres de 2014, et fin 2015, 83 millions ; si fin 2015, 63 millions avaient été payés au titre des sinistres de 2015, on peut estimer qu’un peu plus de 90 millions seront payés fin 2016. Ce montant https://latex.codecogs.com/gif.latex?\color{red}{x} est obtenu, dans la méthode dite Chain Ladder (décrite dans Charpentier et al. (2010)), par la règle de trois.

paiements

année 1

paiements

année 2

2014

https://latex.codecogs.com/gif.latex?57

https://latex.codecogs.com/gif.latex?83

2015

https://latex.codecogs.com/gif.latex?63

https://latex.codecogs.com/gif.latex?{\color{red}{x}}=\frac{63\times%2083}{57}

Table1 : illustration de la règle de trois en provisionnement

On retrouve de nombreuses utilisations de cette règle dans les calculs comptables (on pourra consulter Taulane (1689)), mais c’est surtout à Fibonacci qu’on doit la formalisation de la règle, dans un contexte financier.

Les bases de l’actualisation

Mais on doit surtout à Fibonacci d’avoir formalisé le calcul actuariel. Rappelons que la valeur actuelle d’un ensemble de flux financiershttps://latex.codecogs.com/gif.latex?\lbrace%20F_1,\cdots,F_n\rbrace, versés dans le futur, à différentes dates s’écrit

https://latex.codecogs.com/gif.latex?V=\sum_{t=1}^n\frac{F_t}{(1+i)^t}

où https://latex.codecogs.com/gif.latex?i est le taux d’actualisation. Cette à cette formule que va aboutir Fibonacci, dans le Liber Abaci, lorsqu’il va tenter de résoudre le problème suivant

« Un homme se rend à Lucca pour affaires, où il double son argent. Il dépense là-bas 12 dinars. Ensuite, il va à Florence où il peut là encore doubler son argent, et il dépense encore 12 dinars. Puis il va ensuite à Pise, double encore son investissement, et dépense à nouveau 12 dinars. Quelle somme avait-il au début? »

Ce calcul de la somme initiale correspond fondamentalement au calcul d’une valeur actuelle. Pour reprendre les notations de Fibonacci pour investir 1 à Pise (la troisième ville), il faut disposer de ½½½, qu’il interprète comme un facteur d’escompte. Pour investir 1 à Florence (la seconde ville), il fallait disposer de ½½ au début. Etc. Pour connaître la somme initiale, on notera que le facteur d’actualisation est ½+½½+½½½, soit 7/8. Le capital initial est alors 7/8×12, soit 10 ½ . Avec des notations plus contemporaines, avec https://latex.codecogs.com/gif.latex?i = 100%, on veut calculer,

https://latex.codecogs.com/gif.latex?\frac{12}{(1+i)}+\frac{12}{(1+i)^2}+\frac{12}{(1+i)^3}

On retrouve ici la définition classique de la valeur présente d’un ensemble de flux financier. Mais plus sophistiqué, Fibonacci propos ensuite le problème suivant

« Un soldat se voit offrir une annuité par un roi, de 300 par an, payée à une cadence trimestrielle, à hauteur de 75 par trimestre. Soudain, le roi change pour 300, payé en fin d’année. Le soldat est capable de gagner 2 pour 100 placés, par mois (à la fin de chaque trimestre) à partir de son investissement »

On retrouve ici un problème qui pourrait être posé à un examen sur les calculs actuariels.

Conclusion

Depuis Goetzmann (2005) et la redécouverte des travaux de Léonard de Pise, beaucoup considèrent que Fibonacci a introduit le calcul actuariel en Europe, ou plutôt son formalise, avec des notations très contemporaines. Mais il convient de rappeler que l’actualisation existait depuis bien longtemps. Des traces de formalisation se retrouvent dans toutes les cultures, à commencer probablement en Chine, où Les Neuf Chapitres sur l’Art des Mathématiques, datant de 263, évoquent un problème proche de celui présenté par Fibonacci (avec là encore un voyageur qui part dépenser son argent). On retrouvera ensuite ce problème (et sa résolution) dans des textes arméniens, dans des papyrus égyptiens, mais aussi sur le Lilivati de Bhāskarācārya, écrit en Inde vers 1150, juste avant la formalisation par Léonard de Pise. Mais la lecture de Fibonacci est facilité par l’utilisation de chiffres arabes, qui rendent les calculs plus proches de ceux que nous avons l’habitude de voir, tous les jours.

Références

Charpentier, A., Devineau, L. & Nessi, J.M. (2010) Mesurer le risque lors du calcul des provisions pour sinistres à payer. Risques 83, 93-100.

Fibonacci (1202). Fibonacci’s Liber abaci, traduit par Laurence E. Sigler A translation into modern English of Leonardo Pisano’s Book of calculation, Springer-Verlag,‎ (2002).

Goetzmann, W. N. (2005) Fibonacci and the Financial Revolution. In Goetzmann and Rouwenhorst, The Origins of Value: The financial innovations that created modern capital markets, Oxford University Press.

Le Gendre, F. (1684). L’arithmétique en sa perfection.

Le Goff, J.P. (2000). Une mise en perspective historique de la quatrième proportionnelle à la fonction linéaire, in Cahiers de la Maison de la Recherche en Sciences Humaines, n° 24, L’épistémologie de la règle de trois. Caen, Presses Universitaires de Caen, déc. 2000.

Schärlig, A. (2014). Les moyens de calcul du comptable antique. Revue d’Histoire des Comptabilités, 6.

Taulane, J. (1689) Trésor d’arithmétique des marchands et des géomètres.

La parade des nains, ou la visualisation des inégalités

Dans mon précédant billet, sur la répartition de la population sur le territoire français, j’utilisais l’indice de Gini, comme mesure d’inégalité. Et je notais que l’indice était passé de 0.45 au début du XIXème siècle à 0.75 aujourd’hui. Mais force est de constater que cet indice n’est pas très visuel (à moins que l’on ne soit à l’aise avec les courbes de Lorenz). En 1970, Jan Pen proposa introduisit la “parade des nains” afin d’illustrer les inégalités. Pour décrire des inégalités de revenus, on représente des individus dont la taille est proportionnelle au revenu.

Il y a quelques (rares) géants, et beaucoup de nains. On peut tracer la courbe associée à cette parade des nains. Formelle, pour , on trace

où  est la fonction de répartition de la variable que l’on étudie. Rappelons que pour une loi lognormale , l’indice de Gini est

De manière duale, à partir d’un indice de Gini, on peut obtenir les paramètres d’une loi lognormale sous-jacente. Par exemple, pour une loi lognormale, associée à un indice de Gini de l’ordre de 0.25, on obtient

> library(ineq)
> gini=0.25
> sigma=qnorm((1+gini)/2)*sqrt(2)
> x=rlnorm(n,0,sigma)
> Pen(x)

Pour des indices de Gini de 0.50 et de 0.75, on obtient les courbes suivantes

> gini=0.5
> sigma=qnorm((1+gini)/2)*sqrt(2)
> n=1e4
> y1=qlnorm((1:n)/(n+1),0,sigma)/
+ exp(0+sigma^2/2)

> gini=0.75
> sigma=qnorm((1+gini)/2)*sqrt(2)
> y2=qlnorm((1:n)/(n+1),0,sigma)/
+ exp(0+sigma^2/2)
> plot((1:n)/(n+1),y1,ylim=c(-.5,10))
> rect(0,0,1,1,col="light yellow",border=NA)
> polygon(c(0,(1:n)/(n+1),1),c(0,y1,0),
+ col=rgb(1,0,0,.5))
> polygon(c(0,(1:n)/(n+1),1),c(0,y2,0),
+ col=rgb(0,0,1,.5))
> abline(h=1,lty=2,col="grey")

La courbe jaune est une distribution parfaitement égalitaire. La courbe rouge est obtenue avec un indice de Gini de l’ordre de 0.50 alors que celle en bleu est obtenue avec un indice de 0.75.

Pour reprendre notre exemple de population, répartie sur le territoire, on peut aussi imaginer un territoire linéaire de 1 km de long. On suppose que la zone de gauche est la moins dense, et celle de droite est la plus dense.

  • avec une répartition uniforme, supposons que tout le monde puisse loger dans des immeubles de 5 étages.
  • avec un indice de Gini de 0.50,  les premiers 200m sont des immeubles de 1 étage, les 200m suivants, ce sont des immeubles de 2 étages, etc. A 700m, on obtient les derniers immeubles de 5 étages. Sur la fin, on a des immeubles de 15 étages sur les 50 derniers mètres, et avant un immeuble de 12 étages, et avant encore des immeubles de 10 étages.
  • dans le cas d’un indice de Gini de l’ordre de 0.75, il n’y a rien sur 25% du territoire, puis sur les 25% suivant, des immeubles de 1 étage, etc. 80% des logements ne dépassent pas 5 étages.  Par contre, sur la fin, on des tours relativement haute, dépassant 20 étages.
> n=19
> gini=0.5
> sigma=qnorm((1+gini)/2)*sqrt(2)
> y1=qlnorm((1:n)/(n+1),0,sigma)/
+ exp(0+sigma^2/2)

> gini=0.75
> sigma=qnorm((1+gini)/2)*sqrt(2)
> y2=qlnorm((1:n)/(n+1),0,sigma)/
+ exp(0+sigma^2/2)

> plot((1:n)/(n+1),y1*5,ylim=c(-.5,20))
> for(i in 1:n){
+ rect(i/(n+1)-.02,0,i/(n+1)+.02,1*5,
+ col="light yellow",border=NA)
+ rect(i/(n+1)-.02,0,i/(n+1)+.02,round(y1[i]*5),
+ col=rgb(1,0,0,.5),border=NA)
+ rect(i/(n+1)-.02,0,i/(n+1)+.02,round(y2[i]*5),
+ col=rgb(0,0,1,.5),border=NA)
+ }
> abline(h=1*5,lty=2,col="grey")
> axis(2)

ou, si on zoome, on obtient

La courbe rouge, c’est la répartition de la population, en France au XIXème siècle, ou en Allemagne aujourd’hui (tel que décrit dans mon précédant billet). La courbe bleue représente la France aujourd’hui.

Breizh Camp, Economics with Computers

I have been invited, as keynote speaker, at the 6th BreizhCamp, organized in Rennes, from March 23rd till March 25th, “la conférence des développeurs du grand ouest” as they call it. I am deeply honored, since it is a huge conference… The organizing committee asked me to give a (brief) talk on data, and big data. But data is just the visible tip of the iceberg, and I cannot talk about data without mentioning algorithms. So I will try to talk about algorithmics, econometrics, machine learning, and data (and big data, of course).

Slides are now online… More to come in the next days…

Econometrics vs. Machine Learning with Temporal Patterns

A few months ago, I did publish a (long) post entitled ‘some thoughts on economics, mathematics, econometrics, machine learning, etc‘. In that post, I was discussing possible differences between foundations of econometrics, and machine learning. I wanted to get back today on an important point, related to training/sampling datasets, when we have temporal data.

I was discussing this morning, with a student of the Data Science for Actuaries program, an interesting point related to claim frequency models, for insurance ratemaking. Since the goal is to predict claims frequency (to assess the level of the insurance premium), he suggested to use old data to train the model, and more recent one to test it. The problem is that the model did not incorporate any temporal pattern, and we got surprising results.

Consider here a simple dataset,

> set.seed(1)
> n=50000
> X1=runif(n)
> T=sample(2000:2015,size=n,replace=TRUE)
> L=exp(-3+X1-(T-2000)/20)
> E=rbeta(n,5,1)
> Y=rpois(n,L*E)
> B=data.frame(Y,X1,L,T,E)

Claims frequency is driven by a Poisson process, with one covariate, X1, and we assume that the intensity decreases (with an exponential rate). Consider here a standard linear regression, without any time effect

> reg=glm(Y~X1+offset(log(E)),data=B,
+ family=poisson)

We can also compute the empirical annualized claims frequency

> u=seq(0,1,by=.01)
> v=predict(reg,newdata=data.frame(X1=u,E=1))
> p=function(x){
+   B=B[abs(B$X1-x)<.1,]
+   sum(B$Y)/sum(B$E)
+ }
> vp=Vectorize(p)(seq(.05,.95,by=.1))

and plot the two curves on the same graph,

> plot(seq(.05,.95,by=.1),vp,type="b")
> lines(u,exp(v),lty=2,col="red")

This is what we usually do in econometrics. In machine learning, and more specifically to assess the quality of the model, and for model selection, it is common to split the dataset in two parts. A training sample, and a validation sample. Consider some randomized training/validation samples, then fit a model on the training sample, and finally use it to get a prediction,

> idx=sample(1:nrow(B),size=nrow(B)*7/8)
> B_a=B[idx,]
> B_t=B[-idx,]
> reg=glm(Y~X1+offset(log(E)),data=B_a,
+ family=poisson)
> u=seq(0,1,by=.01)
> v=predict(reg,newdata=data.frame(X1=u,E=1))
> p=function(x){
+   B=B_a[abs(B_a$X1-x)<.1,]
+   sum(B$Y)/sum(B$E)
+ }
> vp_a=Vectorize(p)(seq(.05,.95,by=.1))
> plot(seq(.05,.95,by=.1),vp_a,col="blue")
> lines(u,exp(v),lty=2)
> p=function(x){
+   B=B_t[abs(B_t$X1-x)<.1,]
+   sum(B$Y)/sum(B$E)
+ }
> vp_t=Vectorize(p)(seq(.05,.95,by=.1))
> lines(seq(.05,.95,by=.1),vp_t,col="red")

The blue curve is the prediction on the training sample (as we usually do in econometrics), but then the red curve is the prediction on the testing sample. Here, volatility probably comes from the small size of the testing sample (1 observation out of 8).

Now, what if we use the year as a splitting criteria : we fit a model on old years to fit a model, and we test it on recent years,

> B_a=subset(B,T<2014)
> B_t=subset(B,T>=2014)
> reg=glm(Y~X1+offset(log(E)),data=B_a,family=poisson)
> u=seq(0,1,by=.01)
> v=predict(reg,newdata=data.frame(X1=u,E=1))
> p=function(x){
+   B=B_a[abs(B_a$X1-x)<.1,]
+   sum(B$Y)/sum(B$E)
+ }
> vp_a=Vectorize(p)(seq(.05,.95,by=.1))
> plot(seq(.05,.95,by=.1),vp_a,col="blue")
> lines(u,exp(v),lty=2)
> p=function(x){
+   B=B_t[abs(B_t$X1-x)<.1,]
+   sum(B$Y)/sum(B$E)
+ }
> vp_t=Vectorize(p)(seq(.05,.95,by=.1))
> lines(seq(.05,.95,by=.1),vp_t,col="red")

Clearly, we miss something here…

We were looking at such a graph this morning, and it took me some time to understand how training and validation samples were designed, and that there was a possible temporal effect (actually, this morning, it was based on a 3 year training sample, and a 1 year validation sample).

Since there is a temporal pattern, let us capture it. As an econometrician, let me use a regression model

> reg=glm(Y~X1+T+offset(log(E)),data=B,
+ family=poisson)
> C=coefficients(reg)
> u=seq(1999,2016,by=.1)
> v=exp(-(u-2000)/20-3)
> plot(2000:2015,exp(C[1]+C[3]*(2000:2015)))
> lines(u,v,lty=2,col="red")

(I focus only on the evolution of the temporal variate on that graph).

Here, we use a linear model, but there are usually no reason to assume linearity. So we might consider splines

> library(splines)
> reg=glm(Y~X1+bs(T)+offset(log(E)),
+ data=B,family=poisson)
> u=seq(1999,2016,by=.1)
> v=exp(-(u-2000)/20-3)
> v2=predict(reg,newdata=data.frame(X1=0,
+ T=2000:2015,E=1))
> plot(2000:2015,exp(v2),type="b")
> lines(u,v,lty=2,col="red")

But here again, why should we assume that there is an underlying smooth function? There might be some ruptures… So let us consider a regression on factors

> reg=glm(Y~0+X1+as.factor(T)+offset(log(E)),
+ data=B,family=poisson)
> C=coefficients(reg)
> u=seq(1999,2016,by=.1)
> v=exp(-(u-2000)/20-3)
> plot(2000:2015,exp(C[2:17]),type="b")
> lines(u,v,lty=2,col="red")

An alternative might be to consider some more general model, like a regression tree

> library(rpart)
> reg=rpart(Y~X1+T+offset(log(E)),data=B,
+ method="poisson",cp=1e-4)
> p=function(t){
+   B=B[B$T==t,]
+   B$E=1
+   mean(predict(reg,newdata=B))
+ }
> y_m=Vectorize(function(t) p(t))(2000:2015)
> u=seq(1999,2016,by=.1)
> v=exp(-(u-2000)/20-3+.5)
> plot(2000:2015,y_m,ylim=c(.02,.085),type="b")
> lines(u,v,lty=2,col="red")

Here, it seems that something went wrong. I guess it’s coming from the exposure. So consider a simplier model, on the annualized frequency, and with weights that are related to the exposure

> reg=rpart(Y/E~X1+T,data=B,weights=B$E,cp=1e-4)
> p=function(t){
+   B=B[B$T==t,]
+   B$E=1
+   mean(predict(reg,newdata=B))
+ }
> y_m=Vectorize(function(t) p(t))(2000:2015)
> u=seq(1999,2016,by=.1)
> v=exp(-(u-2000)/20-3+.5)
> plot(2000:2015,y_m,ylim=c(.02,.085),type="b")
> lines(u,v,lty=2,col="red")

That was for the econometrician perspective. With a machine learning perspective, consider a training sample (here based on old data) and a validation sample (based on more recent ones)

> B_a=subset(B,T<2014)
> B_t=subset(B,T>=2014)

If we consider a model, it is easy to get a prediction on recent years, even if the model was designed to model older ones,

> reg_a=glm(Y~X1+T+offset(log(E)),
+ data=B_a,family=poisson)
> C=coefficients(reg_a)
> u=seq(1999,2016,by=.1)
> v=exp(-(u-2000)/20-3)
> plot(2000:2015,exp(C[1]+C[3]*c(2000:2013,
+ NA,NA)),type="b")
> lines(u,v,lty=2,col="red")
> points(2014:2015,exp(C[1]+C[3]*2014:2015),
+ pch=19,col="blue")

But if we use years as factors, things are more complicated.

> reg_a=glm(Y~0+X1+as.factor(T)+offset(log(E)),
+ data=B_a,family=poisson)
> C=coefficients(reg_a)
> RMSE=function(A){
+   L=exp(C[1]*B_t$X1+ A[1]*(B_t$T==2014) + A[2]*(B_t$T==2015))
+   Y_t=L*B_t$E
+   sum( (Y_t - B_t$Y )^2)}
> i=optim(c(.4,.4),RMSE)$par
> plot(2000:2015,c(exp(C[2:15]),NA,NA),)
> u=seq(1999,2016,by=.1)
> v=exp(-(u-2000)/20-3)
> lines(u,v,lty=2,col="red")
> points(2014:2015,exp(i),pch=19,col="blue")

becase we need to get a prediction on levels that were not in our training sample. Here, we minimize the RMSE to quantify factor levels for recent years. And the output is not that bad.

So yes, it is possible to get a training dataset on older data, and test it on recent years. But one should be careful, and take into account, properly, temporal patterns.

Taux d’intérêt négatifs et explosion des valeurs de rentes

Il y a quelques années, j’avais été sollicité pour rédiger les Annexes de l’ouvrage évaluation du préjudice corporel, de Max le Roy. Comme l’indiquait le descriptif du livre (à l’époque) j’ai un peu la pression car pas mal de jugements rendus sont basés sur mes calculs,

“La résolution 75-7 du comité des ministres du Conseil de l’Europe est intervenue pour faciliter l’harmonisation des législations et des jurisprudences en matière de réparation des dommages en cas de lésion corporelle ou de décès. Elle a proposé un certain nombre de principes qui, bien que non obligatoires pour les États membres, sont très largement suivis par les juridictions françaises. Ce sont ces principes et leur application en droit français qui sont exposés et commentés dans cet ouvrage qui rend compte, notamment, de la très importante réforme apportée en matière de recours subrogatoire des caisses de sécurité sociale contre les tiers par la loi n° 2006-1640 du 21 décembre 2006. Le barème de capitalisation de rentes tient compte des plus récentes tables de mortalité et prend pour base un taux d’intérêt de 5 % conforme aux données économiques et financières actuelles. Accompagné d’un barème fonctionnel indicatif des incapacités en droit commun, de tableaux de jurisprudence et de formules de jugement, l’ouvrage fait le point sur toutes les questions auxquelles sont confrontés les magistrats, avocats, experts, médecins, assureurs.”

En 2011, pour une mise à jour du livre, j’avais refait les calculs avec des tables mises à jours. Oui, à l’époque je trouvais que la priorité était d’arrêter d’utiliser les tables TD et TV qui dataient de 1988. Mais on était resté avec des taux à 5%. J’avais d’ailleurs été surpris (je peux le dire maintenant, il y a prescription) lorsque j’avais tenté de discuter le choix du taux d’intérêt, et qu’il m’avait été répondu “ah, ça change quelque chose ?“.

Oui, les taux d’actualisation impactent les valeurs des rentes. Et je n’avais pas idée à quel point. Le code utilisé pour construire les valeurs de rentes est assez simple.

> PRIX=function(annee=2011,age,sex="HOM",
+ taux=0.04, duree,C=1000){
+  file  = paste("http://freakonometrics.free.fr/",
+  sex,"-table-SPLx.csv",sep="")
+  B  = read.table(file,header=TRUE,sep=",")
+  an    = annee-age; if(an>2005){an=2005}
+  nom   = paste("X",an,sep="")
+  L     = B[,nom]
+  Q     = L[(age+1):length(L)]/L[(age+1)]
+  actualisation = (1+taux)^(0:min(duree,120-age))
+  prixsup = sum(Q[2:(min(duree,120-age)+1)]/
+  actualisation[2:(min(duree,120-age)+1)] )
+   prixinf = sum(Q[1:(min(duree,120-age))]/
+  actualisation[1:(min(duree,120-age))] )
+  return(C*c(prixsup,prixinf))}

Je renvois ici deux “prix” de rente, suivant que la rente est versée en fin ou en début d’année. Par exemple, avec un taux d’actualisation de 5% (comme dans le livre), pour un homme de 50 ans, si on considère une rente versée jusqu’à sa mort (j’ai mis ici une durée maximal de 150 années), la valeur actualisée espérée d’une rente (en tenant compte des probabilités de décès) de 1000 euros par an (encore une fois, tant que la personne est en vie) est de l’ordre de 17,000 euros.

> PRIX(age=50,sex="HOM",duree=150,taux=.05)
[1] 16435.31 17435.30

Avec un taux d’actualisation de 0%, on atteinte plus du double.

> PRIX(age=50,sex="HOM",duree=150,taux=0)
[1] 38822.48 39822.46

Et c’est encore pire pour les jeunes. Si on calcule pour plusieurs âges des rentes versées jusqu’au décès, avec différents niveaux de taux (5%, 2%, 0% et -2%, oui, je prends un taux négatif)

> vage=seq(15,65,by=5)
> vp5=Vectorize(function(a) PRIX(age=a,sex="HOM",duree=150,taux=0.05)[1])(vage)
> vp2=Vectorize(function(a) PRIX(age=a,sex="HOM",duree=150,taux=0.02)[1])(vage)
> vp0=Vectorize(function(a) PRIX(age=a,sex="HOM",duree=150,taux=0)[1])(vage)
> vpn2=Vectorize(function(a) PRIX(age=a,sex="HOM",duree=150,taux=-0.02)[1])(vage)
> plot(vage,vpn2,type="b",col="red")
> lines(vage,vp0,type="b")
> lines(vage,vp2,type="b",col="blue")
> legend("topright",c("taux -2%","taux 0%","taux 2%"),col=c("red","black","blue"))

on observe une explosion des rentes pour les jeunes (ce qui n’est pas non plus surprenant)

Pour un jeune de 20 ans, la valeur actualisée probable d’une rente est presque 10 fois plus élevée, si on passe d’un taux de 5% à -2%

> PRIX(age=15,sex="HOM",duree=150,taux=.05)
[1] 19427.94 20427.93
> PRIX(age=15,sex="HOM",duree=150,taux=-.02)
[1] 200778.3 201770.3

Ce qu’on peut visualiser sur le graphique ci-dessous (avec, par âge, 100 qui correspond à la valeur obtenue avec un taux de 5%)

> plot(vage,vpn2/vp5*100,type="b",col="red")
> lines(vage,vp0/vp5*100,type="b")
> lines(vage,vp2/vp5*100,type="b",col="blue")
> abline(h=100,lty=2)
> legend("topright",c("taux -2%","taux 0%","taux 2%"),col=c("red","black","blue"),pch=1)

Passer de 5% à 2% donnait des rentes plus important, en passant de 100 à 200. En passant à 0% on passe de 100 à 400 pour les jeunes. Mais en passant à des taux négatifs, on passe de 100 à 1000 !

Dans un scénarios où les taux restent encore bas longtemps, on peut imaginer que les indemnités versées aux victimes de préjudices corporels vont exploser dans les mois à venir…

‘Mathiness’ et Assurance

Au printemps dernier, l’économiste Paul Romer avait initié une discussion passionnante autour de la notion de “mathiness” (“mathitude” pourrait être la traduction la plus simple pour reprendre l’expression de Lavigne (2015)), posant la question de la place du formalisme mathématique en économie. Ou plus précisément, des liens entre les théorèmes mathématiques et la réalité économique. Et la principale critique faite par Paul Romer est que les mathématiques sont trop souvent utilisées pour obscurcir, plutôt qu’éclairer un débat. Cette discussion n’est pas nouvelle, mais il est intéressant de voir qu’elle survient à un moment où les assureurs s’interrogent, eux aussi, sur les modèles actuariels.

Science économique, et économie

Le point de départ de la discussion de Romer (2015) est qu’il est surprenant qu’en plus de 20 ans, la théorie de la croissance n’ait toujours pas abouti à un consensus. Son explication repose sur le concept de mathiness. Pour reprendre l’expression de Tim Harford, “economics has a reputation for producing rigourous nonsense“. Dans les années 40, Paul Samuelson avait initié un mouvement visant à clarifier les arguments des économistes, en cherchant des fondements plus « scientifiques ». La route de l’enfer serait-elle pavée de bonnes intentions ?

Continue reading ‘Mathiness’ et Assurance

Mutualisation et Segmentation en Assurance

L’article Segmentation et Mutualisation, les deux faces d’une même pièce, coécrit avec Michel Denuit et Romuald Elie paraîtra dans les jours à venir, dans un numéro autour du big data en assurance, avec des articles de Patrick Thourot, sur la tarification du pay as you drive, de Lucie Taleyson, sur la tarification dans les assurances collectives, et tout plein d’articles passionnants, signés François-Xavier Hay ou encore Arnaud Chaput.

L’article (disponible en pdf) présente l’impact de la segmentation dans un environnement concurrentiel. Il d’un exemple simple, pour ne pas dire simpliste. Il sera perfectionné avec le pricing game organisé mi novembre. A suivre donc…

Some thoughts on Economics, Mathematics, Econometrics, Statistics, Machine Learning, etc

There were a lot of posts, recently, related to those topics, starting with Noah Smith ‘s piece entitled “Economics has a Math Problem” and more recently “Econometrics, Math, and Machine Learning…what?” by Matt Bogard. I don’t have (yet) a clear mind on those issues, but there are still a few thoughts that I wanted to share. I did not really want to, but I’ve been asked, on Twitter, and I thought it might be good to write them down, to clarify some ideas I have, but also (probably, hopefully) to get interesting feedbacks.

Continue reading Some thoughts on Economics, Mathematics, Econometrics, Statistics, Machine Learning, etc