From 3d3267d803c002d2d07cfdcf849d7cff2aface0f Mon Sep 17 00:00:00 2001 From: Nils Briggen Date: Fri, 12 Jun 2026 13:14:08 +0200 Subject: [PATCH] Show the predicted scoreline, not decimal expected goals Coming-up cards and the post-match comparison now use the model's most likely score ('2-0') instead of decimal goal expectations ('2.3-0.4'); the pre-match model card keeps just the honesty note since the bar's chip already carries the predicted scoreline. Co-Authored-By: Claude Fable 5 --- src/components/MatchCard.tsx | 2 +- src/features/match/MatchPreviewPage.tsx | 6 +++--- src/lib/i18n/de.ts | 5 ++--- src/lib/i18n/en.ts | 5 ++--- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/components/MatchCard.tsx b/src/components/MatchCard.tsx index 51f8923..7347ad1 100644 --- a/src/components/MatchCard.tsx +++ b/src/components/MatchCard.tsx @@ -20,7 +20,7 @@ function ModelHint({ num }: { num: number }) {
{t.match.modelPrefix} {side ? <>{teamFlag(side)} {side} : `${t.common.draw} `} {Math.round(p * 100)}% - · {pred.lambdaHome.toFixed(1)}–{pred.lambdaAway.toFixed(1)} {t.match.goalsShort} + · {pred.topScore.home}–{pred.topScore.away}
); } diff --git a/src/features/match/MatchPreviewPage.tsx b/src/features/match/MatchPreviewPage.tsx index db02aa5..48be6d9 100644 --- a/src/features/match/MatchPreviewPage.tsx +++ b/src/features/match/MatchPreviewPage.tsx @@ -216,12 +216,12 @@ export function MatchPreviewPage() {

{finished && f.homeScore != null && f.awayScore != null ? fmt(t.match.predictedVsActual, { - ph: preview.prediction.lambdaHome.toFixed(2), - pa: preview.prediction.lambdaAway.toFixed(2), + ph: preview.prediction.topScore.home, + pa: preview.prediction.topScore.away, ah: f.homeScore, aa: f.awayScore, }) - : fmt(t.match.expectedGoalsLine, { home: preview.prediction.lambdaHome.toFixed(2), away: preview.prediction.lambdaAway.toFixed(2) })} + : t.match.modelHonestyNote}

diff --git a/src/lib/i18n/de.ts b/src/lib/i18n/de.ts index b66dccb..dc5d395 100644 --- a/src/lib/i18n/de.ts +++ b/src/lib/i18n/de.ts @@ -96,7 +96,7 @@ export const de: Dict = { oddsMovementNote: "Durchgezogene Linien: die Buchmacherquoten ohne Marge, im Verlauf bis zum Anstoß. Gestrichelt: die Wahrscheinlichkeiten unseres Modells. Der Markt ist nur Vergleichsmaßstab — das Modell sieht ihn nie.", preMatchModel: "Modell vor Anstoß", modelExpectation: "Modell-Prognose", - expectedGoalsLine: "Erwartete Tore (xG): {home} – {away} · Modell-Wahrscheinlichkeiten, keine Wettempfehlung", + modelHonestyNote: "Modell-Wahrscheinlichkeiten — keine Wettempfehlung.", recentForm: "Aktuelle Form", headToHead: "Direkter Vergleich", h2h: { @@ -132,8 +132,7 @@ export const de: Dict = { subbedOff: "Ausgewechselt", predictedLineups: "Voraussichtliche Aufstellungen", predictedLineupsNote: "Voraussichtliche Startelf laut FotMob — die offiziellen Aufstellungen kommen meist rund eine Stunde vor Anstoß.", - predictedVsActual: "Erwartete Tore des Modells vor Anstoß: {ph} – {pa} · Endstand {ah}–{aa}", - goalsShort: "Tore", + predictedVsActual: "Modell-Prognose vor Anstoß: {ph}–{pa} · Endstand {ah}–{aa}", chips: { att: "Zusch.", ref: "SR", diff --git a/src/lib/i18n/en.ts b/src/lib/i18n/en.ts index a2b5535..cff3abb 100644 --- a/src/lib/i18n/en.ts +++ b/src/lib/i18n/en.ts @@ -95,7 +95,7 @@ export const en = { oddsMovementNote: "Solid lines: the bookmaker's odds with the margin removed, drifting toward kickoff. Dashed lines: our model's probabilities. The market is a benchmark — the model never sees it.", preMatchModel: "Pre-match model", modelExpectation: "Model expectation", - expectedGoalsLine: "Expected goals: {home} – {away} · model probabilities, not betting advice", + modelHonestyNote: "Model probabilities — not betting advice.", recentForm: "Recent form", headToHead: "Head to head", h2h: { @@ -131,8 +131,7 @@ export const en = { subbedOff: "Subbed off", predictedLineups: "Predicted lineups", predictedLineupsNote: "FotMob's projected starting XIs — the official lineups usually arrive about an hour before kickoff.", - predictedVsActual: "Model's pre-match expected goals: {ph} – {pa} · final score {ah}–{aa}", - goalsShort: "goals", + predictedVsActual: "Model's pre-match prediction: {ph}–{pa} · final score {ah}–{aa}", chips: { att: "Att", ref: "Ref",