Posted on

This page is here to provide clarification on betting terms used and to highlight features of the daily betting card. In addition there is a history of the unit size adjustments and the Model changes that have occurred so far this season. I didn’t really document the changes prior to version 5.0, but I may at some point try to backfill it to the best of my knowledge. This is the inaugural season for MLB betting and it’s a scientific experiment of sorts as I try to fine tune the betting system in place to best capture profits, the journey is part of the experience here.

____

Glossary of terms:

  • Card: Denotes the reason for team selection
    • Main: The main choice for a bet, criteria is any team favored to win a game with a >50% WP%. This team is given priority for trying to find a qualified bet in a given game based on eROI. If the eROI is unfavorable a Runts bet is attempted.
    • Runts: Underdogs in terms of WP% that were selected as bets after the Favorite couldn’t be bet due to unfavorable odds (unqualified eROI after line shopping). If a Runt team in a game fails to quailfy based on eROI the entire game is scratched from the card.
  • WP% = Win Probability %
    • This is the key to my model, I source these typically from Fangraphs as they do a pretty accurate job based on backtesting of past data. I also add my own adjustments to reflect team performance that may not be currently taken into account in the baseline from Fangraphs.
  • ML Odds = The Moneyline odds that the sportsbook is offering for the bet
  • BE ML = Breakeven Moneyline
    • This is a calculation to convert the Moneyline into a percentage format to highlight how often the bet would have to win to show a breakeven in money won/loss on a bet with the given odds.
  • eROI = expected Return on Investment (or Expected Value if we’re being traditional here in betting terms)
    • This is the expected Return on Investment a bet would return overtime if we were able to consistently place a similar bet. The formula is WP/BE ML.
    • For example a bet with an eROI of 10% would be expected to show a net profit of 10% over the true odds. If a bet had a WP = 50%, meaning it would win half the time, we would expect to show a profit of 10% on our bets if we won 5 and lost 5.
  • Unit size terms = These are factors I’m using to determine the appropriate unit size to bet
    • Base = Reflects the base unit size awarded for a qualifying bet.
    • Edge = Bonus units awarded per bet depending on curren model criteria
    • FORCE = There is a hard cutoff in eROI at certain levels, but it’s somewhat counterintuitive as we want the best odds where possible. I’ve opted to average the lines to determine the baseline, but I enter the best one if the average falls under the cutoff.

ADJUSTMENT HISTORY:

July Adjustment:

At the beginning of the season I started with 100 units and treated each unit as the equivalent of 1% of the bankroll to start. Due to the bankroll showing profit, I would like to press the unit size, but not go overboard with the unit sizes to conserve the bankroll in case a significant downtrend appears. To combat this, I’ve tried to reset the unit value to about 0.8% at the beginning of each month.

With the current profit at 67 units, 1.4 units looks to be a good adjusment value as that represents 0.83% on 167 total units in bankroll size.

Thus for the month of July the unit value size will be 1.4 units.

I also mentioned previously that I’d like to see around 40 games of action with each churn through the bankroll. This unit value gets me right at 2.49% with the current 3 unit standard bet size which is right at the 40 game mark. (1/.025)=40

June Adjustment:

Also the calendar has turned to June 1st. The 2nd Unit Value adjustment will occur starting with today’s games. I’m moving the Unit Values down to $1.10. This reflects the current bankroll on the season being just above 20 units won and assumes a starting bankroll of 100 units. $1.10 keeps the unit size slightly under 1% which is my goal with each adjustment (lower in percentage terms the higher the profit is to best preserve it, this month is ~0.90% and last month was ~0.80%) . This should preserve the bankroll if the May losing streak continues into June, but hopefully June proves to be profitable.

May Adjustment

  • I’ve alluded to the idea of adjusting unit values and the beginning of a given month seems an appropriate time for a 6 month season of baseball
  • Entering May the bankroll for the season is up over 60 units.
    • Assuming the initial bankroll to start the season was 100 Units that means so far the bankroll has increased over 60% and in order to see relative gains throughout the season we need to increase unit sizes.
    • A safe measure of increase is 30%, about half of the gains so far this season.
  • Going forward the Unit Values will be adjusted from $1 to $1.30
    • The plan is to report all unit gains in terms of the orginal season starting value of $1, but know that the daily value of those units wagered going forward are now higher.

MODEL HISTORY:

MODEL 9.0:July 20, 2023 Card

Preamble to Model changes:

First there needs to be an acknowledgement of potential hangups to my 2023 MLB model. I’ve outsourced the base of my Win Probability calculation to whatever Fangraphs has listed for each game. The backtested results showed these projections to end up roughly in line to 2022 results for games of similar WP%. The problem here arises is that I have no clue how they are calculating this. I have a rough idea, but overall the algorithm is a mystery to me.

In review, the data for 2023 so far lines up to relatively close. Below is how I check the accuracy by bucketing the games into groups of 5% bins and seeing if the teams are winning as expected.

This split grouping shows that Away teams are winning at a higher rate than expected from Fangraphs by about 27 games so far this season. Other than that, the bins are relatively performing to expectation as the sample size in the >60% groups and <30% groups should explain the difference there and the overall game expectancy impact is low. This grouping is a good way to show that the WP% is relatively close, but there is nuance within each bin as that’s where the winners and losers are made as there are more variations at play.

