Methodology
This page documents every step of my Lottery Truths model: what I measure, how I calculate it, where the data comes from, how I validated the results, and what alternative approaches I tested and rejected.
What I Measure and Why
Every analysis on this site uses a single metric: estimated return per dollar. For a given lottery draw, this number tells you how much of each dollar spent on a ticket you would mathematically expect to get back, on average, if you could play that exact draw thousands of times.
Per-dollar normalization is critical. Powerball tickets cost $2. Mega Millions tickets cost $5 (as of April 2025). Comparing jackpot sizes or raw odds without adjusting for what you actually pay is meaningless. A $500M Mega Millions jackpot at $5 per ticket can be a worse deal than a $300M Powerball jackpot at $2 per ticket. The only honest comparison divides everything by the ticket price so both games are on the same scale.
Most lottery comparison sites skip this step entirely. They present a static odds table, declare a winner, and move on. That approach ignores ticket price, ignores that the answer changes every draw, and ignores jackpot splitting. I do all three.
The Core Formula
For every historical draw, I compute estimated return per dollar using two methods, depending on whether actual ticket sales data is available.
When Ticket Sales Are Known (Poisson Splitting Model)
When I have actual sales data for a draw, I use a Poisson model to account for jackpot splitting. The logic: when a jackpot grows, ticket sales surge, and more tickets sold means a higher probability that multiple people match the winning numbers. Sharing the prize cuts its value per ticket. Ignoring this effect produces estimates that are systematically too optimistic at high jackpot levels.
The calculation works as follows. Let J be the jackpot value, N the number of tickets sold, p the probability of any single ticket hitting the jackpot, t the ticket price, and L the expected return from lower-tier prizes.
First, compute the expected number of jackpot winners:
λ = N × p
Then, the expected jackpot return per ticket, adjusted for splitting:
Jackpot EV per ticket = (J / N) × (1 − e−λ)
Finally, the per-dollar return:
Estimated return per dollar = (Jackpot EV + L − t) / t
A result of −$0.70 means you lose an estimated 70 cents of every dollar played. A result above $0.00 means the ticket is theoretically worth more than its price on paper (though your overwhelmingly likely outcome is still losing the full ticket cost).
When Ticket Sales Are Unknown (Fallback)
For draws where sales data is unavailable (some older historical records), I fall back to a naive formula:
Jackpot EV per ticket = p × J
This assumes you would be the sole winner, which overstates the jackpot's value at high sales volumes. It is a reasonable approximation for smaller jackpots (where few tickets are sold and splitting risk is negligible) but can overestimate return by $1.50 or more per dollar at billion-dollar jackpot levels.
Why Poisson?
The Poisson distribution models the number of independent events (jackpot winners) occurring in a fixed interval (one draw) when each event has a small but known probability. With hundreds of millions of tickets sold and odds around 1-in-300 million, the expected number of winners is typically between 0.3 and 1.5. The Poisson model handles this range well and is standard in the actuarial and probability literature for lottery analysis.
How large is the splitting effect in practice? During the $1.8B Powerball run in September 2025, the naive formula estimated a return of $3.60 per dollar. The splitting-adjusted estimate was $2.10, a difference of $1.50 per dollar. Across 116 Powerball draws in my test set, the naive formula overestimated return by an average of $0.08 per dollar. The gap is small for typical jackpots and enormous for headline jackpots.
Data Sources
Every number on this site traces back to a specific, verifiable source.
Historical Sales and Jackpots
Draw-by-draw sales and jackpot data was sourced from Lotto Report, which has tracked lottery sales data across multiple states for decades. I scraped multiple pages per game (covering different year ranges), parsed the HTML tables, deduplicated by draw date, and cross-referenced against officially published results. The resulting dataset covers 6,000+ draws going back to 1997.
Live Jackpot Data
Current jackpot information is fetched from the Multi-State Lottery Association (MUSL) API, which provides the official annuity and cash values for both Powerball and Mega Millions. This data is queried on a schedule and used to compute the estimated return for upcoming draws.
Official Odds and Rules
Jackpot probabilities and prize structures for each era were taken from the official published matrices on Powerball.com and MegaMillions.com.
Cash-Option Estimation
Historical sources did not record the actual cash value for most draws before April 2026. For those draws, I apply an estimated annuity-to-cash ratio of 58%, which is consistent with the historical average across varying interest-rate environments. From April 2026 onward, the MUSL API provides the actual advertised cash value, and I use that directly.
How I Handle Rule Changes
Both Powerball and Mega Millions have undergone major rule changes over the past three decades: different number matrices, different ticket prices, different prize structures. Treating all draws as if the same rules applied would produce meaningless results.
I define seven distinct eras across both games, each with its own ticket price, jackpot win probability, and lower-tier expected return:
Powerball Eras
- Pre-2012: $1 ticket, odds approximately 1-in-51 million (varied by year).
- Jan 2012 to Oct 2015: $2 ticket, odds approximately 1-in-57 million, restructured prizes.
- Oct 2015 to Aug 2021: $2 ticket, odds 1-in-292 million (5/69 + 1/26 matrix), two draws per week.
- Aug 2021 to present: Same odds and price, third weekly draw added (Monday).
Mega Millions Eras
- Pre-Oct 2017: $1 ticket, odds approximately 1-in-190 million (varied by year).
- Oct 2017 to Apr 2025: $2 ticket, odds 1-in-302 million (5/70 + 1/25 matrix).
- Apr 2025 to present: $5 ticket, same odds, built-in Megaplier, improved lower-tier prizes.
Every per-draw calculation uses the era that was active on that draw date. A $1-era Powerball draw is never mixed with a $2-era draw in the same calculation. The per-dollar normalization ensures that results across eras are directly comparable on the same chart.
Predicting Ticket Sales for Upcoming Draws
For completed draws, I use actual reported sales from Lotto Report. For upcoming draws (where ticket sales are unknown), I predict the number of tickets that will be sold based on the current jackpot size.
The relationship between jackpot size and ticket sales is strong but nonlinear: sales rise slowly at low jackpots and exponentially at high jackpots. I model this with polynomial regression, fitting ticket sales as a function of jackpot size (in millions).
Model Selection Process
I did not simply pick a polynomial degree and call it done. I ran a systematic model selection process that tested 1-path, 2-path, and 3-path piecewise polynomial models with grid-searched thresholds across multiple polynomial degrees (linear, quadratic, cubic).
For multi-regime models (where different polynomials apply below and above a jackpot threshold), I searched over percentile-based thresholds in 5-percentage-point increments and tested every combination of polynomial degrees for each segment.
The key constraint: a multi-regime model was only adopted if it improved R-squared by at least 0.01 over the single-model baseline. This conservative gate prevents overfitting to noise in the training data.
Results
- Powerball: Single quadratic polynomial, R² = 0.82, trained on 719 post-October-2015 draws (where odds have remained constant). The model explains 82% of the variation in ticket sales. The remaining 18% comes from factors like media coverage cycles, holiday timing, and unpredictable consumer behavior at extreme jackpot levels.
- Mega Millions: Two-path model with a threshold at $343M annuity, R² = 0.95, trained on 102 post-April-2025 draws. Below the threshold, a cubic polynomial captures the gradual sales ramp. Above it, a separate cubic captures the steeper acceleration as headlines drive buying.
What I Tried That Did Not Work
A model is only as credible as the alternatives it was tested against. I spent considerable time evaluating approaches that ultimately did not improve on the polynomial baseline. Documenting them here is part of showing my work.
Google Trends as a Ticket-Sales Predictor
The hypothesis was intuitive: search interest in "Powerball" or "Mega Millions" should correlate with ticket-buying behavior, and adding Trends data might improve sales predictions beyond what jackpot size alone can provide.
I scraped Google Trends data at daily, weekly, and monthly granularity. I tested multiple feature sets (1-day prior, 3-day average, 7-day average) combined with jackpot size, calendar features (day of week, days since last jackpot reset), and various model architectures: Linear Regression, Polynomial Regression, Random Forest, and Gradient Boosting.
I evaluated every model using walk-forward validation (train on all data before a given date, predict the next period) to measure genuine out-of-sample accuracy rather than relying on in-sample fit, which overstates real-world performance.
The verdict was clear. For Powerball, the best Trends-augmented model (Random Forest with jackpot + Trends) achieved an in-sample R² of 0.98 but produced a negative walk-forward R², meaning it predicted worse than guessing the average. For Mega Millions, Trends added only +0.008 to in-sample R². In both cases, jackpot size alone was essentially sufficient. I dropped Trends from the production model.
Machine Learning Ensembles (Random Forest, Gradient Boosting)
These models achieved in-sample R² values above 0.98 for both games. Impressive, until you look at the walk-forward results: negative R² across the board. The models memorized the training data rather than learning the underlying relationship. The December 2025 Powerball run to $1.7B was an extreme outlier that no model trained on normal draws could have anticipated. The simpler polynomial, which makes fewer assumptions, generalizes far better.
Pooled-Era Dollar-Sales Model for Mega Millions
After the April 2025 ticket price increase from $2 to $5, the Mega Millions training set was small (around 100 draws). I tested whether pooling data from both the $2 and $5 eras (predicting dollar sales rather than ticket count, then dividing by ticket price) would produce a better model by leveraging the larger combined dataset. It did not clear the 0.01 R² improvement gate when evaluated on the current era.
Weighted Regression for Mega Millions
A variation on the pooling approach: give current-era ($5) draws three times the weight of older ($2) draws in the training data. The idea was to bias the model toward recent behavior while still benefiting from the larger dataset. This also failed to beat the current-era-only model at the 0.01 threshold.
Each rejected approach taught me something, but the lesson was consistent: simpler models with fewer assumptions outperform complex ones when the underlying data is noisy and the sample sizes are limited.
Validation Pipeline
Scraping lottery data from HTML tables is error-prone. Strikethrough text, revised figures, missing rows, and inconsistent formatting can silently corrupt a dataset. I run a multi-layered validation pipeline on every data refresh.
Data Integrity Checks
- Unique date enforcement: Every draw date must appear exactly once. Duplicate entries (common when scraping overlapping page ranges) are caught and removed.
- Chronological ordering: All draws must be in ascending date order. Out-of-order entries indicate a parsing failure.
- Gap detection: Any gap exceeding 12 days between consecutive draws is flagged for investigation. Normal draw schedules produce gaps of 2 to 4 days; anything larger suggests missing data.
- Jackpot/sales coherence: Rows where ticket sales exceed $200M but the jackpot is below $100M are flagged. This pattern catches column-alignment errors from HTML parsing artifacts (such as strikethrough or revised-value markup being misread).
Known-Jackpot Spot Checks
I verify that several well-documented record jackpots appear in the dataset with correct values:
- $1.58B Powerball (January 13, 2016)
- $2.04B Powerball (November 7, 2022)
- $1.54B Mega Millions (October 23, 2018)
Each must be present and within a tolerance band of the documented value. If any are missing or incorrect, the validation run fails.
Random Spot Samples
Twelve draws per game are randomly selected and printed for manual inspection on each validation run, providing a sanity check beyond the automated rules.
Live Pipeline Quality Control
The automated update system (which runs on a schedule) performs its own independent checks before writing any data:
- Minimum draw count: each scrape must return at least 5 recent draws.
- Freshness: the newest draw must be within a reasonable window of the current date.
- Sales plausibility: individual draw sales must fall between $5M and $800M.
- EV plausibility: computed estimated return values must fall within −$10 to +$10 per dollar.
- No duplicate or unsorted dates in the chart series.
- All array lengths must match (labels, jackpots, EV series).
If any check fails, the system sends an alert and preserves the previous data rather than writing corrupted results.
Limitations and Assumptions
My model is transparent about what it does and does not account for.
- Taxes: Federal and state income taxes on lottery winnings are significant (often 37%+ effective rate) and are not included in any figure on this site. After-tax returns are substantially worse than the pre-tax estimates shown.
- Net present value: The annuity option pays out over 29 years. The time value of money makes a dollar received in 2055 worth less than a dollar received today. I do not apply NPV discounting.
- Multi-winner splitting beyond Poisson: The Poisson model captures the expected splitting effect well for typical scenarios. It does not model the possibility of three or more winners sharing a prize, though such events are rare.
- Lower-tier prize estimates: Rather than computing the exact expected value of every possible non-jackpot outcome (matching 3, 4, or 5 numbers with or without the bonus ball), I use an approximate per-ticket allowance based on the published prize structure for each era. This is close to the actual value but not exact.
- Cash ratio: The 58% annuity-to-cash estimate used for pre-April-2026 draws is an approximation. The real ratio varied by draw depending on prevailing interest rates and lottery-specific terms.
- Individual circumstances: This analysis treats every ticket equally. It does not account for the entertainment value of playing, the utility of a life-changing prize, or any personal financial situation.
Analysis by Colt Ramsey.