1.4 Building a Competitor Model: Glicko Scores

In the last post, we reviewed setting win-loss odds and betting prices for trading card games. In that last segment, we were given the players’ win probabilities.

In this post, we’ll take an important step (but not the last one) in generating those player win probabilities.

We’ll use a ratings system, called Glicko/Glicko2, to rate each player in a game. These ratings give a value to each player’s skill, and can be used to compare one against another to generate win/loss probabilities between them.

Glicko/Glicko2 Ratings System

Competitive games like chess have long used the Elo rating system, developed by Arpad Elo, to rate the skill level of players.

The Elo system assigns a numerical value to each player at the start of their careers. For Elo, new players start off with a rating of 1000. Each time a player wins or loses against another player, the winning player’s Elo rating increases while the losing player’s Elo rating decreases. This allows changes over time in a player’s skill level to be tracked.

The scale of the Elo rating system is logarithmic, meaning that a player with a rating of 1600 isn’t 60% better than a player with a rating of 1000, but rather, ninety eight times better. This logarithmic scale also has the advantage that if a weaker player beats a stronger player, the weaker player’s rating rises faster than beating a player of similar skill while if a stronger player beats a weaker player, the stronger player’s rating rises slower than beating a player of similar skill.

Mark Glickman, Fellow of the American Statistical Association and Senior Lecturer on Statistics at the Harvard University Department of Statistics (among other accolades), invented a new spin on the traditional Elo system called Glicko (and later, Glicko2).

These systems make several improvements on the Elo methodology that are key for trading card games:

  1. Glicko/Glicko2 incorporates a rating “deviation” (σ). Player deviations begin at 350 and change based on how often a player plays. This helps us measure our certainty about how accurate a player’s rating is as well as allows for a sort of “rust” factor to occur, whereby players who don’t play for a long time have their deviations drift back to that of a new player (at the σ=350 level).
  2. With the deviations in mind, ratings are typified as credible intervals. For instance, a player with a rating of 1750 and σ=150 has a credible rating of ~1600 to 1900. The more the player plays, the more the deviation shrinks and the narrower and narrower the credible interval becomes (and thus, the greater and greater our certainty about that rating).
  3. The deviations are not just window dressing: they are an integral part of predicting the win/loss probabilities between two competitors. A player with a lower σ is predicted to win more reliably than one with a higher σ, all else being equal.
  4. Glicko uses a constant variable (“c” or the “c-value”) which limits how much a player’s rating can change due to the outcome of a single match; this limits wild fluctuations due to upset wins or losses, as well as sets how quickly (or slowly) a player without play has his or her deviation drift back down to its initial level (350).
  5. Glicko2 takes a “volatility” variable (τ) into account. This variable rates how much luck is a factor in the game at hand, and helps regulate probabilities between players with different levels of volatility. Similar to σ, one competitor with a high τ, but similar skill, with be predicted to perform worse against another player with lower τ, all else being equal. Luck is accounted for.

For these reasons, we’ll use the Glicko2 system for rating competitors.

You can find an excellent paper on the Glicko System by Mark Glickman here, as well as his follow-up for Glicko2, here.

To apply the Glicko2 system, we’ll generate some synthetic (made up) player match data and use the PlayerRatings package in R, which incorporates the Glicko2 system in its functions.

Synthetic Tournament Data

A .csv file was set up to represent a tournament season.

The file has four fields:

  1. Period (numbered 1 through 12)
  2. Player (numbered 1 through 500).
  3. Opponent (numbered 1 through 500).
  4. Result (0, 0.5, or 1).

Each “Period” represents a single month during the tournament season (Period 1 = January, Period 2 = February, etc.). We assume that the tournament season runs from January to December of a single year.

Players and Opponents are numbered from 1 to 500. Each of these is a unique competitor. For each matchup in the following steps, the Player/Opponent represents the two competitors involved in each match.

The Result records a loss (0), a draw (0.5), or a win (1). These Results apply to the Player vs. the given Opponent. In the first match in the file, we see the following:

This means that in Period 1, Player 121 played Player 444 and Player 121 lost (thus, Player 444 won).

Each Period records 1000 matches between randomly selected Players and Opponents with random Results.

Thus, the .csv file records 12,000 randomly generated matches. All of this was done with Microsoft Excel.

The file can be found here.

Using R to Generate Glicko Ratings

Using the R programming language via R Studio, the following steps were performed:

  1. Load the PlayerRatings package.
  2. Load tournament data .csv.
  3. Set the tournament data as an R data frame properly reporting Period, Player, Opponent, and Result.
  4. Set starting player Ratings, Deviation, and Volatility.
  5. Run the Glicko2 algorithm for all players with the tournament data.
  6. Convert the output from the algorithm to a new data frame with each player’s final ratings, deviation, volatility, and game history
  7. Export the output to a new .csv file.

For this simulation, we’ve given all the players the following attributes:

  • Initial rating of 1500
  • Initial deviation of 350
  • Initial volatility of 0.6

The rating of 1500 and deviation of 350 are recommended by Mark Glickman for initial ratings. He suggests an initial volatility of between 0.3 (for low randomness games, like chess) to as much as 1.2 for high randomness games. We’ve chosen 0.6 for a trading card game, due to its higher randomness factor (i.e., the order in which cards are drawn from decks).

For the ratings algorithm, we’ve chosen a constant (“cval”) of 60. This means, approximately, that a player without play would see his or her deviation return from whatever level it is currently to the initial deviation of 350 in approximately three years of non-activity.

The volatility and cval should be evaluated for any given trading card game and will be the subject of future studies to determine the appropriate levels for games like Pokémon, Magic: the Gathering, and Yu-Gi-Oh, separately. For now, we’ve settled on these values for this demonstration.

You can see the R code, below.

# Step 1: Load PlayerRatings Package
library(PlayerRatings)

# Step 2: Load tournament data
tournamentdata <- read.csv("synthetic_season_1_match_data.csv", 
head=TRUE, sep=",")

# Step 3: Convert tournament data to data frame
season1matches <- data.frame(Period=tournamentdata$Period, 
Player=tournamentdata$Player, 
Opponent=tournamentdata$Opponent,
Result=tournamentdata$Result)

# Step 4: Set starting ratings, deviation, and volatility for all 
# players
startratings <- data.frame(Player=seq(1, 500, 1), Rating=rep(1500,500), 
Deviation=rep(350,500), Volatility=rep(0.60,500))

# Step 5: Run Glicko2 algorithm for all players with data
season1ratings <- glicko2(season1matches, status=startratings, cval=60, tau=0.60)

# Step 6: Set results of the algorithm as a new data frame with 
# reported rating, deviation, volatility, and game history
season1finals <- data.frame(Player=season1ratings$ratings$Player, 
Rating=season1ratings$ratings$Rating, 
Deviation=season1ratings$ratings$Deviation,
Volatility=season1ratings$ratings$Volatility,
Games=season1ratings$ratings$Games, 
Win=season1ratings$ratings$Win,
Loss=season1ratings$ratings$Loss,
Draw=season1ratings$ratings$Draw,
Lag=season1ratings$ratings$Lag)

# Step 7: Export results in a new.csv file
write.csv(season1finals, "season_one_final_ratings.csv")

You can replicate the steps shown above in R.

Final Ratings

Running the steps shown above, we get a neatly formatted .csv file that reports player data at the end of the season (e.g., at the end of the 12,000 games played over 12 months).

Looking at the first few entries in this output, we see the following:

 

We find that Player 42 came out on top with a Rating of ~1827, a Deviation of ~183, and a Volatility of ~0.62.

We can draw the following conclusions about Player 42:

  1. A Rating of ~1827 implies that Player 42 ~5.5 times more skilled than an average player (Rating 1500), ceteris paribus (given the same σ and τ for both players).
  2. Player 42’s σ has fallen from 350 to ~183. This is expected, as the more games a player plays, the lower σ becomes, as we can assume the credible interval of the player’s skill is closer and closer to the reported Rating. (Note that many other players have even lower σ, because they have played more reliably throughout the season).
  3. Player 137’s τ  (~0.62) is about unchanged and matches that of the system of a whole. This is expected for a player with top placement who’s wins/losses/draws have been less due to luck and more due to skill over the course of the season.

Given the structure of the Glicko/Glicko2 system, we can confidently say that Player 42’s true skill level is somewhere between ~1644 to ~2,009. Given the player’s high volatility, we should err to say that the player’s real skill is closer to this lower bound.

The completed output file can be found here.

Generating Win/Loss Probabilities

With these data, we can generate win/loss probabilities for future matchups, which is what we need for our TCG Sportsbook project.

Let’s pit the top two players against one another:

This can be done easily in R with the predict function.

# Predict the probability of Player 42 winning against Player 67
predict(season1ratings, newdata=data.frame(Player=42, Opponent=67, tng=1))

The output we receive is:

[1] 0.6926854

This means that Player 42 has a win probability of ~0.69 against Player 67 in a hypothetical match between them.

Next Steps: Deck Factors

We’ve demonstrated an ability to give players ratings based on their skill from tournament data.

The next issue we’ll have to address is that of deck strategy.

Glicko/Glicko2 (and its forebear, Elo), were made to gauge skill in low randomness games like chess. In games like these, both players come to the table with identical game pieces. Both sides have the same number of pawns, knights, rooks, bishops, etc. Both sides have these pieces in the same starting position.

Trading card games have a higher level of randomness due to the cards in use (which, in part, we addressed by setting the initial Volatility at 0.6 for the algorithm). Each competitor could have a very different deck of cards, or maybe even the same theme of deck, but with a different card list.

All decks don’t perform equally well against one another in every match up. Some decks are simply superior to others, or at least, have very lopsided matchups (where Deck A is three times as likely to win against Deck B, for example), ceteris paribus.

The predict function in R gives us the ability to take such factors into account via a gamma variable (Γ). We’ll use this in the next phase of the project. Γ will be the stand in for the decks in use by either player and allow us to account for how well those decks match up against one another.

Project 2: Trading Card Game Sportsbook Financial Calculator

Websites abound with information about how to translate moneyline prices into the bookmaker’s implied probabilities.

