Determining Tournament Payout Structures
for Daily Fantasy Sports
Christopher Musco

∗

Maxim Sviridenko

†

Justin Thaler

‡

arXiv:1601.04203v2 [cs.DS] 4 Nov 2016

November 7, 2016

Abstract
With an exploding global market and the recent introduction of online cash prize tournaments, fantasy sports contests are quickly becoming a central part of the social gaming and
sports industries. For sports fans and online media companies, fantasy sports contests are an
opportunity for large financial gains. However, they present a host of technical challenges that
arise from the complexities involved in running a web-scale, prize driven fantasy sports platform.
We initiate the study of these challenges by examining one concrete problem in particular:
how to algorithmically generate contest payout structures that are 1) economically motivating
and appealing to contestants and 2) reasonably structured and succinctly representable. We
formalize this problem and present a general two-staged approach for producing satisfying payout
structures given constraints on contest size, entry fee, prize bucketing, etc.
We then propose and evaluate several potential algorithms for solving the payout problem
efficiently, including methods based on dynamic programming, integer programming, and heuristic techniques. Experimental results show that a carefully designed heuristic scales very well,
even to contests with over 100,000 prize winners.
Our approach extends beyond fantasy sports – it is suitable for generating engaging payout
structures for any contest with a large number of entrants and a large number of prize winners,
including other massive online games, poker tournaments, and real-life sports tournaments.

∗

Massachusetts Institute of Technology. Worked completed while at Yahoo Labs. Email: cpmusco@mit.edu
Yahoo Labs. Email: sviri@yahoo-inc.com
‡
Georgetown University. Worked completed while at Yahoo Labs. Email: jthaler@fas.harvard.edu
†

1

Introduction

In many competitions, a large number of entrants compete against each other and are then ordered
based on performance. Prize money is distributed to the entrants based on their rank in the order,
with higher ranks receiving more money than lower ranks. The question that we are interested in
is: how should prize money be distributed among the entrants? That is, how much money should
go to the winner of the contest? How much to 2nd place? How much to 1,128th place?

1.1

Motivation

We became interested in this problem in the context of daily fantasy sports 1 , a growing sector of
online fantasy sports competitions where users pay a fee to enter and can win real prize money.
Daily fantasy sports were legalized in the United States in 2006 by the Unlawful Internet
Gambling Enforcement Act, which classified them as games of skill. Since then, the industry has
been dominated by two companies, FanDuel and DraftKings. In 2015, these companies collected
a combined $3 billion in entry fees, which generated an estimated $280 million in revenue [12].
Analysts project continued industry growth as daily fantasy attracts a growing portion of the 57
million people who actively play traditional fantasy sports [7, 9].
Yahoo launched a daily fantasy sports product in July 2015. Work on the contest management
portion of this product has led to interesting economic and algorithmic challenges involving player
pricing, revenue maximization, fill-rate prediction and of course, payout structure generation.
The Importance of Payout Structure. Payout structure has been identified as an important
factor in determining how appealing a competition is to users. Payouts are regularly discussed
on forums and websites devoted to the daily fantasy sports industry, and these structures have a
substantial effect on the strategies that contest entrants pursue (see, e.g., [1, 14, 2, 6, 10]).
Furthermore, considerable attention has been devoted to payout structures in related contexts.
For example, popular articles discuss the payout structures used in World Series of Poker (WSOP)
events (see Section 2.1 for details), and at least one prominent poker tournament director has said
that “payout structure could determine whether or not a player comes back to the game.” [18].

1.2

Payouts in Daily Fantasy Sports

For some types of fantasy sports contests, the appropriate payout structure is obvious. For example,
in a “Double Up” contest, roughly half of the entrants win back twice the entry fee, while the other
half wins nothing. However, some of the most popular contests are analogous to real-world golf and
poker tournaments, in which the winner should win a very large amount of money, second place
should win slightly less, and so on. We refer to such competitions as tournaments.
Manually determining a reasonable payout structure for each tournament offered is unprincipled and laborious, especially when prize pools and contestant counts vary widely across contests.
Furthermore, given typical constraints, manually constructing even a single payout structure is
difficult, even “virtually impossible” in the words of a WSOP Tournament Director [18]. The challenge is amplified for online tournaments where the number of contestants and prizes awarded can
be orders of magnitude larger than in traditional gaming and sporting: FanDuel and DraftKings
run contests with hundreds of thousands of entrants and up to $15 million in prizes. Accordingly,
our goal is to develop efficient algorithms for automatically determining payouts.

1.3

Summary of Contributions

Our contributions are two-fold. First, we (partially) formalize the properties that a payout structure
for a daily fantasy tournament should satisfy. Second, we present several algorithms for calculating
such payout structures based on a general two stage framework. In particular, we present an efficient
heuristic that scales to extremely large tournaments and is currently in production at Yahoo.
All methods are applicable beyond fantasy sports to any large tournament, including those for
golf, fishing, poker, and online gaming (where very large prize pools are often crowd-funded [8]).
1
In fantasy sports, participants build a team of real-world athletes, and the team earns points based on the actual
real-world performance of the athletes. Traditional fantasy sports competitions run for an entire professional sports
season; daily sports competitions typically run for just a single day or week.

1

2

Payout Structure Requirements