Now the problem is that if one were to go off Fangraphs projections alone one would be a big loser to the books. Looking at the 50% bin where there are 315 games with an actual win rate of 56.8% for these Away teams there should be plenty of opportunity to beat the books. I have 138 of these Away teams above 50% to take a favored bet, but only 8 of these games have a positive edge of 5%+ to the books offered line. And as luck would have it of those 8 games only 2 won out of an expected 4-5. Clearly the books know something more on these games that the Fangraphs WP% algorithm isn’t taking into account. As the books are able to stay relatively close in value to take their 5% vig from each game and when the lines are out of sync it usually ends up the books favor.

That’s where my model kicks in to do some extra magic to give the WP% a boost and find a way to beat the books. I have an adjustor to look at team over/under performance to expected WP% and try to adjust the WP% closer to what the trend has been. This should be a balance to adjust for Fangraph’s deficiencies as it’s able to identify the problem areas and adjust.

My model also looks at the book’s lines each game to backtest the adjustments to see how the model would’ve performed overtime with the parameters I set. This helps weight the adjustments as the books also have their own defiencies when setting lines the adjustments I make to calculated WP% should hopefully stay ahead of them. My new changes looked at the adjustor and tried to find ways to keep it logical and profitable to backtested data.

It’s easy to calculate WP% and say anything above or below a line should have line, but finding that value in theory and realizing it in the real world is easier said than done. Which is where the backtesting comes in to see if the theory holds up to the lines offered. But the books can change their line creation process, or Fangraphs base. Just like sports themselves, sportsbetting is a game of constant adjustments and one needs to be vigilant to stay ahead of trends to maintain profitability.

The guts of Model 9.0:

  • After tedious review, the L9 adjustor wasn’t working as well as intended. It’s too much of a flash for a grind out season. Yes teams go on streaks, but the adjustor would either over adjust the recent trend or not capture it fast enough.
  • I’ve gone to a larger macro review. If I believe the algorithm from Fangraphs is imperfect and could use help then it would stand to reason it’s out of sync more than just the Last 9 days. Therefore, I’ve decided to change the assessment period to a rolling 90 days period.
    • The idea here is that things are usually set in stone at the beginning of season and possibly an adjustment is made at the All-Star break. There’s no real way to determine this, so all I can do is assess trends over a long period of time.
    • In 2022 the MLB teams based on standings overperformed to Fangraphs WP% calculations from the top to the middle, and underpeformed relative to WP% once we reached the middle of the standings to the bottom of them. However there is one curious outlier, the Baltimore Orioles. They ranked 14 out of 30 of the teams in the season in final win% with 51%, but they overperformed to Fangraphs average WP% each game of 41%. Only the top 2 teams, the Dodgers and Houston, also exceeded Fangraphs WP% by 9%+ last year.
    • This year, the Orioles and the Reds have exceeded WP% projections at the largest rates. While the Mets, Royals, and Athletics lead the pack of underperformers. There is something here and I want whatever it is to be reflected in future WP% calculations as Fangraphs is clearly not adjusting it for it too well over the last 90 days.
  • I’ve set the model to cap these rolling 90 day over/underperformances by 10% and use them in adjusting each game.
  • Another adjustment factor is the view that there is a lot of parity in MLB. No matter what the projected WP% is each day, it just seems that overall everything is random coinflip where any given team can win each day and the WP% calculations show that with about 85% of the games in the 40-60% WP% range. A pretty narrow band. To hopefully become more profitable the model needs to embrace this coinflip nature, so after applying the 90 day rolling adjustment to the Fangraph’s WP% I’ve added a coinflip WP% factor, 50% and average the two WP% to get the projected WP% for the game.
  • Lastly with one more final adjustment as the data in the example in the preamble showed, the Away teams are winning slightly more than expected so I forced an additional 2% to the WP% for each Away team.

The eROI cutoffs:

Once the adjustor changes were made it was time to test various eROI cutoffs to see if the changes would prove profitable to backtested games and their available lines.

  • MAIN BETS:
    • If the BE ML odds are postive then the cutoff is 5% eROI, but if it’s negative odds then the cutoff is raised to 7%. In addition all MAIN bets have a hard cap of 30% eROI.
  • RUNT BETS:
    • The cutoff for RUNTS is 17% eROI with up to 40% eROI.
    • Also to note that RUNTS do not have their WP% calculated as just the inverse of a MAIN bet in the matchup, but they know are the inverse minus 2% as this will give the Model some extra cushion on eROI calculation as these are projected to lose the majority of time.

This is a very large cutoff for RUNTS but any lower and the profitability was reduced down. There is still plenty of game volume to be had at this cutoff level so overall profitability is best suited here. Also RUNTS still show the best ROI unit at this level at 17%. The MAINS only check in at 8% ROI.

The Return of Edge Units:

The game volume does take a bit of a hit, but the overall quality of the model should be vastly improved. I may want to eventually get my churn level down to the 20-25 game range, but at 4 units a game and 150 unit total bankroll it’s currently at 37.5 game churn. After further review 20 may be too low, but 25-30 could be feasible. The idea here is to have enough game volume to ride out bad variance and reduce Risk of Ruin, but low enough to churn profitable ROI based on available bankroll.

