dimanche 23 octobre 2011

Composition de segments

Pour l'instant je n'ai parlé que de prix pour des voyages sans correspondance. Quand un trajet comporte une ou plusieurs correspondances, le voyage est dit être composé de plusieurs segments.

Pour faire court, pour un voyage donné il est intéressant de mettre le plus de trajets simples sur un même billet afin de bénéficier de la dégréssivité de bout en bout[0]. Ce qui suit concerne donc la tarification des voyages à plusieurs segments. Elle est assez compliquée, je vais essayer d'être exhaustif.

Comme toujours il s'agit de l'état actuel de la tarification. Je ne sais pas combien de temps les choses resteront en l'état. En fait je ne garantis même pas que ce que je raconte corresponde à la réalité.

Tarifs différents

Quand le code tarif n'est pas le même entre les différents segments, en général il n'est pas possible d'émettre un seul billet (ne pas oublier qu'un billet peut nécéssiter plusieurs pages). Ce cas se produit généralement quand on veut effectuer un voyage et qu'on dispose d'un abonnement valable uniquement sur une partie du trajet.

Lorsqu'on fait apparaître une fausse correspondance, c'est à dire qu'un trajet sur le même train se trouve séparé en deux billets distincts, on dit qu'une soudure a été effectuée. (Par exemple, je souhaite prendre un TGV entre Bordeaux et Paris alors que je dispose d'un abonnement demi-tarif pour la section Poitiers-Paris : je vais avoir envie de faire une soudure à Poitiers.) En fonction des cas, elle est autorisée ou non. Si la soudure se situe à un arrêt effectif du train, il suffit juste de sortir pour composter le second billet. Sinon elle n'est en général pas autorisée. En théorie une soudure n'est pas intéressante si les deux trajets sont au plein tarif à cause de la dégressivité, mais ça n'est pas toujours vrai pour les trajets internationaux, où une soudure au niveau du dernier arrêt en France est souvent intéressante.

Segments compatibles

Un autre cas simple est le cas où les segments sont compatibles, c'est-à-dire que les classes de service et la période correspondent (je crois que c'est le seul cas possible). Dans ce cas la tarification est faite de bout en bout (i.e on fait comme si l'arrêt intermédiaire n'existait pas), ce qui compte tenu de la dégressivité importante sur TGV est favorable à l'usager.

Sur les trains à gestion fine, il faut aussi que l'arrêt soit un arrêt raisonnable au regard du trajet. Par exemple, si vous voulez combiner Paris → Nice et Nice → Lyon, le tarif appliqué ne sera pas le tarif Paris → Lyon de bout en bout. La condition technique doit certainement être que la somme des kilomètres doit être inférieure ou égale au kilométrage de référence du prix de bout en bout. En réalité ces cas sont rares, la SNCF privilégiant les relations sans correspondances.

Deux remarques intéressantes :

  • Je ne crois pas que la SNCF applique ce qui s'appelle dans le monde aérien la tarification par « classes virtuelles » ou par « bid price ». On pourrait imaginer pouvoir combiner deux trajets même si les classes de service ne sont pas égales, en considérant la classe de service du segment assurant le maximum de revenu (dans une classe de confort donnée). Du coup, comme la dégressivité sur TGV est nettement supérieure à la dégressivité générale, on peut avoir intérêt à effectuer une réservation dans une classe de service moins restreinte (comprendre : plus chère) que celle qui est disponible au moment de l'achat de façon à avoir un tarif de bout en bout. Je ne pense pas que voyages-sncf.com le fasse, ou que beaucoup de guichetiers soient au courant de cette subtilité.
  • Sur les trains sans gestion fine, le tarif de bout en bout est évidemment le tarif général, mais en fonction des détails du billet, le prix peut être légèrement différent. Sur les billets ouverts (type DT)[1] sans mention d'horaire le prix est réellement le prix au kilomètre sur la somme des kilomètres. Sur les billets à train désigné (type DV notamment), une correspondance a tendance à faire un billet moins cher de 10 centimes d'euros, certainement sous l'effet d'arrondis.

Segments incompatibles (ou hétérogènes)