We begin by formalizing properties that we want in a payout structure. A few are self-evident.
• (Prize Pool Requirement) The total amount of money paid to the users must be equal to
the Total Prize Pool. This is a hard requirement, for legal reasons: if a contest administrator
says it will pay out $1 million, it must pay out exactly $1 million.
• (Monotonicity Requirement) The prizes should satisfy monotonicity. First place should
win at least as much as second place, who should win at least as much as third, and so on.
There are less obvious requirements as well.
• (Bucketing Requirement) To concisely publish payout structures, prizes should fall into
a manageable set of “buckets” such that all users within one bucket get the same prize. It is
not desirable to pay out thousands of distinct prize amounts.
• (Nice Number Requirement) Prizes should be paid in amounts that are aesthetically
pleasing. Paying a prize of $1, 000 is preferable to $1, 012.11, or even to $1, 012.
• (Minimum Payout Requirement): It is typically unsatisfying to win an amount smaller
than the entry fee paid to enter the contest. So any place awarded a non-zero amount should
receive at least some minimum amount E. Typically, we set E to be 1.5 times the entry fee.
Finally, the following characteristic is desirable:
• (Monotonic Bucket Sizes): Buckets should increase in size when we move from higher
ranks to lower ranks. For example, it is undesirable for 348 users to receive a payout of $20,
2 users to $15, and 642 users to receive $10.
Of course, it is not enough to simply find a payout structure satisfying all of the requirements
above. For example, a winner-take-all payout structure satisfies all requirements, but is not appealing to entrants. Thus, our algorithms proceed in two stages. We first determine an “initial”,
or ideal, payout structure that captures some intuitive notions of attractiveness and fairness. We
then modify the initial payout structure as little as possible to satisfy the requirements.
Before discussing this process, three final remarks regarding requirements are in order.
Small Contests. In tournaments with few entrants, it is acceptable to pay each winner a distinct
prize. In this case, the bucketing requirement is superfluous and choosing payouts is much easier.
Handling Ties. In daily fantasy sports and other domains such as poker and golf, entrants who
tie for a rank typically split all prizes due to those entrants equally. Accordingly, even if the initial
payout structure satisfies the Nice Number Requirement, the actual payouts may not. However,
this is inconsequential: the purpose of the Nice Number Requirement is to ensure that aesthetically
pleasing payouts are published, not to ensure that aesthetically pleasing payouts are received.
What are “Nice Numbers”? There are many ways to define nice numbers, i.e., the numbers
that we deem aesthetically pleasing. Our algorithms will work with any such definition, as long
as it comes with an algorithm that, given a number a ∈ R, can efficiently return the largest nice
number less than or equal to a. Here we give one possible definition.
Definition 2.1 (Nice Number). A nonnegative integer X ∈ Z+ is a “nice number” if X = A · 10K
where K, A ∈ Z+ , and A ≤ 1000 satisfies all of the following properties:
1. if A ≥ 10 then A is a multiple of 5;
2. if A ≥ 100 then A is a multiple of 25;
3. if A ≥ 250 then A is a multiple of 50.
Under Definition 2.1, the nice numbers less than or equal to 1000 are:
{1, 2, 3, . . . , 10, 15, 20, . . . , 95, 100, 125, 150, . . . , 225, 250, 300, 350, . . . , 950, 1000}
The nice numbers between 1000 and 3000 are {1000, 1250, 1500, 1750, 2000, 2250, 2500, 3000}.
2

2.1

Prior Work

While our exact requirements have not been previously formalized, observation of published payout
structures for a variety of contests suggests that similar guiding principals are standard. Moreover,
manually determining payouts to match these requirements is, anecdotally, not an easy task. For
example, it is not hard to find partially successful attempts at satisfying nice number constraints.
10 5

$15,200
$11,400
$10,200
$8900
$7600
$6400
$5100
$3800
$3500
$3200
$3000

i

log (payout )

$51,400

10

10 4

10 3

0

5

10

15

$2500

$2200

20

winner

25

$1900

30

$1600

35

i

Figure 1: Bassmaster Open payouts are not quite “nice numbers” [3].
For example, consider the 2015 Bassmaster Open fishing tournament, which paid out a top
prize of $51,400, instead of the rounder $51,000 or $50,000 (see Figure 1). The Bassmaster payout
structure also violates our constraint on bucket size monotonicity. Similar “partially optimized”
payout structures can be found for poker [19, 18], golf [21], and other tournaments.
Payout Structures for Poker. Several popular articles describe the efforts of the World Series Of
Poker (WSOP), in conjunction with Adam Schwartz of Washington and Lee University, to develop
an algorithm for determining payout structures for their annual “Main Event” [23, 18]. Schwartz’s
solution, which was based on Newton’s Method, was combined with manual intervention to determine the final payout structure in 2005. WSOP still utilized considerable manual intervention
when determining payouts until an update of the algorithm in 2009 made doing so unnecessary.
While a formal description of the algorithm in unavailable, it appears to be very different from
ours; Schwartz has stated that their solution attempts to obtain payout structures with a “constant
second derivative” (our solutions do not satisfy this property). Their work also departs qualitatively
from ours in that they do not consider explicit nice number or bucket size requirements.
Piecewise Function Approximation. As mentioned, our payout structure algorithms proceed in
two stages. An initial payout curve is generated with a separate payout for every winning position.
The curve is then modified to fit our constraints, which requires bucketing payouts so that a limited
number of distinct prizes are paid. We seek the bucketed curve closest to our initial payout curve.
This curve modification task is similar to the well studied problem of optimal approximation
of a function by a histogram (i.e., a piecewise constant function). This problem has received
considerable attention, especially for applications to database query optimization [15]. While a
number of algorithmic results give exact and approximate solutions [17, 13], unfortunately no
known solutions easily adapt to handle our additional constraints beyond bucketing.

3

Our Solution

Let B denote the total prize pool, N denote the number of entrants who should win a non-zero
amount, and Pi denote the prize that we decide to award to place i. In general, B, P1 and N are
user-defined parameters. P1 can vary widely in fantasy sports contests, anywhere from .05 · B to
nearly .5 · B, but .15 · B is a standard choice (i.e., first place wins 15% of the prize pool). Typically,
N is roughly 25% of the total number of contest entrants, although it varies as well.
Our solution proceeds in two stages. We first determine an initial payout structure that does
not necessarily satisfy Bucketing or Nice Number requirements. The initial payout for place i is
denoted πi . We then modify the payouts to satisfy our requirements. In particular, we search for
feasible payouts P1 , . . . , PN that are nearest to our initial payouts in terms of sum-of-squared error.
3

3.1

Determining the Initial Payout Structure

10 6

10 5

10 5

10 4

10 4

i

10 6

payout

payout

i

First, to satisfy the Minimum Payout Requirement, we start by giving each winning place E dollars.
This leaves B − N · E additional dollars to disperse among the N winners. How should we do this?
We have decided that it is best to disperse the remaining budget according to a power law.
That is, the amount of the budget that is given to place i should be proportional to 1/iα for some
fixed constant α > 0. It is easy to see that for any positive value of α, the resulting payouts will
satisfy the Monotonicity Requirement, but there is a unique value of α ensuring that the payouts
sum to exactly the Total Prize Pool B. Specifically, we need to choose the exponent α to satisfy
N
X
P1 − E
.
B−N ·E =
iα
i=1
We can efficiently solve this equation for α to additive error less than .01 via binary search. We
. This definition ensures both that first
then define the ideal payout to place i to be πi := E + P1i−E
α
place gets paid exactly $P1 , and that the sum of all of the tentative payouts is exactly B.

