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 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@ function ModelHint({ num }: { num: number }) {
|
||||
<div className="mt-1.5 text-center text-[11px] text-faint">
|
||||
{t.match.modelPrefix} {side ? <>{teamFlag(side)} {side} </> : `${t.common.draw} `}
|
||||
<span className="font-semibold text-muted">{Math.round(p * 100)}%</span>
|
||||
<span className="tnum"> · {pred.lambdaHome.toFixed(1)}–{pred.lambdaAway.toFixed(1)} {t.match.goalsShort}</span>
|
||||
<span className="tnum" title={t.common.mostLikelyScore}> · {pred.topScore.home}–{pred.topScore.away}</span>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -216,12 +216,12 @@ export function MatchPreviewPage() {
|
||||
<p className="text-xs text-faint">
|
||||
{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}
|
||||
</p>
|
||||
</CardBody>
|
||||
</Card>
|
||||
|
||||
+2
-3
@@ -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",
|
||||
|
||||
+2
-3
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user