These webpages also include some discussion about how moneyline prices are read and what they mean. A few also have discussions about the concept of a vig or vigorish (the “over rounding” that a bookmaker does to the probabilities to bake in a profit for itself).

All of these websites speak to bettors.

In keeping with the project to theoretically model a sportsbook that takes bets on trading card game events, we want to model such variables as the house.

If we’re the sportsbook, we want to know the probable outcomes of different over round percentages, splits in the over round, competitor win probabilities, total money wagered on either side, and what our expected financial outcomes should be.

In this project, we accomplish all of these things with an Excel Calculator.

The Excel TCG Sportsbook Financial Calculator

If you’d prefer to see the Excel calculator first and skip (or save for later) the discussion on how it works and why, you can find it below:

Excel TCG Sportsbook Financial Calculator

Breaking Down the Tunable Parameters

The Excel Calculator gives us five parameters that can be changed. These are found under the Assumptions heading.

Let’s take a look at each of them.

Vig

The vigorish, or “over round”, is the markup the house puts on the probabilities it uses to quote the bettors its bet prices.

This can be viewed as the long term profit margin the house expects on the outcomes of events with similar probabilities.

For most popular sporting events, the over round hovers a bit below 5%.

The Excel Calculator allows a vig of between 0 and 25%.

(We should expect that if trading card game bet prices were set, the vig would be on the higher side, as they are more thinly traded.)

Matches Played

Here, the user can set the number of matches played between competitors.

This is a simplification, for illustrative purposes, because the probabilities are identical for each match played (whereas, in real life, we’d wish to go further into developing a Bayesian predictive model to account for changes in win probabilities for either side given a series of matches).

A more complex model deserves its own project, which will come soon enough.

These are tunable between 1 and 1,000,000 matches.

Vig Split

This allows the user to split the vig between the two competitors.

Often times, the book maker will not apply the vig equally to both, so as to help limit liability on one side of the event. Placing more of the over round weight to one side (one competitor) over another can make that side seem less attractive than the other, enticing bettors to place their money elsewhere.

Only the vig split on Player A is tunable. The vig split on Player B is automatically updated based on the input for Player A.

The Vig split for Player A can be between 1 and 100% (with Player B having the remainder).

Win Probability

The Calculator assumes that we know the win probabilities for either player.

How to arrive at these win probabilities in trading card games, at least, is the subject of another project. Here, we assume that we know them.

Only the win probability for Player A is tunable. The win probability for Player B is automatically updated based on the input for Player A.

The win probability for Player A can be between 0 and 1, inclusive (with Player B having the remainder).

Total Money Wagered

The parameters for total money wagered for either side of the matches played can be set to any amount between $1 and $1,000,000 in even dollar increments.

As noted in the Calculator, the total money wagered on either side is per match played. 

Reading Financial Outcomes

After the five tunable parameters have been set, we can see the financial outcomes of the selected series of matches.

Let’s assume we set our assumptions as follows:

  • Vig: 10%
  • Matches Played: 50
  • Vig Split: 70%/30%
  • Win Probability: 0.674/0.326
  • Total Money Wagered: $24,500/$47,850

Fair Probability & Over Round Probability

The fair probabilities are carried over from the Assumptions we placed in the Calculator.

Note that the sum of these probabilities will always sum to 1. There are fair probabilities, because they reflect our true beliefs about the winner of the matches.

The over round probabilities apply the vig and the vig split to each probability.

Since we placed the vig at 10% and weighted 70% of that vig on Player A and 30% on Player B, the Calculator applies those figures to each side accordingly.

Note that the probabilities sum to 1.1, meaning the fair probability sum of 1, plus the vig of 10%.

Moneyline

The Calculator gives us the moneyline for the players.

As we discussed in the post about setting odds and betting prices for trading card games, these prices use the American moneyline system for bet prices.

We see that Player A has a price of -291 (meaning that a bettor must bet $291 to win $100), while Player B has a price of +181 (meaning that betting $100 will win the player $181; plus the staked $100, in both cases).

Player A, as we should expect from our probabilities, is the favorite (with a negative quoted price), and Player B is our underdog (with a positive quoted price).

Money Wagered & Bettors to Win

The Calculator gives us the total money wagered on both sides for all events (remember, we put $24,500 on Player A and $47,850 on Player B on each of 50 matches).

It also gives us the bet liability for each side, or what bettors stand to win if they’re right.

The Bettors to Win calculation takes the total money wagered for each side and applies the moneyline price for each side to arrive at the liability figures.

Wins

The wins for each side simply applies the fair probability for each player as a proportion of the total number of matches we input.

Since we selected 50 matches, given probabilities of 0.674 for Player A and 0.326 for Player A, we expect Player A to win 34 matches and Player B to win 16 matches.

Financial Outcomes

Finally, given all of our assumptions, we have the expected financial outcomes for our venture.

With 50 matches, assuming our probabilities are correct, we expect to pay out the bettors on Player A a total of $1,109,379 and the winners on Player B a total of $2,191,674.

Our total handle, or the total money wagered by bettors, came to $3,617,500, on which we paid out $3,301,052.

That leaves us, the sportsbook, with a gross gaming revenue (GGR) of $316,448 for a profit margin of 8.7%.

Not too shabby!

Conclusions

Our Calculator allows us to model some basic assumptions about the financial viability of our sportsbook.

We can tune a number of parameters about each competitor and how we choose to price the bets we offer to bettors. We can experiment with how much money we’d need on either side to maintain profitability given these assumptions.

We’ve seen that, if it all works out more-or-less according to plan, the bookmaking business is good to us.

Please let me know if you have any questions or comments in the comments section below!

————

You can find a link to the completed Excel TCG Sportsbook Financial Calculator below:

Excel TCG Sportsbook Financial Calculator

1.2 Modelling Competitor + Strategy Probabilities in Trading Card Games

In the previous post, we discussed our decision to use Bayesian Inference as the preferred method to compute the win probabilities for different players and decks.

We will now expand on how Bayes’ Theorem can help us do this.

We’re going to take for granted that the probabilities here are examples only and that, given this demonstration, we’re also taking for granted that someway, somehow, all the probabilities have been provided to us.

In later parts of this project, we’ll tackle actually getting to the point where we can create such matchups with our own computed proabilities.

The Competitor + Strategy Matrix

Assume we have 8 Competitors (C1…C8) and 8 Strategies (S1…S8).

We might have a table that looks like this:

C1C2C3C4C5C6C7C8
S10.3310.5290.4500.6260.1830.6490.2570.151
S20.5070.2710.5370.2000.2580.5130.1190.330
S30.5120.2420.2870.2530.6130.3930.1790.574
S40.6770.5400.6940.6100.4060.1380.2090.395
S50.6540.2220.4920.6300.5690.1190.1440.397
S60.2970.5440.5340.2620.2430.4320.6960.352
S70.3510.6000.7050.1190.3650.7190.3990.518
S80.4150.3420.4770.1100.2050.4320.4930.134

This table tells us how probable a given Competitor, using a given Strategy is to win, in general. This would be a probability against a disembodied opponent: the probability isn’t conditioned on facing another person or deck. It’s most likely the long term average for the Competitors and their Strategies (wins/losses) expressed as a ratio.

Reading the table, above, we can see that Competitor 2 using Strategy 4 has a .540 probability of winning any game.

But what is this Competitor using this Strategy’s probability of winning against another Competitor and Strategy combination?

Computing Win Probabilities

Last time, we reviewed Bayes’ Theorem in the abstract:

[math] P(A|B)=\frac{P(A)P(B|A)}{P(B)} [/math]

We decided that the win probability for Player A against Player B was a conditional probability, or that this probability was conditioned on the circumstances of these two opponents facing one another.

It wouldn’t make sense for us simply to give a probability of Player A (or Player B) winning in isolation. This is what our table, above, does.

It doesn’t, however, give us a probability of a Competitor + Strategy combination against another Competitor + Strategy combination, which is what we want.

Let’s take the case of Competitor 3 using Strategy 5 (C3+S5) playing against Competitor 7 using Strategy 2 (C7+S2).

How do we calculate the probability that C3+S5 win a match against C7+S2?

We set up our equation thusly:

[math] P(C3+S5|C7+S3)=\frac{P(C3+S5)P(C7+ S3|C3+S5)}{C7+ S5} [/math]

Let’s examine each of the variables in turn.

P(C3+S5 | C7 + S3)

This is the win probability of C3+S5 against C7+S3, which is what we’re looking for.

We won’t know this until the end!

P(C3+S5)

Referring to our table above, we find that the probability of C3+S5 winning any match is 0.492.

Thus, the value of P(C3+S5) is 0.492 in our formula.

P(C7+S3|C3+S5)

This one is a little trickier. This is the probability that C7+S3 win against C3+S5.

And if we think about it, is the opposite of what we’re looking for, P(C3+S5|C7+S3)!

If we knew this now, we’d be done, because to find the other probability, we simply subtract it from 1. This is something we’ll return to shortly.

For now, let’s leave this as a mystery.

P(C7+S3)

This is simply the probability that C7+S3 win any match.

Consulting our table, we see that this is 0.179.

So we’ll use that.

Missing Information

So far, our revised formula looks like this:

[math] P(C3+S5| C7+ S3)= \frac{0.492*P(C7+ S3|C3+S5)}{P(0.179)}[/math]

But what about that pesky P(C7+S3|C3+S5)?

If we could calculate that, we’d know P(C3+S5 | C7+ S3), our desired answer, too.

Let’s find an easier way to make this calculation.

Using Excel and Basic Algebra

Let’s take another look at our Competitor and Strategy table:

We know that C3+S5 has an overall win probability of 0.492 and that C7+S3 has an overall win probability of 0.179.

To make our life easier, we will constrain the probability space to the universe that contains only these two match ups. That is, to say, that 1 (or 100%) will be the combined total probabilities for these two Competitors + Strategies.

We can think of this as a ratio:

[math] Win Probability= \frac{P(C3+C5)}{P(C3+C5) + P(C7+ S3)}[/math]

This pits the probability of C3+C5 against the combined probability of C3+C5 and C7+ S3.

We get the following:

[math]  \frac{0.492}{0.492+0.179}=0.733[/math]

This works because the probability that C3+C5 win any match is a fraction of the combined probabilities that C3+C5 win any match and C7+S3 win any match.

In fact, we can put all of this back into Bayes’ Theorem to prove our case.

Remember, that if the P(C3+C5|P(C7 + S3)) = 0.733, then the probability that the other player win is exactly 1 – this amount, or P(C7= + S3|C3+C5) = 1 – 0.733 = 0.267.

This is because all probabilities must sum to 1 (absolute certainty). All potential outcomes represent the whole of possible outcomes. 

[math]P(C3+S5| C7+ S3)=\frac{0.492*0.267}{0.179} =0.733[/math]

All we have to do is divide Cn+Sn by Cn+Sn combined with Ck+Sk.

This is much easier.

What we’ve done here is normalize the probabilities of the two competitors such that their conditional probabilities sum to 1, like this:

The Expanded Cn+Sn Matrix

To carry this theory into action, we pit each and every combination of Competitors + Strategies (Cn+Sn) against each other in the same way as we did above for C3+C5 against C7+S3.

Our previous win probability table has 8 rows and 8 columns. This one has 64 rows and 64 columns.