To slowly ease into reducing game quantity per churn cycle I’ve brought back Edge units where each bet will get an additional unit for each eROI range of 10% the bet contains. MAINS get a base of 4 units and will get an extra EDGE unit if the bet has 10%+ eROI and 2 if it’s above 20% eROI. RUNTS have a larger cutoff for a qualified bet at 17% so they will start at a base of 3 units as they will automatically get 1 edge unit as a qualified bet.

The hard cap at 30% eROI for MAINS automatically disqualifies the bet as does the 40% level for RUNTS so all bets will have a range of 4-6 for potential unit sizes.

Model 8.7:July 9, 2023 Card

Some house cleaning adjustments from yesterday’s adjustment

I stated yesterday that the max eROI cutoff is 25%, this is being adjusted based on certain bet criteria.

  • All Positive Odds bets will have this cutoff raised to 40% and the Negative odds bets will be reduced down to 20%
    • The Negative odds bets have proven to be losers throughout the season as you can see on the MLB SEASON tracking page. This cutoff criteria should ideally return them to profitability as they’ve been the problem bets based on large eROI bets being losers.

Model 8.6:July 8, 2023 Card

3 losing days in a row demands some sort of change. I dug around the model to see if anything could be adjusted and landed on a few changes.

  • All bets will need at least 6.5% eROI to qualify, but a cap of 25% eROI will disqualify a bet. This is similar to the Contra bets I had in place previously, but this time no forced Runt will be placed.
  • This change will result in some setbacks to daily game volume as less games will now qualify. In response I’ve also upped the unit sizes to 4 going forward.
    • The unit size change is acceptable as the past data from June to present was showing a projected return of 13.5% on qualified games with the previous criteria while the new criteria raises that return to 18.5%.

This will reduce my bankroll churn volume from 40 games to 30 games. A little risky but as I pointed out the tighter qualification criteria should improve game selection quality.

Model 8.5: June 30, 2023 Card

I’m moving the model back to a logical spot with today’s change. Recently I focused too much on season results to force the model’s criteria. This is good, but it’s important to not overfit the model as it could be suggestive of luck and not the actual long term trajectory.

To bring the model back towards logic. I’m going to have the eROI criteria scale up as the odds get worse from a BE ML perspective. Recently I had a bubble in the eROI criteria for the 50-55% BE ML range odds, instead I’m making the cutoff more linear.

Changes:

  • All bets with positive odds, BE ML <50% (ex. +100, +120, +200):
    • The qualifying bet criteria is that the eROI has to be >=6.5%
  • All bets with negative odds through BE ML =<65% (ex. -101, -120, -200):
    • The qualifying bet criteria is that the eROI has to be >=10%
  • All bets with BE ML >65% (worst than -180, odds -181 or higher):
    • These bets will be automatically disqualified and no bet will be allowed no matter what

These changes keep the model grounded in logic as I’ve noticed that the Runt bets have vastly outperformed the Mains bets so far this season. The big reason is that they are positive odds bets and as a result are winning more than the implied odds of the BE ML suggested. This is just the nature of parity in the MLB where teams are good enough to win on any given night no matter their opponent. It’s hard to count any team ever out of it completely before the first pitch.

As a result the model going forward will maintain its current Runts criteria, with a slight dip down to 6.5%+ eROI, while being more selective on the negative odds games with higher criteria at 10%+ eROI.

We want to make sure we are getting enough value to compensate on the Main negative odds games and right now the season data is iffy on whether there is value to be had in these games as it’s performing closer to a random coinflip on most nights.

Model 8.4:

Some more eROI qualifications expansions. Today the eROI for games with BE ML between 55-65% and those under 50% will be lowered down from 4.5% to 2%. This will increase game volume a little further and shows backtested profitability for the month of June so far.

  • The coin flip games – BE ML 50-55%, those with odds of -101 to -120, have proved to be just that, coin flips. The idea is to keep the eROI qualifications higher at 9% on them as they’ve been underperforming and the odds aren’t really doing justice.
  • The higher negative odds, BE ML >55% & <65%, games are holding their own and that’s likely because both the books lines and the lines from the model are in sync in determining these teams are likely winners at an above average clip.
  • In reverse the positive odds games, those here just under BE ML 50%. Are performing like coin-flips here and the extra juice from the positive odds is proving profitable.

The working theory is that the smaller sample size here and bad luck in the beginning of the year led to these bet types to underperform and they are currently course correcting. Monitoring of game performance of these qualification expansions is ongoing and if the profitability turns back to negative, I’ll likely tighten up the model again.

Model 8.3:

A minor adjustment. I made a mistake when placing the STL bet today. I overlooked the edge criteria knocking off the 3 base units as the odds were in the BE ML range of 50-55%. In this scenario bets need to have eROI >10% to qualify. It was only at 9.1%.

Instead of retracting the bet for a small loss to the book or moving the bet to the shadow docket, I instead reviewed the back data and declared the bet justified.

It’s not the best justification as the overall June bets for games with 50-55% BE ML and eROI between 9-10% is currently -2.76 units. Its a 2-3 record meaning there isn’t much sample size here to review. Also if today’s game wins then this lower eROI cutoff of 9% will swing to positive profitability.

Going forward all bets in the 50%-55% BE ML range only need eROI >9% to qualify.

Model 8.2:

