Every prediction starts with expected goals for each team. Those numbers create a scoreline matrix, and the markets on BetTactica are read from that same matrix. This keeps 1X2, totals, BTTS, correct score, and value bets tied to one model.
We start from league scoring rates so every match begins inside the correct competition context.
Attack and defence ratings are fitted from recent matches, weighted so newer games matter more.
Home advantage, form, xG, and thinner data samples are blended without letting one noisy match dominate.
The model estimates every likely scoreline, then applies Dixon-Coles correction to common low scores.
1X2, over/under, BTTS, correct score, and fair odds are calculated from the same scoreline distribution.
Instead of picking a single result, the model estimates a probability for each scoreline. Markets are then summed from the cells that match that bet type.
When enough competition data exists, BetTactica fits attack, defence, and home advantage ratings directly from the match history. Recent games are weighted more heavily so ratings can react to changes in team quality.
If a league or team does not have enough fitted data, the app falls back to recent form, Elo-style strength, xG where available, and conservative league averages. Thin samples are shrunk toward normal scoring rates.
These values describe the current model configuration used by BetTactica.
| Parameter | Value | What it means |
|---|---|---|
| Model | dixon-coles-v2 | Bivariate Poisson with Dixon-Coles low-score correction. |
| Low-score correction | -0.13 | Re-weights 0-0, 1-0, 0-1, and 1-1 outcomes. |
| Fit window | 365 days | Matches considered when fitting competition ratings. |
| Recency half-life | 90 days | A match weight halves roughly every three months. |
| Fallback form window | Last 15 | Per-team fallback when no fitted competition model exists. |
| xG blend | 50 / 50 | Blends expected goals with actual goals when xG is available. |
| Default home advantage | x1.22 | Used before a competition-specific value is fitted. |
| Shrinkage prior | 4 matches | Pulls thin samples toward the league average. |
| Scoreline matrix | 0-8 goals | Joint distribution is truncated at 8 goals per side. |
| Rating refresh | Hourly | Fitted ratings are cached and lazily refreshed. |