Wins? ↓C1+S1C1+S2C1+S3C1+S4C1+S5C1+S6C1+S7C1+S8C2+S1C2+S2C2+S3C2+S4C2+S5C2+S6C2+S7C2+S8C3+S1C3+S2C3+S3C3+S4C3+S5C3+S6C3+S7C3+S8C4+S1C4+S2C4+S3C4+S4C4+S5C4+S6C4+S7C4+S8C5+S1C5+S2C5+S3C5+S4C5+S5C5+S6C5+S7C5+S8C6+S1C6+S2C6+S3C6+S4C6+S5C6+S6C6+S7C6+S8C7+S1C7+S2C7+S3C7+S4C7+S5C7+S6C7+S7C7+S8C8+S1C8+S2C8+S3C8+S4C8+S5C8+S6C8+S7C8+S8
C1+S10.50.3949880670.3926453140.3283730160.3360406090.5270700640.4853372430.4436997320.3848837210.5498338870.5776614310.3800229620.5985533450.3782857140.3555316860.4918276370.4238156210.3813364060.5355987060.3229268290.402187120.382658960.3194980690.4096534650.3458725180.6233521660.5667808220.3517534540.3444328820.5581787520.7355555560.7505668930.6439688720.561969440.3506355930.4491180460.3677777780.5766550520.4755747130.6175373130.3377551020.3921800950.457182320.705756930.7355555560.4338138930.3152380950.4338138930.562925170.7355555560.6490196080.6129629630.6968421050.3222979550.4534246580.4016990290.6867219920.500756430.3657458560.4559228650.454670330.4846266470.3898704360.711827957
C1+S20.6050119330.50.4975466140.4282094590.4366925060.6305970150.5909090910.549891540.4893822390.6516709510.6769025370.4842406880.6954732510.4823977160.457994580.5971731450.5297805640.4856321840.6385390430.422148210.5075075080.48703170.4183168320.5152439020.4474845540.7171145690.6671052630.453894360.445910290.6592977890.8099041530.821717990.7347826090.6627450980.4526785710.5553121580.4711895910.6760.5814220180.7120786520.4385813150.4970588240.5633333330.7860465120.8099041530.5399361020.4135399670.5399361020.6636125650.8099041530.7390670550.7081005590.7788018430.4214463840.5596026490.5070.7705167170.6057347670.4690101760.5620842570.5608407080.5902211870.4946341460.790951638
C1+S30.6073546860.5024533860.50.4306139610.4391080620.6328800990.5932792580.552319310.4918347740.6538952750.6790450930.4866920150.6975476840.4848484850.4604316550.5995316160.5322245320.4880838890.6408010010.4245439470.5099601590.4894837480.4207066560.5176946410.4499121270.7191011240.6692810460.4563279860.4483362520.6614987080.811410460.8231511250.7366906470.6649350650.4551111110.5577342050.4736355230.6781456950.5838084380.7140864710.4409991390.4995121950.5657458560.7876923080.811410460.5423728810.4159220150.5423728810.665799740.811410460.7409551370.7101248270.7804878050.423841060.5620197590.5094527360.772247360.608076010.471454880.5644983460.5632563260.5925925930.4970873790.792569659
C1+S40.6716269840.5717905410.5693860390.50.508640120.6950718690.6585603110.619963370.5613598670.7141350210.7366702940.5562859490.7530589540.5544635540.5301487860.664376840.6007098490.5576606260.7022821580.4938001460.5791274590.5590421140.4898697540.5866551130.5195702230.7719498290.7279569890.5260295260.5179801070.7209797660.8505025130.8602287170.7872093020.7240641710.5248062020.625115420.5433386840.7358695650.6497120920.7675736960.5105580690.5689075630.632710280.8306748470.8505025130.6104598740.484957020.6104598740.72483940.8505025130.790887850.7641083520.8246041410.4930808450.6291821560.5786324790.817632850.6722939420.5411670660.6315298510.6303538180.6579203110.5665271970.834771887
C1+S50.6639593910.5633074940.5608919380.491359880.50.6876971610.6507462690.6117867170.5528317840.7070270270.7299107140.5477386930.7465753420.545909850.52153110.6566265060.5923913040.5491183880.6950053130.4851632050.5706806280.5505050510.4812362030.5782493370.51093750.7658079630.7210584340.5174050630.5093457940.7139737990.8460543340.8560209420.7813620070.7171052630.5161799530.6169811320.5347506130.729096990.6418056920.7613504070.5019186490.5604113110.6246418340.8257575760.8460543340.6022099450.4763292060.6022099450.7178924260.8460543340.7851140460.7578215530.8195488720.4844444440.6210826210.5701830860.812422360.6646341460.532573290.6234509060.622264510.6500994040.5580204780.829949239
C1+S60.4729299360.3694029850.3671199010.3049281310.3123028390.50.4583333330.4171348310.3595641650.5228873240.5510204080.354838710.5722543350.3531510110.3311036790.4647887320.3975903610.3561151080.5085616440.2996972750.3764258560.3574007220.2964071860.383720930.3217768150.5975855130.540.3274531420.320388350.5313059030.7139423080.729729730.618750.5351351350.3263736260.4224751070.342956120.550.4486404830.5916334660.3139534880.3666666670.4304347830.6827586210.7139423080.4074074070.2923228350.4074074070.5361010830.7139423080.623949580.5869565220.6734693880.2990936560.4267241380.3759493670.6629464290.4736842110.3409873710.4291907510.427953890.4576271190.3644171780.689095128
C1+S70.5146627570.4090909090.4067207420.3414396890.3492537310.5416666670.50.4582245430.3988636360.5643086820.5919055650.3939393940.6125654450.3921787710.3690851740.5064935060.4382022470.395270270.550156740.3358851670.4163701070.3966101690.3323863640.4239130430.359263050.6370235930.5811258280.3652445370.3577981650.5725938010.7468085110.7613882860.6573033710.576354680.3641078840.4636723910.3815217390.5909090910.4902234640.6312949640.3510.406250.4717741940.7177914110.7468085110.4482758620.3280373830.4482758620.5773026320.7468085110.6622641510.6267857140.7090909090.3352435530.4680.4158767770.6992031870.5154185020.3794594590.4705093830.4692513370.4992887620.4039125430.72371134
C1+S80.5563002680.450108460.447680690.380036630.3882132830.5828651690.5417754570.50.4396186440.6049562680.6316590560.4345549740.6514913660.432742440.4088669950.5482166450.4797687860.435924370.5911680910.3742110010.457552370.4373024240.3705357140.4652466370.3986551390.6747967480.6212574850.4048780490.3971291870.6129985230.7771535580.790476190.6939799330.6166419020.4036964980.5054811210.4217479670.6306990880.5320512820.6693548390.3900375940.4471982760.5136138610.750452080.7771535580.4899645810.3659611990.4899645810.6175595240.7771535580.6986531990.6650641030.7423971380.3735373540.509828010.4570484580.7332155480.557046980.4196157740.5123456790.5110837440.54106910.4448017150.755919854
C2+S10.6151162790.5106177610.5081652260.4386401330.4471682160.6404358350.6011363640.5603813560.50.661250.686121920.4948550050.7043941410.4930102520.4685562440.6073478760.5403472930.4962476550.6482843140.4325429270.5181194910.4976481660.4286871960.525844930.4580086580.7256515780.6764705880.4644424930.4564279550.6687737040.8163580250.8278560250.7429775280.6721728080.4632224170.5657754010.4817850640.6852331610.5917225950.7207084470.4490662140.5076775430.5737527110.7931034480.8163580250.5504682620.4238782050.5504682620.673027990.8163580250.7471751410.7168021680.7860326890.4318367350.5700431030.5176125240.7779411760.6158323630.4796010880.5725108230.5712742980.600454030.5052531040.797888386
C2+S20.4501661130.3483290490.3461047250.2858649790.2929729730.4771126760.4356913180.3950437320.338750.50.5282651070.3341553640.549695740.3325153370.3111366250.4420880910.3758668520.335396040.4856630820.2808290160.3551769330.3366459630.2776639340.3622994650.3021181720.575371550.5171755730.3076049940.3007769150.5084427770.6948717950.7112860890.59691630.5122873350.3065610860.4002954210.3226190480.5272373540.4261006290.5693277310.2945652170.3456632650.408132530.6625916870.6948717950.3854907540.2737373740.3854907540.5132575760.6948717950.6022222220.5645833330.6530120480.280248190.4044776120.3547120420.6421800950.4509151410.3207100590.4069069070.4056886230.4349919740.343472750.669135802
C2+S30.4223385690.3230974630.3209549070.2633297060.2700892860.4489795920.4080944350.3683409440.313878080.4717348930.50.3094629160.5215517240.3078880410.2874109260.4143835620.3497109830.3106546850.4574669190.2585470090.3297002720.311855670.2555438230.3365785810.2788018430.5475113120.4888888890.2840375590.2775229360.480158730.6703601110.68750.5694117650.4840.2830409360.373456790.2983970410.4989690720.3986820430.5413870250.2716049380.3205298010.3811023620.6368421050.6703601110.3590504450.251821020.3590504450.484969940.6703601110.5748218530.5365853660.6269430050.2579957360.3775351010.3292517010.6157760810.4230769230.2965686270.3799058080.3787167450.4074074070.3184210530.643617021
C2+S40.6199770380.5157593120.5133079850.4437140510.4522613070.645161290.6060606060.5654450260.5051449950.6658446360.6905370840.50.7086614170.4981549820.4736842110.6122448980.5454545450.5013927580.6529625150.4376012970.5232558140.5027932960.433734940.5309734510.4631217840.729729730.6809583860.4695652170.4615384620.6733167080.8194233690.8307692310.7468879670.6766917290.4683434520.5708245240.4869251580.6896551720.5966850830.7248322150.4541631620.5128205130.5787781350.7964601770.8194233690.5555555560.4289118350.5555555560.6775407780.8194233690.7510431150.7209612820.7894736840.4368932040.5750798720.5227492740.7814761220.6206896550.4847396770.5775401070.5763073640.6053811660.5103969750.801186944
C2+S50.4014466550.3045267490.3024523160.2469410460.2534246580.4277456650.3874345550.3485086340.2956058590.450304260.4784482760.2913385830.50.2898172320.2700729930.3936170210.3303571430.2924901190.4361493120.2423580790.310924370.2936507940.2394822010.3175965670.2617924530.5260663510.4673684210.2668269230.260563380.4586776860.6510263930.6686746990.5481481480.46250.2658682630.3535031850.2806573960.4774193550.3781942080.5199063230.2548794490.3020408160.360975610.6166666670.6510263930.3394495410.2359192350.3394495410.4634655530.6510263930.553615960.5150812060.6065573770.2418300650.3574879230.310489510.5951742630.4021739130.2788944720.3598055110.3586429730.3867595820.30.623595506
C2+S60.6217142860.5176022840.5151515150.4455364460.454090150.6468489890.6078212290.567257560.5069897480.6674846630.6921119590.5018450180.7101827680.50.4755244760.6139954850.5472837020.5032377430.6546329720.4394184170.5250965250.5046382190.4355484390.532810970.4649572650.7311827960.6825595980.4714038130.4633730830.6749379650.8205128210.8318042810.7482806050.6783042390.4701815040.5726315790.4887690930.6912325290.5984598460.7263017360.4559932940.5146641440.5805763070.7976539590.8205128210.5573770490.4307205070.5573770490.6791510610.8205128210.752420470.7224435590.7906976740.4387096770.5768822910.5245901640.7827338130.6224256290.4865831840.5793397230.5781083950.6071428570.5122410550.802359882
C2+S70.6444683140.542005420.5395683450.4698512140.47846890.6688963210.6309148260.5911330050.5314437560.6888633750.7125890740.5263157890.7299270070.5244755240.50.6369426750.5714285710.5277044850.676437430.4636785160.5494505490.5291005290.4597701150.5571030640.4893964110.750.7033997660.4958677690.4878048780.6960556840.834492350.8450704230.7662835250.6993006990.4946413850.5964214710.5132591960.7117437720.6217616580.7453416150.4803843070.5390835580.6042296070.813008130.834492350.5813953490.4548900680.5813953490.7001166860.834492350.7702182280.7416563660.8064516130.4629629630.6006006010.548947850.7989347540.645161290.5110732540.6030150750.6018054160.6302521010.536672630.817438692
C2+S80.5081723630.4028268550.4004683840.335623160.3433734940.5352112680.4935064940.4517833550.3926521240.5579119090.5856164380.3877551020.6063829790.3860045150.3630573250.50.4318181820.3890784980.5437201910.330115830.4100719420.3904109590.3266475640.4175824180.3533057850.630996310.5747899160.3592436970.3518518520.5662251660.741865510.7566371680.6514285710.570.3581151830.4572192510.3754116360.5846153850.4837340880.6252285190.3451059540.40.4653061220.71250.741865510.4418604650.3223374180.4418604650.5709515860.741865510.6564299420.6206896550.7037037040.3294797690.4615384620.4095808380.6937119680.5089285710.3733624450.4640434190.4627875510.4927953890.3976744190.718487395
C3+S10.5761843790.4702194360.4677754680.3992901510.4076086960.6024096390.5617977530.5202312140.4596527070.6241331480.6502890170.4545454550.6696428570.4527162980.4285714290.5681818180.50.4559270520.6105834460.3933566430.4777070060.4573170730.389610390.4854368930.4182156130.6923076920.6401137980.4245283020.4166666670.6320224720.790861160.8035714290.7109004740.635593220.4233301980.5257009350.4416094210.6493506490.5521472390.6870229010.4094631480.467289720.5338078290.7653061220.790861160.5102040820.3849443970.5102040820.6364922210.790861160.7154213040.6828528070.7575757580.3926701570.5300353360.4772004240.748752080.5769230770.4394531250.5325443790.5312868950.5610972570.4648760330.770547945
C3+S20.6186635940.5143678160.5119161110.4423393740.4508816120.6438848920.604729730.564075630.5037523450.664603960.6893453150.4986072420.7075098810.4967622570.4722955150.6109215020.5440729480.50.6516990290.4362307070.5218658890.501400560.432367150.5295857990.4617368870.7286295790.6797468350.4681778550.4601542420.6720901130.8185975610.8299845440.7458333330.6754716980.4669565220.5694591730.4855334540.6884615380.5953436810.7237196770.4527824620.5114285710.5774193550.7955555560.8185975610.5541795670.4275477710.5541795670.6763224180.8185975610.750.7198391420.7885462560.4355231140.5737179490.5213592230.7805232560.6193771630.4833483350.5761802580.5749464670.6040494940.5090047390.800298063
C3+S30.4644012940.3614609570.3591989990.2977178420.3049946870.4914383560.449843260.4088319090.3517156860.5143369180.5425330810.3470374850.5638506880.3453670280.323562570.4562798090.3894165540.3483009710.50.2925586140.3684210530.3495736910.2893145160.375654450.3143483020.5893223820.5314814810.3199554070.3129770990.522768670.7068965520.7229219140.6106382980.5266055050.3188888890.4141414140.3352803740.5415094340.4401840490.5833333330.3066239320.358750.4220588240.6752941180.7068965520.3991655080.285288270.3991655080.5275735290.7068965520.6158798280.5786290320.6658932710.2919633770.4183673470.3679487180.6552511420.4651539710.3333333330.4208211140.4195906430.449139280.3565217390.681710214
C3+S40.6770731710.577851790.5754560530.5061998540.5148367950.7003027250.6641148330.6257889990.5674570730.7191709840.7414529910.5623987030.7576419210.5605815830.5363214840.669884170.6066433570.5637692930.7074413860.50.5851602020.565146580.496068620.592655850.5257575760.7762863530.7328405490.5322085890.5241691840.7259414230.8536285360.863184080.7913340940.7289915970.5309869930.6309090910.5494853520.7406616860.6553352220.7719688540.5167535370.5749792870.6384544620.8341346150.8536285360.616341030.4911535740.616341030.7297581490.8536285360.7949599080.768549280.8281622910.4992805760.634949680.5846672280.8213017750.6777343750.5473186120.637281910.6361136570.6634799240.5726072610.838164251
C3+S50.597812880.4924924920.4900398410.4208725410.4293193720.6235741440.5836298930.542447630.4818805090.6448230670.6702997280.4767441860.689075630.4749034750.4505494510.5899280580.5222929940.4781341110.6315789470.4148397980.50.4795321640.4110275690.5077399380.4400715560.7109826590.6604026850.446460980.4385026740.6525198940.8052373160.8172757480.7288888890.6560.4452488690.5478841870.4637134780.6693877550.5740956830.7058823530.4312007010.4895522390.5559322030.7809523810.8052373160.5324675320.4062758050.5324675320.6568758340.8052373160.7332339790.7018544940.7735849060.4141414140.5521885520.4994923860.7651632970.5985401460.4615384620.5546786920.5534308210.5829383890.4871287130.785942492
C3+S60.617341040.51296830.5105162520.4409578860.4494949490.6425992780.6033898310.5626975760.5023518340.6633540370.688144330.4972067040.7063492060.4953617810.4708994710.6095890410.5426829270.498599440.6504263090.434853420.5204678360.50.4309927360.5281899110.4603448280.7275204360.6785260480.4667832170.4587628870.6708542710.8177641650.8291925470.7447698740.6742424240.4655623370.5680851060.484134180.6872586870.5939933260.7225981060.4513947590.5100286530.576051780.7946428570.8177641650.5527950310.4261771750.5527950310.6750948170.8177641650.7489481070.7187079410.7876106190.4341463410.5723472670.5199610520.7795620440.6180555560.4819494580.5748116250.5735767990.6027088040.5076045630.799401198
C3+S70.6805019310.5816831680.5792933440.5101302460.5187637970.7035928140.6676136360.6294642860.5713128040.7223360660.7444561770.566265060.7605177990.5644515610.5402298850.6733524360.610389610.567632850.7106854840.503931380.5889724310.5690072640.50.5964467010.5296769350.7790055250.7359081420.5361216730.5280898880.7290589450.8555825240.8650306750.7939189190.7320872270.5349013660.6345634560.5533751960.7436708860.6588785050.7747252750.5206794680.5788177340.6420765030.8362989320.8555825240.620052770.495084270.620052770.7328482330.8555825240.7975113120.7713347920.8303886930.5032119910.6385869570.5884808010.8235981310.681159420.5512118840.6409090910.6397459170.6669820250.5764513490.840286055
C3+S80.5903465350.4847560980.4823053590.4133448870.4217506630.616279070.5760869570.5347533630.474155070.6377005350.6634214190.4690265490.6824034330.467189030.4428969360.5824175820.5145631070.4704142010.624345550.407344150.4922600620.4718100890.4035532990.50.4324569360.7045790250.6534246580.4388224470.4308943090.6454668470.800335570.8126064740.7227272730.6489795920.4376146790.5402038510.4560229450.66250.5665083140.699413490.4236234460.4818181820.5482758620.7756097560.800335570.5247524750.3988294310.5247524750.649863760.800335570.7271341460.6953352770.7681159420.4066496160.5445205480.4917525770.759554140.5910780670.4538534730.5470183490.545766590.5753920390.4793969850.780687398
C4+S10.6541274820.5525154460.5500878730.4804297770.48906250.2186379930.640736950.6013448610.5419913420.6978818280.7211981570.5368782160.7382075470.5350427350.5106035890.6466942150.5817843870.5382631130.6856516980.4742424240.5599284440.5396551720.4703230650.5675430640.50.7578692490.7121729240.5064724920.4984076430.7049549550.8402684560.8505434780.7737948080.7081447960.5052461660.6065891470.5238493720.7203682390.6316851660.7533092660.4909803920.5496049170.6143277720.8193717280.8402684560.591682420.4654275090.591682420.7089467720.8402684560.7776397520.7497005990.8129870130.4735249620.6107317070.5594280610.8056628060.6548117150.5216666670.6131243880.6119257090.64008180.5472027970.823684211
C4+S20.3766478340.2828854310.2808988760.2280501710.2341920370.2828947370.3629764070.3252032520.2743484220.424628450.4524886880.270270270.4739336490.2688172040.250.369003690.3076923080.2713704210.4106776180.2237136470.2890173410.2724795640.2209944750.2954209750.2421307510.50.4415011040.246913580.2409638550.4329004330.6269592480.645161290.5221932110.4366812230.246002460.3300330030.2600780230.4514672690.3539823010.493827160.235571260.2805049090.3372681280.5917159760.6269592480.3164556960.2176278560.3164556960.4376367610.6269592480.5277044850.4889975550.5813953490.2232142860.3338898160.2886002890.569800570.3773584910.2583979330.3361344540.3350083750.3623188410.2785515320.598802395
C4+S30.4332191780.3328947370.3307189540.2720430110.2789415660.4838200470.4188741720.3787425150.3235294120.4828244270.5111111110.3190416140.5326315790.3174404020.2966002340.4252100840.3598862020.3202531650.4685185190.2671594510.3395973150.3214739520.2640918580.3465753420.2878270760.5584988960.50.2931633840.2865232160.4912621360.6801075270.6969696970.5802752290.4951076320.2921478060.3839150230.3077858880.5100806450.4093851130.5524017470.2804878050.3302872060.3916408670.6470588240.6801075270.3693430660.2602880660.3693430660.4960784310.6801075270.5856481480.5476190480.6372795970.2665964170.388036810.3391420910.6262376240.4339622640.305925030.3904320990.3892307690.4181818180.3281452660.65374677
C4+S40.6482465460.546105640.5436720140.4739704740.4825949370.3830188680.6347554630.5951219510.5355575070.6923950060.7159624410.5304347830.7331730770.5285961870.5041322310.6407563030.5754716980.5318221450.6800445930.4677914110.553539020.5332167830.4638783270.5611775530.4935275080.753086420.7068366160.50.4919354840.6995412840.8367626890.8472222220.7692307690.7027649770.4987735080.6003937010.5173876170.7151230950.6256410260.7484662580.4845115170.543187890.6081754740.8155080210.8367626890.5854126680.4589917230.5854126680.7035755480.8367626890.7731305450.7448107450.8090185680.4670750380.6045589690.5530371710.8015768730.648936170.5152027030.6069651740.6057596820.6340956340.5407801420.819892473
C4+S50.6555671180.554089710.5516637480.4820198930.4906542060.4652493870.6422018350.6028708130.5435720450.6992230850.7224770640.5384615380.739436620.5366269170.5121951220.6481481480.5833333330.5398457580.6870229010.4758308160.5614973260.5412371130.4719101120.5691056910.5015923570.7590361450.7134767840.5080645160.50.7062780270.8411214950.8513513510.7749077490.7094594590.5068382940.6081081080.5254378650.7216494850.6331658290.7544910180.4925723220.5511811020.6158357770.82031250.8411214950.5932203390.4670126020.5932203390.7102593010.8411214950.7787391840.7508939210.8139534880.4751131220.6122448980.5609973290.8066581310.656250.5232558140.6146341460.6134371960.6415478620.5487804880.82460733
C4+S60.4418212480.3407022110.3385012920.2790202340.2860262010.270903010.4274061990.3870014770.3312262960.4915572230.519841270.3266832920.5413223140.3250620350.3039443160.4337748340.3679775280.3279098870.477231330.2740585770.3474801060.3291457290.2709410550.3545331530.2950450450.5670995670.5087378640.3004587160.2937219730.50.6876640420.7043010750.5887640450.5038461540.2994285710.3922155690.3152827920.5188118810.4178628390.5610278370.2875960480.3380645160.40.6550.6876640420.3775216140.2670744140.3775216140.5048169560.6876640420.5941043080.556263270.6453201970.273486430.3963691380.3470198680.6343825670.4425675680.3133971290.3987823440.3975720790.4267100980.3358974360.661616162
C4+S70.2644444440.1900958470.188589540.1494974870.1539456660.3581943080.2531914890.2228464420.1836419750.3051282050.3296398890.1805766310.3489736070.1794871790.165507650.258134490.209138840.1814024390.2931034480.1463714640.1947626840.1822358350.1444174760.199664430.1597315440.3730407520.3198924730.1632373110.1588785050.3123359580.50.5196506550.3940397350.3156498670.1625683060.2266666670.1729651160.3287292820.2458677690.3672839510.1549479170.1882911390.2324218750.4630350190.50.2159709620.1420047730.2159709620.3164893620.50.3993288590.3628048780.4524714830.146012270.229729730.1944444440.4407407410.2650334080.1717171720.231517510.2306201550.2526539280.1868131870.470355731
C4+S80.2494331070.178282010.1768488750.1397712830.1439790580.2386495930.2386117140.209523810.1721439750.2887139110.31250.1692307690.3313253010.1681957190.1549295770.2433628320.1964285710.1700154560.2770780860.136815920.1827242520.1708074530.1349693250.1873935260.1494565220.354838710.3030303030.1527777780.1486486490.2956989250.4803493450.50.3754266210.2989130430.1521438450.2131782950.1620029460.3116147310.2315789470.3492063490.1449275360.1765650080.2186878730.4435483870.4803493450.202952030.1326899880.202952030.299727520.4803493450.3806228370.3448275860.4330708660.1364764270.216110020.1824212270.4214559390.250.1608187130.2178217820.2169625250.2380952380.1751592360.450819672
C5+S10.3560311280.2652173910.2633093530.2127906980.2186379930.2186379930.3426966290.3060200670.2570224720.40308370.4305882350.2531120330.4518518520.2517193950.2337164750.3485714290.2890995260.2541666670.3893617020.2086659060.2711111110.2552301260.2060810810.2772727270.2262051920.4778067890.4197247710.2307692310.2250922510.4112359550.6059602650.6245733790.50.4149659860.2298994970.3106960950.2433510640.4295774650.3339416060.4716494850.2199519230.2629310340.3177083330.5700934580.6059602650.2975609760.2028824830.2975609760.4159090910.6059602650.5055248620.4668367350.5596330280.2081911260.314432990.2707100590.5479041920.3567251460.2417437250.3166089970.3155172410.3420560750.2610556350.577287066
C5+S20.438030560.3372549020.3350649350.2759358290.2828947370.2828947370.423645320.3833580980.3278271920.4877126650.5160.3233082710.53750.3216957610.3006993010.430.364406780.3245283020.4733944950.2710084030.3440.3257575760.2679127730.3510204080.2918552040.5633187770.5048923680.2972350230.2905405410.4961538460.6843501330.7010869570.5850340140.50.2962112510.3885542170.3119709790.514970060.4141252010.5572354210.2844542450.334630350.3963133640.6515151520.6843501330.3739130430.2640736950.3739130430.5009708740.6843501330.5903890160.5524625270.6417910450.2704402520.3926940640.3435419440.6308068460.438775510.3100961540.3950995410.393893130.422950820.3324742270.658163265
C5+S30.6493644070.5473214290.5448888890.4751937980.4838200470.4838200470.6358921160.5963035020.5367775830.6934389140.7169590640.5316565480.7341317370.5298184960.5053586150.6418848170.5766698020.5330434780.6811111110.4690130070.5547511310.5344376630.4650986340.5623853210.4947538340.753997540.7078521940.5012264920.4931617060.7005714290.8374316940.8478561550.7701005030.7037887490.50.6015701670.5186125210.7161214950.6267893660.7493887530.4857369260.5444049730.6093439360.8162450070.8374316940.5866028710.460210210.5866028710.7045977010.8374316940.7739898990.7457420920.8097754290.4682964090.6057312250.5542495480.8023560210.6500530220.516427970.6081349210.6069306930.6352331610.5419982320.820615797
C5+S40.5508819540.4446878420.4422657950.374884580.3830188680.3830188680.5363276090.4945188790.4342245990.5997045790.626543210.4291754760.6464968150.4273684210.4035785290.5427807490.4742990650.4305408270.5858585860.3690909090.4521158130.4319148940.3654365440.4597961490.3934108530.6699669970.6160849770.3996062990.3918918920.6077844310.7733333330.7868217050.6893039050.6114457830.3984298330.50.4164102560.6255778120.5265888460.6644844520.3848341230.4417845480.5081351690.7463235290.7733333330.4844868740.3608888890.4844868740.6123680240.7733333330.6940170940.6601626020.7381818180.3684210530.5043478260.4516129030.7289048470.5516304350.4142857140.5068664170.5056039850.5356200530.4393939390.751851852
C5+S50.6322222220.5288104090.5263644770.4566613160.4652493870.4652493870.6184782610.5782520330.5182149360.6773809520.7016029590.5130748420.7193426040.5112309070.4867408040.6245883640.5583905790.5144665460.6647196260.4505146480.5362865220.515865820.4466248040.5439770550.4761506280.7399219770.6922141120.4826123830.4745621350.6847172080.8270348840.8379970540.7566489360.6880290210.4813874790.5835897440.50.7007389160.6092077090.7351421190.4671592780.5258780040.5914760910.8048090520.8270348840.5684315680.4417701860.5684315680.6888619850.8270348840.7606951870.7313624680.7980364660.4498023720.5878099170.5357815440.7902777780.6329254730.4978127730.5902489630.5890269150.6178067320.5234590620.809388336
C5+S60.4233449480.3240.3218543050.2641304350.270903010.270903010.4090909090.3693009120.3147668390.4727626460.5010309280.3103448280.5225806450.3087674710.2882562280.4153846150.3506493510.3115384620.4584905660.2593383140.3306122450.3127413130.2563291140.33750.2796317610.5485327310.4899193550.2848769050.2783505150.4811881190.6712707180.6883852690.5704225350.485029940.2838785050.3744221880.2992610840.50.3996710530.5424107140.2724215250.3214285710.3820754720.6377952760.6712707180.360.2525987530.360.4860.6712707180.5758293840.5376106190.6279069770.2587859420.3785046730.3301630430.6167512690.424083770.2974296210.3808777430.37968750.4084033610.3193166890.644562334
C5+S70.5244252870.4185779820.4161915620.3502879080.3581943080.3581943080.5097765360.4679487180.4082774050.5738993710.6013179570.4033149170.6218057920.4015401540.3782383420.5162659120.4478527610.4046563190.5598159510.3446647780.4259043170.4060066740.3411214950.4334916860.3683148340.6460176990.5906148870.3743589740.3668341710.5821371610.7541322310.7684210530.6660583940.5858747990.3732106340.4734111540.3907922910.6003289470.50.6403508770.3599605520.415717540.4815303430.7256461230.7541322310.4579673780.3367158670.4579673780.586816720.7541322310.6709558820.6358885020.7170923380.344015080.4777486910.4254079250.7073643410.5251798560.3887113950.4802631580.4790026250.5090655510.4133635330.731462926
C5+S80.3824626870.2879213480.2859135290.2324263040.2386495930.2386495930.3687050360.3306451610.2792915530.4306722690.4586129750.2751677850.4800936770.2736982640.2546583850.3747714810.3129770990.2762803230.4166666670.2280311460.2941176470.2774018940.2252747250.300586510.2466907340.506172840.4475982530.2515337420.2455089820.4389721630.6327160490.6507936510.5283505150.4427645790.2506112470.3355155480.2648578810.4575892860.3596491230.50.2400468380.285515320.3428093650.5976676380.6327160490.3218210360.2218614720.3218210360.4437229440.6327160490.5338541670.4951690820.587392550.2275249720.3394039740.2936962750.5758426970.383177570.2631578950.3416666670.3405315610.3680430880.2835408020.604719764
C6+S10.6622448980.5614186850.5590008610.4894419310.4980813510.4980813510.6490.6099624060.5509337860.7054347830.7283950620.5458368380.7451205510.5440067060.5196156930.6548940460.5905368520.5472175380.6933760680.4832464630.5687992990.5486052410.4793205320.5763765540.5090196080.764428740.7195121950.5154884830.5074276780.7124039520.8450520830.8550724640.7800480770.7155457550.5142630740.6151658770.5328407220.7275784750.6400394480.7599531620.50.5585197930.6228406910.8246505720.8450520830.6003700280.4744152050.6003700280.7163355410.8450520830.7838164250.7564102560.8184110970.4825278810.6192748090.5683012260.811250.6629213480.5306623060.621647510.6204588910.6483516480.5561268210.828863346
C6+S20.6078199050.5029411760.5004878050.4310924370.4395886890.4395886890.593750.5528017240.4923224570.6543367350.6794701990.4871794870.6979591840.4853358560.4609164420.60.532710280.4885714290.641250.4250207130.5104477610.4899713470.4211822660.5181818180.4503950830.7194950910.6697127940.456812110.4488188980.6619354840.8117088610.8234349920.7370689660.665369650.4555950270.5582154520.4741219960.6785714290.584282460.714484680.4414802070.50.5662251660.7880184330.8117088610.5428571430.4163961040.5428571430.6662337660.8117088610.741329480.7105263160.7808219180.4243176180.56250.5099403580.7725903610.6085409250.4719411220.5649779740.5637362640.5930635840.497575170.792890263
C6+S30.542817680.4366666670.4342541440.367289720.3753581660.3753581660.5282258060.4863861390.4262472890.591867470.6188976380.4212218650.639024390.4194236930.3957703930.5346938780.4661921710.4225806450.5779411760.3615455380.4440677970.423948220.3579234970.4517241380.3856722280.6627318720.6083591330.3918245260.3841642230.60.7675781250.7813121270.6822916670.6036866360.3906560640.4918648310.4085239090.6179245280.5184696570.6571906350.3771593090.4337748340.50.7401129940.7675781250.4763636360.3534172660.4763636360.6046153850.7675781250.6870629370.652823920.7318435750.3608815430.4962121210.4435665910.7224264710.5435684650.4064115820.4987309640.4974683540.5275167790.4313940720.74573055
C6+S40.294243070.2139534880.2123076920.1693251530.1742424240.1742424240.2822085890.249547920.2068965520.3374083130.3631578950.2035398230.3833333330.2023460410.186991870.28750.2346938780.2044444440.3247058820.1658653850.2190476190.2053571430.1637010680.2243902440.1806282720.4082840240.3529411760.1844919790.17968750.3450.5369649810.5564516130.4299065420.3484848480.1837549930.2536764710.1951909480.3622047240.2743538770.4023323620.1753494280.2119815670.2598870060.50.5369649810.2421052630.1610268380.2421052630.3493670890.5369649810.435331230.3976945240.4893617020.1654676260.256983240.2187004750.4775086510.2948717950.1938202250.258911820.2579439250.2816326530.2103658540.507352941
C6+S50.2644444440.1900958470.188589540.1494974870.1539456660.1539456660.2531914890.2228464420.1836419750.3051282050.3296398890.1805766310.3489736070.1794871790.165507650.258134490.209138840.1814024390.2931034480.1463714640.1947626840.1822358350.1444174760.199664430.1597315440.3730407520.3198924730.1632373110.1588785050.3123359580.50.5196506550.3940397350.3156498670.1625683060.2266666670.1729651160.3287292820.2458677690.3672839510.1549479170.1882911390.2324218750.4630350190.50.2159709620.1420047730.2159709620.3164893620.50.3993288590.3628048780.4524714830.146012270.229729730.1944444440.4407407410.2650334080.1717171720.231517510.2306201550.2526539280.1868131870.470355731
C6+S60.5661861070.4600638980.4576271190.3895401260.3977900550.3977900550.5517241380.5100354190.4495317380.6145092460.6409495550.4444444440.6605504590.4426229510.4186046510.5581395350.4897959180.4458204330.6008344920.383658970.4675324680.4472049690.379947230.4752475250.408317580.6835443040.6306569340.4145873320.4067796610.6224783860.7840290380.797047970.7024390240.6260869570.4133971290.5155131260.4315684320.640.5420326220.6781789640.3996299720.4571428570.5236363640.7578947370.7840290380.50.3753258040.50.6269956460.7840290380.7070376430.6739469580.750.3829787230.5198555960.4670270270.7409948540.5669291340.4294234590.5223700120.5211097710.5510204080.4547368420.763250883
C6+S70.6847619050.5864600330.5840779850.515042980.5236707940.5236707940.6719626170.6340388010.5761217950.7262626260.748178980.5710881650.7640807650.5692794930.5451099320.6776625820.6150556030.5724522290.714711730.5088464260.5937241950.5738228250.504915730.6011705690.5345724910.7823721440.7397119340.5410082770.5329873980.7329255860.8579952270.8673100120.7971175170.7359263050.539789790.6391111110.5582298140.7474012470.6632841330.7781385280.5255847950.5836038960.6465827340.8389731620.8579952270.6246741960.50.6246741960.7366803280.8579952270.8006681510.7747844830.8331402090.5081272080.6431127010.5932343230.8264367820.6854146810.5560711520.6454219030.6442652330.6713352010.5812449470.842907386
C6+S80.5661861070.4600638980.4576271190.3895401260.3977900550.3977900550.5517241380.5100354190.4495317380.6145092460.6409495550.4444444440.6605504590.4426229510.4186046510.5581395350.4897959180.4458204330.6008344920.383658970.4675324680.4472049690.379947230.4752475250.408317580.6835443040.6306569340.4145873320.4067796610.6224783860.7840290380.797047970.7024390240.6260869570.4133971290.5155131260.4315684320.640.5420326220.6781789640.3996299720.4571428570.5236363640.7578947370.7840290380.50.3753258040.50.6269956460.7840290380.7070376430.6739469580.750.3829787230.5198555960.4670270270.7409948540.5669291340.4294234590.5223700120.5211097710.5510204080.4547368420.763250883
C7+S10.437074830.3363874350.334200260.27516060.2821075740.2821075740.4226973680.3824404760.326972010.4867424240.515030060.3224592220.5365344470.3208489390.2998833140.4290484140.3635077790.3236775820.4724264710.2702418510.3431241660.3249051830.2671517670.350136240.2910532280.5623632390.5039215690.2964244520.2897406990.4951830440.6835106380.700272480.5840909090.4990291260.2954022990.3876319760.3111380150.5140.413183280.5562770560.2836644590.3337662340.3953846150.6506329110.6835106380.3730043540.2633196720.3730043540.50.6835106380.5894495410.5515021460.6408977560.2696747110.3917682930.3426666670.6299019610.4378194210.3092659450.3941717790.3929663610.4220032840.3316129030.657289003
C7+S20.2644444440.1900958470.188589540.1494974870.1539456660.1539456660.2531914890.2228464420.1836419750.3051282050.3296398890.1805766310.3489736070.1794871790.165507650.258134490.209138840.1814024390.2931034480.1463714640.1947626840.1822358350.1444174760.199664430.1597315440.3730407520.3198924730.1632373110.1588785050.3123359580.50.5196506550.3940397350.3156498670.1625683060.2266666670.1729651160.3287292820.2458677690.3672839510.1549479170.1882911390.2324218750.4630350190.50.2159709620.1420047730.2159709620.3164893620.50.3993288590.3628048780.4524714830.146012270.229729730.1944444440.4407407410.2650334080.1717171720.231517510.2306201550.2526539280.1868131870.470355731
C7+S30.3509803920.2609329450.2590448630.209112150.2148859540.2148859540.3377358490.3013468010.2528248590.3977777780.4251781470.2489568850.446384040.247579530.2297817720.3435700580.2845786960.250.3841201720.2050400920.2667660210.2510518930.2024886880.2728658540.2223602480.4722955150.4143518520.2268694550.2212608160.4058956920.6006711410.6193771630.4944751380.4096109840.2260101010.3059829060.2393048130.4241706160.3290441180.4661458330.2161835750.258670520.3129370630.564668770.6006711410.2929623570.1993318490.2929623570.4105504590.6006711410.50.4613402060.5541795670.2045714290.3096885810.2663690480.5424242420.3516699410.2377158030.311846690.3107638890.3370998120.2568149210.571884984
C7+S40.3870370370.2918994410.2898751730.2358916480.2421784470.2421784470.3732142860.3349358970.2831978320.4354166670.4634146340.2790387180.4849187940.2775564410.2583436340.3793103450.3171471930.2801608580.4213709680.231450720.2981455060.2812920590.2286652080.3046647230.2502994010.5110024450.4523809520.2551892550.2491060790.443736730.6371951220.6551724140.5331632650.4475374730.2542579080.3398373980.2686375320.4623893810.3641114980.5048309180.2435897440.2894736840.347176080.6023054760.6371951220.3260530420.2252155170.3260530420.4484978540.6371951220.5386597940.50.5920679890.2309392270.343750.2977207980.5805555560.3877551020.2669220950.346026490.3448844880.372549020.2874828060.609329446
C7+S50.3031578950.2211981570.2195121950.1753958590.1804511280.1804511280.2909090910.2576028620.2139673110.3469879520.3730569950.2105263160.3934426230.2093023260.1935483870.2962962960.2424242420.2114537440.3341067290.1718377090.2264150940.2123893810.1696113070.2318840580.1870129870.4186046510.3627204030.1909814320.1860465120.3546798030.5475285170.5669291340.4403669720.3582089550.1902245710.2618181820.2019635340.3720930230.2829076620.412607450.1815889030.2191780820.2681564250.5106382980.5475285170.250.1668597910.250.3591022440.5475285170.4458204330.4079320110.50.1714285710.265193370.2260596550.4881355930.3037974680.2005571030.267161410.2661737520.2903225810.2175226590.517985612
C7+S60.6777020450.5785536160.576158940.5069191550.5155555560.5155555560.6647564470.6264626460.5681632650.719751810.7420042640.5631067960.7581699350.5612903230.5370370370.6705202310.6073298430.5644768860.7080366230.5007194240.5858585860.5658536590.4967880090.5933503840.5264750380.7767857140.7334035830.5329249620.5248868780.726513570.853987730.8635235730.7918088740.7295597480.5317035910.6315789470.5501976280.7412140580.655984920.7724750280.5174721190.5756823820.6391184570.8345323740.853987730.6170212770.4918727920.6170212770.7303252890.853987730.7954285710.7690607730.8285714290.50.6356164380.5853658540.8217237310.6783625730.5480314960.6379468380.6367795060.6641221370.5733113670.838554217
C7+S70.5465753420.4403973510.4379802410.3708178440.3789173790.3789173790.5320.490171990.4299568970.5955223880.6224648990.4249201280.6425120770.4231177090.3993993990.5384615380.4699646640.4262820510.5816326530.365050320.4478114480.4276527330.3614130430.4554794520.3892682930.6661101840.611963190.3954410310.3877551020.6036308620.770270270.783889980.685567010.6073059360.3942687750.4956521740.4121900830.6214953270.5222513090.6605960260.3807251910.43750.5037878790.743016760.770270270.4801444040.3568872990.4801444040.6082317070.770270270.6903114190.656250.734806630.3643835620.50.4473094170.7254545450.5473251030.4100719420.5025188920.5012562810.5312916110.4351145040.748592871
C7+S80.5983009710.4930.4905472640.4213675210.4298169140.4298169140.5841232230.5429515420.4823874760.6452879580.6707482990.4772507260.689510490.4754098360.451052150.5904191620.5227995760.4786407770.6320512820.4153327720.5005076140.4800389480.4115191990.5082474230.4405719390.7113997110.6608579090.4469628290.4390026710.6529801320.8055555560.8175787730.7292899410.6564580560.4457504520.5483870970.4642184560.6698369570.5745920750.7063037250.4316987740.4900596420.5564334090.7812995250.8055555560.5329729730.4067656770.5329729730.6573333330.8055555560.7336309520.7022792020.7739403450.4146341460.5526905830.50.765527950.5990279470.4620431120.555180180.5539325840.5834319530.4876360040.786283892
C8+S10.3132780080.2294832830.227752640.182367150.187577640.187577640.3007968130.2667844520.2220588240.3578199050.3842239190.2185238780.4048257370.2172661870.2010652460.3062880320.251247920.2194767440.3447488580.1786982250.2348367030.2204379560.1764018690.240445860.1943371940.430199430.3737623760.1984231270.1933418690.3656174330.5592592590.5785440610.4520958080.3691931540.1976439790.2710951530.2097222220.3832487310.2926356590.4241573030.188750.2274096390.2775735290.5224913490.5592592590.2590051460.1735632180.2590051460.3700980390.5592592590.4575757580.4194444440.5118644070.1782762690.2745454550.234472050.50.3139293140.2082758620.2765567770.2755474450.3001988070.2257100150.529824561
C8+S20.499243570.3942652330.391923990.3277060580.3353658540.3353658540.4845814980.442953020.3841676370.5490848590.5769230770.3793103450.5978260870.3775743710.354838710.4910714290.4230769230.3806228370.5348460290.3222656250.4014598540.3819444440.318840580.4089219330.3451882850.6226415090.5660377360.351063830.343750.5574324320.7349665920.750.6432748540.561224490.3499469780.4483695650.3670745270.575916230.4748201440.616822430.3370786520.3914590750.4564315350.7051282050.7349665920.4330708660.3145853190.4330708660.5621805790.7349665920.6483300590.6122448980.6962025320.3216374270.4526748970.4009720530.6860706860.50.3650442480.4551724140.453920220.4838709680.3891509430.711206897
C8+S30.6342541440.5309898240.528545120.4588329340.467426710.467426710.6205405410.5803842260.5203989120.6792899410.7034313730.5152603230.7211055280.5134168160.4889267460.6266375550.5605468750.5166516650.6666666670.4526813880.5384615380.5180505420.4487881160.5461465270.4783333330.7416020670.694074970.4847972970.4767441860.6866028710.8282828280.8391812870.7582562750.6899038460.483572030.5857142860.5021872270.7025703790.6112886050.7368421050.4693376940.5280588780.5935884180.8061797750.8282828280.5705765410.4439288480.5705765410.6907340550.8282828280.7622841970.7330779050.7994428970.4519685040.5899280580.5379568880.7917241380.6349557520.50.5923632610.5911431510.619870410.5256410260.810734463
C8+S40.5440771350.4379157430.4355016540.3684701490.3765490940.3765490940.5294906170.4876543210.4274891770.5930930930.6200941920.4224598930.6401944890.4206602770.3969849250.5359565810.4674556210.4238197420.5791788860.362718090.4453213080.4251883750.3590909090.4529816510.3868756120.6638655460.6095679010.3930348260.3853658540.6012176560.768482490.7821782180.6833910030.6049004590.3918650790.4931335830.4097510370.6191222570.5197368420.6583333330.378352490.4350220260.5012690360.741088180.768482490.4776299880.3545780970.4776299880.6058282210.768482490.688153310.653973510.732838590.3620531620.4974811080.444819820.7234432230.5448275860.4076367390.50.4987373740.5287817940.432639650.746691871
C8+S50.545329670.4391592920.4367436740.3696461820.377735490.377735490.5307486630.4889162560.4287257020.5943113770.6212832550.4236926360.6413570270.4218916050.3981945840.5372124490.4687131050.4250535330.5804093570.3638863430.4465691790.4264232010.3602540830.454233410.3880742910.6649916250.6107692310.3942403180.3865628040.6024279210.7693798450.7830374750.6844827590.606106870.3930693070.4943960150.4109730850.62031250.5209973750.6594684390.3795411090.4362637360.5025316460.7420560750.7693798450.4788902290.3557347670.4788902290.6070336390.7693798450.6892361110.6551155120.7338262480.3632204940.4987437190.4460674160.7244525550.546079780.4088568490.5012626260.50.5300400530.4338797810.747645951
C8+S60.5153733530.4097788130.4074074070.3420796890.3499005960.3499005960.5007112380.45893090.399545970.5650080260.5925925930.3946188340.6132404180.3928571430.3697478990.5072046110.4389027430.3959505060.550860720.3365200760.4170616110.3972911960.3330179750.4246079610.35991820.6376811590.5818181820.3659043660.3584521380.5732899020.7473460720.7619047620.6579439250.577049180.3647668390.4643799470.3821932680.5915966390.4909344490.6319569120.3516483520.4069364160.4724832210.7183673470.7473460720.4489795920.3286647990.4489795920.5779967160.7473460720.6629001880.627450980.7096774190.3358778630.4687083890.4165680470.6998011930.5161290320.380129590.4712182060.4699599470.50.4045977010.724279835
C8+S70.6101295640.5053658540.5029126210.4334728030.4419795220.4419795220.5960874570.5551982850.4947468960.656527250.6815789470.4896030250.70.4877589450.463327370.6023255810.5351239670.4909952610.6434782610.4273927390.5128712870.4923954370.4235486510.5206030150.4527972030.7214484680.6718547340.4592198580.4512195120.6641025640.8131868130.8248407640.7389443650.6675257730.4580017680.5606060610.4765409380.6806833110.5866364670.7164591980.4438731790.502424830.5686059280.7896341460.8131868130.5452631580.4187550530.5452631580.6683870970.8131868130.7431850790.7125171940.7824773410.4266886330.5648854960.5123639960.7742899850.6108490570.4743589740.567360350.5661202190.5954022990.50.794478528
C8+S80.2881720430.2090483620.2074303410.1652281130.1700507610.1700507610.276288660.2440801460.2021116140.3308641980.3563829790.1988130560.3764044940.1976401180.1825613080.2815126050.2294520550.1997019370.3182897860.1618357490.2140575080.2005988020.1597139450.2193126020.1763157890.4011976050.346253230.1801075270.175392670.3383838380.5296442690.5491803280.4227129340.3418367350.1793842030.2481481480.1906116640.3554376660.2685370740.3952802360.1711366540.2071097370.254269450.4926470590.5296442690.2367491170.1570926140.2367491170.3427109970.5296442690.4281150160.3906705540.4820143880.1614457830.2514071290.2137161080.4701754390.2887931030.1892655370.2533081290.2523540490.2757201650.2055214720.5

