← Home · The race · Every pick · How this started
This page explains how Pixel Forge Plays decides which betting models are worth paying for, and what happens to the ones that are not.
Pixel Forge Plays is a public lab. We build betting models, run them in the open, and score every one of them against a standard we wrote down in advance.
We publish the bar before any model races it, measure in public, and only sell picks from a model that has cleared it.
The standard below is published before any model races against it, and it does not change during a race.
Models move against the standard constantly. The standard itself does not move.
We do not know yet whether we have an edge. That is the honest answer, and it is the reason the lab exists rather than a sales page.
Watching is free and always will be. The only thing we sell is the picks of a model that has cleared the standard below.
This page lives in a public repository and its full edit history is linked at the bottom. If we ever changed a number in the middle of a race, the commit log would show it, with the date. You do not have to take our word for any of this.
Five lab rules race for the Standard right now, across four ponds:
Each one started from zero. None of them has cleared the bar. Their live progress is on the dashboard.
Outside builders race their own models next to our lab, graded the same way. They are not racing for the Standard this season. The builders page carries the current count of models and open spots, and counts cappers on their own.
MLB totals, our first pond, finished its 2026 games on September 27. It reopens on MLB's Opening Day in 2027.
When we publish a pick, we record the price. When the game starts, we record where that price ended up.
Say we published a team at +150 and it closed at +120. A price of +150 pays $150 on a $100 bet, and +120 pays $120, so we recorded the better of the two. That is positive closing line value, and it holds whether the bet won or lost.
We grade models on this rather than on win rate, because win rate on its own means nothing.
A team at -300, where you risk $300 to win $100, is expected to win about 75% of the time. Going 7-3 on heavy favourites is not skill. It is arithmetic working normally.
It is not a promise that you make money.
A model can beat the close for a month and still lose money that month. Over a long enough run those two things converge. But "long enough" is longer than most people expect, and anyone who tells you otherwise is selling something.
Clearing this standard is a statement about process, not about outcome. It says a model has been pricing games better than the market settled on. It does not say its next ten picks win, and we will not present it as though it does.
It is also not one number. We publish the price we recorded when a pick was posted, which is the price you could have taken at that moment. It is not the price you get if you act three hours later.
We report both, and we do not average away the difference.
Update, Oct 6, 2026: We do not publish the later price yet. Starting today we record the DraftKings price 15 minutes, 1 hour and 2 hours after every NHL lab entry. We will publish it here once there is enough data to mean something.
Lab rules are graded at the same sportsbook they were priced at. Today that is DraftKings for every lab rule.
The price is the one the rule recorded when it made the pick.
The close is the last price at that book, on the same side and line, recorded before the game starts.
We grade 15 minutes after the start, so the last price before the start is in.
If the price did not move, the pick is a tie, counted as described in the entry gate below.
If the line itself changed, so the close is on a different number, the pick is counted and shown but left out of the average.
Closing line value is the gap between our price and the close, measured in percentage points of win chance.
We read the win chance straight off the posted price. We do not strip out the sportsbook's built-in cut, sometimes called the vig. Leaving it in is the harsher of the two choices, because the same cut sits in both prices we compare.
This is different from how our first model, v7, was measured on MLB totals. That method is described in Season 1 below.
A pond is one sport and one market. MLB totals is a pond. MLB moneyline is a different pond.
A model that prices run totals is not competing with a model that prices who wins, so they do not race each other.
Every pond carries the identical standard. We do not lower the bar for a quiet market.
Most ponds are empty, and empty is the expected state rather than a stage on the way somewhere.
The standard is deliberately hard to clear. If it were easy, clearing it would not tell you anything. A pond that sits empty for an entire season is the system working, not the system stalling.
A model enters a pond by clearing five conditions at once. Falling short on any one of them is not clearing.
1. Sample. At least 100 decided picks, each with a verified closing price.
2. Beat the close on average. Mean closing line value of at least +1.5 points.
3. Beat the close often. At least 55% of moved picks priced better than the closing line. A moved pick is one whose closing price differs from the price we recorded. Picks whose price did not move count toward the sample, the mean and the days, and are shown next to this rate as a tie count, but they are left out of this one percentage. The percentage needs at least 50 moved picks before it is read. This wording applies to seasons declared on or after October 2, 2026; see the dated change below.
4. Spread across time. At least 30 distinct days. A model cannot qualify on three hot afternoons.
And the follower test: picks taken 1 hour after we post must still beat the close on average.
Condition one means one hundred decided picks each carrying a verified closing price.
A pick we could not measure does not count toward the hundred, and it does not count toward the other three either. There is no version of this where a model sells picks on a record we could not fully measure.
The fourth condition exists because picks made on the same day are not independent evidence. Twenty picks on one day's games tell you far less than twenty picks across twenty days, and a standard that ignored this would be easy to game by accident.
Miss any of these and nothing is sold. Pass them all and a model can still be publicly evicted if it stops passing.
Clearing the bar is not enough to sell. A follower also has to be able to get the edge.
The test: picks taken 1 hour after we post must still beat the closing line on average.
How we measure it: the follower price is the DraftKings price for the same side and line, taken about 1 hour after the entry posts. If the game starts before then, we use the last price before the start.
Missing data never helps a rule. If more than 1 in 5 picks have no 1-hour price, the test fails.
It never stops applying. If a rule that is for sale starts failing the follower test, it is pulled, the same as failing the bar.
This test counts from October 6, 2026, the day it was published. Nothing before it is counted.
Clearing the gate is not permanent. A model in a pond is re-checked every 50 decided picks against a standing condition: its running average closing line value must stay above zero.
A model that fails the standing condition is evicted from the pond. We stop selling it that day.
Eviction is not hidden. We post it, with the numbers that caused it, and the model goes on a public list that only ever grows.
Suspension and eviction are the standard being applied, not the standard being changed. The rules stay put. Models move against them.
If we fail to record a closing price for more than ten percent of a racing model's picks in one of those 50-pick review periods, we suspend that model until the measurement is fixed.
This rule governs models already in a pond. Entry is governed separately and more strictly: a model does not enter a paid pond until it has one hundred decided picks with a verified closing price on every one of them. There is no version of this where a model sells picks on a record we could not fully measure.
This rule is aimed at us, not at the model. A model cannot be graded on picks we failed to measure, and a standard that quietly scored the ones that happened to work would be worthless.
We would rather suspend a model that might be fine than publish a number built on the picks that were easy to check.
We have already failed this test once. The three weeks described in "Our capture rate" are exactly the failure this rule describes. The rule did not exist when it happened, and even now nothing automated enforces it. That is not an excuse, it is the point of the section on what is a rule and what is a machine.
Race enough models and one of them clears any bar by luck alone. That is arithmetic, not cynicism.
So the size of the field is fixed and published before a season starts, and the bar is set with that number already accounted for. A larger field means a higher bar for everyone in it.
The bar on this page is set for a field of up to six rules. If six rules with no real edge raced, the chance that any one of them reached the mean condition by luck alone is under 1 in 100. We checked this against the lab's graded picks on October 15, 2026. A field larger than six raises the mean bar, and the new number is published before that season opens.
Seasons run per pond, not across the whole project. Sports do not share a calendar, so each pond has its own opening day, its own field, and its own bar.
A pond's field is fixed and published before that pond opens, not before some project-wide start date. This is what the rule always meant: the bar depends on how many models race each other, and models only race each other inside a pond.
No model may enter a pond after that pond has opened. A model that appears in week three races that pond's next season.
Letting one in mid-race would make the published bar a fiction, and we would rather lose a good model for a season than publish a number that is not true.
A pond's season runs from the day that pond opens until its sport's next opening day. For MLB totals, Season 1 runs from September 5, 2026 to MLB's Opening Day in 2027.
Soccer has no single opening day: the lab's soccer rules bet across competitions whose seasons do not share a calendar. So a soccer pond's season ends one year after it opens, to the minute. Added October 10, 2026. The first soccer pond opened on October 13, 2026.
The 2026 games ended September 27. From then until Opening Day the pond is open and nothing can be decided, so the dashboard labels it 'Games over', not 'Racing'.
A season does one job: a model may only join a pond at a season boundary.
When a pond's season ends, each rule in its field gets a published result: cleared, or did not clear. A rule that did not clear may race again the next season. Its count starts from zero, like every field. Its earlier result stays on this page and is never restated. Added October 15, 2026.
We considered ending Season 1 with the regular season on September 27. We are not, because a twenty two day season would reopen our field three weeks after we published it, and that would make the rule we just applied to our own model cosmetic.
The cost is ours. Our second model waits roughly seven months for its chance to race. We are writing this down before that becomes inconvenient rather than after.
The lab is a set of simple betting rules. Each one was written down and frozen before its first game, and it races in public on the dashboard. Nothing in the lab is for sale, including its picks.
A lab rule that looks promising can be declared into its pond. Its pond is its own sport and market.
A lab rule can be declared only into a pond with no open season. The declaration opens that pond's season.
No model may enter a pond after that pond has opened. That rule stays as it is, for lab rules and models alike.
Several rules may be declared together. The field is fixed at the declaration. The field-size rule applies unchanged: a larger field means a higher bar for everyone in it.
The season runs until the sport's next opening day, the same as every pond's season.
A declared rule's count starts from zero on the day it is declared. From that day it runs under this Standard.
Every decided entry recorded after the declaration date, with a verified close, counts.
The frozen rule's own trigger is its selection. No edge threshold applies to lab rules.
Lab entries recorded before a declaration never count toward the Standard.
Changed October 10, 2026. From that date, every rule frozen on or after it enters its pond the moment it is frozen. A rule is frozen at the FreezeUtc written in the lab's lock file. Its count starts with its first entry after the freeze. Nothing before that date changes.
If its pond has no open season, the freeze opens one. The field is every rule frozen into that pond on that UTC day, and it is fixed from then. If the pond's season is already open, the rule stays in the lab until that season ends, then enters the next one. No model may enter a pond after that pond has opened. That rule stays as it is, for lab rules and models alike. A pond the dashboard marks closed cannot open a season. A rule frozen into a closed pond stays in the lab.
A rule that bets more than one market has more than one pond. It enters none of them at the freeze. It stays in the lab until it is declared into one pond, naming the market, under the paragraphs above.
Rules frozen before October 10, 2026 still count only after they are declared. The paragraphs above apply to them unchanged.
A rule frozen as a baseline, or as research only, never enters a pond. It races in the lab for comparison and can never be sold. It is labelled that way at its freeze.
This changes no open season.
On October 5, 2026 we declared the lab rule N5 Overnight Move into the NHL moneyline pond. That pond had no open season. The declaration opens its first season at 12:00 UTC on October 6, 2026, and the season runs to the NHL's next opening day, in October 2027.
The field is one rule, N5. Its count starts from zero at the opening instant. Every N5 entry decided after it, with a verified close, counts. Nothing decided before it does.
The bar is the one on this page. Because this season was declared after October 2, 2026, the beat-the-close condition is counted over moved prices, is read only once 50 prices have moved, and shows its tie count beside it.
N5's rule is held privately. Its hash was published in the lab's lock file before the first entry, the lab runner refuses the rule if the file no longer matches that hash, and every entry, price and close is public on the dashboard. If N5 clears the bar it is the first thing we would sell, under the rules above. If it does not, that is the result, and it stays up.
On October 10, 2026 we declared the lab rule N2 Tie-Mass Over into the NHL totals pond. That pond had no open season. The declaration opens its first season at 06:52 UTC on October 10, 2026, and the season runs to the NHL's next opening day, in October 2027.
The field is one rule, N2. Its count starts from zero at the opening instant. Every N2 entry decided after it, with a verified close, counts. Nothing decided before it does. Its 41 lab entries before the declaration stay on the dashboard as lab history and never count.
The bar is the one on this page. Because this season was declared after October 2, 2026, the beat-the-close condition is counted over moved prices, is read only once 50 prices have moved, and shows its tie count beside it.
N2's rule is public. It is the file horses/nhl_n2_tie_mass_over.ps1 in the lab repository, frozen at 00:00 UTC on September 27, 2026 at commit 97fa667, SHA-256 6a3632ead92b208049ce197fa5a78906ce0a576efb12933ff625a590ec99acb3, unchanged since. It bets the Over at 6.5 goals only, at the DraftKings price, and nothing else. Every entry, price and close is public on the dashboard. If N2 clears the bar it goes on sale under the rules above. If it does not, that is the result, and it stays up.
On October 13, 2026 we declared the lab rule S2 Pinnacle Steam into the soccer moneyline pond. That pond had no open season. The declaration opens its first season at 01:23 UTC on October 13, 2026. Soccer has no single opening day, so the season ends one year later, at 01:23 UTC on October 13, 2027.
The field is one rule, S2. Its count starts from zero at the opening instant. Every S2 entry decided after it, with a verified close, counts. Nothing decided before it does. Its 70 lab entries before the declaration stay on the dashboard as lab history and never count.
The bar is the one on this page. Because this season was declared after October 2, 2026, the beat-the-close condition is counted over moved prices, is read only once 50 prices have moved, and shows its tie count beside it.
S2's rule is public. It is the file horses/s2_pinnacle_steam.ps1 in the lab repository, frozen at 12:00 UTC on September 28, 2026 at commit 09871a2, SHA-256 4de59afeb85bd89159e87e7f6ad684fe7f12da9e9483826d27798b377dd9cb92, unchanged since. It bets the three-way result, home, draw or away, in Brazil's Serie A and Serie B, Argentina's Primera Division and Mexico's Liga MX, at the DraftKings price, and nothing else. Every entry, price and close is public on the dashboard. If S2 clears the bar it goes on sale under the rules above. If it does not, that is the result, and it stays up.
The lab's other soccer rules keep racing in the lab, in public. None of them can enter this pond before its next season.
On October 15, 2026 we froze four NBA lab rules, with a freeze time of 06:00 UTC on October 20, 2026, before the first game of the NBA regular season. The NBA moneyline pond had no open season, so under the October 10, 2026 change the freeze opens its first season at that instant. The season runs to the NBA's next opening day, in October 2027.
The field is two rules: B2 Overnight Move and B3 Rested Home vs Back-to-Back Road Team. Their counts start from zero at the opening instant. Every entry decided after it, with a verified close, counts. Nothing decided before it does.
B1 Favorite is the baseline and B4 Early-Season Under is research only. Under the October 15, 2026 change, neither enters a pond. Both race in the lab, in public.
The bar is the one on this page. A field of two is inside the six the bar is set for, so no number changes.
Every rule above is a rule we hold ourselves to. Most of them are not yet automated.
There is no piece of software that admits a model to a pond, counts down to the next evaluation, or evicts anything on its own. We do that, on the schedule written here, using the numbers published on every pick.
We are telling you this because the alternative is implying a machine that does not exist, and you would eventually find out.
What makes the rules checkable is not automation. It is that the inputs are public. Every pick, every price, every close and the capture rate are on every pick.
If we ever quietly skipped an evaluation or kept selling a model that should have been evicted, the published numbers would not match the published rules, and anyone could see it.
As pieces get automated we will say so here, and the commit log will show when.
We do not claim our models win.
We do not claim past results predict future ones.
We do not delete anything. Losing picks stay up. Bad months stay up.
Our first model lost money from June 10 to July 12, 2026, 50-50-2 at -9.7%. That record was finalised on July 14, 2026. Only the note on the freeze file has changed since. The file is public.
When we get something wrong in our own numbers, we post the correction rather than quietly fixing it.
This section covers our first model, v7, on MLB totals. The ponds racing now are graded as described in 'How lab rules are graded'.
Edge is how far a model's own price sits from the sportsbook's price, written as a percentage. A pond's edge threshold is the smallest edge we will score.
We score every call a model makes at or above that threshold, once the game is decided. That includes picks we published and picks we scored but never published.
Our models evaluate far more games than they publish. All of them are logged in advance, timestamped, and scored against the same closes.
This is stricter than scoring only the published picks, not looser. If we graded ourselves solely on what we chose to publish, we would be grading ourselves on a set we selected. Scoring the unpublished ones too makes that impossible.
One condition applies only to published picks: the price a subscriber could actually have taken. Unpublished evaluations have no subscriber price, so that condition is measured only where it means something. We call this the follower test. It is defined below.
The pond's edge threshold. The pond's edge threshold for MLB totals is thirteen percent. It is the same floor we use to decide whether a pick is worth publishing.
We chose thirteen percent on June 15, 2026 as the public posting bar. We wrote it here on August 20, 2026 as the scoring bar, before the pond opened. That commit raised the floor from nine percent. We moved it up once, in June, before any of this was a gate, and we are not moving it now.
Evaluations below thirteen percent are logged. They do not count toward a gate.
We named it because we had not named it before, and a scoring set that is not published is not a standard. We are not lowering it.
What lowering the floor would do. Here is what lowering it would do, measured on this model's own MLB totals record since we fixed our closing line lookup on July 22, 2026. These figures are as of August 20, 2026. They are a snapshot of a measurement that is still accumulating, and we will restate them rather than quietly let them drift.
At thirteen percent we have eleven measured picks and a mean closing line value of plus 0.70. At three percent we have a hundred and forty eight and a mean of plus 0.83, which is under our own bar of plus 1.5.
Lowering the floor buys sample and costs quality. No floor on that table clears all four of our entry conditions.
We could have chosen three percent, called it a principle, and shown you a hundred and forty eight picks instead of eleven. We are keeping thirteen.
The cost of keeping it is that this model will not reach a hundred measured picks in the 2026 baseball season. Season one is a measurement period, not a race anything can win this year.
One number we are publishing that does not count. At a three percent floor, this model has a hundred and forty eight measured picks at a mean closing line value of plus 0.83, with 55.4 percent priced better than the close.
That is not the gate. It does not count toward one, and no model enters a paid pond on it. It is the largest sample we have of what this model actually does, and it is under our bar. We would rather you see it than not.
What narrows the count. One rule removes a pick from scoring, and it is the next section. Three other things narrow what a pond counts, and none of them is a scoring rule:
We will not add a scoring removal mid-season.
A lab rule is counted differently, because it has no edge threshold. See "The lab and the Standard".
When a model's edge on a game comes mainly from a large starting pitcher mismatch, we do not publish that pick and it does not count toward a gate.
We measured that slice before writing this rule. As of August 10, 2026: twenty-three decided picks at roughly minus 43 percent, against plus 0.8 percent for the forty-six other decided picks at the same edge threshold, on a higher average edge. The model's most confident pattern is also its worst one.
Both groups are in the shadow ledger, the public file of picks we scored whether or not we posted them, linked at the bottom of this page. The parked group is every decided pick where this rule fired. The comparison group is every other decided pick at or above the same edge threshold, with no window and no trimming.
An earlier version of this paragraph said plus 3.5 percent. That figure came from the most recent forty-three of those forty-six picks rather than all of them, which flattered the comparison. We changed it before this page was announced.
We would rather say that in public than quietly let it into a paid pond.
Two things about how this rule is applied.
It is applied by what is recorded on the pick, not by what we meant at the time. Picks published before this rule existed stay in the scoring set. Eighteen picks are in that category. We published them, and a pick cannot be unpublished.
And the rule is frozen for the season. If we ever change what it excludes, that starts a new season rather than restating an old one. Otherwise the denominator moves under the numbers, and the commit log at the bottom of this page would be worth nothing.
This is the part everything else rests on, so here is exactly what we do, including the parts that are imperfect.
When a pick goes out we record the price we published it at. That is the best number we could find across the books we track, which includes DraftKings, FanDuel, BetMGM, BetRivers, PointsBet, William Hill and Unibet. It is a price you could have taken at that moment.
We then try to record the price again within 90 minutes of first pitch. The 90 minute window matters: a price taken four hours out is not a closing line, it is just an earlier price.
What our code does instead. There is a gap between that sentence and our code, and we found it on September 2, 2026, three days before this pond opened.
This page says ninety minutes. Our code looks for a close up to 120 minutes before first pitch. We widened that window on August 12, 2026 and never updated this page to match.
Counting every close we can date, 16.8 percent were recorded between ninety and 120 minutes out. The median is 45.8 minutes before first pitch and the furthest out is 119.6 minutes. None is four hours out.
We are not changing the ninety to 120. Widening a published number so that our own records fit inside it is the thing this page exists to prevent. Ninety is what we are aiming at, 120 is what the machine does, and that difference now sits on the page instead of only in our code.
Closes we cannot date. We also cannot date most of our closes. Of 1304 recorded closes, 673 carry no timestamp for the moment we took them, including every close recorded before July 22, 2026 and every run line close.
For those we know a close was recorded and we do not know when. Our counts do not filter on this, and none of the numbers on this page has been changed by it.
The two are not always from the same book. Our closing prices come from DraftKings and FanDuel, because those are the closes we can obtain reliably.
If a pick was published at the best price across a wider set of books, the comparison is between that price and a DraftKings or FanDuel close. We are telling you this rather than presenting one clean number, because the difference is real and you should know it is there.
Pinnacle. The same check found a second gap. This page lists the books we quote. Pinnacle is not one of them, because most US bettors cannot use it.
Our code was picking the best price across a wider list that did include Pinnacle. Of 131 picks we have published, 42 carry a Pinnacle price, which is 32.1 percent of them. That price was real and it was the best one available, but it is not a price we can tell you that you could have taken.
We fixed the selection on September 2, 2026. From that commit forward, the price we publish comes only from the books listed on this page. We have not changed any pick already published. Those rows say what they said when they went out.
One consequence worth stating plainly. When we publish a price from one book and record the close from another, the difference between them is not a number you could have captured yourself. Of the 23 published picks with a recorded close, 20 compare a price at one book against a close at another.
We do not always succeed. Some picks never get a close recorded at all. So we publish our capture rate, which is the share of picks where we successfully recorded one.
That number is the foundation under every other number on this page. A grading system whose measurement is invisible would be the exact thing this page exists to refuse, and the capture rate is how you check ours.
The bug that made it look worse than it is. As of August 13, 2026, we record a closing price on 143 of 170 attempts for MLB totals and 167 of 178 for MLB moneyline. Over the full life of the project those figures are 143 of 265 and 335 of 360.
The gap between those two pairs is not improvement. It is a bug.
Until July 22, 2026, our code asked our data provider for moneyline prices every time, including when the bet was a total. Every over/under lookup came back empty. Ninety-five attempts, nothing recorded, for three weeks, while moneyline ran above ninety percent on the same connection the entire time.
Commit e8356e4 fixed it. We did not notice for three weeks, and nothing in our alerting caught it.
We report both eras rather than the one that flatters us. The commit is in the public log this page links to, so the boundary is checkable and is not a date we picked after seeing the numbers.
The rates above answer a narrow question: when we looked for a close, did we find one. They do not answer the wider one: what share of the picks we score ever got looked at.
As of August 17, 2026, for MLB totals that was seven of twenty-five. For moneyline, six of eleven.
The bug fixed the looking. It did not fix the coverage, and coverage is the harder problem. We publish both, because publishing only the first would be publishing the flattering half.
Corrected on August 17, 2026. This page previously said eleven of twenty-five for totals and six of ten for moneyline. Both were wrong and both were wrong in our favour. The totals figure overstated our coverage by sixteen points. The moneyline denominator was eleven, not ten.
We found this by rebuilding every number on this page from the logs, and we are publishing the method below so anyone can rebuild them too.
An attempt is one snapshot request written to our logs for a specific pick.
A recorded close is a snapshot that came back with a price.
Totals are selections of the form OVER or UNDER followed by a number.
The two eras are split at commit e8356e4, July 22, 2026.
The capture rates in this section were counted through August 13, 2026, the day it was published, and are frozen at that date. The coverage figures in the paragraph above were recounted on August 17, 2026.
These are event counts, not unique picks. A pick that gets snapshotted twice counts twice. Counted as unique picks instead, the post-fix totals figure is 130 of 146 rather than 143 of 170.
We are showing the event count because that is what was published, and we are telling you the difference rather than quietly switching to whichever number reads better.
The field is one model: v7. It has been posting publicly since June, and it is the only model whose picks are scored against this pond's threshold.
We also run a second model in shadow. Its picks appear in our public shadow ledger, labelled with its own model id, so you can find them there without asking us.
It is not in the Season 1 field, and no model may enter a pond after that pond opens. That is our rule and we are applying it to our own model first.
The reason is worth stating because it does not flatter us. The second model prices on a recalibrated scale, and edge numbers are not comparable across models: a five on one scale is not a five on the other.
Applied as written, our published threshold of thirteen percent sits above anything that model has produced or, on our own historical record, could have produced.
We could have published a second threshold in its units and put it in the field. We are not going to. A second scoring number published after the first one is a change to the bar, whatever we call it.
A field of one is the weakest version of this. One model measured against a fixed number is not a race between models, and we would rather say so than dress it up. What it is, is a bar published before anything ran, and a model being measured against it where you can watch.
When two models fire on the same game. More than one model can fire on the same game. When that happens, only the model already racing in the pond is posted. The other model's selection is still recorded, and the gate scores recorded rows, not what we posted.
As of August 2026, that is a rule we hold ourselves to, not a machine. The second model is blocked from posting anywhere in the code, so the situation cannot arise yet. If a second model ever enters a pond, this is the rule it enters under.
The two models can also disagree about which side of a game to take. The second model is a recalibration of the first, so it can be less confident on the same game, and less confidence is sometimes enough to move the value from the over to the under. Where that happens, both rows appear in the shadow ledger on opposite sides of the same game.
The first pond to open is MLB totals. It opened on September 5, 2026. Its field is published above, before that date. The gate numbers on this page are the numbers that field races against.
MLB moneyline is shown and stays empty. An empty pond is not a gap in the display. It is what the standard looks like when nothing has cleared it.
Other ponds open on their own sports' calendars. We said an NFL pond would open when the NFL season does. As of August 24, 2026, it is not opening.
We are collecting NFL market data and we will keep collecting it. But what we have is an adjustment to the sportsbook's own posted line rather than a price of our own, and we have no way to grade an NFL pick automatically.
A pond needs a model that disagrees with the market and a way to settle the result. We have neither for NFL yet. We would rather say that now than open a pond we cannot score.
A pond with a future opening date is not an empty pond. It is a scheduled one.
We would rather run one pond we can measure than four we cannot.
The first verdict will take months, not weeks. The standard requires a real sample spread across real time, and there is no honest way to shorten that.
Nothing has cleared.
It is entirely possible that nothing clears in Season 1. That outcome would be a result, and we would publish it the same way we would publish a success.
The eviction list ships empty. It will not stay that way forever.
October 20, 2026: a plain-language pass over the whole site. We explained closing line value, points, edge, vig, push and the market names in ordinary words, and added them to the glossary. No rule, number or date changed. The one change of fact is in "What is racing now", which now lists B2 and B3 in NBA moneyline, because that pond's season opened at 06:00 UTC this morning under the freeze recorded below.
October 15, 2026: reorganised this page into plain sections and added how lab rules are graded. No rule or number changed.
October 15, 2026: baselines and research rules stay in the lab; how the bar accounts for field size; what happens when a season ends; the follower test says picks. Also recorded the NBA moneyline freeze.
Before August 20, 2026, the bars above were not final. We were still measuring how much closing line value varies on MLB totals, and we had too few observations to know. The numbers we would have used then were borrowed from moneyline, where we have more data.
So we wrote the decision down before it happened.
On August 20, 2026 at 12:00 UTC we would count our MLB totals evaluations that met all of these:
Runline and tennis are excluded. Two evaluations are excluded because their posted and closing prices refer to different lines: Red Sox versus Blue Jays UNDER 9, and Orioles versus Braves OVER 6.5, both from before August 5.
The lifetime posted record on the dashboard is every pick we have posted, in every sport.
If that count was twenty or higher, we would set the gate numbers from what we measured. If it was under twenty, the numbers above would publish unchanged and not move afterward. Either way we would state the count on this page.
Twenty is not arbitrary. Below it, a measurement of variance is too imprecise to tell a forgiving bar from a punishing one, and setting a permanent number off it would be false precision dressed as rigour.
The August 20 count. On August 20, 2026 at 12:00 UTC we ran the count this page committed to. Twelve qualifying picks carried a recorded closing price. The trigger required twenty.
It did not fire, so the four bars above stand exactly as first published on August 11. Other numbers on this page have changed since: we corrected our coverage figures on August 17 and said so above.
We also ran the readings we could have taken instead, because a count is only as honest as the alternatives you did not pick. Counting five further picks that carry a captured closing-line value but not the pre-game price field gives seventeen. Excluding the picks our edge cap suppressed gives four. Every reading we could defend is under twenty.
Books do not always hang the same total on a game. Some post 8.5 while others post 9. Our code pooled every book's price into one market number without checking they were pricing the same total, which made our edge look bigger than it was.
Three posted picks cleared our thirteen percent floor only because of this:
The same bug had a second half. The price we recorded could come from a different total than the one we named, while the closing price was always taken on the named total. On those picks we compared two different bets and called it closing line value.
Three picks in our scoring set had this:
The floor table in "What we score" changes. It said twenty six decided picks, twelve measured, an average closing line value of +1.72, 66.7 percent beating the close, over eight days. Corrected, it is twenty four decided, eleven measured, +0.70, 63.6 percent, over seven days.
None of this changes a posted result. Our wins and losses stand as graded. These picks are out of the pond scoring set, because none of them was measured on the bet it named.
Change, October 2, 2026. Condition three used to count every measured pick in its percentage, so a pick whose price never moved counted as a pick that did not beat the close. We found the problem while testing an NHL rule that failed anyway. About one third of DraftKings NHL moneylines closed at the price we had recorded, so a rule would have needed to beat the close on more than 82 percent of the prices that moved to reach 55 percent overall. That bar was not hard, it was closed.
The ties come almost entirely from NHL DraftKings prices. The MLB totals model racing in Season 1 had none: of its twelve Season 1 picks with a verified close, zero closed at the recorded price.
From this date the percentage is computed over moved picks only, it needs at least 50 moved picks before it is read, and the number of ties is shown beside it everywhere the rate appears. The 55 percent condition was always a secondary check. The main test is the mean closing line value condition of +1.5 points, and that is unchanged: it still counts every measured pick, and an unmoved price counts as zero there. The 100 pick and 30 day conditions are unchanged and still count every pick.
This applies only to seasons declared on or after October 2, 2026. No verdict already published is restated under the new count, and the Season 1 field for MLB totals races on under the wording it was declared with, with its tie count shown for information.
It counts from today. No rule had an entry under it yet.
We decided what counts toward a gate before we measured how well we capture closing lines on that set.
The definition we settled on produces a better capture number than the narrower one we had been using, roughly a third rather than roughly a quarter. We are telling you the order because otherwise it looks like we picked the definition that flattered us.
The commit log for this page shows when each was written. That is the point of publishing it here rather than announcing it later.
October 13, 2026: the site now says pick instead of entry for a lab rule's selection. Same meaning; nothing about the counts changed.
Pick. A frozen rule's selection on a game, written down before kickoff and graded against the closing price. Not for sale and not a recommendation to bet. For a model in a pond, we score every evaluation at or above the pond's edge threshold, published or not.
The close (closing line). For lab rules: the last price at the same sportsbook, on the same side and line, before the game starts. For MLB totals (v7): The price we record again shortly before the game starts. We aim for within 90 minutes of first pitch; our code accepts up to 120 minutes.
Closing line value (CLV). How much better or worse the price we recorded was than the close. Positive means we beat the close, whether the bet won or lost.
Point. One percentage point of win chance. A closing line value of +1.5 points means our price implied a win chance 1.5 points better than the closing price did.
Edge. How far a model's own price sits from the sportsbook's price, written as a percentage. A pond's edge threshold is the smallest edge we will score. Lab rules have no edge threshold.
Vig. The sportsbook's built-in cut, baked into every price it posts. We leave it in on both sides when we compare our price to the close.
Push. A bet that lands exactly on the number, so the stake comes back and nobody wins. A push still counts as a decided pick.
Shadow ledger. The public file of picks we scored whether or not we posted them. Linked at the bottom of this page.
Moved pick. A pick whose closing price is different from the price we recorded. A pick that closed at the same price is a tie: it counts as zero in the mean and, for seasons declared on or after October 2, 2026, it is left out of the beat-the-close percentage and shown beside it as a count.
Capture rate. The share of picks where we successfully recorded a close.
Pond. One sport and one market, such as MLB totals.
Market. One kind of bet on a game: the moneyline (who wins; for soccer the three-way result, home, draw or away), the total (over or under a number), or the spread (the run line in baseball, the puck line in hockey). A rule's market is the one its frozen file bets.
Day. A calendar date in UTC. An entry belongs to the day it was recorded, not the day its game is played. For the 30-day condition, a day counts when at least one entry that counts was recorded on it.
Field. The models racing in a pond for one season, fixed and published before that season starts.
Season. A pond's race, from the day the pond opens until its sport's next opening day. A model may only join at a season boundary.
Declaration. Naming one or more lab rules into a pond with no open season. It opens that pond's season, and each rule's count starts from zero that day.
Evicted. Removed from a pond for failing the standing condition. We stop selling it that day and it goes on a public list.
Lab rule. A simple betting rule, frozen before its first game, racing in public on the dashboard.
Entry. The same thing as a pick. Older sections of this page say entry; the counting rules are unchanged.
Standard last changed: October 15, 2026. Wording last changed: October 20, 2026. Full history: commit log. Shadow ledger: shadow-ledger.json. Correction, Sep 22, 2026: closing-price correction.
Gamble responsibly. 21+. 1-800-GAMBLER, ncpgambling.org