Too much generalization of the negative odds bets led to an overzealous return. Yes it’s true that June has proven fruitful for negative odds bets, but certain aspects of them still are unprofitable and I didn’t dive deep enough to extract them out in heralding the return of negative odds bets (Bets such as -101, -120, -200 etc.).

I dived into the groupings and I wanted to make sure the sample size was large enough to warrant valid inferences. Below is the research of negative odds bets that will drive the new changes:

Negative Odds Bets May-June review (assuming 3 unit bets):

  • Overall Negative Odds: BE ML>=50% & eROI >=4.5%
    • May & June: 123-93 (56.9%), -25.6 units
      • May: 48-50 (49.0%), -63.9 units
      • June: 75-43 (63.6%), +28.6 units

The tide overall for negative odds bets turned in June and that’s why I turned them back on. As theoretically they should be profitable as long as eROI is positive. May games just proved to be dreadful for these types of bets.

Deeper Dive into groupings:

50-55% Range:

  • (BE ML>=50% & <55%) & eROI >=4.5%
  • May & June: 36-38 (48.6%), -15 units
    • May: 15-18 (45.5%), -12.8 units
    • June: 21-20 (51.2%), -2.1 units
  • (BE ML>=50% & <55%) & eROI >=10%
  • May & June: 21-26 (44.7%), -21.1 units
    • May: 4-12 (25%), -25.6 units
    • June: 17-14 (54.8%), +4.5 units | 14.5% ROI

This is why the edge in these games between 50-55% BE ML were bumped to 10%+ on eROI.

55-60% Range:

  • (BE ML>=55% & <60%) & eROI >=4.5%
  • May & June: 36-32 (44.7%), -16.2 units
    • May: 14-19 (42.4%), -26.1 units
    • June: 22-13 (62.9%), +9.9 units | 9.4% ROI
  • (BE ML>=55% & <60%) & eROI >=10%
  • May & June: 19-19 (50%), -14.9 units
    • May: 7-12 (36.8%), -20.7 units
    • June: 12-7 (63.2%), +5.9 units | 10.3% ROI

In the 55-60% BE ML range I would lean towards the 4.5% eROI cutoff as the goal is to show maximum profit. Higher ROI is good, but translating it into overall profit is better by taking advantage of the bankroll each day. It’s better to sacrifice some ROI if it translates into more volume and overall profit.

60-65% Range:

  • (BE ML>=60% & <65%) & eROI >=4.5%
  • May & June: 36-14 (72%), +23.4 units
    • May: 12-9 (57.1%), -5.2 units
    • June: 24-5 (82.8%), +28.6 units | 32.9% ROI
  • (BE ML>=60% & <65%) & eROI >=10%
  • May & June: 36-14 (72%), +17.9 units
    • May: 7-5 (58.3%), -2 units
    • June: 16-3 (84.2%), +19.9 units | 34.9% ROI

Again leaning towards the 4.5% eROI cutoff as the goal is to show maximum profit.

65+% Range:

  • BE ML>=65% & eROI >=4.5%
  • May & June: 36-14 (72%), -14.8 units
    • May: 9-6 (60%), -7 units
    • June: 10-7 (58.8%), -7.8 units

The 65+% BE MLgames are lacking in sample size and they are showing negative profit. I’m eliminating them going forward. I had a similar ban in place in earlier models banning games with odds around -180. This solidifies it as 65% BE ML is -186, so any game higher than -185 will not be bet going forward.

Recap of new model criteria:

  • Main: WP 50+%
    • BE ML: various cutoffs
      • BE ML between 50-55%, eROI >10%
      • BE ML between 55%-65%, eROI>4.5%
      • BE ML 65+% = NO BET
  • Runts: WP <50%
    • BE ML: <50% and eROI>7%

Model 8.1:

I mentioned the other day how Runts have been achieving stellar ROI. I’ve decided to move all Runts bets up to 3 units. All bets are now 3 units.

In addition I mentioned how it’s important to stay on top of trends as sports is a game of streaks and teams get hot and cold. With that same philosophy I approach sportsbetting the same way. The key is to stay ahead of trends. I noticed that heavy favorite teams seem to be winning more towards expectations recently. The model’s underlying theory is that if the expected ROI is positive then the profits should trend that way.

Since the beginning of June there have been 71 games with BE ML odds >55% and WP%> 50%. Heavy favorite games I would not bet in past models. These games have a record of 51-20. Tides appear to be changing back to expectations. I previously had shunned Negative odds bets of this nature as they were losing a lot more than expectations and resulting in negative profit. It’s time to flip them back on.

The new model now brings back the 50%+ BE ML odds bets and maintains the positive eROI to ideally keep the profit flowing.

Here is the new betting criteria:

MAINS: WP% >=50%, eROI >4.5% except if BE ML >50% & <55% then the eROI has to be 10%+

  • Example: All bets with negative odds between -101 & -122 have implied BE ML of 50%-55%. If these are the best odds the eROI needs to be 10% for these games to qualify for a bet.
  • The reason for this middle bubble of inflated eROI qualification is that the games have proven to be negative at the lower eROI. Most likely due to these games being closer to true coin flips. We really want the odds to be in our favor if we are going to bet these games, hence the higher eROI criteria.

