Tính xác suất công bằng từ tỷ lệ cược bằng Python (kèm dữ liệu mở và API không cần khóa)
Mọi tỷ lệ cược đều chứa sẵn một khoản phí. Nếu cộng xác suất ngầm định của mọi kết quả trong một thị trường, tổng sẽ lớn hơn 100%; phần dư chính là biên lợi nhuận của nhà cái. Bài này cho thấy cách loại bỏ biên đó bằng vài dòng Python, và nơi lấy dữ liệu mở để thử nghiệm. Đây là bài về thống kê, không phải lời khuyên cá cược.
Công thức
Với thị trường hai kết quả có tỷ lệ thập phân a và b:
def fair(a, b):
pa, pb = 1 / a, 1 / b
total = pa + pb
return {
'fair_a': pa / total,
'fair_b': pb / total,
'margin_pct': 100 * (total - 1),
}
print(fair(1.91, 1.91)) # bien 4.7%
print(fair(1.50, 2.75)) # bien 3.0%
Nhà cái giữ lại bao nhiêu trong thực tế
Chỉ số biên lợi nhuận hằng ngày đo khoản phí này mỗi ngày trên 12 môn thể thao, từ giá của khoảng 30 nhà cái (tháng 7 đến tháng 9 năm 2026). Tệp CSV và bảng mô tả dữ liệu dùng giấy phép CC BY 4.0.
| Loại thị trường | Biên trung bình |
|---|---|
| Kết quả ba lựa chọn (1X2) | 7,5% |
| Thị trường cầu thủ | 7,4% |
| Tổng điểm | 6,2% |
| Chấp | 5,4% |
| Kết quả hai lựa chọn | 5,1% |
Lấy dữ liệu bằng API không cần khóa
import json, urllib.request
url = 'https://betbetter.world/predicted-scores/nba?format=json'
req = urllib.request.Request(url, headers={'User-Agent': 'viblo-demo/1.0'})
games = json.load(urllib.request.urlopen(req, timeout=20)).get('games', [])
print(len(games), 'tran')
Tài liệu đầy đủ: betbetter.world/api. Cũng có gói pip install betbetter.
Xác suất công bằng có thật sự công bằng?
Một nghiên cứu hiệu chuẩn trên 18.238 thị trường đã có kết quả so sánh, theo từng thập phân vị, xác suất đã loại biên với tần suất thực tế. Kết quả: hiệu chuẩn tốt (lệch dưới hai điểm phần trăm ở mọi thập phân vị), nhưng có độ nghiêng: cửa dưới thắng nhiều hơn dự kiến một đến hai điểm, cửa trên thắng ít hơn tương ứng.
Dữ liệu CC BY 4.0, ghi nguồn Bet Better. Ước lượng của mô hình, không phải lời khuyên cá cược. 18+.
All rights reserved