X

Confidentialité & Cookies

Ce site utilise des cookies. En continuant, vous acceptez leur utilisation. En savoir plus, y compris comment contrôler les cookies.

Compris!

Annonces

Note 1: Ceci est la partie 1 d’un article en deux parties sur la construction d’équipes de ligue fantastique. Lisez ceci d’abord, puis lisez la partie 2 ici.

Note 2: Bien que le titre indique « Fantasy Football », le modèle que je décris ci-dessous peut, en principe, être modifié pour s’adapter à n’importe quelle ligue fantastique pour n’importe quel sport.

football J’ai récemment été approché par plusieurs personnes (des étudiants, des amis) concernant la création d’équipes optimales pour les ligues de football fantastique. Avec la récente montée en puissance des sites de paris tels que Fan Duel et Draft Kings, cela est devenu plusieurs millions (ou devrais-je dire, milliards?) industrie du dollar. J’ai donc pensé que j’écrirais une recette simple pour aider tout le monde. Nous sommes sur le point d’utiliser des analyses prescriptives pour parier sur le sport. Prêts? Faisons ça! Je vais commencer par le modèle mathématique, puis vous montrer comment tout faire fonctionner à l’aide d’une feuille de calcul.

Les Règles

Les règles de l’équipe de football fantastique stipulent qu’une équipe doit être composée de:

  • 1 quarterback (QB)
  • 2 running backs (RB)
  • 3 wide receivers (WR)
  • 1 tight end (TE)
  • 1 kicker
  • 1 défense

Certaines ligues ont également ce qu’on appelle un « joueur flexible », qui peut être soit un RB, un WR, ou TE. Je vais vous expliquer comment gérer le lecteur flex ci-dessous. De plus, les joueurs ont un coût et la personne qui crée l’équipe a un budget, appelez-le B, à respecter (généralement B est de 50 000 $ ou 60 000 $).

Les données

Pour chaque joueur i, on nous donne le coût mentionné ci-dessus, appelez-le c_i, et une projection ponctuelle p_i. Ce dernier est une estimation du nombre de points que nous attendons de ce joueur au cours d’une semaine ou d’un match donné. En ce qui concerne la défense, bien qu’elle ne marque pas toujours, il existe également un moyen de calculer les points pour cela (par exemple, les points empêchés). Comment ces projections ponctuelles sont-elles calculées, demandez-vous? C’est là que l’analyse prédictive entre en jeu. C’est essentiellement de la prévision. Vous regardez les performances passées / récentes, vous regardez l’adversaire à venir, vous regardez la santé des joueurs, etc. Il existe des sites Web qui vous fournissent ces projections, ou vous pouvez calculer les vôtres. Plus vous êtes précis dans ces prédictions, plus vous avez de chances d’encaisser les paris. Ici, nous prendrons ces chiffres comme donnés.

Le Modèle d’optimisation

Les principales décisions à prendre sont simples : quels joueurs doivent faire partie de notre équipe ? Cela peut être modélisé comme une variable de décision oui / non pour chaque joueur. Créons donc une variable binaire appelée x_i qui ne peut prendre que deux valeurs: elle est égale à la valeur 1 lorsque le joueur i est dans notre équipe, et elle est égale à la valeur zéro lorsque le joueur i n’est pas dans notre équipe. La valeur de i (l’IDENTIFIANT du joueur) varie de 1 au nombre total de joueurs à notre disposition.

Notre objectif est de créer une équipe avec la plus grande valeur globale possible de points projetés. Autrement dit, nous voulons maximiser la somme des projections de points de tous les joueurs que nous incluons dans l’équipe. Cette formule ressemble à ceci:

\ max\displaystyle\sum_ {\text{all} i} p_i x_i

La formule ci-dessus fonctionne car lorsqu’un joueur est dans l’équipe ( x_i = 1 ), son p_i est multiplié par un et est ajouté à la somme, et lorsqu’un joueur n’est pas dans l’équipe ( x_i = 0 ) son p_i est multiplié par zéro et n’est pas ajouté à la somme finale. Le mécanisme que je viens de décrire est l’idée principale de ce qui fait fonctionner toutes les formules de ce modèle. Par exemple, si les prédictions de points pour les 3 premiers joueurs sont 12, 20 et 10, la fonction de maximisation commence comme suit:  \max 12x_1 + 20x_2 + 10x_3 + \cdots

La contrainte budgétaire peut être écrite en disant que la somme des coûts de tous les joueurs de notre équipe doit être inférieure ou égale à notre budget B, comme ceci:

\ displaystyle\sum_ {\text {all} i} c_i x_i\leq B

Par exemple, si les 3 premiers joueurs coûtent 9000, 8500 et 11000, et que notre budget est de 60 000, la formule ci-dessus ressemblerait à ceci:  9000x_1 + 8500x_2 +11000x_3+\cdots\leq 60000 .

Pour faire en sorte que l’équipe ait le bon nombre de joueurs à chaque position, nous le faisons position par position. Par exemple, pour exiger que l’équipe ait un quart-arrière, nous écrivons:

\ displaystyle\sum_ {\text {all} i\text {qui sont des quarts}} x_i = 1

Pour exiger que l’équipe ait deux running backs et trois wide receivers, nous écrivons:

\ displaystyle\sum_ {\text {all} i\text { qui sont des running backs}} x_i = 2

\ displaystyle\sum_ {\text {all} i\text {qui sont des récepteurs larges}} x_i = 3

Les contraintes pour les postes restants seraient:

\ displaystyle\sum_ {\text {all} i\text {qui sont des bouts serrés}} x_i = 1

\ displaystyle\sum_ {\text {all} i\text {qui sont des kickers}} x_i = 1

\ displaystyle\sum_ {\text {all} i\text {qui sont des défenses}} x_i = 1

Le cas curieux du lecteur Flex

Le lecteur flex ajoute une touche intéressante à ce modèle. C’est un joueur qui, si je comprends bien, prend la place du kicker (ce qui signifie que nous n’aurions pas la contrainte kicker ci-dessus) et peut être soit un RB, un WR ou un TE. Par conséquent, tout de suite, nous avons une nouvelle décision à prendre: quel genre de joueur doit être le flex? Créons trois nouvelles variables oui/non pour représenter cette décision : f_{\text{RB}} ,  f_{\text{WR}} et f_{\text{TE}} . Ces variables signifient respectivement: le flex RB est-il?, est le flex WR?, et est le flex TE? Pour indiquer qu’une seule de ces choses peut être vraie, nous écrivons la contrainte ci-dessous:

 f_{\text{RB}} +f_{\text{WR}} +f_{\text{TE}} = 1

De plus, avoir un joueur flex équivaut à augmenter le côté droit des contraintes qui comptent le nombre de RB, WR et TE par un, mais seulement pour une seule de ces contraintes. Nous y parvenons en changeant ces contraintes du format qu’elles avaient ci-dessus au suivant:

\ displaystyle\sum_ {\text {all} i\text {qui sont des doseurs }} x_i= 2+f_ {\text{RB}}

\ displaystyle\sum_ {\text {all} i\text {qui sont des récepteurs larges}} x_i = 3+f_ {\text{WR}}

\ displaystyle\sum_ {\text{all} i\text {qui sont des bouts serrés}} x_i=1+f_ {\text{TE}}

Notez que comme une seule des variables f peut être égale à 1, seule une des trois contraintes ci-dessus verra son côté droit augmenté de sa valeur d’origine de 2, 3 ou 1.

Autres exigences potentielles

En raison de préférences personnelles, d’informations privilégiées ou d’autres considérations ésotériques, on pourrait vouloir inclure d’autres exigences dans ce modèle. Par exemple, si je veux la meilleure équipe qui inclut le joueur numéro 8 et exclut le joueur numéro 22, je dois simplement forcer la variable x du joueur 8 à être 1 et la variable x du joueur 22 à être nulle. Une autre contrainte qui peut être utile est de dire que si le joueur 9 fait partie de l’équipe, le joueur 10 doit également faire partie de l’équipe. Ceci est réalisé par:

 x_9\leq x_{10}

Si vous vouliez le contraire, c’est-à-dire si le joueur 9 est dans l’équipe, alors le joueur 10 n’est PAS dans l’équipe, vous écririez:

 x_9 +x_{10}\leq 1

D’autres conditions dans ce sens sont également possibles.

Mettre tout cela ensemble

Si vous avez été assez patient pour rester avec moi tout le long du chemin, vous êtes impatient de mettre ce calcul au travail. Faisons-le en utilisant Microsoft Excel. Commencez par télécharger cette feuille de calcul et ouvrez-la sur votre ordinateur. Voici ce qu’il contient:

  • Colonne A: liste des noms des joueurs.
  • Colonne B: oui / non décisions pour savoir si un joueur fait partie de l’équipe (ce sont les variables x que le solveur Excel calculera pour nous).
  • Colonnes C à H : drapeaux indiquant si un joueur est ou non d’un type donné (0 = non, 1 = oui).
  • Colonnes I et J : les projections de coûts et de points pour chaque joueur.

Maintenant, faites défiler vers le bas pour voir les lignes 144 à 150. Les cellules de la colonne B sont actuellement vides car nous n’avons pas encore choisi les joueurs à ajouter à l’équipe. Mais si ces choix avaient été faits (c’est-à-dire si nous avions rempli la colonne B avec des 0 et des 1), multiplier la colonne B avec la colonne C de manière cellulaire et additionner le tout vous indiquerait le nombre de quarts-arrières que vous avez. J’ai inclus cette multiplication dans la cellule C144 en utilisant la formule SUMPRODUCT. De la même manière, les cellules D144: H144 calculent le nombre de joueurs de chaque type que nous aurions une fois que les cellules de la colonne B recevraient des valeurs. Les calculs du coût total de l’équipe et du total des points projetés pour l’équipe sont analogues aux calculs précédents et utilisent également la formule SUMPRODUCT (voir cellules I144 et J144). Vous pouvez essayer de choisir certains joueurs à la main (en mettant 1 dans certaines cellules de la colonne B) pour voir comment les valeurs des cellules de la ligne 144 changeront.

Si vous ouvrez maintenant la fenêtre du solveur Excel (sous l’onglet Données, si votre complément de solveur est actif), vous verrez que j’ai déjà configuré l’ensemble du modèle pour vous. Si vous n’avez jamais utilisé le solveur Excel auparavant, la vidéo en deux parties suivante vous aidera à démarrer: partie 1 et partie 2.

La cellule objective est J144, et c’est ce que nous voulons maximiser. Les variables (alias cellules changeantes) sont les sélections de joueurs dans la colonne B, plus les décisions de type joueur flexible (cellules D147: F147). Les contraintes disent que: (1) le nombre réel de joueurs de chaque type (C144: H144) est égal au nombre souhaité de chaque type (C146: H146), (2) le coût total de l’équipe (I144) ne dépasse pas le budget (I146), (3) les trois variables binaires de joueur flexible totalisent 1 (D150 = F150) et, (4) toutes les variables du problème sont binaires. (J’ai mis à zéro le nombre requis de kickers dans la cellule G146 car nous utilisons l’option flex-player. Si vous pouvez avoir à la fois un joueur flexible et un kicker, tapez simplement un 1 dans la cellule G146.) Si vous cliquez sur le bouton « Résoudre », vous verrez que la meilleure réponse est une équipe qui coûte exactement 50 000 $ et a une valeur totale de points projetée de 78,3. Son joueur flex a fini par être un RB.

Ce modèle est assez petit pour que je puisse le résoudre avec la version étudiante gratuite d’Excel Solver (qui vient par défaut avec toute installation Office). S’il vous arrive d’avoir plus de joueurs et que votre nombre total de variables dépasse 200, le solveur gratuit ne fonctionnera pas. Mais ne désespérez pas! Il existe un excellent complément de solveur pour Excel qui est également gratuit et sans limite de taille. Cela s’appelle OpenSolver, et cela fonctionnera exactement avec la même configuration que j’ai ici.

Articles

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.