10 3

10

2

10

1

0

2000

4000

6000

8000

10000

10 3

10

2

10

1

0

2000

4000

6000

8000

10000

winneri

winneri

(a) Ideal payouts using power law method.

(b) Ideal payouts using exponential distribution.

Figure 2: Possible initial payout structure when N = 10,000, P1 = 150,000, and B = 1 million.
Why use a power law? Empirically, a power law ensures that as we move from 1st place to 2nd
to 3rd and so on, payouts drop off at a nice pace: fast enough that top finishers are richly rewarded
relative to the rest of the pack, but slow enough that users in, say, the 10th percentile still win a
lot of money. A power law curve also encourages increased prize differences between higher places,
a property cited as a desirable by WSOP organizers [18].
For illustration, consider a tournament where 40,000 entrants vie for $1 million. If 1st place
wins 15% of the prize pool and 25% of entrants should win a non-zero prize, then P1 = $150, 000
and N = 10, 000. Figure 2a reveals the initial payouts determined by our power law method.
Figure 2b reveals what initial payouts would be if we used an exponential distribution instead,
with prizes proportional to 1/αi rather than 1/iα . Such distributions are a popular choice for smaller
tournaments, but the plot reveals that they yield much more top-heavy payouts than a power law
approach. In our example, only the top few dozen places receive more than the minimum prize.
7

7

10

10

FanDuel NFL Kickoff Tournament
FanDuel MLB Monster Tuesday
DraftKings PGA Millionaire Maker
DraftKings NFL Kickoff Tournament

6

10

World Series of Poker 2015
Masters 2015 (golf)
Bassmaster 2015 (fishing)

5

6

10

payouti

payouti

10

4

10

3

5

10

10

2

10

1

10 0
10

4

1

10

2

10

3

10

4

10

5

10

10 0
10

6

10

1

2

10

10

3

10

winneri

winneri

(a) Large fantasy sports tournaments.

(b) Other well known tournaments.

Figure 3: Log plots of existing tournament payout structures indicate linear structure.
As further justification, we check in Figure 3 that a power law roughly models payouts for
existing fantasy sports contests and other large tournaments. Since log(iα ) = α log(i), plotting
4

payouts with both axes on a logarithmic scale will reveal a linear trend when the payout distribution
approximates a power law. This trend is visible in all of the tournaments checked in Figure 3.
Obtaining quantitative goodness-of-fit metrics for the power law can be difficult [4] especially
given the heavy “value binning” present in payout structures [22]. Nevertheless, standard fitting
routines [5] yield an average p-value of .237 for the Figure 3 tournaments. This value is in line with
calculated p-values for well known empirical power law distributions with binned values [22].
Overall, the power law’s simplicity, empirical effectiveness, and historical justification make it
an ideal candidate for generating initial prize values.

3.2

Satisfying the Remaining Requirements

Now that we have an initial payout structure (π1 , . . . , πN ), our goal becomes to identify a related
payout structure that is “close” to this ideal one, but satisfies our Bucketing and Nice Number
requirements. To measure “closeness” of payout structures we have found that (squared) Euclidean
distance works well in practice:
we define the distance between two payout structures (P1 , . . . , PN )
P
2
and (Q1 , . . . , QN ) to be N
(P
i=1 i − Qi ) . This metric is equivalent to the popular “V-optimal”
measure for approximation of a function by a general histogram [16].
With a metric in hand, our task is formalized as an optimization problem, Problem 3.1. Specifically, suppose we are given a target number of buckets r. Then the goal is to partition the set
{1, . . . , N } into r buckets S1 , . . . , Sr (each containing a set of consecutive places), and to choose a
set of payouts Π1 , . . . , Πr for each bucket, forming a final solution (S1 , . . . , Sr , Π1 , . . . , Πr ).
Problem 3.1 (Payout Structure Optimization). For a given set of ideal payouts
{π1 , . . . , πN } for N contest winners, a total prize pool of B, and minimum payout E, find
(S1 , . . . , Sr , Π1 , . . . , Πr ) to optimize:
r X
X
(πi − Πj )2 subject to:
min
j=1 i∈Sj

E ≤ Πr < Πr−1 < · · · < Π1 ,
r
X
Πj |Sj | = B,

(Monotonicity & Min. Payout Requirements)
(Prize Pool Requirement)

j=1

Πj is a “nice number” ,
r
X
|Sj | = N,

j ∈ [r]∗

(Nice Number Requirement)
(Ensure Exactly N Winners)

j=1

0 ≤ |S1 | ≤ |S2 | < · · · ≤ |Sr |,
(Monotonic Bucket Sizes† )
nP
o
P
P
where Sj =
|S
|
+
1,
|S
|
+
2,
.
.
.
,
|S
|
for j ∈ [r].
i
i
i
i<j
i<j
i≤j
∗
†

For ease of notation we use [T ] to denote the set of integers {1, 2, . . . , T }.
Setting S1 = ∅, S2 = ∅, etc. chooses a payout structure with fewer buckets than the maximum allowed.

One advantage of our approach is that Problem 3.1 is agnostic to the initial curve (π1 , . . . , πN ).
Our algorithms could just as easily be applied to an ideal payout curve generated, for example,
using the “constant second derivative” methodology of the World Series of Poker [18].
Problem Feasibility. Note that, for a given set of constraints, Problem 3.1 could be infeasible
as formulated: it may be that no assignment to (S1 , . . . , Sr , Π1 , . . . , Πr ) satisfies the Nice Number
and Bucket Size Monotonicity constraints while giving payouts that sum to B. While the problem
is feasible for virtually all fantasy sports tournaments tested (see Section 6), we note that it is easy
to add more flexible constraints that always yield a feasible solution. For example, we can soften
the requirement on N by adding a fixed objective function penalty for extra or fewer winners.
With this change, Problem 3.1 is feasible whenever B is a nice-number: we can award a prize

5

