lotto ev toolkit / architecture

A system whose
answer is usually no.

The repository is called a prediction system. It is not one, and its own backtest is what proves it. What it actually automates is the only part of a lottery a player controls: deciding when a ticket is worth buying, and keeping an honest ledger of what happened when it was.

SKIP

The advisor's verdict on an ordinary draw

Draws are independent and uniformly random, so no method here beats random picks — the walk-forward backtest says so, and the dashboard prints it. Expected value only turns positive on rare roll-downs, and even then on fewer than half of them.

History since 1994 Runs on GitHub Actions Data committed by the collector Cost £0/mo
Trigger · after every draw

Scheduled workflow

Wednesday and Saturday, after the evening draw has settled

21:45 UTC, with a retry at 06:00 the next morning

step 1
Fetch and reconcile

Official results feed

Draw numbers and the full prize breakdown per tier

Sales figures pulled too — they drive the whole model

step 2

Recalibration

Fixed prize tiers re-derived from the new draw, popularity weights refreshed

Roll-down uplift priced separately so it cannot skew the median

step 3

The repository is the database

The workflow commits the updated history back to the repo

No database to run, back up or pay for — git is the ledger

step 4
If it does not run

Collection watchdog

A separate workflow that checks the collector actually produced a draw

Missing data is silent — so absence is what gets checked

watching
Servers to keep alive
0 it is a cron and a commit

Two draws a week is not a workload. Anything more than a scheduled job and a versioned file would be infrastructure bought for its own sake.

Decisions worth defending

No infrastructure bought for its own sake
Two draws a week does not justify a server, a queue or a database. A scheduled workflow fetches, recalculates and commits; git provides history, durability and audit for free.
Absence is the failure mode
A collector that stops collecting produces no error — the data simply stops. A separate watchdog workflow checks that each draw actually arrived, on the same reasoning that alarms a silent scheduler.
The clock, not the calendar
Sales close at 19:30 UK time while the collector runs on UTC, so the draw a run refers to is computed with an explicit timezone. Both the evening run and the morning retry resolve to the same draw.
Deterministic recommendations
Suggested lines are seeded from the draw date, so a retry proposes the same portfolio rather than a second, different one — the same idempotency a scheduled job needs anywhere else.