You’ll notice that starting with Row 1, Column 1 (position [1,1]) and following along a perfect diagonal (positions [2,2], [3,3], [4,4], etc.) all the probabilities are 0.5, or dead even. This is because due to the way the table is set up, each Cn+Sn is pitted against itself exactly once.

There are also 448 other instances of the same Competitor facing itself with a different Strategy.

These 512 matchups notwithstanding, our table does give us the win probabilities for every real combination of Cn+Sn.

This is Bayes’ Theorem at work.

We’re on to a start.

1.1 Bayesian Inference & Conditional Probability in Trading Card Games

With the foundations of our project set, this first post seeks to demonstrate the reason for choosing Bayesian Inference as our probabilistic framework.

What is Probability?

When we say probability, at least in terms of this project in general and events wagering in particular, what we mean is:

“How certain (or uncertain) are we that a given outcome will occur?”

That is, without knowing what the future holds, how do we assign a value to our belief that a given outcome will occur?

A probability of 0 means that we are certain that an outcome has no chance of occurring, while a probability of 1 means that we are certain that an outcome has an absolute chance of occurring.

It’s a bit like this:

Most of what we experience in life isn’t all the way in the red toward 0 nor all the way to the right at 1. It’s somewhere in between.

But where, exactly?

Classical Probability and Poor Inferences