Runts: WP%<50%, eROI>7%

  • Runts are chosen only if the Main bet fails to qualify on the criteria above. There really should not be a case where both type of bets should qualify otherwise a betting arbitrage opportunity is presenting itself.

And best of all that brings back the big game card. I’m all about churning volume. I’d rather do it through game quantity vs unit quantity. This way variance is offset and expectations are smoother over time of expected bankroll performance.

Model 8.0:

Small change to move eROI of Mains down to 4.5%. The White Sox game was just under the threshold of 5% and review of the data shows only one other game so far between 4.5% and 5% which ended up being a winner. The change to 4.5% was approved as a result.

Recap of current Model betting qualifications:

All bets have to have BE ML < 50%, meaning +100 or better (plus odds)

  • MAIN bet: WP%>=50% and eROI > 4.5%
  • RUNTS bet: WP <50% and eROI > 7%

Backtested results based on current model criteria since April 10th:

(Date chosen to give model at least 9 days of games to start season as current Adjustor looks back in 9 day cycles each day)

  • MAIN:
    • 150 bets @ 3 units per bet = 450 total units bet
    • 74 wins – 76 losses, 49.3%
    • net profit +49.14 units
    • ROI: +10.92%
  • RUNTS:
    • 107 bets @ 2 units per bet = 214 total units bet
    • 49 wins – 58 losses, 45.8%
    • net profit +44.22 units
    • ROI: +20.66%

Model 7.9:

Simple change, removal of CONTRA bets. Yes, they were confusing, but the data was showing an amazing profitability trend. However since implementation it’s given me almost 10 full units of loss. It appears to be reverting back to zero which is what the eROI would suggest on CONTRA plays.

I added Contra to add daily game volume, but now I’ll have to find it elsewhere. In the meantime its back to Main & Runts plays as the two bet types.

Model 7.8:

Contra has taken some bad beats to start. I should’ve done this to begin with, but the backtested data was showing stellar results, I’m moving the units on these down to 1 unit until they show overall profit again. This is part of the risk management arsenal.

Model 7.7:

FD-CONTRA is a bet type that takes advantage of the unprofitable heavy favorites that are not performing anywhere near the model’s suggested output.

  • FD stands for Fanduel as I typically source my opening lines from Fanduel and I need an anchor line for these bets to make sense.
  • These bets are contra in that I’m looking for games where the odds are BE ML >50% (negative betting odds, ex. -100, -150, -200)
  • In addition the eROI has to be 15%+

Why FD-CONTRA?

These would be games the model wouldn’t bet in any form currently as the Main side is disqualified due to the BE ML >50% and the RUNTS won’t qualify as the eROI on the MAIN side is too high for any RUNTS line to show positive eROI (or a rare arbitrage opportunity will be present).

This is where FD-CONTRA comes in as it opens up another avenue for a bet to be determined. Just as the mysteries of the universe, its hard to say at the current moment why things behave they do, but we can at least obvserve the trend and infer their future behavior based on that trend.

Backtesting since May 1st:

  • There have been 18 games that met the FD-CONTRA criteria. And the results for these games show an abysmal record of 5-13. That’s 4 games under .500 on games that should be projected to hit a game or two over .500.
  • If I set these to the RUNTS team in the matchups, the record becomes 13-5 with a profit of 31.11 units, assuming a standard 3 unit bet for each. That’s only on 54 total units bet for a whopping ROI of 57.6%!

Other backtesting results since May 1st for the other bet types:

  • MAIN (>50% WP, >5% eROI)- 76 Games | 40-36 (52.6%) | +43.59 units profit on standard 3 units bet per game | ROI on 228 bets is 19.11%
  • RUNTS (<50% WP, >7% eROI)- 57 Games | 25-32 (43.9%) | +17.14 units profit on standard 2 units bet per game | ROI on 114 bets is 15.0%

Overall the current model suggests the setup is poised to deliver profits at very nice double digit clip and if the FD-CONTRA can continue to perform at their backtested levels it will prove a very nice addition to the model….. or the mysteries of the universe will unravel and betting favorites will be back en vogue.

Model 7.6:

Another small adjustment. New York Mets looked close to the cutoff today, after review it was deemed profitable to move Mains qualifying criteria back down to 5% edge from 9.5%.

Backtesting since April 9th (due to time to have 9 day adjustor kick in):

  • 6 Main games with edge between 5%-9.5% and odds +104 or better (<49.1% BE ML)
    • 3-3 record, +0.72 units won

*Also I’m moving Runts down to 8% edge from 9.5% edge. I took a shadow bet on Detroit today, but not counting it as an official play as I only took it beforehand due to a boost that was available. But after further review it would’ve been deemed safe to lower Runts edge down to 8% to qualify them without the boost.

Model 7.5:

Small change, adjusting qualifying criteria of odds from 47.5% to 49.1%, American odds move from +111 down to +104 as new minimum. This allowed Texas to join today’s card. Backtesting shows for the year a one game difference in results would show profit with this cutoff point.

