PitchPulse

λ Home
λ Away
⚡ Best Bet
λ Home
λ Away
⚡ Best Bet

League Baseline

The league's average goals per match — converts raw form into attack and defence strength. Pick a league to auto-fill, or set the numbers yourself.

Advanced — pick a league or override
Using defaults: Home 1.50  |  Away 1.20 (toggle Advanced to change)
HOME

Last 5 home matches — goals for / against

AWAY

Last 5 away matches — goals for / against

⚽ Most Likely Score
Home
– – –
Away
Top correct score probability
Expected Goals
Over 2.5
BTTS Yes

1X2

Home
Draw
Away

Over / Under

Over
Under

Both Teams to Score

Yes
No

Top correct scores

    Calculate probabilities on the Form tab to see your Match Verdict.

    📋 Match Log

    No matches logged yet. Calculate a fixture, then hit "Add to Match Log".

    💡 How To Use PitchPulse

    Five recent matches per side, one league baseline, and PitchPulse turns it into a full set of match probabilities in one tap.

    Step 1 — League Baseline: Pick a Country and League to auto-fill the average home/away goals for that competition, or type your own. Defaults are Home 1.50 / Away 1.20 — a generic mid-table read. "Reset to default" undoes any manual edits.

    Step 2 — Team names: Name your Home and Away side.

    Step 3 — Recent form: Fill in goals for / against for each team's last 5 matches — home matches only for the Home side, away matches only for the Away side.

    Step 4 — Calculate: Hit "⚡ Calculate Probabilities". The Markets tab fills in with 1X2, Over/Under, BTTS, and the top correct scores; the stats strip up top shows λ Home, λ Away, and the model's Best Bet.

    Step 5 — O/U line: Change the O/U line before or after calculating to test a different total-goals line on the Markets tab. Best Bet and the Match Log always grade against a fixed 2.5 line, so your tracked record stays comparable over time.

    Step 6 — Track it: On the Verdict tab, hit "+ Add to Match Log" to save the pick, then fill in the real final score once the match is played. Signal Check and Calibration build up as your log grows.

    📊 Where To Get Your Team Stats

    PitchPulse doesn't pull live data — you feed it the numbers, which keeps it fast, offline-friendly, and usable for any league on earth.

    Last 5 matches — goals for / against

    FlashScore.com & WhoScored.com — filter a team's results by venue (home or away), then read off the score of each of the last 5.

    Official league sites — most top-flight league sites (e.g. premierleague.com, laliga.com) list a filterable fixture history per club.

    FBref.com — free match logs for almost every senior league worldwide, filterable by venue.

    League averages

    Use the Country/League selector on the Form tab first — it auto-fills from a built-in database. If your league isn't listed, search "[league name] goals per game average" for the current season, or just leave the defaults (1.50 home / 1.20 away) as a generic baseline.

    ⚙️ Good To Know

    Everything stays on your device

    Inputs, theme, and the Match Log are saved in your browser's local storage only. There's no backend and nothing is ever sent anywhere.

    Installing PitchPulse

    Served over HTTPS, PitchPulse installs as a standalone app via the "Install App" button (or your browser's install prompt) and keeps working offline once installed.

    Light / dark mode

    Toggle the sun/moon icon in the header any time — your choice is remembered on next visit.

    ❓ Methodology & FAQ

    What model does PitchPulse use?

    A trimmed-mean Poisson model. Each team's last 5 matches (home-only for the Home side, away-only for the Away side) are averaged with the single best and single worst result dropped, so one outlier scoreline can't dominate the read on current form. Those trimmed averages become attack/defence strength relative to the league baseline, which convert into expected goals (λ) for each side — from there, independent Poisson distributions build the score matrix, with a Dixon-Coles correction applied to the low-scoring cells before it's renormalized. Every market on the Markets tab is derived from that final matrix.

    What is the Dixon-Coles correction, and why is it here?

    Independent Poisson treats home and away goals as statistically unrelated, but real match goals are mildly coupled by things like game state and tactics — and that shows up specifically in the low-scoring cells. The Dixon & Coles (1997) tau correction adjusts exactly those four cells (0–0, 1–0, 0–1, 1–1) before the matrix is renormalized. PitchPulse uses a fixed, literature-standard ρ = -0.13 rather than calibrating it per match — it's the same correction and formula ScoreMatrix uses, just with a static ρ instead of ScoreMatrix's dynamic per-match calibration, which keeps this model lightweight and dependency-free.

    Why drop the best and worst match?

    A single 6–0 or 0–5 in the last 5 can swing a raw average far more than it should. Trimming the high and low outcome keeps the read closer to a team's typical performance rather than its most extreme one.

    How are λ (expected goals) calculated?

    HomeAttack = Home team's trimmed home goals-for ÷ league average home goals. HomeDefence = trimmed home goals-against ÷ league average away goals. Away strengths mirror this using the team's away form. λHome = HomeAttack × AwayDefence × league average home goals, and λAway = AwayAttack × HomeDefence × league average away goals. A strength of 1.00× means exactly league average; 1.25× means 25% above it.

    What are the default league averages, and why do they matter?

    1.50 home goals, 1.20 away goals per match — a generic mid-table baseline. Raw goal counts only mean something relative to context: 1.8 goals a game is modest in a high-scoring league and strong in a defensive one. Pick your league from the Country/League selector to auto-fill the real numbers, or enter them yourself for the sharpest read.

    What is Best Bet, and how is it different from "highest probability"?

    Best Bet is a consensus pick, not just whichever market has the single highest raw probability. It looks at the model's two most likely exact scorelines and checks what they agree on: the same 1X2 result, the same BTTS side, or the same side of a fixed 2.5 Over/Under line. Whichever agreed-upon market has the higher probability becomes the Best Bet. If the top two scorelines don't agree on anything, it falls back to whichever double-chance line (1X or X2) is more likely — a deliberately conservative call over backing either single outcome outright.

    What is Signal Check?

    A 🟢/🟡/🔴/⚪ tier for the specific bet category behind your current Best Bet (e.g. "Home Win"), computed from your own logged history using a Wilson score interval lower bound rather than a raw hit rate — so a 2-for-2 record doesn't get overrated. It needs 5+ resolved picks in that category before it rates anything; below that it shows ⚪ UNPROVEN.

    What is Calibration (the Brier score)?

    The 📊 Calibration button opens a running Brier score (0–1 scale, lower is better) per market — 1X2, Over/Under 2.5, BTTS — comparing your all-time average against your last 10 resolved matches. This is independent of Signal Check: it grades the model's raw probabilities directly, rather than just whether the top pick won.

    How does the Match Log work?

    Hit "+ Add to Match Log" on the Verdict tab after calculating to save a prediction. Once the match is played, enter the real final score — it's marked ✅ HIT or ❌ MISS against the Best Bet pick, and rolls into the Hit Rate shown in the stats bar. Best Bet and the Match Log always use a fixed Over/Under 2.5 line for grading, kept separate from the adjustable O/U line on the Markets tab, so a logged "Over 2.5" stays comparable even if you're experimenting with a different line elsewhere.

    Does PitchPulse store or send my data anywhere?

    No. Everything — inputs, theme, and your Match Log — lives in your browser's local storage. There's no backend and no data ever leaves your device.

    Can I install PitchPulse as an app?

    Yes — served over HTTPS, PitchPulse is an installable PWA. Use the "Install App" button in the header, or your browser's own install prompt, and it'll keep working offline afterward.

    Disclaimer

    PitchPulse produces a probability estimate from recent form — not a guarantee. It doesn't yet account for injuries, motivation, or opponent quality beyond the last-5-match window, and Signal Check / Calibration are only as meaningful as how many matches you've logged and resolved. Please gamble responsibly. — by Victor Korir

    📬 Contact the Developer

    Questions about the model, licensing, or custom builds? Reach out directly: