Megapot Analyzer logoMegapot AnalyzerProbability lab
OverviewGeneratorResultsWinnersSlot RTP Lab
Live dataRTP Lab
Megapot AnalyzerIndependent, educational

Analyze

OverviewLatest draw and headline statsGeneratorBuild a scored number setDraw historyEvery settled round

Results

Results & winnersVerified round resultsTop winnersLeaderboard by payoutLottery TraditionalTraditional market results

Probability lab

Slot RTP LabProvider RTP and jackpot oddsHow it worksScoring method and limits
Megapot official stats

No wallet connection. No purchase function. Historical analysis only.

Independent historical analyzer

Not affiliated with Megapot. Megapot trademarks belong to their respective owner. The custom Analyzer artwork identifies this independent site. Historical score is not a prediction or guarantee.

Official SourcesMegapot websiteMegapot statsMegapot docsData API guideContract on Basescan
ImportantNo wallet connectionNo purchase functionNo prediction claims
Transparent method · weighting v3.0.0

How the score works

Five historical signals are normalized to 0–1, combined with weights that depend on how much history exists, then mapped onto a 0–100 score relative to the rest of the pool. Every number below is read straight fromlib/scoring-config.ts, so the page cannot drift from the code.

Historical score, not prediction. If draws are fair, every valid combination keeps the same official probability. Past frequency does not guarantee the next result.

Real data pipeline

The site follows Megapot's official API-versus-RPC guidance.

1. Historical resultsMegapot Data API supplies settled rounds, numbers, ticket totals, participants, winners, and prize tiers. Cursor pagination loads the full available archive.
2. Current roundThe active-round endpoint supplies the round ID, closing time, current ticket volume, prize pool, and expected prize tiers.
3. On-chain verificationA read-only Base RPC call checks chain ID 8453, contract bytecode, current block, ticket price, and whether purchases are open.
4. Daily database syncVercel Cron upserts by round ID, refreshes number statistics, stores the active-round snapshot, and records each sync run.
Official pull-data guideInteractive API referenceBase RPC reference

Current weighting

Weights are interpolated between the sparse and mature vectors by sample-size confidence,n / (n + 60). With little history the score leans on the smoothed rate; as rounds accumulate the observed counts take over.

SignalWhat it measuresThin historyMature history
Frequency z-scoreHow far the observed count sits from the count a fair draw would produce.10%30%
Bayesian rateHit rate shrunk toward the official baseline with a 18-draw prior.55%22%
Volume-weighted decayRecent rounds count more, and rounds that sold more tickets count more again.15%24%
Trend derivativeLatest 30 draws against the 30 before them.5%14%
Gap pressureHow unlikely the current dry spell would be under a fair draw.15%10%

Fixed in this revision

Three things the previous weighting got wrong.

  • Recency and gap cancelled out. Both terms were in the sum, and one was exactly 1 − the other, so together they only ever added a constant. There is now a single gap-pressure term.
  • Days were divided by draw counts. Recency mixed elapsed days with a number of rounds. Gap is now measured in draws, which is the unit that actually matters.
  • Scores never used the range. The raw weighted sum clustered in a narrow band, so a 60 and a 62 looked far apart while the pool spread was tiny. The composite is now standardized within its pool before being mapped to 0–100.

Weighting the latest events

Recency in two dimensions: when a round happened, and how big it was.

weight = e^(−ln2 · age / halfLife) × volume

Half-life is 30 draws for main numbers and 24 for the bonus ball, measured in rounds rather than days because Megapot settles one round per day. The volume term compares a round's ticket count with the median round and moves its weight by up to 35% either way, so a heavily played jackpot event counts for more than a quiet day in the same week.

Bayesian smoothing

Prior raised from 12 to 18 pseudo-draws.

p = (hits + baseline × 18) / (draws + 18)

A stronger prior means a short streak on a young dataset no longer produces a confident-looking rate.

Gap pressure

Replaces the old recency and gap pair.

gap = 1 − e^(−drawsSinceSeen × baseline)

This is the probability a fair draw would have produced at least one hit across the observed dry spell. It is 0 immediately after a hit and approaches 1 as a number falls well past its expected interval. It describes how unusual the gap is; it does not make the number more likely next round.

Final 0–100 mapping

Standardized inside its own pool, then squashed.

composite = Σ weight_i × signal_i chance = 100 × sigmoid(1.6 × (composite − poolMean) / poolStdDev)

An average number scores about 50 by construction. The generator turns the score into a softmax weight, exp((score − 50) / temperature); pure random mode gives every number weight 1.

What the score cannot do

It cannot detect the next winning number from independent fair draws. A past streak, long gap, or high frequency does not change the official probability. Better weighting makes the description of history more honest, not the future more knowable.

Open model backtest