Les segments compatibles sont d'abord regroupés entre eux et traités comme un seul segment par la suite.

Ce qui suit correspond au cas général, qui est le plus fréquent.

Il est indiqué dans les tarifs voyageurs (point 1.7 de la gamme tarifaire) que « le prix de chaque segment ou chaque ensemble homogène de segments est affecté d'un coefficient intégrant, sur l'ensemble du trajet (…), la dégressivité de prix contenue dans la formule de calcul du tarif de base général. ». Au pire, donc, on profite d'une dégressivité semblable au tarif normal.

On pouvait imaginer plusieurs possibilités pour coller à cette formulation. Manifestement il faut faire appel à la formule du tarif normal :

  1. Pour chaque segment, prendre son kilométrage et faire le rapport entre le prix au kilomètre du tarif normal pour ce kilométrage et le prix au kilomètre du tarif normal pour la somme des kilomètres. Appliquer ce coefficient au prix initial du segment. Cette formule a l'avantage que si tous les segments sont effectivement au tarif normal, alors le prix total est effectivement le tarif normal.
  2. Pour chaque segment, prendre son kilométrage et faire le rapport entre le tarif normal pour ce kilométrage et le tarif normal pour la somme des kilométres. Appliquer ce coefficient au prix initial du segment. Cette configuration serait gênante pour le cas de segments de petit kilométrage mais très chers. Leur prix se ferait diluer par des segments longs et peu chers.
  3. Multiplier le prix de chaque segment par le rapport entre le prix du tarif normal pour la somme des kilomètres et la somme des prix du tarif normal pour les kilométrages de chaque segment. De même que pour la première formule, on a la propriété que si tous les segments sont effectivement au tarif normal, alors le prix total est effectivement le tarif normal.
En prenant l'exemple de deux segments de prix P1 et P2, de kilométrage 1 et 2, et P() la fonction du tarif normal en fonction du kilométrage, les trois possibilités donneraient (navigateur supportant MathML nécéssaire) :
  1. P 1 ( P ( 1 + 2 ) ( 1 + 2 ) 1 P ( 1 ) ) + P 2 ( P ( 1 + 2 ) ( 1 + 2 ) 2 P ( 2 ) )
  2. P 1 P ( 1 ) P ( 1 + 2 ) + P 2 P ( 2 ) P ( 1 + 2 )
  3. P 1 P ( 1 + 2 ) P ( 1 ) + P ( 2 ) + P 2 P ( 1 + 2 ) P ( 1 ) + P ( 2 )

Sauf qu'en fait ce n'est pas ce qui est fait. Après plusieurs essais, je pense que l'idée est de calculer les kilométrages fictifs correspondant au prix de chaque segment comme s'ils étaient au tarif normal, de sommer les kilométrages fictifs et de calculer le prix correspondant avec le tarif normal. Ce qui donnerait, P-1() représentant la fonction inverse du tarif normal (toujours avec MathML) : P ( P - 1 ( P 1 ) + P - 1 ( P 2 ) )

Plus en détails, si l'on veut que ça marche en vrai, il faut changer un peu P() et P-1(). Je pense qu'il s'agit bien d'un tarif normal, mais qu'il s'agit du tarif normal datant de l'introduction des tarifs de marchés et qu'elle n'a pas été changée depuis. Pour la simuler, j'ai cherché un facteur γ[2] qui pourrait correspondre. Après divers essais je pense qu'il vaut γ=0,795. On remarquera que c'est légèrement moins dégressif que le tarif normal (pour lequel γ=0,78). Sauf que ce n'est pas encore exactement ça. Même si ça marche relativement bien pour les trajets au plein tarif, ça ne marche pas pour les tarifs réduits, notamment pour les trajets incluant des réductions en pourcentage sur des trains à réservation facultative. J'exposerai une autre fois mes théories sur comment améliorer la formule.

[0] Au maximum 8 par billet, et souvent cela nécéssite de passer par un humain, voyages-sncf.com étant actuellement incapable de proposer des trajets avec plus que trois segments.

[1] Je parlerai une (en fait probablement plusieurs tant le sujet est vaste) autre(s) fois des détails de billetterie.