When we think of probability generally, six-sided dice and coins come most frequently to mind and are used very liberally to demonstrate examples of probability.

We assume that rolling a 6 on a six-side die is 1/6 and that getting a heads on a coin flip is 1/2.

These are true for the purposes of those thought experiments.

We might be tempted to extend these thought experiments further and apply them to the case of assigning probabilities to a two-player, winner-take-all game like a trading card game (TCG).

If Player A has played 1,000 games and we know that he or she has won 759 of those games, we might say that the probability that Player A win the 1,001st game is 0.759.

That would be a false assumption.

What this simple model lacks is conditionality. 

In the 1,001st game, Player A will not play against some long-run average player under some long-run average conditions, but against a particular player under particular conditions.

What’s more, Player A may never have played this theoretical 1,001st opponent before and may never have seen this opponent’s strategy. In fact, that opponent’s strategy might be completely different from the previous 1,000 strategies Player A has encountered, and might be, something no one has ever seen or accounted for before.

What is Player A’s probability of winning now?

We must conclude that Player A’s probability of winning the 1,001st game is conditioned on these, and many more, circumstances.

Likewise, this 1,001st opponent, call him or her Player B, has a win probability that is likewise conditioned on Player A, Player A’s strategy, and the circumstances of their meeting to play.

Bayesian Inference

