Modelo in-play
{(s.over25 != null || s.btts != null) && (
<>
{s.over25 != null && (
)}
{s.btts != null && (
)}
{s.probNextGoalHome != null && (
)}
{s.probNextGoalAway != null && (
)}
{s.probNoMoreGoals != null && (
)}
>
)}
Posição da casa
{data.h2hOverround != null && }
{(["1", "X", "2"] as const).map((key) => {
const odd = data.h2hOdds[key];
const implied = data.h2hImplied[key];
const bench = data.marketBenchmark?.h2h?.[key];
const label =
key === "1"
? teamLabel(data.homeTeam)
: key === "2"
? teamLabel(data.awayTeam)
: "Empate";
const fullLabel =
key === "1" ? data.homeTeam : key === "2" ? data.awayTeam : "Empate";
return (
);
})}
{/* Totais de gols */}
{data.marketBenchmark?.totals &&
Object.keys(data.marketBenchmark.totals).length > 0 && (
Totais de gols
{Object.entries(data.marketBenchmark.totals).map(([line, row]) => {
const edgePp = row.edgeOver * 100;
return (
Over {line}{" "}
0 ? "text-neon-green" : "text-red-400"}>
{edgePp > 0 ? "+" : ""}
{edgePp.toFixed(1)} pp
);
})}
)}
{/* Generosity — prob real da casa (sem margem) */}
{Object.keys(data.generosityProbs).length > 0 && (
Probabilidade real da Superbet (sem margem)
{data.generosityProbs.home != null && (
{teamLabel(data.homeTeam, 10)}
{formatPercent(data.generosityProbs.home)}
)}
{data.generosityProbs.away != null && (
{teamLabel(data.awayTeam, 10)}
{formatPercent(data.generosityProbs.away)}
)}
A casa já removeu a margem — esse é o "preço justo" que ela atribui a cada time.
Quando nosso modelo diverge muito daqui, há valor.
)}
{/* Confiança do modelo */}
{data.confidence && (
Confiança nos dados
= 0.7
? "bg-emerald-500/15 text-emerald-300"
: data.confidence.score >= 0.3
? "bg-amber-500/15 text-amber-300"
: "bg-red-500/15 text-red-300"
}`}
>
{data.confidence.label} · {(data.confidence.score * 100).toFixed(0)}%
{data.confidence.reason}
)}