Here is where we will be tracking the Math Magician Lineup Bot 2.0 throughout the NFL season. I’ll do my best to get into an actual FanDuel contest for as many of the lineups as possible, but since the bot creates a lineup for all single-game slates, I won’t be able to get actual contest data for all of them. I expect to play all the prime-time slates, but not every lineup that gets posted all Sunday.
Disclaimer: All Daily Fantasy Sports (DFS) content on this site is intended for educational and entertainment purposes and is in no way intended to be any sort of gambling or financial advise or recommendation. There are no guaranteed winnings, and users are responsible for complying with local laws and FanDuel Terms of Service. These are my actual entries, not every lineup the bot posted. One unit is my usual entry amount; stakes varied by slate. Past results don’t guarantee future profits. I am simply sharing my process and tracking how it plays out.
2026 Season
You can see all results for the lineups I play throughout the season in the tracker below. I measure my entry fees and winnings in units instead of dollars. 1 unit represents the entry fee I typically would play for any slate and lineup created by the 2.0 bot. I typically try to enter these lineups in GPP contests. I do like to play a little more than 1 unit for the first 3-5 weeks of the season and in the playoffs, especially in prime-time games. For most of the regular season, I plan to do 1 unit entry contests.
Math Magician Lineup Bot 2.0 Tracker
Week 1 Recap
A profitable opening week for the entries I played, led by a big Sunday-night result!
My tracked results
- Slates played: 9
- Cashed: 3 of 9
- Entry fees: 15.61 units
- Total payouts: 31.52 units
- Net profit: +15.91 units
- ROI: +101.9% (net profit / entry fees)
One unit is my usual entry amount. Stakes varied this week, and I didn’t enter every slate. These results reflect my selected entries, not every lineup posted in VIP. Results will differ depending on the contests, lineups and entry amounts you play.
The highlights
NE @ SEA and BUF @ HOU each returned 2x the entry amount.
DAL @ NYG was the standout: 1.60 units entered, 20.30 returned, +18.70 units net. Dart at MVP and the value from Likely helped drive that result.
Sunday night’s result drove the week: the other eight entries combined finished -2.79 units. That’s important context alongside the headline profit. Keep in mind, my goal with this bot is to maximize our chances of setting an optimal lineup and getting a takedown. One big win paying for all the other entries is the desired result.
Monday-night transparency
I manually changed the bot’s KC defense selection to Denver before playing. This was mainly because we had Bo Nix at MVP and it is very unlikely to have an underdog QB at MVP, the opposing defense who is favored in the lineup, and that lineup be optimal for the slate. In fact, it never happened in the entire 2025 season. That entry missed the cash line. Keeping KC would have added 9 points, enough to clear the listed cutoff. The loss from my override is included above.
I’ve since updated the bot’s MVP/defense correlation rules after doing a deep dive into the data specifically regarding the team and position of the MVP and which defenses appeared in optimal lineups. That change will need more data before we can judge its effectiveness; it doesn’t change the results recorded this week.
I’ll keep sharing the wins, losses and any deviations from the bot as well as what we learn from it. This is one week’s performance, not a promise of future returns. DFS involves risk.
On to Week 2!
Week 2 Recap
Rough week: none of the six lineups I played cashed.
My tracked results
- Entry fees: 9.00 units
- Winnings: 0.00 units
- Net: -9.00 units
DET-BUF: -2.20u
MIN-CHI: -1.00u
PIT-NE: -0.40u
WAS-DAL: -1.00u
IND-KC: -2.20u
NYG-LAR: -2.20u
Season to date: +6.91 units
24.61 units entered / 31.52 units returned.
What I’m reviewing
Injuries to Caleb Williams, Jayden Daniels, and Jaxson Dart hurt, but injuries aren’t the whole explanation.
After Sunday, I became concerned that the optimizer was giving QBs too much weight, both at MVP and in two-QB builds. Across the six lineups I played this week, four had a QB at MVP and five included two QBs. Week 1 had similar builds. That alone doesn’t prove those builds are wrong, but it’s a pattern worth investigating.
Before Monday’s game, I made small adjustments intended to reduce QB usage slightly. Monday still missed, and one game can’t tell us whether those changes help.
I’m keeping the adjustments measured and giving them time rather than making a major overhaul after a rough week. This week I’ll dig into some additional data I’ve figured out a good way to collect to see whether it supports further changes, and I’ll keep monitoring the results.
I’ll continue sharing the losing weeks alongside the winning ones, along with what I’m learning and changing.
Week 3 Recap
Some payouts this week, but still a losing week overall. The six entries I played finished −2.13 units, bringing the season total to +4.78 units.
My Tracked Results
- Slates played: 6
- Received payouts: 3 of 6, including one partial return below the entry fee
- Entry fees: 9.60 units
- Total payouts: 7.47 units
- Net profit/loss: −2.13 units
- ROI: −22.2% (net profit / entry fees)
ATL @ GB: −2.20u
NYJ @ DET: −0.43u
ARI @ SF: +1.00u
BAL @ DAL: −1.00u
LAR @ DEN: +2.70u
PHI @ CHI: −2.20u
Season to date: +4.78 units
34.21 units entered / 38.99 units returned.
One unit is my usual entry amount. Stakes varied, and these results reflect the entries I actually played, not every lineup posted in VIP.
The Highlights
LAR @ DEN was the strongest result: 2.20 units entered, 4.90 returned, and +2.70 units net, with Kyren Williams at MVP.
ARI @ SF returned 2.00 units on a 1.00-unit entry, adding another +1.00 unit.
NYJ @ DET finished exactly on the listed cash line, but the tie resulted in only 0.57 units returned on a 1.00-unit entry. That counts as receiving a payout, but it was still a −0.43-unit loss, not a profitable entry.
BAL @ DAL finished just 0.80 points below the listed cash line. Close, but still a loss, and recorded that way.
What I’m Changing
Last week, I discussed concerns about how heavily the optimizer was favoring QBs, particularly at MVP. Since then, I’ve been able to collect and analyze additional historical FanDuel contest data that previously required a lot of manual, time-consuming work.
Having a more efficient way to gather that data opened up some additional analysis. We’ve used it to build an alternate model, with the main changes focused on MVP selection.
Rather than immediately replacing the existing model, the bot will start creating two lineups for each slate:
- Primary lineup, first: Uses the same model we’ve been using.
- Alternate lineup, second: Uses the new, less-tested model incorporating the additional historical analysis.
Tracking Both Models
For at least the next few weeks, I’ll share results for both models separately so we can follow how each performs. After that comparison period, the plan is to select one model for ongoing use, mainly to keep posting and tracking straightforward.
The alternate model is less tested, and a few weeks of live results won’t establish that one model is better. This is a chance to evaluate the changes, not a claim that the new version will produce better returns.
I’ll continue sharing the wins, losses, and model changes as we go. DFS involves risk, and past results don’t guarantee future profits.
Week 4 Recap
Back to a positive week overall. My six played entries finished +1.10 units, bringing the season total to +5.88 units.
Week 4 was the first week tracking both Bot 2.0, the original primary model, and Bot 2.1, the new alternate model. Here are their results separately.
My Tracked Results
Bot 2.0: Primary
- Lineups tracked: 6; actually played: 1
- Above the listed cash line: 3 of 6 tracked lineups
- Actual payouts: 1 of 1 played
- Entry fees: 1.00 unit / total payouts: 3.50 units
- Net profit/loss: +2.50 units
- ROI: +250.0%, from just one played entry
NE @ BUF: +2.50u
The other five primary lineups were unplayed and are excluded from actual profit totals.
Bot 2.1: Alternate
- Lineups tracked and played: 5
- Received payouts: 1 of 5
- Entry fees: 7.40 units / total payouts: 6.00 units
- Net profit/loss: -1.40 units
- ROI: -18.9%
PIT @ CLE: -2.20u
KC @ LV: +5.00u
LAC @ SEA: -1.00u
DET @ CAR: -1.60u
ATL @ NO: -1.60u
Combined Actual Results
Six entries played, with payouts on two.
8.40 units entered / 9.50 units returned.
Week 4: +1.10 units / +13.1% ROI.
Season to date: +5.88 units.
42.61 units entered / 48.49 units returned.
One unit is my usual entry amount. Stakes varied. ROI is net profit divided by entry fees. These totals reflect only entries I actually played, not every lineup posted in VIP.
The Highlights
NE @ BUF delivered Bot 2.0’s actual profit. With Drake Maye at MVP, it scored 103.66 against an 87.04 cash line and returned 3.50 units on a 1.00-unit entry: +2.50 units net.
KC @ LV was Bot 2.1’s standout. With Kirk Cousins at MVP, it scored 128.30 and returned 6.00 units on a 1.00-unit entry: +5.00 units net.
Bot 2.0 also finished above the listed cash lines on KC @ LV (116.90 versus 103.70) and ATL @ NO (101.64 versus 100.39). Those primary lineups would have returned 3x and 2x entry, respectively. Both were unplayed, so those hypothetical payouts are excluded from actual profit totals.
The alternate’s other four entries lost a combined 6.40 units, leaving Bot 2.1 down 1.40 units despite its KC @ LV result.
What I’m Learning
Bot 2.1 did not generate a lineup for NE @ BUF. That exposed a bug preventing alternates on some slates, which has since been fixed. A missing lineup is not counted as a played loss.
I played one primary lineup and five alternates, with different stakes. Their actual ROIs are therefore not a like-for-like test of model quality.
Tracking Both Models
I’ll continue tracking both models separately, including scores for unplayed lineups, while keeping hypothetical returns out of actual profit totals.
Bot 2.1 remains less tested. One week, one strong payout, or a short stretch of results is not enough to establish which model is better.
DFS involves risk, and past results don’t guarantee future profits.
Week 5 Recap
Another losing week overall. The four lineups I played, all from Bot 2.1, finished -2.80 units, bringing my actual season total to +3.08 units.
My Tracked Results
- Slates played: 4
- Received payouts: 2 of 4, including one partial return below the entry fees
- Entry fees: 5.80 units
- Total payouts: 3.00 units
- Net profit/loss: -2.80 units
- ROI: -48.3% (net profit / entry fees)
TB @ DAL: -1.60u
CHI @ GB: +1.00u
BAL @ ATL: -1.60u
BUF @ LAR: -0.60u
Season to date: +3.08 units
48.41 units entered / 51.49 units returned.
One unit is my usual entry amount. Stakes varied, and these totals reflect the entries I actually played, not every lineup posted in VIP. Unplayed lineups are excluded from my actual profit totals.
The Highlights
CHI @ GB was the only profitable slate I played. Bot 2.1, with Tyson Bagent at MVP, scored 100.15 against the listed 97.43 cash line. It returned 2.00 units on a 1.00-unit entry, for +1.00 unit net.
BUF @ LAR produced a payout, but not a profit. Bot 2.1 scored 128.32, just 0.24 points above the listed cash line. The lineup paid in one contest and missed in the other, returning 1.00 unit on 1.60 units entered. That is a -0.60-unit loss, despite receiving a payout.
TB @ DAL and BAL @ ATL both missed the money with the lineups I played, accounting for the other -3.20 units.
Bot 2.0: Tracked, Not Played
I tracked four Bot 2.0 lineups this week but did not enter any of them. TB @ DAL, CHI @ GB, and BAL @ ATL missed their listed cash lines. BUF @ LAR scored 129.12, but the tracker records a hypothetical combined return of only 0.625x the entry amount across the two contests. That would still have been a losing slate.
Using a hypothetical flat 1-unit entry per tracked slate, Bot 2.0 would have returned 0.625 units on 4 units entered, for -3.375 units (-84.4% ROI). Bot 2.1 on that same flat-stake basis would have returned 2.625 units, for -1.375 units (-34.4% ROI). These are comparison figures, not additional actual winnings or losses.
Running Model Comparison: Weeks 4–5
For this comparison, every tracked lineup receives a hypothetical 1-unit entry. Returns use the payout multiples recorded in the tracker, including the partial returns. This removes the effect of my varying stakes; it does not turn unplayed results into actual profits.
| Metric | Bot 2.0 | Bot 2.1 |
|---|---|---|
| Tracked slates | 10 | 9 |
| Week 4 net | +2.500u | +1.000u |
| Week 5 net | -3.375u | -1.375u |
| Total returned | 9.125u | 8.625u |
| Net since Week 4 | -0.875u | -0.375u |
| ROI since Week 4 | -8.8% | -4.2% |
The slate counts differ: NE @ BUF in Week 4 had no Bot 2.1 lineup because of the generation bug noted last week. Excluding that game gives a matched comparison across nine slates: Bot 2.0 -3.375u (-37.5% ROI) versus Bot 2.1 -0.375u (-4.2% ROI), still using hypothetical 1-unit entries.
Separately, my actual entries since Week 4 are:
- Bot 2.0: 1 lineup played; 1.00u entered, 3.50u returned, +2.50u net.
- Bot 2.1: 9 lineups played; 13.20u entered, 9.00u returned, -4.20u net.
Those actual totals reflect very different selections and stakes, so they are not a like-for-like model comparison.
What I’m Watching
Bot 2.1 had the better return this week and is ahead in the matched-slate comparison, but both models remain below break-even on that basis. Two weeks and nine shared slates are not enough to establish that one model has a reliable edge. The model-version notes also changed between weeks, so these totals follow each bot as posted, not two unchanged configurations.
I’ll keep tracking the models separately and sharing the wins and losses without treating a payout as a profit or an unplayed result as money earned. DFS involves risk, and past results do not guarantee future profits.