of B to first place and prizes of zero to all other players. Experimentally, there are typically many
feasible solutions, the best of which are vastly better than the trivial “winner-take-all” solution.
Exact Solution via Dynamic Programming. While Problem 3.1 is complex, when feasible
it can be solved exactly in pseudo-polynomial time via multi-dimensional dynamic programming.
The runtime of the dynamic program depends on the number of potential prize assignments, which
includes all of the nice numbers between E and B. Since many reasonable definitions (including
our Definition 2.1) choose nice numbers to spread out exponentially as they increase, we assume
that this value is bounded by O(log B).
Theorem 3.2 (Dynamic Programming Solution). Assuming that there are O(log B) nice numbers
in the range [E, B], then Problem 3.1 can be solved in pseudo-polynomial time O(rN 3 B log2 B).
A formal description of the dynamic program and short proof of its correctness are included
in Appendix A. Unfortunately, despite a reasonable theoretical runtime, the dynamic program
requires O(rN 2 B log B) space, which quickly renders the solution infeasible in practice.

4

Integer Linear Program

Alternatively, despite its complexity, we show that it is possible to formulate Problem 3.1 as a
standard integer linear program. Since integer programming is computationally hard in general,
this does not immediately yield an efficient algorithm for the problem. However, it does allow for
the application of off-the-shelf optimization packages to the payout structure problem.
Problem 4.1 (Payout Structure Integer Program). For a given set of ideal payouts
{π1 , . . . , πN }, a total prize pool of B, a given set of acceptable prize payouts {p1 > p2 >
. . . > pm }, and an allowed budget of r buckets solve:
X
min
xi,j,k · (πi − pk )2
subject to:
i∈[N ],j∈[r],k∈[m]

Problem constraints:

X

(k + 1/2) · x̃j,k − k · x̃j+1,k ≤ 0,

j ∈ [r − 1],

(Monotonicity Requirements)

k∈[m]

X

xi,j,k · pk = B,

(Prize Pool Requirement)

i∈[N ],j∈[r],k∈[m]

X

xi,j,k − xi,j+1,k ≤ 0,

j ∈ [r − 1],

(Monotonic Bucket Sizes)

Consistency constraints:
X
xi,j,k = 1,

i ∈ [N ],

(One Bucket Per Winner)

x̃j,k ≤ 1,

j ∈ [r],

(One Prize Per Bucket)

i∈[N ],k∈[m]

j∈[r],k∈[m]

X

k∈[m]

x̃j,k − xi,j,k ≥ 0, i ∈ [N ], j ∈ [r], k ∈ [m], (Prize Consistency)
To keep the formulation general, assume that we are given a fixed set of acceptable prize payouts,
{p1 > p2 > . . . > pm }. These payouts may be generated, for example, using Definition 2.1 for nice
numbers. In our implementation, the highest acceptable prize is set to p1 = P1 , where P1 is the
pre-specified winning prize. Additionally, to enforce the minimum payout requirement, we chose
pm ≥ E. Our integer program, formalized as Problem 4.1, involves the following variables:
• N × r × m binary “contestant variables” xi,j,k . In our final solution, xi,j,k = 1 if and only if
contestant i is placed in prize bucket Sj and receives payout pk .
• r × m binary “auxiliary variables” x̃j,k . x̃j,k = 1 if and only if bucket Sj is assigned payout
pk . Constraints ensure that xi,j,k only equals 1 when x̃j,k = 1. If, for a particular j, x̃j,k = 0
for all k then Sj is not assigned a payout, meaning that the bucket is not used.
6

It is easy to extract a payout structure from any solution to the integer program. Showing that
the payouts satisfy our Problem 3.1 constraints is a bit more involved. A proof is in Appendix B.

5

Heuristic Algorithm

Next we describe a heuristic algorithm for Problem 3.1 that is used in production at Yahoo. The
algorithm is less rigorous than our integer program and can potentially generate payout structures
that violate constraints. However, it scales much better than the IP and experimentally produces
stellar payouts. The heuristic proceeds in four stages.
Stage 1: Initialize Bucket Sizes. First the algorithm chooses tentative bucket sizes |S1 | ≤ . . . ≤
|Sr |. We set |S1 | = |S2 | = |S3 | = |S4 | = 1. The choice to use P
4 “singleton buckets” by default
is flexible: the algorithm can easily accommodate more. If N − 4i=1 |Si | = 1, we define |S5 | = 1
and stop. Otherwise we set |St | = ⌈β · |St−1
Pt|⌉ where β ≥ 1 is a parameter
Pt of the heuristic. The
2
algorithm stops when ⌈β |St |⌉ + ⌈β|St |⌉ + i=1 |Si | > N and ⌈β|St |⌉ + i=1 |Si | ≤ N . We define
'
%
&
$
P
t
X
N − ti=1 |Si |
.
|Si |/2 , |St+2 | =
|St+1 | = N −
2
i=1

An initial value for β can be determined by solving β + β 2 + . . . + β r−4 = N − 4 via binary search.
If the heuristic produces more than r buckets using the initial β, we increase β and iterate.
Stage 2: Initialize Prizes. Next, we begin by rounding the first tentative prize, π1 , down to
the nearest nice number. The difference between π1 and the rounded number is called the leftover,
which we denote by L. Iteratively, for each bucket S2 , . . . , St we sum all of the tentative prizes in
the bucket with the leftover from the previous buckets. Let Rt be this number and define Πt to
equal Rt /|St | rounded down to the nearest nice number. If Πt is greater than or equal to the prize
in bucket t − 1, Πt−1 , we simply merge all member of St into St−1 , assigning them prize Πt−1 . At
the end we may have some non-zero leftover L remaining from the last bucket.
Stage 3: Post-Process Non-monotonic Bucket Sizes. Although the initial buckets from Step
1 increase in size, potential bucket merging in Step 2 could lead to violations in the Monotonic
Bucket Size constraint. So, whenever |St | is larger than |St+1 |, we shift users to bucket t + 1 until
the situation is corrected. As a result we decrease the prizes for some users and increase the leftover
L. We repeat this process starting from S1 and ending at our lowest prize level bucket.
Stage 4: Spend Leftover Funds. Finally, we modify payouts to spend any leftover L. We first
spend as much as possible on singleton buckets 2 through 4. We avoid modifying first prize because
it is often given as a hard requirement – e.g. we want pay exactly $1 million to the winner. In
order from i = 2 to 4 we adjust Πi to equal min{Πi + L, (Πi−1 + Πi )/2}, rounded down to a nice
number. This spends as much of L as possible, while avoiding too large an increase in each prize.
If L remains non-zero, we first try to adjust only the final (largest) bucket, Sk . If L ≥ |Sk | then
we set Πk = Πk + 1 and L = L − |Sk |, i.e. we increase the prize for every user in Sk by 1. Note
that this could lead to nice number violations, which are not corrected. We repeat this process
(possibly merging buckets) until L < |Sk |. If at this point L is divisible by Πk we increase |Sk | by
L/Πk (thereby increasing the number of users winning nonzero prizes beyond N ).
If L is not divisible by Πk , we rollback our changes to the last bucket and attempt to spend L
on the last two buckets. Compute the amount of money available, which is the sum of all prizes in
these buckets plus L. Fix the last bucket prize to be the minimal possible amount, E. Enumerate
over possible sizes and integer prize amounts for the penultimate bucket, again ignoring nice number
constraints. If the last bucket can be made to have integer size (with payout E), store the potential
solution and evaluate a “constraint cost” to penalize any constraint violations. The constraint cost
charges 100 for each unit of difference if the number of winners is less than N , 1 for each unit of
difference if the number of winners is larger than N , and 10 for each unit of violation in bucket size
monotonicity. From the solutions generated return the one with minimal constraint cost.
7