Model 7.4:

  • I tweaked the multiplier to the L9 adjustor to a constant that best fit game data for the month of May so far.
  • I also raised the eROI qualifying criteria to 9.5% for both Main and Runts, was previously 4.5% Main and 9.5% Runts.
  • In addition the qualifying criteria for a game was moved down to 47.5% BE ML/ >+110 odds. All games bet will be plus odds going forward.
  • These changes were backtested and resulted in a 33% ROI based on games that met qualifications in May.
  • Due to the tighter qualifications I upped the unit size on the Main bets from 1 to 3 units. Due mostly to the lower number of eligible games there will be each day.
    • My overall goal is to churn through my bankroll every 40 games or so. Which is about 2.5 units per game and this 3 unit Main / 2 unit Runts should be close to that spot.
    • It’s all about profitability. The current algorithm suggests a high level of ROI for the model based on it’s current inputs and I’m looking to press it to churn through the bankroll efficiently.

Model 7.3:

Changed eROI cutoff for Main bets to 4.5% from 6%:

  • The Yankees were at 4.94% eROI today based on best odds value of -170. I couldn’t find -175 to bring them over the edge. Instead I backtested a change to 4.5%.
  • This season so far shows a net loss -1 unit on Main card plays between 4.5% and 6% eROI
  • Further examination reveals the win/loss record is 13-8, meaning more of these games are won than lost. And 4/5 2 unit plays resulted in losses which would account for this underperformance.
  • A move down to 4.5% shouldn’t prove too troublesome and may be a more a 2 unit play issue on the Mains which I’ll have to examine further. The Yankees game is a 1 unit play today and the cutoffs for 1 unit Main plays at 4.5%-6% eROI show a profit of 3.6 units so far this season.

Changed eROI cutoff for Runt bets to 9.5% from 10%:

  • The Dodgers were at 9.9% eROI today based on best odds value of +180. I backtested a change to 9.5%.
  • This season so far shows a net gain of +0.7 units on Runt card plays between 9.5% and 10% eROI. There were only 2 games to review with this criteria with a 1-1 record.
  • The data showed no harm in lowering this threshold, so it was lowered to accomodate the Dodgers today.

Model 7.2:

I tinkered with the adjustor some more, but further testing showed that the current L9 review period is the best based on backtesting 2023 games. However an adjustment to the final adjustment numbers for each team by cutting them in half showed a significant improvement. I tested dividing them by 1.5 or having them not apply at all as a baseline and it showed that dividing the adjustor numbers in half showed best improvement.

In addition I tested the qualifying criteria for Runts plays were shown to be unprofitable unless I upped the eROI criteria to 10%+. Main plays were profitable at 6%+. So i changed the criteria on these to their profitable eROI cutoffs.

The criteria cutoff is a big change as it will remove a lot of games from the cards. Overall this is for the best as profitability should increase tremendously by being more selective. I would like to press my bankroll more on these plays going forward, but I also don’t want single game risk to devastate the bankroll when things go awry. For now I’ll be keeping unit sizes the same in the 1-2 unit range until this more selective format shows actual profit for the bankroll.

Model 7.1:

The new adjustor was set at L15 tracking. I mentioned this was preferrable to an L21 as it would capture team changes at a quicker pace. After further review I decided this is in fact not quick enough. I would like to have a large sample size, hence my preference for L21, but each day lost in time of review for the adjustor represents lost money. Unfortunately the luxury of time is not available when deciding whether a team is playing above or below expectations.

The new model here moves it to a Last 9 Days review period (L9). This should quickly account for a bad series plus another game or two and immediately start penalizing teams if they are coming off a hot streak.

I always try to backtest any changes when possible and continuing the review process of backtesting the model changes to May games so far it has the following improvements.

  • Model 7.0 L15 adjustor: 17 days of May games | 234 units bet, 25.9 units won | 11.1% ROI
  • Model 7.1 L9 adjustor: 18 days of May games | 249 units bet, 40.0 units won | 16.1% ROI

Model 7.0:

Adjustor changes:

  • The Last 14 Days (L14) adjustor is becoming the Last 15 Days (L15) adjustor and its getting a major upgrade.
  • Yesterday I implemented an expanded Penalty Box rule to deduct WP% from teams that have cost me money this year. I’ve decided to change my approach to it as I don’t like it being arbitrarily dependent on just games I’ve bet on so far this season.
  • Instead I’m changing my adjustor so I no longer have to manually track Wins/Loss separately for teams and calculate a daily adjustment factor on a sliding scale of -10%-+10% for teams. Now the L15 adjustor will automatically know which teams based on daily score inputs I place in my model at the end of each day for all the possible bets that day.
    • I keep track of all games and their respective opening lines and WP% from Fangraphs each day. Only do I delete out rainouts, games with no lines by sportsbooks due to unknown pitchers, and occaisonal doubleheaders from this dataset .With this organized dataset I was able to create a rolling adjustor that will be able to identify a team’s rolling L15 Actual Win Percentage and the average Fangraphs WP% during that time.
    • This information is important because I’m going to adjust team’s WP% each day based on their over/under performance to their average Fangraphs WP% during the L15. Team’s like Oakland are constant underperformers and everyone knows it. This just formalizes the process in how I track it and keeps it consistent for all teams and not just those I placed bets.
    • This Adjustor change is also beneficial because it creates wider swings in the adjustment due to a team’s performance. Before teams were limited to just a 10% variance, but now I currently have both the Dodgers and the Rockies (yes, the Colorado Rockies) given a +23% WP% adjustment factor based on how well they’ve performed to their average Fangraphs WP% during the L15. And teams like the Pirates get a current adjustment downward of -25%.
    • I wanted around 21 days to really get the sample size going, but back testing showed that it lacked the speed to account a new up/down trend for teams. The Pirates were one of the hottest teams in April, but at the beginning of May they were on a big spike downward. A L21 adjustor would take too long to correct, but L15 was able to switch their adjustment down to a negative after a 4-5 game losing streak.
    • As a result of these changes the Penalty Box will be removed completely as unit ranges are only 1-2 units so penalizing losing teams more here is likely hurting potential returns when they do win. The new adjustor will be devastatingly cruel to them based on L15 performance, no need to compound it further with unit deductions.

