1 · Select the fixture
Use the teams' last five completed matches. Enter xG for and against, newest match first.
2 · Model assumptions
Adjust to the competition. Defaults are illustrative, not verified league averages.
3 · Enter MWOS prices
Enter any standard 1X2 prices you have. The MWOS screenshot reader can also import double-chance/BTTS and result-plus-total-goals combination markets.
Daily guardrails
Hard limits applied to this local paper-bet tracker.
Performance dashboard
Track paper bets, settled returns and whether your prices beat the closing market.
| Date logged | Fixture | Selection | Odds | Stake | Result | P/L | Closing odds | CLV |
|---|
How to read closing-line value
Enter the closing price from your chosen reference bookmaker when the market closes.
This app calculates CLV = (entry odds ÷ closing odds − 1) × 100. Positive CLV means you took a bigger price than the closing price. It is a useful process check, not proof of profit or a guarantee.
Record integrity
Your data lives in this browser on this device.
Export a JSON backup regularly, especially before clearing browser data or changing devices. CSV is for analysis in a spreadsheet; JSON preserves editable records.
Saved team profiles
Save a team's five-match xG snapshot and load it into the analyzer next time. Update it after every new match.
Profile workflow
A saved profile stores a team name and its last five xG-for and xG-against readings. It is not a live team database and does not automatically update.
Model logic
A transparent starting model, not a copy of Starlizard or Smartodds.
The independent Poisson model calculates scoreline probabilities from expected goals. Dixon–Coles mode applies a calibrated low-score dependence correction to 0–0, 0–1, 1–0 and 1–1 before aggregating markets. The scoreline calculation includes a wide goal range and normalizes the tiny omitted tail rather than stopping at 5 goals.
Value and staking rules
- Break-even probability: 1 ÷ offered decimal odds.
- Expected value: model probability × odds − 1.
- Value threshold: model probability must exceed break-even by at least the chosen edge (default 4 percentage points).
- Stake: Half-Kelly, capped at 2% of bankroll.
- Daily limit: no more than five logged bets per local calendar day.
Known limitations — what to improve before real-money use
Five-match averages; simple attack/concession ratios; one home-advantage factor; independent Poisson goals; manually entered odds; no live data feed; no lineup, injuries, red cards or schedule congestion.
Use larger and recency-weighted samples; separate home/away xG; shrink small samples toward league average; calibrate home advantage per league; test Dixon–Coles low-score correction; validate probabilities out-of-sample; compare against closing prices and bookmaker margin.
Import historical xG into the team library
Upload a CSV exported from a data source you are entitled to use. The app groups rows by team and builds last-five xG profiles.
team,date,xgf,xga. Optional: competition,opponent. Use one row per team per match. Dates should be YYYY-MM-DD.Provider integration — independent of MWOS
A future data connector can import fixtures and eligible statistics without contacting a bookmaker.
API-Football requires an API key and documents competition-specific coverage; its fixture statistics list does not establish that xG is available for every league. This app therefore does not invent xG data or store an API key. Verify xG coverage and licensing for each competition before enabling a feed.
Historical backtest
Test your model on old fixtures that were not used to build the rating. The backtest places no bets and simulates one 1-unit selection per qualifying match.
home,away,lambda_home,lambda_away,odds_home,odds_draw,odds_away,actual_home_goals,actual_away_goals. Optional: date,competition,closing_home,closing_draw,closing_away. Use decimal odds and full-time scores.Development milestones
- Screenshot OCR with manual review before odds are applied
- CSV import for historical team xG
- Recency-weighted xG ratings
- Independent Poisson and Dixon–Coles low-score adjustment
- Historical 1-unit backtest with Brier score and optional CLV
- Local-only MWOS price entry; no bookmaker API or automated betting
- Verified fixture provider integration and team-name matching
- Competition-specific xG feed with provider-coverage checks
- Home/away splits, larger samples and shrinkage toward league mean
- Walk-forward validation, calibration plots and uncertainty intervals
- Secure local encrypted backup and installable Android PWA