6

Experiments

We conclude with experiments that confirm the effectiveness of both the integer program (Section
4) and our heuristic (Section 5). Both algorithms were implemented in Java and tested on a
commodity laptop with a 2.6 GHz Intel Core i7 processor and 16 GB of 1600 MHz DDR3 memory.
For the integer program, we employ the off-the-shelf, open source GNU Linear Programming Kit
(GLPK), accessed through the SCPSolver front-end [11, 20]. The package uses a branch-and-cut
algorithm for IPs with a simplex method for underlying linear program relaxations.
We construct experimental payout structures for a variety of daily fantasy tournaments from
Yahoo, FanDuel, and DraftKings and test on non-fantasy tournaments as well. For non-Yahoo
contests, P1 is set to the published winning prize or, when necessary, to a nearby nice number. The
maximum number of buckets r is set to match the number of buckets used in the published payout
structure. For fantasy sports, E is set to the nearest nice number above 1.5 times the entry fee.
For all other contests (which often lack entry fees or have a complex qualification structure) E is
set to the nearest nice number above the published minimum prize.
Quantitative Comparison. Our results can be evaluated by computing the Euclidean distance
between our ideal pay out curve, {π1 , . . . , πn }, and the bucketed curve {Π1 , . . . Πm }. In heuristic
solutions, if m does not equal n, we extend the curves with zeros to compute the distance (which
penalizes extra or missing winners). Our experimental data is included in Table 1. Entries of
“–” indicate that the integer program did not run to completion, possibly because no solution to
Problem 4.1 exists. The cost presented is the sum of squared distances from the bucketed payouts
to ideal power law payouts, as defined in Problem 3.1. Note that we do not provide a cost for
the source payouts since, besides the Yahoo contests, these structures were not designed to fit our
proposed ideal payout curve and thus cannot be expected to achieve small objective function values.
Table 1: Accuracy and Runtime (in milliseconds) for Integer Program (IP) vs. Heuristic (Heur.)
Source

Prize Pool

Top Prize

Min. Prize

# of
Winners

# of
Buckets

IP
Cost

IP Time
(ms)

Heur.
Cost

Heur.
Time (ms)

Yahoo
Yahoo
DraftKings
Yahoo
Yahoo
FanDuel
FanDuel
DraftKings
Yahoo
DraftKings
FanDuel
FanDuel
Bassmaster
Bassmaster
FLW Fishing
FLW Fishing
FanDuel
DraftKings
Bassmaster
FanDuel
PGA Golf
PGA Golf
DraftKings
Poker Stars
WSOP

90
180
500
2250
3000
4000
4000
5000
10000
10000
18000
100000
190700
190000†
751588
751500†
1000000
1000000
1031500
5000000
9715981
1000000†
10000000
10393400
60348000

25
55
100
650
300
900
800
1250
1000
1500
4000
10000
50000
50000
100000
100000
100000
100000
30000
1000000
1800000
1800000
2000000
1750000
8000000

2
3
8
150
2
50
75
150
7
75
150
2
2000
2000
9000
9000
15
5
10000
40
20000
20000
25
15000
15000

30
30
20
7
850
40
16
11
550
42
38
23000
40
40
60
60
16000
85000
55
46000
69
75
125000
160
1000

7
10
10
7
25
12
7
8
25
12
10
25
15
15
25
25
25
40
25
30
69
75
40
25
30

.89
2.82
6.15
32.4
–
20.7
46.6
52.5
–
61.3
161.8
–
–
2.5k
–
–
–
–
–
–
–
–
–
–
–

7.6k
725k
2.1k
4.0k
–
3716k
2.9k
6.8k
–
1291k
131k
–
–
3462k
–
–
–
–
–
–
–
–
–
–
–

2.35
3.44
9.21
187.4
86.9
58.2
230.1
123.5
97.3
173.7
347.0
3.1k
3.5k*
2.8k
6.0k*
6.0k
5.3k
25.9k
13.5k*
44.3k
254.5k*
215.9k*
78.7k
133.0k*
462.3k*

1
1
1
1
7
2
1
1
8
2
5
152
3
1
3
2
203
1.2k
14
1.0k
24
23
1.7k
27
17

Heur.
Extra
Winners
0
0
0
0
2
1
4
0
1
0
0
34
0
0
0
0
7
0
0
0
0
9
0
0
0

†
Contest is identical to the contest in the preceding row, but with the prize pool rounded to a nearby number in
an effort to force a solution involving only nice numbers to exist.
*
Heuristic produced solution with nice number constraint violation for a single bucket.

As expected, when it succeeds in finding a solution, the integer program consistently outperforms
the heuristic. However, the difference is rarely large, with heuristic cost typically below 5x that
of the IP. Furthermore, the heuristic runs in less than 1.5 seconds for even the most challenging
contests. Its ability to generate payouts when no solution to Problem 4.1 exists is also a substantial
advantage: it always returns a solution, but potentially with a minor constraint violation.
Constraint Violations. In our experiments, any such heuristic violation was a Nice Number
violation, with no Bucket Size Monotonicity violations observed. 6 of the 7 Nice Number violations
8