The only theoretical framework that allows us to assign these probabilities, in this example and the whole of this project, is Bayes Theorem.

Bayes’ Theorem states that:

[math] P(A|B)=\frac{P(A)P(B|A)}{P(B)}\ [/math]

Applied to our case, this means that the probability of Player A winning given that he or she plays against Player B, P(A|B), is equal to the probability that Player A win any match, P(A), times the probability that Player B win given that he or she plays against Player A, P(B|A), over the probability that Player B win any match, P(B).

As we’ll see in the next post, using Excel  the and R programming language to construct matrixes of player and strategy combinations, this is easy to compute.

Project 1: What if a Sportsbook Offered Odds on Trading Card Games?

Background

I’ve been a lifelong fan of trading card games.

Ever since the Star Wars CCG (Customizable Card Game) in 1995 and later, Pokémon TCG (Trading Card Game) in 1999 (in the U.S.), I’ve been hooked.

Trading card games are games of skill where two competitors construct decks of cards from those available in the game and play against one another.

One player wins and another loses. (Sometimes, there is a draw.) These games are “zero-sum” in this way.

Working in the gambling industry, as I have, for 10 years now led me to ask: “What if a sportsbook placed betting prices on the outcome of trading card game events like they do for professional sports events?”

Basically: what if you can bet on games like Pokémon and Magic: the Gathering or Yu-Gi-Oh?