Qualifying Bet Criteria/ Edge Changes:

  • I also made a few changes to the bet criteria in that I moved down the qualfiication from 3% eROI for a bet, to 2%. This helps increase volume of game selections as backtesting shows that profitability in total units wons is increased with this bump down.
  • I also adjusted the Edge unit criteria for bets to only be applicable if they offer postive + odds,
    • All ML BE bets under 50% are the only games that qualify for the additional Edge unit
    • Still needs to be at least 10% eROI to earn it.
  • Lastly in regards to the adjustor I backtested various scenarios and found with the following changes the Model suggest profitability for May:
    • 234 units bet, 25.9 units won | 11.1% ROI
    • This is backtested with the new criteria so the changes should be on solid ground going forward.

Model 6.2:

Scratch Model 6.1 and Forced Runts. The L14 adjustor is back and also there is no more Base Unit bonus. All games that meet the qualifying criteria will receive 1 Base unit for a bet.

Qualifying criteria:

  • eROI > 3%
  • BE ML < 64%. Best Odds for a pick have to be better than -180.

Picks can receive up to one additional Edge unit if the eROI is > 10%. Thus the maximum bet size is now limited to 2 units.

As usual Main card, favorites based on WP% > 50%, will get first attempt at qualifying for a bet if the Main pick is ineligible a Runt pick is attempted on that game if the criteria qualifies. Otherwise the game is scratched.

Lastly I decided to at least take advantage of one trend, one that’s so simple that most other bettors are already doing this in some form. I’m adjusting the WP% calculation for teams in my betting penalty box. Previously I would just reduce the unit sizes, but I’m going to penalize their WP% to make it more likely I place a bet against those teams and take advantage of their losing ways.

The bottom 2 teams, currently Oakland and Texas will get a 10% adjustment downward and the next bottom 3 will get an adjustment of 5% downward. The teams in the penalty box can be reviewed on my MLB Season stats page.

Model 6.1:

Return of L14 adjustor and introduction of Forced Runts, plays where Main card bets with eROI >10% are automatically forced to be Runt plays based on their overall performance YTD.

Model 6.0:

Two changes here, one to the units and one major change to the WP% calculation.

Units:

  • Unit sizes will be reduced to have a maxium of 3 units.
    • 1 Base unit for any qualifying bet where the picks has eROI% >3%
    • A 2nd Base unit if the pick has WP% > 60%
    • A 3rd possible unit if the eROI% > 10%

These unit changes should award only those bets where the WP% or eROI is large enough to be deserving. Then the swing between bets that barely meet qualifying criteria will only be 1-2 units of difference. This sould give every game some meaning and not be seen as a rounding error in the days final results.

WP% Adjustments:

  • I made changes to the adjustment the other day by adding a 2% boost to Away calculations as it appears they are being undervalued by Fangraphs. They still are, but I’m going to go about the adjustment in a different way and to save some work.
  • I’m removing the L14 adjustor as the results didn’t in the data showed a similar gap in accuracy to the unadjusted WP% straight from Fangraphs. This part takes a little bit of time each day to setup and calculate so removing it also removes extra work with no benefit on my part.
  • The overall accuracy gap is on average off about 8% this resulted in about 16 more Away games won so far this season than a perfect WP% match would project. I’m adding a 5% multiplier to all Away probabilites going forward. So the WP% for Away teams will be multiplied by 1.05. Reviewing season results thus far with this change in place shows that the number of extra games won by Away teams compared to this adjusted WP% is only 0.5 games higher. Practically spot on.
  • Now its obviously not guaranteed to hold, but it’s a good reset to get the model more aligned with actual results this season. The WP% will be monitored for any changes in accuracy going forward.

Model 5.5 Update:

Upon further review yesterday I noticed that with the success of Runts bets that I was overbetting Main bets. The problem was on the risk management side due to large bet sizes needed to win similar profits on these plays where the odds were skewed as heavy favorites typically.

I’m making a committment more to the value side of bets going forward and it means that the determination of unit sizes needed to be adjusted.

BASE: All picks will get 1 Base units as long as the eROI% is > 3%. If a pick is showing >60% on the WP% then 1 additional Base unit will be applied, giving Main Bets a max of 2 Base units possible and Runts a limit of 1.

EDGE: The minimum for a bet to be placed is an eROI% of > 3%, but the 1st edge unit will kick in at 5%. I might adjust this down the road, but for now Edge units are set to provide 1 Edge unit for every 5% interval up to a cap of 3 units or 15%+ eROI.

Model 5.4 adjustment:

Those damn Runts have surpassed Main card bets in profitability in just over a week on the scene. The issue appears to be not only credited to the Runts successful performance, but the Main cards underperformance. The Runts have saved what would be some even worse days without them. A closer examination at the Main bets is needed to identify the fault.