are unavoidable given the input minimum prize and prize pool. For example, the Fishing League
Worldwide (FLW) fishing tournament has a prize pool of $751,588 and a minimum prize of $9,000.
Since all nice numbers greater than or equal to $9000 are multiples of $5000, it is impossible to
construct a fully satisfiable set of payouts summing to $751,588. In all cases besides one (the
PGA tournament with prize pool $9,715,981) simply rounding the prize pool to a nearby number
produced an input for which the heuristic output a solution with no constraint violations. However,
in settings where the prize pool must be a non-nice number (i.e., cannot be rounded up or down,
for whatever reason), our heuristic’s flexibility is an advantage over the more rigid integer program.
4000
FanDuel
Heuristic
Integer Program
Ideal Payouts

3500

80
i

payout

2000

400

1500

60
40

1000

200

20

500
0

DraftKings
Heuristic
Integer Program
Ideal Payouts

100

600

2500

payout i

payout

i

3000

120

FanDuel
Heuristic
Integer Program
Ideal Payouts

800

0

0

10

20
winner

30

40

0

10

i

20
winneri

30

0

40

(b) FanDuel, Baseball

(a) FanDuel, Baseball

0

5

10
winner

15

20

i

(c) DraftKings, Baseball

Figure 4: Payout structures for small daily fantasy contests
Qualitative Comparison. Beyond quantitative measures to compare algorithms for Problem 3.1,
evaluating our two stage framework as a whole requires a more qualitative approach. Accordingly,
we include plots comparing our generated payout structures to existing published structures.
For small fantasy sports contests (Figure 4) both of our algorithms match payouts from FanDuel
and DraftKings extremely well, often overlapping for large sections of the discretized payout curve.
To our knowledge, FanDuel and DraftKings have not publicly discussed their methods for computing
payouts; their methods may involve considerable manual intervention, so matching these structures
algorithmically is encouraging. In some cases, notably in Figures 4c and 4b, our payout curve is
“flatter”, meaning there is a smaller separation between the top prizes and lower prizes. Many
poker and fantasy sports players prefer flatter structures due to reduced payout variance [1, 14].
10

×10

4

2
FanDuel
Heuristic
Ideal Payouts

DraftKings
Heuristic
Ideal Payouts

i

4

1

0.5

2
0
10 0

6

1.5

6

payout

payout i

8

×10

10 1

10 2
winner

10 3

0
10 0

10 4

i

10 1

10 2

10 3
winner

10 4

10 5

i

(a) FanDuel, Football

(b) DraftKings, Football

Figure 5: Payout structures for large daily fantasy contests
We compare larger fantasy contest payouts in Figure 5, plotting the x axis on a log scale due
to a huge number of winning places (16,000 and 125,000 for 5a and 5b respectively). Again our
results are very similar to those of FanDuel and DraftKings.
We also show that our algorithms can easily construct high quality payout structures for nonfantasy tournaments, avoiding the difficulties discussed in Section 2.1. Returning to the Bassmaster
example from Figure 1, we show more satisfying structures generated by our IP and heuristic
algorithm in Figure 6. For the IP, we rounded the prize pool to $190,000 from $190,700 to ensure a
solution to Problem 4.1 exists. However, even for the original prize pool, our heuristic solution has
just one non-nice number payout of $2,700 and no other constraint violations. Both solutions avoid
the issue of non-monotonic bucket sizes exhibited by the published Bassmaster payout structure.
9

log10(payouti)

10

5

10

4

10

3

Bassmaster
Integer Program
Heurisitc

0

5

10

15

20
winner

25

30

35

40

i

Figure 6: Alternative Bassmaster Open 2015 payouts
We conclude with an example from the popular World Series of Poker (WSOP). The 2015 Main
Event payed out $60,348,000 to 1000 winners in 31 buckets with far from “nice number” prizes [24].
However, several months prior to the tournament, organizers published a very different tentative
payout structure [19], that appears to have attempted to satisfy many of the constraints of Problem
3.1: it uses mostly nice number prizes and nearly satisfies our Bucket Size Monotonicity constraint.
This tentative structure (visualized in Figure 7) suggests that WSOP organizers originally
sought a better solution than the payout structure actually used. Perhaps the effort was abandoned
due to time constraints: the WSOP prize pool is not finalized until just before the event.
We show in Table 2 that our heuristic can rapidly (in 17 milliseconds) generate an aesthetically
pleasing payout structure for the final prize pool with the initially planned top prize of $8 million,
and just one minor nice number violation (our final bucket pays $20,150). Our output and the
actual WSOP payout structure are also compared visually in Figure 7 to the power curve used in
the first stage of our algorithm. In keeping with the WSOP tradition of paying out separate prizes
to places 1-9 (the players who make it to the famous “November Nine” final table) we run our
heuristic with 9 guaranteed singleton buckets instead of 4 (see Section 5 for details).
10 7

i

10 6

2015 WSOP
Payouts
Place
Prize
1
$7,680,021
2
$4,469,171
3
$3,397,103
4
$2,614,558
5
$1,910,971
6
$1,426,072
7
$1,203,193
8
$1,097,009
9
$1,001,020
10
$756,897
11 - 12
$526,778
13 - 15
$411,453
16 - 18
$325,034

WSOP Tentative

$8,000,000
$4,663,527
$3,500,000
$2,750,000
$2,000,000
$1,500,000
$1,250,000
$1,100,000
$1,000,000

payout

$550,000

$142,500

10 5
$50,000

$20,850

10 4

0

200

$16,750

400

600

winner
10

7

10

6

$15,000

800

1000

i

payout

i

WSOP Payouts
Heuristic
Initial Power Law

10 5

10 4

0

200

400

600

winner

800

1000

19 - 27

$262,574

28
36
46
55
64
73
82
91

$211,821
$164,086
$137,300
$113,764
$96,445
$79,668
$68,624
$55,649

-

36
45
54
63
72
81
90
99

100 - 162

$46,890

163 - 225
226 - 288
289 - 351
352 - 414
415 - 477
478 - 549
550 - 648
649 - 1000

$40,433
$34,157
$29,329
$24,622
$21,786
$19,500
$17,282
$15,000

Our Alternative
Payouts
Prize
$8,000,000
$4,000,000
$2,250,000
$1,750,000
$1,250,000
$1,000,000
$950,000
$850,000
$700,000

Place
1
2
3
4
5
6
7
8
9

10 - 13

$650,000

14 - 17

$500,000

18
24
30
36
43

$300,000
$225,000
$200,000
$150,000
$125,000
$95,000

-

23
29
35
42
59

60 - 77
78 - 99

$75,000

100 - 128
128 - 164
165 - 254

$60,000
$55,000
$45,000

255 - 345

$35,000

346 - 441

$25,000

442 - 710

$22,500

711 - 1000

$20,150

i

Figure 7: WSOP 2015 tentative prizes and our Table 2: Our alternative payouts vs.
alternative “nice” payout structure.
WSOP payouts.

10

actual

References
[1] Andres
Alvarez.
The
perfect
payout
structure
for
GPPs.
https://rotogrinders.com/articles/the-perfect-payout-structure-for-gpps-544688,
2015. Accessed: 2015-10-01.
[2] Jon Bales.
FanDuel strategy guide - the basics of how to win on FanDuel.
https://rotogrinders.com/articles/fanduel-strategy-239679, 2015. Accessed: 201510-01.
[3] B.A.S.S. LLC. Bassmaster Opens. http://www.bassmaster.com/open, 2015. Accessed: 201508-20.
[4] Aaron Clauset, Cosma Rohilla Shalizi, and Mark EJ Newman. Power-law distributions in
empirical data. SIAM Review, 51(4):661–703, 2009.
[5] Aaron Clauset and Yogesh Virkar. Power-law distributions in empirical data, MATLAB code.
http://tuvalu.santafe.edu/~aaronc/powerlaws/, 2012.
[6] Michael Cohen. Bankroll tips for GPP players, 2015. Accessed: 2015-10-01.
[7] Eilers Research. Daily fantasy sports: The future of US sports wagering?, 2014. Summary
available at: https://dfsreport.com/1697/eilers-research-daily-fantasy-sports/.
[8] Mike Fahey.
How a first year eSports championship got a $2 million prize pool.
http://kotaku.com/how-a-first-year-esports-championship-got-a-2-million-1673580974,
2014. Accessed: 2015-10-13.
[9] Fantasy
Sports
Trade
Association.
Industry
http://www.fsta.org/?page=Demographics, 2015. Accessed: 2015-08-07.

demographics.

[10] Derek Farnsworth. DFS NFL primer. http://www.scout.com/fantasy/story/1585583-dfs-nfl-primer,
2015. Accessed: 2015-10-01.
[11] GNU project. GNU Linear Programming Kit, Version 4.44, 2010.

[12] Bill Grinstead. FanDuel collected $600 million more in entry fees than DraftKings in 2015.
http://dailyfantasynews.com/fanduel-collected-600-million-more-in-entry-fees-than-draftkin
2016. Accessed: 2016-8-4.
[13] Sudipto Guha, Nick Koudas, and Kyuseok Shim. Approximation and streaming algorithms for
histogram construction problems. ACM Trans. Database Syst., 31(1):396–438, March 2006.

[14] Huitcinq.
DraftKings
again
nails
a
perfect
payout
structure.
https://rotogrinders.com/threads/draftkings-again-nails-a-perfect-payout-structure-in-a-22015. Accessed: 2015-10-01.
[15] Yannis Ioannidis. The history of histograms (abridged). In Proceedings of the 29th International Conference on Very Large Data Bases - Volume 29, VLDB ’03, pages 19–30. VLDB
Endowment, 2003.
[16] Yannis E. Ioannidis and Viswanath Poosala. Balancing histogram optimality and practicality
for query result size estimation. In Proceedings of the 1995 ACM SIGMOD International
Conference on Management of Data, SIGMOD ’95, pages 233–244, New York, NY, USA,
1995. ACM.

11

[17] H. V. Jagadish, Nick Koudas, S. Muthukrishnan, Viswanath Poosala, Kenneth C. Sevcik,
and Torsten Suel. Optimal histograms with quality guarantees. In Proceedings of the 24rd
International Conference on Very Large Data Bases, VLDB ’98, pages 275–286, San Francisco,
CA, USA, 1998. Morgan Kaufmann Publishers Inc.

[18] Stephen A. Murphy.
WSOP director says 2009 payout structure the best yet.
http://www.cardplayer.com/poker-news/6741-dream-payout-world-series-of-poker-director-says
2009. Accessed: 2015-09-25.
[19] Seth
Palansky.
WSOP
announces
2015
main
event
payout
change.
http://www.wsop.com/news/2015/Feb/5172/WSOP-Announces-2015-Main-Event-Payout-Change.html,
2015. Accessed: 2015-08-10.
[20] Hannes Planatscher and Michael Schober. SCPSolver - an easy to use Java Linear Programming
Interface. http://scpsolver.org/, 2013.
[21] Mark Sandritter. U.S. Open payout 2015: Winning share is $1.8 million of purse.
http://www.sbnation.com/golf/2015/6/21/8821291/us-open-2015-payout-purse-prize-money,
2015. Accessed: 2015-08-20.
[22] Yogesh Virkar and Aaron Clauset. Power-law distributions in binned empirical data. The
Annals of Applied Statistics, 8(1):89–119, 2014.
[23] Washington and Lee News. Schwartz designs payout system for world series of poker.
http://www2.wlu.edu/x33248.xml, 2009. Accessed: 2015-09-25.
[24] World Series of Poker. Tournament payouts. http://www.wsop.com/tournaments/payouts.asp,
2015. Accessed: 2015-09-02.

12

A

Dynamic Programming Details

