JJ

JABU JOKER

FOOTBALL VALUE LAB · VALUE BET / NO BET
Saved on this device

Price the match. Don't chase the result.

Build a probability from recent expected goals, compare it with prices captured from screenshots, and study which markets offer potential value. No bookmaker connection, no auto-betting and no promised wins. Final decision is always exactly one of two labels: VALUE BET or NO BET.

Your wallpaper preview
Personalise your JABU JOKER wallpaper
Choose a portrait from your phone gallery. It stays in this browser on this device.

1 · Select the fixture

Use the teams' last five completed matches. Enter xG for and against, newest match first.

Manual xG input
Home team · last 5
Example: newest → oldest, 1.8, 1.5, 2.0, 1.2, 1.7
Away team · last 5
Use the same order; newest match first for recency weighting.

2 · Model assumptions

Adjust to the competition. Defaults are illustrative, not verified league averages.

Research parameter; calibrate by league and season rather than guessing.
Keep league averages consistent with the competition and data provider. xG definitions can differ between providers.

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.

Import odds from a screenshot
Choose a screenshot saved from the MWOS app. OCR runs in your browser; no MWOS login, API or bookmaker connection is used.
Local image OCR
No screenshot selected.
Privacy note: the screenshot file is processed in this browser and is not sent to MWOS or an OCR service. The app loads the OCR engine, language and WebAssembly files from jsDelivr when first used; only those library requests leave your device. Do not use this option on a device you do not control.
No bet is placed. You decide what to do.

Daily guardrails

Hard limits applied to this local paper-bet tracker.

Paper bets logged today
0 / 5
Maximum stake per bet2% bankroll
Maximum logged per day5 bets
This app enforces these limits when logging. It does not connect to MWOS or execute bets.

Performance dashboard

Track paper bets, settled returns and whether your prices beat the closing market.

Logged bets
0
Settled P/L
$0.00
Settled ROI
—
Average CLV
—
Positive P/L / CLVNegative P/L / CLVPending bet
Date loggedFixtureSelectionOddsStakeResultP/LClosing oddsCLV
No paper bets logged yet. Analyze a fixture and log a qualifying value selection to start your record.

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.

No profiles saved. Save a home or away profile from the Match Analyzer.

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.

Avoid mixing competitions or data providers in one team's five-match sample without a reason. Keep cup games, red-card anomalies and neutral venues in your notes when relevant.

Model logic

A transparent starting model, not a copy of Starlizard or Smartodds.

Team attack strength
Team's average xG for ÷ league average xG
Opponent concession strength
Opponent's average xG against ÷ league average xG
Expected home goals
Home attack × away concession × league baseline × home advantage
Expected away goals
Away attack × home concession × league baseline

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.
The Kelly fraction uses (p × odds − 1) ÷ (odds − 1), then halves it. The cap is applied after that calculation. The 2% and five-bet limits are guardrails, not proof that a stake is safe.

Known limitations — what to improve before real-money use

Current version

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.

Next research upgrades

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.

Recommended workflow: paper-trade at least 100–200 bets across a consistent sample, record closing odds, and evaluate calibration and CLV—not ROI alone. A short positive run is not evidence of an edge.

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.

Required CSV columns: team,date,xgf,xga. Optional: competition,opponent. Use one row per team per match. Dates should be YYYY-MM-DD.
No xG file selected.

Provider integration — independent of MWOS

A future data connector can import fixtures and eligible statistics without contacting a bookmaker.

Manual CSV importAvailable
API-Football fixture metadataNot connected
Automated xG feedProvider-dependent

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.

Required CSV columns: 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.
No backtest file selected.

Development milestones

Included in this build
  • 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
Next engineering milestones
  • 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