Accuracy of the Model:

Digging into the model it’s important to track the accuracy of the WP% as that is the driver which determines if a bet is Positive Expected Value (+EV/+eROI%).

The way I track accuracy is by comparing the data on hand for the season and block the WP% into bins of 5% intervals. I then compare the overall Win/Loss records of those bins to the expected Win % for that grouping to see if the performance is in line.

  • The performance for Away Teams are overperforming their overall Bins by 15.5 games without the adjustor and by 16 games with the adjustor.
  • This Away overperformance means that Away teams are winning more games than expected, the adjustor isn’t really making an impact here.
  • The only way I see to correct this is to either let the season course correct or force in another adjustor factor. After 40+ days in the season I would say something is amiss this season for the MLB in regards to Away team performance. The one indicator I notice that Away Teams overperform is in Extra Innings. They have some sort of pychological edge here with the ghost runner, where they have the ability to jump out to a lead first, winning more than 50% of extra inning games. And this stat goes back to its implementation in 2020 not just this season.
    • In addition I reviewed Fangraphs Splits for 2023 and there have been 41 Extra Inning games so far compared to just 26 by this same time in 2022.
    • The larger number of Extra Inning games not only signals a benefit for the Away team, but also a sign of closer parity as teams are neck and neck forcing extras more often.
    • Also something with the pitch clock and bigger bags could be forcing an issue that hasn’t been caught yet to benefit one side.

  • I’ve decided that some factor is incorrect on the Fangraphs sourced WP% in regards to Away teams this season and I will be forcing a +2% adjustment to all Away Teams going forward. Immediately with this in effect it shifts the overperformance to only 6.6. It’s not a full correction, but that’s also because I’m unsure if the WP% advantage for Away teams will correct and this is only temporary. So this partial improvement should be a good test to see if accuracy improves and holds for the model going forward.

Banning of Breakeven (BE) odds > 64%/ -180:

Lastly I will be making one other model adjustment to continue the process of mitigating risk. All bets with BE odds >64% are now banned, meaning they will result in an automatic Runt selection or scratch. Reviewing my bets with odds >64% / -180 ML has shown about a 22 unit loss so far this season.

“The Juice is not worth the Squeeze” when it comes to these high odds plays that require significant invesment in unit sizes to see similar returns in regards to Runts play

Model 5.2 update:

Currently the Runts card has a 3% threshold in place for eROI and it just made sense to apply the same standards to the Main card picks.

The data I have on hand of bets made so far this season support this decision.

  • Since the beginning of the season there have been 94 Main card picks with a sub 3% eROI. These picks have resulted in a net profit of 2 units.
  • Going back to just April 12th there have been 57 such Main card picks resulting in a net loss of 22 units.

With this minor change it will have minimal impact on the overall picks produced each day, maybe throwing some more the Runts way and creating more profit. But overall it should be a small change that helps improve overall eROI as these low value plays are removed from consideration going forward.

Model 5.12:

The Team Penalty unit which currently deducts one unit off all eligible bets for a team if that team is currently in the bottom 5 of profitability on the season (See 2023 MLB Betting Results teams data). This list is dynamic as it changes each day, but going forward to prevent Oakland or any other future team from being a drain of underpeformance I’ve upped the penalty to 2 units for the last place team. Note that these penalties will never reduce bet size to less than 1 unit if the team is eligible for a bet.

The overall goal here is increase the volume of plays while reducing risk. As a result the finances of your bankroll should improve as the strategy should capitalize on postive ROI plays resulting in more overall units won/ profits in a faster timeframe.

Model 5.11 Update:

RUNTS card added. These are opposite picks of bets that failed to materialize for a certain team due to negative eROI. They are added if a targeted MAIN card favorite team doesn’t have a positve eROI after line shopping. The opposing team is then reviewed for a positive eROI of 3%+. If that is the case then the RUNT team is added as a bet and at a fixed unit size of 2.

A second minor change with Model 5.11 is that I added a Unit Reduction factor called Team. This is a flag of the bottom 5 teams in profitability that you can review each day in my 2023 MLB Seasons Results page. The idea is that these teams have already burned me quite a bit this year, so they will be penalized 1 unit so that I’m not stretching a bigger bet on teams that just have trouble winning when needed. This list is dynamic each day so the bottom 5 teams could be different if somehow these reduced bets or RUNT cards get these teams back in my good graces.

Model 5.0 Update:

Base Units needed to be recalibrated to allow 1 unit bets to return. Previous Model had 1 base unit for every 5% of Win Probability % (WP%) above 45%. Due to recent adjustments in the Model no bets under 50% were no longer being placed, so no bet of 1 unit was possible.

New Model scales up Base Unit floor to 50% on the WP% and allows up to 3 units for every level of 5% above it.

In addition a Bonus unit was added if both the Base Unit and Edge Units were each providing at least 2 Units apiece on a given bet. Meaning now up to 6 units is the new Max Unit size that is feasible.

For example, any bet where WP% >60% will provide 3 Base Units and containing an eROI > 10% will provide an additional 2 Edge Units and since both Unit sources are 2+ in size a bonus unit is added to give us a 6 unit bet .

_______________________________

_________________________________

Leave a Reply