Theorem 3.2 (Dynamic Programming Solution). Assuming that there are O(log B) nice numbers
in the range [E, B], then Problem 3.1 can be solved in pseudo-polynomial time O(rN 3 B log2 B).
Proof. We can construct a dynamic program that chooses buckets and prizes in order from the lowest awarded places to the winner: (Sr , Πr ), (Sr−1 , Πr−1 ), . . . (S1 , Π1 ). Suppose youP
have P
already selected (Sr , Πr ), . . . , (Si+1 , Πi+1 ). Since our objective function can be separated as rj=1 i∈Sj (πi −
P
P
P
P
Πj )2 = ij=1 i∈Sj (πi − Πj )2 + rj=i+1 i∈Sj (πi − Πj )2 , the task of choosing the optimal (Si , Πi ),
. . . , (S1 , Π1 ) then reduces to solving a smaller instance of Problem 3.1, with:
1. N = the number of winners remaining, i.e. those not placed in (Sr , Πr ), . . . , (Si+1 , Πi+1 ).
2. B = the prize budget remaining, i.e. whatever was not consumed by (Sr , Πr ), . . . , (Si+1 , Πi+1 ).
3. E = the smallest nice number greater than maximum prize given so far, Πi+1 .
4. An additional constraint on maximum bucket size, which must be less than |Si+1 |.
Thus, for a given tuple of (winners consumed, budget consumed, Πi+1 , |Si+1 |), our choice for
(Si , Πi ), . . . , (S1 , Π1 ) can ignore any other aspects of (Sr , Πr ), . . . , (Si+1 , Πi+1 ). Accordingly, it
suffices to store the optimal assignment to (Sr , Πr ), . . . , (Si+1 , Πi+1 ) for each such 4-tuple. There
are at worst N × B × O(log B) × N = O(N 2 B log B) tuples.
Now, given all assignments for (Sr , Πr ), . . . , (Si+1 , Πi+1 ) that are optimal for some tuple, one
simple way to generate the set of optimal assignments for (Sr , Πr ), . . . , (Si , Πi ) is to try adding every
possible (Si , Πi ) (there are ≤ N log B of them) to each optimal assignment. For each new assignment
generated, we check if it has lower cost than the current best assignment to (Sr , Πr ), . . . , (Si , Πi ) for
the tuple induced by the choice of (Si , Πi ) (or just store it if no other assignment has induced the
tuple before). In total this update procedure takes time O(N log B) × O(N 2 B log B) time. It must
be repeated r times, once for each bucket added. Our total runtime is thus O(rN 3 B log2 B).
The dynamic program solution requires O(rN 2 B log B) space to store the optimal assignment
for each tuple at the current iteration.

B

Integer Programming Details

Theorem B.1. thm:integer[Integer Programming Solution] Any solution satisfying the constraints
of integer programming Problem 4.1 gives a solution to Problem 3.1.
Proof. Given a solution to Problem 4.1, a solution to Problem 3.1 is obtained by first checking each
auxiliary variable. If x̃j,k = 1, then Πj is set to pk . The second consistency constraint ensures that
for a given j, x̃j,k can equal 1 for at most one value of k. Thus, each Πj is assigned at most once.
If no x̃j,k is equal to 1 for a given j, then Πj and accordingly Sj , remain unused in our solution.
The winners for bucket Sj are simply all values of i for which xi,j,k is equal to 1. Our first
consistency constraint ensures that for a given i, xi,j,k is 1 exactly once, meaning that each winner
is assigned to a single bucket. The third consistency constraint ensures that xi,j,k = 1 only when
x̃j,k = 1, which ensures that each winner in bucket Sj is assigned the correct payout, Πj = pk .
Accordingly, any solution to Problem 4.1 produces a valid payout structure. We just need to
prove that it conforms to the constraints of our original optimization problem.
Recalling that, for a given i, xi,j,k = 1 for exactly one pair (j, k), it is straight forward to see
that the objective function and prize pool constraint are equivalent those
from Problem 3.1 as
P
long. The bucket size monotonicity constraint is also simple to verify:
i∈[N ],k∈[m] xi,j,k is exactly
equal to the number of winners assigned to bucket j, |Sj |. So our constraint correctly verifies that
|Sj | ≤ |Sj+1 | for all j.
13

P
1
1
For the monotonicity requirement,
P notice that k∈[m] (k + 2 ) · x̃j,k simply equals k + 2 whenever
Πj = pk in our solution. Similarly k∈[m] k · x̃j+1,k equals k when Πj+1 = pk . Since lower values
of k correspond to higher prize payouts (recall that p1 > p2 > . . . pk ), the first constraint in our
integer program therefore ensures that Πj is strictly greater than Πj+1 . There are a number of ways
to enforce the “strictly” requirement besides adding the 12 where we did. However, this particular
approach gracefully allows the constraint to be satisfied
P when no prize is assigned to bucket Sj (i.e.
the bucket is not used in our solution. In that case k∈[m] (k + 21 ) · x̃j,k will equal zero since x̃j,k
will equal 0 for all k. We would run into an issue if say, bucket Sj is not used but bucket Sj−1 is.
Accordingly, any solution to Problem 4.1 not using r buckets must leave the lowest number sets
empty, in accordance with the convention from Problem 3.1.
Finally, note that we did not include any inequalities to ensure that each bucket contains a
contiguous range of winners – for examples winners 6 through 11 or 54 through 75. We can avoid
this costly constraint because it is implicitly enforced by our choice of objective function and the
monotonicity of ideal payouts. Suppose some bucket contains a non-contiguous set of winners. Then
for at least two winning positions i > j it must be that the prize given to winner i, plow , is less than
the prize given to winner j, phigh . At the same time, we know that for our ideal payouts, πi ≥ πj .
We argue that such a configuration cannot exist in an optimal solution to Problem 4.1 because
switching the prizes so that i receives phigh and j receives plow gives a strictly better solution.
First off, clearly switching the prizes will not effect our other constraints: total payout amount
and bucket sizes will remain unchanged. Now, our cost function is simply additive over each winner,
and the cost incurred by players i and j in the non-contiguous ordering is:
(πi − plow )2 +(πj − phigh )2 =
πi2 − 2πi plow + p2low + πj2 − 2πj phigh + p2high .
When the prizes are switched, the cost is:
(πi − phigh )2 +(πj − plow )2 =
πi2 − 2πi phigh + p2high + πj2 − 2πj plow + p2low .
The difference in cost after the switch is therefore equal to:
−2πi phigh −2πj plow − (−2πi plow − 2πj phigh )
= −2 (πi phigh − πi plow + πj plow − πj phigh )
= −2(πi − πj )(phigh − plow ) ≤ 0.
The last step follows from the fact that (πi − πj ) ≥ 0 and (phigh − plow ) > 0. Since switching
payouts reduces our cost, it follows that any solution without contiguous bucket members cannot
be optimal. Note that, even with
P monotonic ideal payouts, this would not have been the case if we
had used, for example, ℓ1 cost i∈[N ],j∈[r],k∈[m] xi,j,k · |πi − pk |.
With this last implicit constraint verified, we conclude the proof that Problem 4.1 can be used
to obtain a valid payout structure obeying all of the constraints of our original Problem 3.1.

14