What would this take to make work? What are the theoretical concepts than underpin such an endeavor? What kind of profit could the sportsbook expect?

I attempt to answer these and more during the course of this project.

I aim for this project to change and evolve as its proceeds, knowing that the final conclusions I draw may be very different from my starting assumptions.

I hope also to get some comment from readers to help improve what’s being done here.

This project is both a demonstration and also some food for thought.

Objectives

My objectives for this project are:

  1. Demonstrate how Bayesian Inference can help us construct a predictive model for two-player, winner-take-all events (card games).
  2. Demonstrate how, given the probabilities assumed by these inferences, odds and betting prices by a fictional sportsbook (“TCGBook”) can be set.
  3. Model the outcomes of fictional and real matchups in a trading card game tournament setting.
  4. Model the profit and loss of our fictional sportsbook (“TCGBook”).
  5. Open these ideas to the public for comment, critique, and improvement.

Limitations

Before starting on this quest to model our TCGBook endeavor, it is important that I acknowledge a few key limitations.

We compare our subject, trading card games, to the tried-and-true professional sports leagues on which our sports betting idea and models are largely based.

Data Availability

The data for card game events can be very hard to come by.

Most of the data sources are compiled by fans of the games and not the hosts or producers of the games themselves. The “big dogs”, as it were, do not wish to disclose their proprietary information. Or at least, not all of it. Maybe they never thought to or they not in a place to do this regularly.

The fans that do this tireless service for us should be acknowledged for their efforts, both for this project, and more importantly, for the fandom and playerbases of these games.

That being said, much of the data that we would like to have is simply unavailable or is, at best, incomplete.

In real sports betting, sportsbooks are able to rely heavily on data aggregators to compile every conceivable bit of data about sports, events, scores, goals, fouls, players, training, coaches, etc. This isn’t the case for trading card games. The interest and size of the market just isn’t the same. It’s much smaller.

We would love to see data on each major tournament, broken down by each round. We would love to see player data reported with unique ID keys to keep variations of a player’s name or misspellings from confusing the data. We’d love to see local, sanctioned tournament data, too. But these are not realities.

We will work within these limitations and show that, at least conceptually, our idea is possible.

We’ll focus only on the widely available data, namely that from major tournaments and the highest ranked players and best known strategies.

Nature of Trading Card Game Events

Trading card game events don’t work like professional sports matches.

In professional sports matches, we know which team will play against which team and on what date. This allows the sportsbook advance knowledge of these events and gives it time to compute odds and set prices. Season schedules for any major sport are announced well ahead of time.

This is not the case for card game tournaments.

At local tournaments, anyone can show up with a deck to sign up to play. At major events, any number of qualified players can show up (or not show up). Add to this the possibility of any given strategy (i.e. deck of cards) being used by any competitor, and the matchups are simply unknowable ahead of time.

In this project we will simply ignore this as a problem. We will make the assumption that the odds are set sometime in advance of the event taking place (maybe just minutes before). Making this assumption allows us to proceed to demonstrate our ideas.

Feasibility of Taking Bets

This project isn’t a serious attempt to find a way to start taking bets on trading card games.

This may or may not be legal in any jurisdiction, and what is proposed in this project is not legal advice nor an inducement to try and make this work outside of the law.

To complicate matters, the participants of many card game events are under the legal age to gamble in many places.

Nowadays, most jurisdictions (at least in the U.S.) allow betting on college sports, where the expectation is that competitors are least 18 years of age.

Whether or not taking bets on such events would fly with gaming regulators is not considered here. This is about proving a concept (and having fun while doing it).

Don’t take anything in this project too seriously as far as making money at gambling on trading card games goes.

This is a big “what if” sort of project.

Assumptions

With our objectives in mind, and our limitations outlined, we’ll make the following assumptions for this project:

  1. All probabilistic modelling will be based on Bayesian (not Frequentist) inference.
  2. We will briefly discuss, but largely ignore, the outcome of ties. We care only about win probabilities (and consequently, not win probabilities).
  3. Win probabilities are expected to describe the win probability of matches; that is, “best two-out-of-three” matches in which the first competitor to win two games, wins the match. (This is the circumstance which often contributes to a draw between players: a time limit for the match it met with neither player having a decisive, tie-breaking win).
  4. The outcomes we seek are not only probabilistic, but also commercial: this is about setting bet prices for potential bettors. As “the house”, we expect to make money in the long run. Our models, odds, and prices will reflect that desire.
  5. As mentioned previously, we assume that we know who is playing and which deck they are using before the match. We know the identities of players and the decks they each use beforehand, thus, giving rise to our probabilities for each player to win and the consequent bet prices for each side of the match.
  6. While I will take time to explain many of the theories and logic behind each step we take in this project, I will assume that readers have some familiarity with the mathematics of probability, statistical inference, the software systems we’ll use, and the games we are speaking about. Feel free to ask in the comments if you’re unsure about something!

Segments

The project is broken down into the following segments, each with its own dedicated page: