X

Prywatność & Pliki cookie

ta strona używa plików cookie. Kontynuując, zgadzasz się na ich użycie. Dowiedz się więcej, w tym jak kontrolować pliki cookie.

Mam!

ogłoszenia

Uwaga 1: jest to część 1 dwuczęściowego postu na temat budowania drużyn fantasy league. Przeczytaj to najpierw, a następnie przeczytaj część 2 tutaj.

Uwaga 2: Chociaż tytuł mówi „Fantasy Football”, model, który opisuję poniżej, można zasadniczo zmodyfikować, aby pasował do każdej ligi fantasy dla każdego sportu.

football ostatnio kilka osób (niektórzy studenci, niektórzy przyjaciele) zwróciło się do mnie z prośbą o stworzenie optymalnych drużyn dla fantasy football leagues. Z niedawnym wzrostem witryn bukmacherskich, takich jak Fan Duel i Draft Kings, stało się to wielomilionowe (a może raczej miliardowe?) przemysł dolarowy. Więc pomyślałem, że napiszę prosty przepis, żeby wszystkim pomóc. Wykorzystamy analitykę Preskryptywną do obstawiania zakładów sportowych. Gotowy? Zróbmy to! Zacznę od modelu matematycznego, a następnie pokażę, jak to wszystko działa za pomocą arkusza kalkulacyjnego.

Regulamin

Regulamin fantasy football team mówi, że drużyna musi składać się z:

  • 1 rozgrywający (QB)
  • 2 running backs (RB)
  • 3 wide Receiver (WR)
  • 1 tight end (TE)
  • 1 kicker
  • 1 defense

niektóre ligi mają również tak zwany „Flex player”, który może być RB, WR, albo te. Poniżej wyjaśnię, jak obsługiwać flex player. Ponadto gracze mają koszt, a osoba tworząca drużynę ma budżet, nazywając go B, do przestrzegania (Zwykle B to $50,000 lub $ 60,000).

dane

dla każdego gracza i, otrzymujemy wspomniany powyżej koszt, nazwijmy go c_i, a rzut punktowy p_i. Ta ostatnia jest szacunkową liczbą punktów, których spodziewamy się, że gracz zdobędzie w danym tygodniu lub grze. Jeśli chodzi o obronę, chociaż nie zawsze zdobywa punkty, istnieje również sposób na obliczenie za nią punktów (np. punkty uniemożliwione). Jak obliczane są te projekcje punktowe? To właśnie w tym miejscu wkracza Analiza predykcyjna. Zasadniczo to prognozowanie. Patrzysz na przeszłe / ostatnie wyniki, patrzysz na nadchodzącego przeciwnika, patrzysz na zdrowie graczy itp. Istnieją strony internetowe, które dostarczają tych prognoz, lub można obliczyć własne. Im dokładniejsze są te prognozy, tym większe prawdopodobieństwo, że zarobisz na zakładach. Tutaj, weźmiemy te liczby jak podano.

Model optymalizacji

główne decyzje, które należy podjąć są proste: którzy gracze powinni być w naszej drużynie? Może to być modelowane jako zmienna decyzji tak/nie dla każdego gracza. Stwórzmy więc zmienną binarną o nazwie x_i, która może przyjmować tylko dwie wartości: jest równa wartości 1, gdy gracz i jest w naszej drużynie, i jest równa wartości zero, gdy gracz i nie jest w naszej drużynie. Wartość i(ID gracza) waha się od 1 do całkowitej liczby graczy dostępnych dla nas.

naszym celem jest stworzenie zespołu o jak największej łącznej wartości przewidywanych punktów. Oznacza to, że chcemy zmaksymalizować sumę rzutów punktowych wszystkich graczy, których zaliczamy do drużyny. Wzór ten wygląda następująco:

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

powyższy wzór działa, ponieważ gdy gracz jest w drużynie (x_i=1), jego p_i zostaje pomnożony przez jeden i jest dodawany do sumy, a gdy gracz nie jest w drużynie (x_i=0) jego p_i dostaje pomnożona przez zero i nie zostanie dodana do ostatecznej sumy. Mechanizm, który właśnie opisałem, jest główną ideą, która sprawia,że wszystkie formuły w tym modelu działają. Na przykład, jeśli przewidywania punktowe dla pierwszych 3 graczy wynoszą 12, 20 i 10, funkcja maksymalizacji zaczyna się od: \max 12x_1 + 20x_2 + 10x_3 + \cdots

ograniczenie budżetowe można zapisać, mówiąc, że suma kosztów wszystkich graczy w naszej drużynie musi być mniejsza lub równa naszemu budżetowi B, w ten sposób:

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

na przykład, jeśli pierwsze 3 odtwarzacze kosztują 9000, 8500 i 11000, a nasz budżet wynosi 60 000, powyższy wzór wyglądałby następująco: 9000x_1 + 8500x_2 + 11000x_3 + \cdots \leq 60000.

aby upewnić się, że drużyna ma odpowiednią liczbę graczy na każdej pozycji, robimy to pozycja po pozycji. Na przykład, aby wymagać, aby drużyna miała jednego rozgrywającego, piszemy:

\displaystyle \sum_ {\text {all} i \text{ that are quarterbacks}} x_i = 1

aby zażądać, aby zespół miał dwóch biegaczy i trzech szerokich odbiorców, piszemy:

\displaystyle \sum_ {\text{all} i \text{ that are running backs}} x_i = 2

\displaystyle \sum_ {\text{all} i \text{ that are wide receiver}} x_i = 3

ograniczenia dla pozostałych pozycji byłyby:

\displaystyle \sum_ {\text{all} i \text{ that are tight ends}} x_i = 1

\displaystyle \sum_ {\text {all} i \text{ that are kickers}} x_i = 1

\displaystyle \sum_ {\text {all} i \text{ that are defenses}} x_i = 1

Ciekawy przypadek Flex Player

flex player dodaje ciekawego Twista do tego modelu. Jest to gracz, który, jeśli dobrze rozumiem, zajmuje miejsce Kickera (co oznacza, że nie mielibyśmy powyższego ograniczenia Kickera) i może być RB, WR lub TE. Dlatego od razu musimy podjąć nową decyzję: jakim graczem powinien być flex? Stwórzmy trzy nowe zmienne tak / nie reprezentujące tę decyzję:  f_ {\text {RB}}, f_{\text{WR}} i f_{\text{TE}}. Te zmienne oznaczają odpowiednio: czy flex RB?, czy flex WR? i czy flex jest TE? Aby wskazać, że tylko jedna z tych rzeczy może być prawdziwa, piszemy ograniczenie poniżej:

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

Ponadto posiadanie flex Playera jest równoznaczne ze zwiększeniem prawej strony ograniczeń, które liczą liczbę RB, WR i TE przez jeden, ale tylko dla jednego z tych ograniczeń. Osiągamy to, zmieniając te ograniczenia z formatu, który mieli powyżej, na następujący:

\displaystyle \sum_ {\text {all} i \text{ that are running backs}} x_i = 2 + f_ {\text{RB}}

\displaystyle \sum_ {\text {all} i \text{ that are wide receiver}} x_i = 3 + f_ {\text{WR}}

\displaystyle \sum_ {\text {all} i \text{ that are tight ends}} x_i = 1 + f_ {\text {TE}}

zauważ, że ponieważ tylko jedna ze zmiennych f może być równa 1, tylko jedno z trzech powyższych ograniczeń będzie miało swoją prawą stronę zwiększoną od pierwotnej wartości 2, 3 lub 1.

inne potencjalne wymagania

ze względu na osobiste preferencje, informacje wewnętrzne lub inne Ezoteryczne względy, można chcieć uwzględnić inne wymagania w tym modelu. Na przykład, jeśli chcę, aby najlepsza drużyna, która zawiera numer gracza 8 i wyklucza numer gracza 22, po prostu muszę wymusić zmienną x gracza 8 na 1, A zmienną x gracza 22 na zero. Innym ograniczeniem, które może się przydać, jest stwierdzenie, że jeśli gracz 9 jest w drużynie, to gracz 10 również musi być w drużynie. Osiąga się to poprzez:

x_9 \ leq x_{10}

jeśli chcesz odwrotnie, to znaczy, że jeśli gracz 9 jest w drużynie, to gracz 10 nie jest w drużynie, napiszesz:

x_9 + x_{10} \ leq 1

możliwe są również inne warunki w tym zakresie.

składając to wszystko do kupy

jeśli byłeś wystarczająco cierpliwy, aby trzymać się mnie przez całą drogę tutaj, jesteś chętny do wprowadzenia tej matematyki do pracy. Zróbmy to za pomocą programu Microsoft Excel. Zacznij od pobrania tego arkusza kalkulacyjnego i otwarcia go na komputerze. Oto co zawiera:

  • Kolumna A: Lista nazwisk graczy.
  • Kolumna B: tak / nie decyzje o tym, czy zawodnik jest w drużynie(są to zmienne x, które Excel Solver wyliczy dla nas).
  • kolumny od C do H: flagi wskazujące, czy gracz jest danego typu (0 = nie, 1 = tak).
  • kolumny I I J: prognozy kosztów i punktów dla każdego gracza.

teraz przewiń w dół, aby zobaczyć wiersze od 144 do 150. Pola w kolumnie B są obecnie puste, ponieważ nie wybraliśmy jeszcze graczy, którzy mają zostać dodani do drużyny. Ale gdyby te wybory zostały dokonane (to znaczy, gdybyśmy wypełnili kolumnę B z 0 i 1), pomnożenie kolumny B z kolumną C w sposób komórkowy i dodanie tego wszystkiego powiedziłoby Ci, ile masz ćwiartek. Uwzględniłem to mnożenie w komórce C144 za pomocą wzoru SUMPRODUCT. W podobny sposób komórki D144: H144 obliczają, ilu graczy każdego rodzaju mielibyśmy, gdy komórki w kolumnie B otrzymają wartości. Obliczenia całkowitego kosztu zespołu i całkowitych przewidywanych punktów dla zespołu są analogiczne do poprzednich obliczeń, a także wykorzystują wzór SUMPRODUCT (patrz komórki I144 i J144). Możesz spróbować ręcznie wybrać niektórych graczy (umieszczając 1 w niektórych komórkach kolumny B), aby zobaczyć, jak zmienią się wartości komórek w wierszu 144.

jeśli teraz otworzysz okno Solver programu Excel (na karcie Dane, jeśli dodatek Solver jest aktywny), zobaczysz, że mam już skonfigurowany dla ciebie cały model. Jeśli nigdy wcześniej nie korzystałeś z programu Excel Solver, poniższy dwuczęściowy film pozwoli Ci zacząć z nim korzystać: Część 1 i część 2.

celną komórką jest j144 i to chcemy zmaksymalizować. Zmienne (a.k.a. zmiana komórek) są wyborem gracza w kolumnie B, plus decyzje typu flex-player (komórki D147:F147). Ograniczenia mówią, że: (1) Rzeczywista liczba graczy każdego typu (C144: H144) jest równa żądanej liczbie każdego typu (C146: H146), (2) całkowity koszt drużyny (I144) nie przekracza budżetu (I146), (3) trzy zmienne binarne flex-player sumują się do 1 (D150 = F150) i, (4) wszystkie zmienne w problemie są binarne. (Ustawiłem wymaganą liczbę kopaczy w komórce G146 na zero, ponieważ używamy opcji flex-player. Jeśli możesz mieć zarówno flex player, jak i kicker, po prostu wpisz 1 w komórce g146.) Jeśli klikniesz na przycisk „Rozwiąż”, zobaczysz, że najlepszą odpowiedzią jest drużyna, która kosztuje dokładnie 50 000 $i ma całkowitą przewidywaną wartość punktową 78,3. Jego flex player zakończył się RB.

ten model jest na tyle mały, że mogę go rozwiązać za pomocą darmowej studenckiej wersji Excela Solver (która jest domyślnie z każdą instalacją pakietu Office). Jeśli zdarzy ci się mieć więcej graczy, a całkowita liczba zmiennych przekroczy 200, Darmowy solver nie będzie działał. Ale nie rozpaczaj! Istnieje świetny dodatek Solver dla programu Excel, który jest również bezpłatny i nie ma limitu rozmiaru. Nazywa się OpenSolver i będzie działał z dokładnie tą samą konfiguracją, którą mam tutaj.

Articles

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.