[2] Comme expliqué dans la première entrée, le tarif normal est très proche d'une loi de puissance paramétrée par un facteur γ.

vendredi 14 octobre 2011

Tarifs de marché épisode 2

En tentant un résumé simplifiacteur de l'entrée précédente, on pourrait dire que les tarifs (dans le sens tarif carte 12/25, tarif loisir, Prem's)) servent à segmenter la clientèle (objectif n°1) tandis que les niveaux de prix (à l'intérieur d'un tarif) sont l'outil permettant de remplir l'objectif n°2.

Le tableau qui suit est un extrait des tarifs pratiqués sur la relation Paris-Bordeaux, au 12 octobre 2011[1] :

Prix (EUR) pour un adulte en fonction du code tarif, de la classe de service et de la période

Cl. scePNPPCode Tarif
BP70,8085,90PN00
(plein tarif)
AP113,80113,80
BD27,5033,00CJ11
(12/25)
C34,0039,00
B39,0043,00
A49,0061,00
P52,0064,00
AD41,0045,00
C54,0063,00
B59,0070,00
A60,0071,00
P85,0085,00
BD34,0042,00 SR11
(sénior)
CL11
(escapades)
EF11
(enfant+)
C39,0047,00
B47,0055,00
A51,0062,00
P52,0064,00
AD49,0056,00
C56,0067,00
B59,0070,00
A60,0071,00
P85,0085,00
BJ45,0055,00PR11
(loisir)
I57,0070,00
H62,0072,00
G66,0081,00
P70,8085,90
AJ65,0073,00
I72,00??
H78,0085,00
G81,0096,00
P113,80113,80
BF76,5092,00FA00
(PRO)
AF119,50119,50
BF38,0046,00FQ50
(fréquence)
FF50
(forfait éch.)
AF59,5059,50
BZ22,0025,00N/A
(Prem's)
Y34,0039,00
N41,0047,00
AZ40,0045,00
Y47,0052,00
BWf(XX)f(XX)PPXX
(promos)
AWf(XX)f(XX)

Un certain nombre d'explications pour lire le tableau sont nécéssaires :

  • Ce tableau n'est pas complet, il a été rempli en cherchant les prix proposés sur les prochains mois. "??" indique que je n'ai pas trouvé de train proposant le prix : soit il est identique à un prix voisin, soit le contingent est très peu utilisé.
  • La classe de service est formée en prenant les lettres des deux premières colonnes. La première lettre indique la classe de confort, "A" pour la 1ère et "B" pour la seconde (il y a d'autres classes de confort, notamment dans les trains de nuit). La deuxième lettre indique le contingent proprement dit.
  • Le code tarif se lit dans la colonne la plus à droite. Il est toujours formé d'un couple de lettres suivi d'un nombre à 2 chiffres et respecte une certaine logique. Les tarifs en ..11 sont l'essentiel des tarifs sur lesquels le prix varie en fonction de l'occupation.
  • "PN" et "PP" indiquent la période du train, pointe ou normale
  • Le prix dépend donc de la période du train (qui est pour l'instant fixée à l'avance), de la classe de service et du code tarif.
  • Les contingents de Prem's (ici X,Y,Z mais je ne suis pas sûr des noms) ont des prix différents selon que le TGV est normal ou 100%Prem's. Ne sont affichés que les prix pour les TGV normaux. Les TGV 100%Prem's existent en période normale et de pointe (ce que je viens d'apprendre).

Quelques règles concernant les classes de contingence (à prendre avec des pincettes) :

  • La classe "P" représente les places au tarif de référence, ainsi que les places à réduction garantie des cartes commerciales. Elle n'est pas contingentée (hormis par le nombre de places physiques dans le train).
  • La classe "F" n'est pas non plus contingentée. Elle est utilisée par les tarifs type "PRO". Cette différentiation entre "F" et "P" permet de fournir simplement des services supplémentaires aux tarifs "PRO", comme un placement privilégié dans certaines voitures (typiquement l'Espace Pro 1ère).
  • On remarque que les classes "A","B","C","D" sont partagées par la totalité des cartes commerciales (et d'autres choses comme semble-t-il les correspondances Eurostar). On en conclue que les porteurs de telles cartes sont considérés comme un seul segment de clientèle par la SNCF.
  • Les Prem's Promotionnels sont mis dans la classe "W", et chaque nouvelle opération promotionnelle se voit attribuer un code tarif en PP.. (et un texte explicatif pour la billetterie) comme PP03 par exemple.
  • Les Prem's (classes Z, Y et X) n'ont pas de code tarif (au moins dans les TGV normaux), ce qui permet d'avoir un billet en correspondance avec un autre tarif.
  • Certains tarifs étaient valables dans toutes les classes (typiquement Fréquence, Forfait), mais je ne sais pas si c'est encore le cas.

Exemple de lecture du tableau : si vous avez une carte Sénior et que vous vous y prenez vraiment longtemps à l'avance sur un train en période de pointe, le prix en seconde sera de 42 EUR (BD SR11 PP). Au fur et à mesure du temps les contingents se rempliront (ou seront fermés) et le prix passera à 47 EUR (BC) puis 55 EUR (BB), 62 EUR (BA) et finalement quand tous les contingents limités seront épuisés il ne restera plus de places qu'en BP et le prix vaudra 25% de réduction (suivie d'un arrondi) sur le plein tarif, c'est à dire 64 EUR. Parallèlement le prix pour les autres cartes de réduction augmentera au même moment puisqu'ils utilisent les mêmes contingents.

Analyse des prix

Rapidement :

  • Les prix Prem's ont tendance à être forfaitaires pour les relations longues. Le prix d'appel de 22 EUR se retrouve dans à peu près toutes les relations TGV longue distance.
  • Les prix carte de réduction et loisir réduit sont en gros calculés en pourcentage (qu'on peut retrouver facilement) de réduction par rapport au plein tarif, auquel un arrondi a été appliqué. Ce n'est qu'approximatif car les différents paliers sont augmentés (et donc chargés à la main dans le système de réservation) au fil de l'eau et non pas au moment de l'augmentation des prix de janvier. Par exemple jusqu'à récemment (au moins) le tarif en BD CJ11 PN sur Paris-Arras valait 60% de réduction sur le plein tarif de 2007, ce qui fait plus que 60% de réduction sur le plein tarif de maintenant.
  • En première les tarifs les plus bas sont calculés en pourcentage de réduction sur la base d'un plein tarif fictif bien plus faible que le plein tarif, et ceci afin de rendre la première plus attractive. Par conséquent en première les réductions peuvent dépasser largement les 50%/60% de réduction promis dans les documentations commerciales.
  • On remarque que les paliers les plus faibles de Loisir sans carte sont très avantageux par rapport au reste des prix. Ils constituent un prix d'appel, et il n'y a aucun doute que le nombre de place dans ces contingents est réduit à la portion congrue. Clairement le but des tarifs loisirs sans carte n'est pas d'encourager à prendre le train (les Prem's sont faits pour ça) mais bien de répartir la charge des trains pleins vers les trains moins plein (je suis persuadé qu'une différence de quelques euros suffit dans ces cas là).
  • La carte escapades proposait au départ une réduction maximale de 40%, mais ce 40% était valable en C et D. La carte n'était pas si inintéressante que ça en supposant que les places en D sont rares alors que les places en C le sont netttement moins. Récemment le taux maximal a été porté à 50%, mais pendant quelques mois qui ont suivi ce changement le prix était à 50% en D et en C, ce qui a rendu la carte Escapades plus intéressante au niveau tarifaire que la carte sénior. Cette anomalie a été corrigée (silencieusement bien sûr) rapidement, mais ça ne m'a pas empêché d'en profiter.

Remarques supplémentaires

Toute la tarification n'est pas donnée par cette analyse. Par exemple rien n'est dit concernant les quantités de places attribuées dans chaque classe de contingence. Gérer la quantité de places constitue le cœur de métier de l'analyste, qui utilise des modèles de demande paramétrés par l'expérience. Ça n'empêche pas de se rendre compte d'évidences. Par exemple au moment des fêtes ou vacances il est tout à fait possible qu'aucune place à prix réduit ne soit disponible quelle que soit l'anticipation car il est connu que les trains seront complets. Il n'y a donc aucun intérêt (comptablement) à proposer des places réduites (commercialement on peut quand même avoir intérêt à en proposer quelques unes).

[1]Tableau issu d'observations et non de quelconques documents de référence. Je ne prétends pas être exhaustif et ces chiffres sont donnés sans AUCUNE garantie.

dimanche 2 octobre 2011

Principes généraux de yield management, le cas de la SNCF

Le yield management (ou « gestion fine » dans le jargon SNCF) c'est quoi ? L'idée générale est d'extraire le plus d'argent possible étant donné qu'on dispose d'une ressource limitée et périssable. Le yield management est donc particulièrement adapté aux cas des transports (une place vide est une place perdue dès que l'avion décolle) ou des prestations hôtelières. La discussion qui suit part du cas du rail façon SNCF, mais les concepts généraux s'adaptent facilement au cas de l'aérien et dans une moindre mesure à l'hôtellerie. Je tenterai de rester général, les détails techniques viendront une autre fois.

Au delà de la phrase volontairement provocatrice, le yield management recouvre en fait plusieurs concepts :

  1. Augmenter le nombre de clients, soit par report (on veut attirer la clientèle qui prend sa voiture au lieu de prendre l'avion), soit qui ne voyage pas.
  2. Parmis sa clientèle aquise, obtenir un report des trains pleins vers les trains vides afin de libérer des places pour la clientèle prête à payer plus.
  3. Être rentable.
Ces objectifs peuvent s'opposer. Par exemple si on ne garde que le premier objectif en vue on risque de voir les profits s'effondrer et d'avoir une mauvaise satisfaction client.

Je vais parler de deux outils utilisables pour réaliser ces objectifs. Notez qu'ils sont indépendants et peuvent être mis en œuvre séparément l'un de l'autre.

La segmentation de la clientèle

L'un des premiers outils à disposition pour réaliser ces objectifs est la segmentation de la clientèle, c'est à dire de réussir à proposer à la clientèle (ou enfermer celle-ci) des services/tarifs en fonction de ce que l'on estime être ses besoins. Deux exemples mis en place à la SNCF[0] :

  • Exemple n°1 : pour toucher les gens qui ne prennent pas trop le train ont été mis en place les Prem's[1], et plus récemment les Prem's Promotionnels qui font l'objet de campagnes de publicité et dont l'objectif est clairement d'attirer le chaland. Outre leur prix réduit, ils sont non échangeables et non remboursables pour éviter que ce segment ne soit envahi par la clientèle à priori plus aisée des "Loisir", ce qui rendrait le procédé inutile. Leur faible disponibilité s'explique de la même façon.
  • Exemple n°2 : la dissociation entre la gamme PRO et Loisir. Le nom indique plus ou moins quelle clientèle est visée. Dans la gamme PRO (qui comporte outre le Tarif Pro, les abonnements Fréquence, Forfait et les militaires) le billet est flexible et accompagné de différents services (échange facilité, réservation de taxi, repas à la place etc.). La gamme loisir regroupe le reste des tarifs, qui est elle-même segmentée en plusieurs gammes. Par exemple pour tenter d'éviter d'offrir des prix réduits aux voyageurs en déplacement professionnels qui se décident souvent vers le tard (et peu sensibles au prix) il a été créé le tarif loisir week-end où il faut inclure la nuit du samedi au dimanche; sans cette condition[2] il faut s'y prendre plus de 10 jours à l'avance. Le même principe se retrouve (multiplié par dix) dans les tarifs des compagnies aériennes classiques. Dans un autre registre les cartes de réduction commerciales (12/25, escapades, senior) fidélisent le client et segmentent par l'utilisation plus importante des transports.

Gestion dynamique des stocks

Le deuxième objectif est rempli en faisant varier le prix en fonction du remplissage du train, de manière à inciter la clientèle moins rentable à se reporter sur les trains moins remplis, libérant de la place pour les clients plus rentables (dits « à forte contribution »). En gros, moins le train est rempli, moins c'est cher et inversement. En fait c'est plus compliqué que ça, le remplissage est indépendant pour chaque catégorie de clients (donc segment de clientèle pour ceux qui suivent).

Pour chaque segmentation (et éventuellement sous-segmentation) de clientèle on définit un groupe de classes de contingences (ou classe de service)[3] dont on fait varier la quantité en fonction des besoins de sorte que les trains plus remplis soient moins attirants que les trains moins remplis. Un tarif donné n'est donc valable que dans certaines classes de service et vaut d'autant moins cher que la classe est restreinte. Par exemple tous les tarifs PRO se partagent la même classe de service unique (dans une classe de confort donnée : 1ère, 2nde, couchette etc..), alors que les tarifs à carte de réduction se partagent plusieurs classes de service communes. Au fur et à mesure du remplissage du train les places dans les classes restreintes (avec leur tarif faible) disparaîssent et il ne reste plus que des places dans les classes moins restreintes. Grosso-modo, si vous avez une attaque de clients avec carte de réduction sur un train, à priori les tarifs loisirs sans carte ne seront pas impactés. En réalité comme la gestion est faite en temps réel il y aura peut-être un algorithme (ou un humain) qui réduira aussi la disponibilité pour les voyageurs sans carte[4].

La SNCF se réserve aussi la possibilité d'augmenter en bloc (c'est la période du train) tous les tarifs pour les trains qui sont typiquement plus demandés, ou qui se remplissent aussi vite dans tous les segments.

Au final le nombre de paramètres d'ajustement est assez faible, le reste est déterminé de manière automatique par les tarifs. L'ajustement est fait d'après des modèles d’élasticité de la demande et/ou par le pifomètre de l'analyste. Quelques règles sont néanmoins pratiquement toujours observées. Par exemple une classe de service épuisée ou fermée n'est en principe pas ré-ouverte, ce qui assure que les tarifs ne font qu'augmenter. Ceci est en partie dû au fait que une grande partie des billets sont échangeables, ce qui fait qu'il y a un loophole évident pour les passagers ayant un billet plus cher que le prix du moment

Dans l'aérien cela fonctionne plus ou moins de la même manière : toutes sortes de tarifs automatiques sont définis (selon la durée de séjour, l'anticipation etc.). Leur prix dépend du prix maximum fixé et de la classe de contingence. Le levier habituel est donc de jouer sur les quantités de places dans les différentes classes de contingence, éventuellement sur le prix maximum, le tout sans toucher aux règles ou aux prix des différents tarifs. Dans un certain sens le travail est plus facile dans l'aérien, car une relation donnée est sans escales et possède une clientèle bien plus homogène que dans le rail.

[0] Ces deux exemples sont en réalité l'essentiel des segments de clientèle que les gens sont amenés à observer sur TGV. Mais pas chez iDTGV : chez eux, pas de segmentation de clientèle, tout le monde est à la même enseigne.

[1] Et dont l'introduction date d'avant la refonte tarifaire de 2007. Clairement le yield management n'est pas tant une nouveauté que ça.

[2] Ça n'est pas toujours vrai. On voit parfois, surtout en fin de semaine des trains où les paliers loisir réduit sont accessibles sans condition d'A/R. Mais quand on joue à ça il y a un risque de dé-segmenter la clientèle et d'avoir une fuite des tarifs PRO à la marge plus confortable vers les tarifs loisir par effet d'aubaine. Tout est donc dans l'art de ne pas abuser du procédé.

[3] En anglais "fare bucket".

[4] Et parfois cela peut avoir comme conséquence que le prix en première est moins cher que en seconde. Il peut rester du Prem's en première alors qu'il n'en reste plus en seconde. Autre exemple où cela se produit souvent est les trains internationaux quand on s'en sert pour faire un trajet national. La première ne suit pas exactement les mêmes règles pour les trajets trans-frontières et l’aberration de tarif ne se corrige pas toute seule car l'essentiel de la clientèle va à l'étranger. Il va de soi que dans l'aérien ce deuxième cas n'est pas possible car pas d'escales.