xG (Expected Goals) là chỉ số bước ngoặt trong phân tích bóng đá hiện đại — đo “chất lượng cơ hội” thay vì chỉ đếm “số cơ hội”. xG được Opta giới thiệu thương mại 2012, sau đó được Understat, FBref, StatsBomb công khai dưới dạng miễn phí. Tại siêu máy tính BongdaNET, xG là phương pháp đánh giá chất lượng cơ hội quyết định λ (lambda) đầu vào cho mô hình Poisson. Phân tích dữ liệu, không khuyến khích cá cược.
xG là gì + Tại sao thay đổi cuộc chơi
Trước 2012, các nhà phân tích chủ yếu dùng số cú sút trúng đích (shots on target) làm proxy cho phong độ tấn công. Vấn đề:
– Cú sút từ 30m vào giữa khung thành = 1 shot on target
– Cú sút từ 6m góc xa = 1 shot on target
Hai cú sút này có giá trị hoàn toàn khác nhau nhưng chỉ số cũ không phân biệt. xG giải quyết bằng cách gắn giá trị xác suất cho từng cú sút:
xG của 1 cú sút = xác suất cú sút đó thành bàn
- Penalty: xG ≈ 0.76 (76% vào)
- Cú sút trong vòng cấm góc 0° vào khung thành (1-on-1): xG ≈ 0.4
- Cú sút ngoài vòng cấm 25m: xG ≈ 0.04
- Cú sút bằng đầu trong vùng cấm: xG ≈ 0.12
Tổng xG của 1 trận = ước lượng “đáng lẽ ghi bao nhiêu bàn” dựa trên chất lượng cơ hội.
Cách tính xG cho 1 cú sút
Mô hình xG hiện đại sử dụng machine learning logistic regression hoặc gradient boosting trên hàng triệu cú sút lịch sử. Input chính:
| Feature | Loại | Ảnh hưởng |
|---|---|---|
| Khoảng cách đến khung thành (m) | Continuous | Càng gần càng cao xG |
| Góc đến khung thành (độ) | Continuous | Góc rộng → xG cao |
| Body part | Categorical | Chân: cao; đầu: thấp hơn |
| Loại tình huống | Categorical | Penalty / open play / set piece / counter |
| Số defender giữa cú sút và khung thành | Discrete | Nhiều defender → xG thấp |
| Áp lực defender (pressure) | Boolean | Có áp lực → xG thấp hơn 30-40% |
| Pha bóng dẫn đến (assist type) | Categorical | Tạt biên, đường chuyền xuyên tuyến… |
Mô hình output xác suất [0, 1]. Tổng xG đội = sum tất cả xG cú sút trong trận.
Heatmap minh họa (giá trị tham khảo)
Khoảng cách → xG (mở pha bóng, chân, không pressure):
| Khoảng cách | xG ước lượng |
|---|---|
| 5-10m, giữa khung | 0.30 |
| 10-15m, giữa khung | 0.15 |
| 15-20m, giữa khung | 0.07 |
| 20-25m, giữa khung | 0.04 |
| 25-30m, giữa khung | 0.02 |
| Penalty | 0.76 |
| Header trong 6 yard box | 0.20 |
| Header ngoài vòng cấm | 0.03 |
Số cụ thể khác nhau tùy mô hình (Opta vs Understat vs StatsBomb), nhưng pattern luôn nhất quán.
xG Tích Lũy — Đánh Giá Phong Độ Trận Đấu
Một trận có thể tỷ số 0-2 nhưng xG 3.4 vs 1.8 — nghĩa là đội thua đã tạo ra cơ hội tốt hơn nhưng kém may hoặc kém finishing. xG cho phép nhận diện:
Trận đấu “đáng lẽ thắng” (xG overperform vs goals)
- xG = 2.5 nhưng ghi 0 → đội đang vận xui finishing, có thể bounce back vòng sau
- xG = 0.8 nhưng ghi 3 → đội đang vận may, regression tới mean sắp đến
Phong độ thực vs phong độ bề mặt
- Đội A thắng 5 trận liên tiếp tỷ số 1-0 nhưng xG trung bình 0.7 → “phong độ giả tạo”
- Đội B thua 3 trận 0-1 nhưng xG trung bình 2.1 → “underperformance tạm thời”
Các phân tích viên nghiêm túc đặt trọng số cao hơn vào xG khi đánh giá phong độ, vì xG ít noise hơn raw goal count.
xG90 (xG trên 90 phút) — Đánh Giá Cầu Thủ Tấn Công
xG90 = trung bình xG cầu thủ tạo ra trên 90 phút thi đấu. Đây là chỉ số chuẩn đo “sức sát thương” của tiền đạo, độc lập khỏi số trận đá:
| Cầu thủ (mùa giải 2024-25 EPL) | xG90 ước tính |
|---|---|
| Erling Haaland | 0.95 |
| Mohamed Salah | 0.62 |
| Cole Palmer | 0.58 |
| Bukayo Saka | 0.42 |
| Top tier trung bình | 0.40-0.50 |
| Tiền đạo hạng trung | 0.25-0.35 |
xG90 > 0.7 là đẳng cấp World-Class. xG90 < 0.2 cho tiền đạo trung tâm thường ám chỉ vấn đề (ít cơ hội, lệch vai trò).
Tương tự, xA90 (Expected Assists per 90) đo cầu thủ tạo cơ hội.
Nguồn dữ liệu xG công khai
| Nguồn | Phí | Phạm vi | Cách dùng |
|---|---|---|---|
| Understat.com | Free | EPL, La Liga, Serie A, Bundesliga, Ligue 1, Champions League | Web UI + JSON scrape |
| FBref.com | Free | 5 league lớn + nhiều league nhỏ | Web UI + REST API miễn phí |
| StatsBomb Open Data | Free | WC, Euro, Champions League final | GitHub repo public |
| Opta Sports | Paid | All league | Hợp đồng B2B |
| Wyscout | Paid | All league + youth | Hợp đồng B2B |
BongdaNET dùng Understat + FBref cho data hàng ngày, StatsBomb open-data cho backtest WC/Euro.
Giới hạn của xG
xG không phải chỉ số hoàn hảo:
1. Không đo “cú sút bị block trước khi rời chân”
Nếu cầu thủ vào vị trí ngon nhưng bị block trước khi sút, sự kiện này KHÔNG tính vào xG → mô hình bỏ sót.
2. Không nắm “pressure thực sự”
Một số mô hình xG dùng “pressure” boolean thô. Pressure 50% defender khác hoàn toàn 100% defender, nhưng mô hình cũ không phân biệt được.
3. Cú sút long-range của siêu sao
Messi cú sút từ 25m có thể xG = 0.04 theo model, nhưng thực tế Messi rê dắt và sút từ 25m vào lưới với tỷ lệ cao hơn nhiều. Model underestimate specialists.
4. Phụ thuộc data tracking chất lượng
Match từ league nhỏ (V-League, MLS earlier years) có xG kém chính xác vì tracking thô.
Vì vậy xG phải kết hợp với chỉ số khác (ELO, form, possession) — không stand-alone.
Cách BongdaNET Kết Hợp xG Với Poisson + ELO
Quy trình:
Bước 1 — Ước lượng λ (lambda) từ xG rolling
λ_A = α × xG90_A + (1−α) × xG_predicted_from_ELO_diff
Trong đó:
– xG90_A = trung bình xG90 đội A trong 10 trận gần nhất
– xG_predicted_from_ELO_diff = ước lượng dựa trên chênh lệch ELO
– α = weight giữa current form vs structural strength, thường ~0.6 cho EPL
Bước 2 — Đưa λ vào mô hình Poisson + Dixon-Coles
Tính ma trận xác suất tỷ số 5×5 → output 1X2, BTTS, Over/Under.
Bước 3 — Ensemble với output từ ELO chunk + ML
Weighted average qua trọng số đã backtest.
Trọng số xG trong ensemble:
- GOALGORITHM (annual league): 20% — vì có nhiều dữ liệu xG
- Ensemble AI Model (tournament): 15% — vì xG WC qualifier kém ổn định hơn
Câu Hỏi Thường Gặp
xG có thể âm không?
Không. xG ∈ [0, 1] cho 1 cú sút. Tổng xG đội luôn ≥ 0. Nhưng có chỉ số xG_diff (đội A xG − đội B xG) có thể âm.
xG mô hình khác nhau, cái nào đúng?
Không có “cái đúng tuyệt đối”. Opta, Understat, StatsBomb dùng training data + feature khác nhau → xG cho cùng cú sút có thể chênh 0.05-0.10. Quan trọng là dùng nhất quán 1 nguồn để tránh inconsistency. BongdaNET dùng Understat làm primary.
xG có dự đoán được hòa không?
xG diff gần 0 (vd 1.5 vs 1.4) → mô hình Poisson dự đoán xác suất hòa cao (~28-30%). Đây là cách gián tiếp tốt nhất; không có “xG hòa” trực tiếp.
Cầu thủ phòng ngự có xG không?
Có. xG tích lũy cho cầu thủ tính sang xG90, áp dụng cho mọi vị trí từng đặt chân vào vòng cấm. Trung vệ thường xG90 ~0.05-0.15 (từ phạt góc, header cận thành).
Có thể tự build mô hình xG không?
Có. Cần: 100K+ cú sút có labeled outcome (StatsBomb open-data ~500K events) + Python sklearn / XGBoost + 1-2 tuần học để fine-tune. GitHub có hàng chục open-source xG model giáo dục.
xG có dùng được cho tin V-League?
Yes nhưng kém chính xác. V-League có ít tracking detail (camera angle hạn chế). Khi nguồn data tốt hơn (2025+ có Stats Perform partnership), xG sẽ chuẩn hơn. Tạm thời BongdaNET dùng “proxy xG” tính từ shot location heuristic cho V-League.
Đọc tiếp
4 mô hình toán học trong ensemble:
– Mô hình Poisson — phân phối xác suất số bàn thắng
– Chỉ số ELO — sức mạnh tương đối hai đội
– ⭐ Bạn đang đọc: Mô hình xG (chất lượng cú sút)
– AI Machine Learning — pattern phi tuyến từ dữ liệu lớn
Quay về:
– Máy tính dự đoán bóng đá BongdaNET
– Nhận định bóng đá hôm nay
Nguồn tham khảo
- Understat.com — xG free EPL/La Liga/Serie A/Bundesliga/Ligue 1
- FBref.com — xG + advanced stats
- StatsBomb Open Data (GitHub) — full event data WC, Euro, CL
- “Expected Goals” — Wikipedia EN
- Opta Sports methodology notes
Tác giả: Tô Hoàng Anh — chuyên gia phân tích dữ liệu bóng đá, BongdaNET.
Phân tích dữ liệu, không khuyến khích cá cược.





