足球數據的季初下注研究
- 26分钟前
- 讀畢需時 16 分鐘
每年八月, 同一批說法會準時回來:「升班馬季初特別搏」、「大球隊未熱身」、「開季波賠率最鬆」。這些說法有沒有數據支撐, 其實可以查。
本文用 football-data.co.uk 由 2005-06 至 2025-26 球季、13 個歐洲聯賽合共 90,379 場賽事, 配合開賽盤、全市場最佳價與 Pinnacle 收市盤, 逐條檢驗季初的統計規律, 以及這些規律能否轉化成正期望值的下注策略。結論有好消息也有壞消息, 而壞消息那部分可能更值得讀。
本文為統計研究與市場微觀結構教育內容, 不構成投注建議。博彩涉及資金損失風險, 並受法律、年齡限制與平台條款約束。文中所有回測均為歷史數據的事後檢驗, 不代表未來表現。
本文重點
季初主場優勢確實系統性偏低, 這一點在 21 個球季、4 個年代都成立。但真正決定盈虧的並不是這個規律本身, 而是三件很少人量化的事: 市場對這個規律的定價誤差有多大、自建模型在季初能否打贏盤口、以及取價方式吃掉了多少邊際。
研究結果指向一個不太浪漫的答案。季初的統計異常是真的, 開賽盤沒有完全定價, 但錯價幅度小於抽水, 而收市盤已經把它收得七七八八。反而執行層面的差異, 也就是同一場波在不同平台之間的價差, 大過任何一條「季初角度」。
一、資料與方法
原始資料是 football-data.co.uk 每季公開的 CSV, 每個聯賽每季一個檔, 內含賽果、球場統計與多家博彩公司的賠率。抓取範圍如下。
項目 | 內容 |
聯賽 | 英超、英冠、德甲、德乙、西甲、意甲、法甲、荷甲、葡超、比甲、蘇超、土超、希臘超 |
球季 | 2005-06 至 2025-26, 共 21 季 |
總場數 | 90,379 場(有效賽果 + 開賽盤) |
開賽盤覆蓋 | 99.9%(以 Bet365 為主, 缺失時回退 Pinnacle / William Hill) |
收市盤覆蓋 | 60,366 場(Pinnacle closing, 2012-13 起才有) |
最佳價覆蓋 | 99.9%(MaxH/BbMxH 等跨莊最高賠率) |
球場統計 | 78%(射門、射正、角球、犯規、黃牌、紅牌) |
有一個技術細節值得先講清楚。football-data 的資料以日期排列, 沒有「第幾輪」欄位, 而聯賽因補賽經常出現輪次錯位。本文用的是 team matchday: 對每一場波, 分別數兩隊在該季之前已賽多少場, 取較小者加一。這個定義對補賽穩健, 也更貼近「這支球隊踢緊今季第幾場」這個實際問題。
def add_matchweek(df):
"""為每場賽事計算 team-matchday: 兩隊各自是本季第幾場, 取較小者。"""
df = df.sort_values(["div", "season", "date", "home"]).reset_index(drop=True)
long = pd.concat([
df[["div", "season", "date", "home"]].rename(columns={"home": "team"}).assign(idx=df.index),
df[["div", "season", "date", "away"]].rename(columns={"away": "team"}).assign(idx=df.index),
]).sort_values(["div", "season", "team", "date", "idx"])
long["n"] = long.groupby(["div", "season", "team"]).cumcount() + 1
df["md"] = long.groupby("idx")["n"].min().reindex(df.index).astype(int)
return df賠率一律先做比例去水(proportional de-vig), 把三項隱含機率壓縮到總和為 1, 再與實際賽果比較。所有 ROI 均為平注(每注 1 單位), t 值以單注盈虧的標準誤計算。
def devig(h, d, a):
"""比例去水:回傳三項公平機率與水位(overround)。"""
book = 1/h + 1/d + 1/a
return (1/h)/book, (1/d)/book, (1/a)/book, book - 1
def flat_roi(odds, win):
"""平注 ROI 與 t 值。odds 為十進制賠率, win 為 0/1。"""
pnl = np.where(win == 1, odds - 1.0, -1.0)
se = pnl.std(ddof=1) / np.sqrt(len(pnl))
return pnl.mean(), se, pnl.mean() / se要留意 flat_roi 的 t 值假設每注獨立。同一輪比賽之間有輕微相關(例如同一日的天氣或裁判組), 因此文中的 t 值應視為略為樂觀。
二、第一個事實:季初主場優勢系統性偏低
把 90,379 場按賽季階段分開, 差異相當清楚。
階段 | 場數 | 主勝 | 和局 | 客勝 | 每場入球 | 大 2.5 球 |
季初(第 1-6 輪) | 15,074 | 43.61% | 26.58% | 29.81% | 2.676 | 50.20% |
初中段(第 7-12 輪) | 14,986 | 45.60% | 25.88% | 28.52% | 2.711 | 50.82% |
季中 | 45,621 | 45.07% | 25.73% | 29.20% | 2.647 | 49.67% |
季尾(最後 6 輪) | 14,767 | 45.51% | 24.28% | 30.22% | 2.837 | 53.75% |
季初主勝率比第 7 輪之後低 1.65 個百分點(雙比例 z 檢定, z = −3.71, p = 0.0002), 和局率則高 1.10 個百分點(z = 2.82, p = 0.0049)。客勝率差異不顯著(p = 0.18), 入球數與大細球也沒有可靠差異(p 分別為 0.15 與 0.26)。換句話說, 季初的變化是「主勝變和局」, 不是「波變得大細」。
逐輪拆開更清楚:第 1 至 3 輪主勝率分別是 43.11%、42.83%、41.85%, 全季平均是 44.98%。第 3 輪是整季最低點, 之後逐步爬升, 到第 7 輪已經回到 45.97%。

五大聯賽分開看, 效應大小差很遠。
聯賽 | 季初主勝率 | 第 7 輪後主勝率 | 差距 |
英超 | 41.90% | 46.26% | −4.36pp |
西甲 | 43.43% | 47.37% | −3.94pp |
德甲 | 43.88% | 44.79% | −0.91pp |
意甲 | 43.99% | 44.33% | −0.34pp |
法甲 | 44.27% | 44.51% | −0.24pp |
英超與西甲的落差接近 4 個百分點, 而意甲、法甲基本上沒有。這種跨聯賽的不一致本身就是警號:如果背後是普遍的生理或心理機制, 不應該只在兩個聯賽出現。

穩健性方面, 把五大聯賽按年代切成四段, 季初主勝率在每一段都低於季中季尾。
時期 | 季初主勝率 | 其餘主勝率 | 差距 |
2005-13 | 44.76% | 46.83% | −2.07pp |
2014-18 | 44.03% | 45.91% | −1.88pp |
2019-21(含空場) | 39.80% | 42.70% | −2.90pp |
2022-25 | 42.69% | 43.94% | −1.25pp |
四段的符號一致, 說明這不是 2020 年空場比賽造成的假象。不過分段之後樣本變小, 單看任何一段都達不到 5% 顯著水平(p 值介乎 0.05 至 0.43), 全樣本合起來才有統計力。
三、成因:場面數據說了甚麼
主勝率下降可以有兩種成因。一是主隊實際踢得差了, 二是踢法一樣但運氣不好。這兩種解釋對下注的意義完全不同, 而球場統計可以分辨。
指標(主隊減客隊) | 季初 | 第 7 輪後 | 差距 | t | p |
射門差 | +2.372 | +2.514 | −0.142 | −1.76 | 0.079 |
射正差 | +0.905 | +0.993 | −0.089 | −2.24 | 0.025 |
角球差 | +1.017 | +1.102 | −0.086 | −1.88 | 0.060 |
黃牌差 | −0.331 | −0.287 | −0.044 | −2.45 | 0.014 |
紅牌差 | −0.0282 | −0.0275 | −0.0007 | −0.15 | 0.881 |
淨勝球 | +0.294 | +0.336 | −0.042 | −2.29 | 0.022 |
樣本為有球場數據的 69,838 場(季初 11,263 場)。主隊在季初的射正優勢、角球優勢都收窄, 幅度與淨勝球的收窄一致。
轉化效率則完全沒有分別。季初主隊每個射正入球 0.2961 球, 其餘時間 0.2980 球; 客隊分別是 0.2899 與 0.2883。這排除了「主隊季初運氣差」的解釋。季初主場優勢偏低, 是因為主隊在場面上真的沒有平時那麼強勢, 不是因為射門射不進。
裁判因素反而指向相反方向。主隊在季初拿到的黃牌比客隊少 0.331 張, 其餘時間少 0.287 張, 也就是說裁判在季初對主隊更寬鬆一點。這一點無助解釋主勝率下降, 反而讓現象更需要其他解釋。
四、市場定價了沒有
統計異常存在, 不等於有錢賺。真正的問題是:賠率有沒有反映這個異常。
先看開賽盤的平注 ROI。作為參照, 隨機在三個注項中買一注的實測平均 ROI, 季初是 −7.45%, 第 7 輪之後是 −7.84%。這個數字比水位(6.5%)更負, 因為熱門冷門偏差令冷門那一邊的虧損特別重。任何策略要有意義, 起碼要贏得過同期的隨機基準。
注項 | 季初 ROI | 第 7 輪後 ROI | 差距 |
全下主隊 | −9.07% | −5.01% | −4.06pp |
全下和局 | −4.24% | −7.81% | +3.57pp |
全下客隊 | −9.03% | −10.69% | +1.66pp |
全下大 2.5 | −6.36% | −6.15% | −0.21pp |
季初下注主隊的 ROI 比同期隨機基準差 1.62 個百分點, 和局則比基準好 3.21 個百分點。方向與第二節的統計完全吻合:開賽盤沒有把季初的主場優勢下調足夠。
但注意所有數字仍然是負數。錯價幅度大約 3 個百分點, 抽水是 6.5 個百分點, 相減之後還是輸。單靠「季初買和局」這種角度, 在開賽盤上不可能賺錢。
那麼收市盤呢?把 Pinnacle 收市盤去水後的隱含機率與實際命中率比較:
注項 | 季初隱含 | 季初實際 | 偏差 | 第 7 輪後偏差 |
主隊 | 44.01% | 43.19% | −0.82pp | +0.29pp |
和局 | 25.49% | 26.24% | +0.75pp | −0.05pp |
客隊 | 30.50% | 30.57% | +0.07pp | −0.25pp |
即使是被視為 sharp 基準的 Pinnacle 收市盤, 在季初仍然略為高估主隊、略為低估和局, 偏差約 0.8 個百分點。第 7 輪之後這個偏差基本消失。收市盤把大部分季初效應吸收了, 但不是全部。

還有一個側面證據。季初的賠率漂移明顯較大:由開賽盤到收市盤的平均絕對機率變動, 第 1 輪是 0.0337, 逐輪遞減到第 7 輪的 0.0280, 全季平均 0.0294。市場在季初確實需要更多時間消化資訊。這也反映在預測難度上, 收市盤的 log loss 季初是 0.9799, 其餘時間 0.9738。
五、自建模型在季初打不贏盤口
到這裡, 很多人會想到同一個做法:既然開賽盤在季初有偏差, 就用上季數據建一個模型, 找出模型與盤口分歧最大的比賽下注。
我把這個想法完整做了一次。對每個「聯賽 × 球季」, 用上一季全部賽果擬合 Dixon-Coles 模型, 估計每隊的攻力、守力、聯賽主場係數與低比分修正參數 rho, 再預測今季頭 6 輪。升班馬用上季包尾三隊的平均能力代替。
def fit_dc(train, teams, weights, lam_reg=0.02):
"""加權 Dixon-Coles MLE, 含 L2 收縮。"""
n, tix = len(teams), {t: i for i, t in enumerate(teams)}
hi, ai = train["home"].map(tix).values, train["away"].map(tix).values
x, y = train["fthg"].values.astype(int), train["ftag"].values.astype(int)
def nll(p):
att = np.concatenate([p[:n-1], [-p[:n-1].sum()]]) # 和為零約束
dfn = np.concatenate([p[n-1:2*n-2], [-p[n-1:2*n-2].sum()]])
gamma, mu, rho = p[-3], p[-2], np.tanh(p[-1]) * 0.25
lh = np.clip(np.exp(mu + gamma + att[hi] - dfn[ai]), 1e-6, 12)
la = np.clip(np.exp(mu + att[ai] - dfn[hi]), 1e-6, 12)
ll = (x*np.log(lh) - lh + y*np.log(la) - la
+ np.log(dc_tau(x, y, lh, la, rho)))
pen = lam_reg * (np.sum(att**2) + np.sum(dfn**2)) * weights.sum() / n
return -np.sum(weights * ll) + pen
p0 = np.concatenate([np.zeros(2*n-2), [0.25, 0.05, 0.0]])
return minimize(nll, p0, method="L-BFGS-B", options={"maxiter": 800}).x14,349 場季初賽事的預測質素如下。
預測來源 | 場數 | log loss | Brier |
上季先驗 Dixon-Coles | 14,349 | 1.0185 | 0.6100 |
開賽盤(去水) | 14,349 | 0.9868 | 0.5891 |
收市盤(去水) | 10,046 | 0.9799 | 0.5843 |
常數基準(季初平均機率) | 14,349 | 1.0747 | 0.6502 |
模型比常數基準好很多, 但比開賽盤差 0.032 nats。把兩者在 logit 空間混合, 最佳權重是 0:給模型任何正權重都令 log loss 上升, 由 w = 0 的 0.98678 升到 w = 0.5 的 0.99531。
按賬面 edge 分層下注的結果更難看。
模型 edge | 場數 | 模型機率 | 盤口機率 | 實際命中 | ROI |
−20% 以下 | 7,877 | 20.13% | 30.20% | 30.51% | −7.18% |
−20% ~ −10% | 6,294 | 28.48% | 33.32% | 33.16% | −7.03% |
−10% ~ 0% | 8,478 | 33.66% | 35.37% | 35.26% | −6.90% |
0% ~ 10% | 7,753 | 38.91% | 37.15% | 37.86% | −5.35% |
10% ~ 20% | 5,217 | 40.59% | 35.46% | 35.63% | −7.11% |
20% ~ 40% | 4,560 | 40.68% | 31.84% | 31.93% | −6.14% |
40% 以上 | 2,868 | 39.31% | 24.11% | 21.62% | −17.16% |
模型認為 edge 超過 40% 的那 2,868 注, 實際命中率比盤口隱含機率還要低 2.5 個百分點, ROI −17.16%(t = −5.05)。模型最有信心的地方, 正是它錯得最厲害的地方。這是典型的「賬面價值陷阱」:模型的極端偏離幾乎全部來自參數估計誤差, 而不是市場錯價。

不過模型也不是全無資訊。用模型與開賽盤的分歧去預測開賽盤到收市盤的走向, 三個注項的回歸斜率分別是:
注項 | 相關係數 | 回歸斜率 β | 標準誤 | p 值 |
主勝 | 0.025 | 0.0085 | 0.0034 | 0.013 |
和局 | 0.136 | 0.0537 | 0.0039 | 1.4 × 10⁻⁴² |
客勝 | 0.014 | 0.0049 | 0.0035 | 0.154 |
只有和局那一項的斜率明顯為正。模型在季初對和局機率的判斷, 帶有開賽盤尚未消化、但收市前會被市場部分接受的資訊。斜率 0.054 的意思是:模型比開賽盤高估和局 10 個百分點, 收市盤平均只會向同一方向移動 0.5 個百分點。有訊號, 但非常薄。
六、真正的分水嶺在取價
前面所有分析都用單一價格源。把「同一場波、同一注項、不同平台」這個維度加進去之後, 數字的量級完全改變。
football-data 每場都提供跨莊最高賠率(MaxH/MaxD/MaxA, 舊季為 BbMxH 系列), 平均覆蓋 7 家博彩公司。用最佳價代替市場平均價, 同一批注的 ROI 變化如下(全部 13 個聯賽, 季初 1-6 輪):
注項 | 市場平均價 ROI | 全市場最佳價 ROI | 提升 |
主隊 | −9.46% | −4.23% | +5.23pp |
和局 | −5.05% | +1.17% | +6.22pp |
客隊 | −10.36% | −2.16% | +8.20pp |
原因不神秘。市場平均價的水位是 7.14%, 全市場最佳價的水位只有 1.12%。每次都取最好價, 等於把六個百分點的抽水直接省掉。
# 同一批注, 只改取價方式
for label, (ch, cd, ca) in {
"市場平均價": ("avg_h", "avg_d", "avg_a"),
"全市場最佳價": ("max_h", "max_d", "max_a")}.items():
s = early.dropna(subset=[ch, cd, ca])
overround = (1/s[ch] + 1/s[cd] + 1/s[ca] - 1).mean()
roi, se, t = flat_roi(s[ca].values, s["is_a"].values) # 以客勝為例
print(f"{label}: 水位={overround:.4f} 客勝ROI={roi:+.4f} t={t:+.2f}")
聚焦五大聯賽, 用最佳價下注的結果:
階段 | 主隊 ROI | 和局 ROI | 客隊 ROI |
季初 1-6 輪 | −4.30%(t = −2.53) | +0.73%(t = 0.32) | +2.56%(t = 0.96) |
第 7 輪之後 | +0.49%(t = 0.64) | −2.03%(t = −2.08) | −3.46%(t = −3.17) |
兩行的排序完全相反。季初買主隊輸錢、買客隊贏錢, 第 7 輪之後剛好調轉。以 10,000 次 bootstrap 重抽計算, 季初主隊 ROI 的 95% 信賴區間是 [−7.63%, −0.89%], 大於零的機率只有 0.8%。這是全篇最穩固的一個結論, 而它是負面的:即使拿到全市場最好價, 季初盲買主隊也是輸錢生意。
客隊 +2.56% 那一格則沒有統計顯著性, 信賴區間 [−2.55%, +7.91%], 大於零的機率 82.6%。方向對, 但證據不足以叫做 edge。
把客勝與和局各下半注(等同反買主隊), 逐段檢驗:
時期 | 場數 | ROI | 標準誤 | t |
全樣本 2005-2025 | 6,189 | +1.65% | 1.49% | 1.10 |
樣本內 2005-2015 | 3,249 | +2.59% | 2.06% | 1.26 |
樣本外 2016-2025 | 2,940 | +0.60% | 2.16% | 0.28 |
21 個球季之中 11 季正 ROI, 全期累計 +101.8 單位 / 6,189 場。這是一條在最佳價下大致打和的策略, 不是印鈔機。同一策略用市場平均價是 −5.70%, 用開賽盤是 −4.90%。取價方式造成 7 個百分點的差距, 遠大於策略本身的貢獻。

按輪次細分, 效應集中在最頭幾輪:
輪次 | 場數 | 最佳價買主隊 | 最佳價買客+和 |
第 1-3 輪 | 3,113 | −3.68%(t = −1.49) | +2.89%(t = 1.32) |
第 4-6 輪 | 3,076 | −4.92%(t = −2.11) | +0.39%(t = 0.19) |
第 7-12 輪 | 6,169 | +1.92%(t = 1.11) | −3.68%(t = −2.61) |
第 13 輪之後 | 25,662 | +0.15%(t = 0.17) | −2.52%(t = −3.64) |
還有一點值得記住。季初莊家之間的定價分歧確實較大, 主隊隱含機率的跨莊變異係數由其餘時間的 0.0317 升到 0.0328(t = 5.09, p = 3.6 × 10⁻⁷)。分歧愈大, 比價的價值愈高:分歧最大的兩成比賽, 最佳價比平均價值 9.25 個百分點; 分歧最細的兩成只值 3.32 個百分點。
七、三條可以量化的季初規律
規律一:今季開局應該佔多少權重
這是季初最實際的問題。用五大聯賽 1,673 個「球隊 × 球季」樣本, 以今季首 k 場的場均得分與上季場均得分做加權組合, 網格搜尋令預測「餘下賽季場均得分」的 MSE 最小的權重:
# form = 今季首 k 場場均得分, prev = 上季場均得分, future = 餘下賽季場均得分
grid = np.arange(0, 1.001, 0.01)
for k, g in samples.groupby("k"):
mse = [(((w * g["form"] + (1 - w) * g["prev"]) - g["future"]) ** 2).mean()
for w in grid]
print(k, f"最佳今季權重 {grid[int(np.argmin(mse))]:.0%}",
f"RMSE {np.sqrt(min(mse)):.4f}")已賽場數 k | 最佳今季權重 | 混合 RMSE | 只用上季 RMSE | 只用今季 RMSE |
2 | 6% | 0.3120 | 0.3167 | 0.9171 |
3 | 10% | 0.3093 | 0.3180 | 0.7404 |
5 | 16% | 0.3080 | 0.3223 | 0.5847 |
6 | 19% | 0.3081 | 0.3252 | 0.5348 |
8 | 25% | 0.3071 | 0.3299 | 0.4734 |
10 | 28% | 0.3107 | 0.3360 | 0.4466 |
12 | 33% | 0.3135 | 0.3422 | 0.4227 |
19 | 42% | 0.3457 | 0.3782 | 0.4061 |
踢完 6 場, 今季數據的最佳權重只有 19%。要到接近半季(19 場)才升到 42%, 仍然低於上季數據。只用今季 3 場的 RMSE 是 0.7404, 是只用上季(0.3180)的兩倍多。

這條曲線可以直接寫進評分系統, 也可以當成心理防線。開季三場全勝的球隊, 你手上的證據其實只值一成權重。
規律二:升班馬的錯價窗口只在頭幾輪
把升班馬(上季不在該聯賽的球隊)的主客場合併, 逐輪計算下注升班馬的平注 ROI:
階段 | 平均 ROI |
第 1-6 輪 | −6.0% |
第 7-20 輪 | −13.7% |
季初主場升班馬 | −3.67%(t = −1.09) |
季初作客升班馬 | −6.62%(t = −1.31) |
第 7 輪後主場升班馬 | −6.83%(t = −4.80) |
第 7 輪後作客升班馬 | −15.13%(t = −8.05) |
季初升班馬的定價大致合理, ROI 甚至略優於同期 −7.45% 的隨機基準; 第 7 輪之後就明顯高估, 尤其是作客, 虧損接近基準的兩倍。市場需要大約六輪才把升班馬的真實水平反映到賠率上。

要留意的是, 反過來買升班馬的對手一樣賺不到錢:第 7 至 16 輪反買升班馬, 全樣本 ROI −4.05%, 樣本外 −6.75%。錯價存在, 但被抽水蓋過。
規律三:市場對開局過度反應
對每支球隊定義「開局意外」= 今季首幾場的場均得分減去上季場均得分。取雙方都已賽 2 至 5 場的比賽(6,540 場), 按主隊相對客隊的意外程度分成五等份:
開局意外程度 | 場數 | 下注主隊 ROI | 下注客隊 ROI |
主隊遠差過預期 | 1,309 | −6.39% | −18.20% |
略差 | 1,308 | −7.57% | −12.20% |
符合預期 | 1,307 | −9.70% | −10.92% |
略好 | 1,308 | −10.99% | −13.63% |
主隊遠好過預期 | 1,308 | −11.34% | −2.74% |
下注主隊的 ROI 由 −6.39% 單調下降到 −11.34%, 五格全部同一方向。開局愈亮眼的球隊, 買它愈輸錢。這與規律一互相印證:市場給了今季首幾場過多權重。

不過同樣要潑冷水。把這個訊號做成策略(買相對失望那一方, 要求雙方意外落差至少 0.75 分), 全樣本 ROI −5.11%(t = −1.73), 樣本外 −4.30%, 20 個球季只有 6 季正 ROI。訊號真實, 但幅度不足以蓋過抽水。
八、策略回測的完整結果
把前面提到的角度全部寫成明確規則, 用開賽盤做樣本內外分割回測:
策略 | 全樣本 ROI | 樣本內 05-15 | 樣本外 16-25 | 樣本外 t |
A. 季初 1-6 輪全下和局 | −4.24% | −4.30% | −4.18% | −2.09 |
B. 季初反買主場熱門 | −12.43% | −12.59% | −12.24% | −3.12 |
C. 季初逆向開局 | −5.11% | −5.93% | −4.30% | −1.01 |
D. 第 7-16 輪反買升班馬 | −4.05% | −1.49% | −6.75% | −3.22 |
E. 季初主場冷門 | −14.40% | −15.30% | −13.66% | −3.68 |
五條全部負數, 沒有一條在樣本外顯著為正。經 Bonferroni 校正(乘以 5)之後, 達到顯著的三條分別是 B、D、E, 而它們全部是顯著地輸錢。
季初的統計異常是真的, 但把異常直接寫成投注規則, 在零售賠率上全部不成立。這中間的落差, 就是抽水加上市場早已完成的部分修正。
九、驗證自己有沒有 edge:CLV 才是計分板
單場結果的隨機性太大, 幾百注的 ROI 幾乎沒有判別力。專業做法是量度 Closing Line Value:你拿到的賠率, 相對同一市場收市盤的比值。
先建立基準。在開賽盤下注、持有至收市, 隨機一注的平均 CLV 是:
階段 | 主隊 | 和局 | 客隊 | 三項平均 | CLV > 0 比例 |
季初 1-6 輪 | −2.95% | −2.89% | −3.63% | −3.16% | 32.9% |
第 7 輪之後 | −2.52% | −2.81% | −3.69% | −3.01% | 33.1% |
開賽盤水位 5.75%, 收市盤水位 2.93%, 兩者相減再攤分到三個注項, 就是這個 −3% 左右的結構性損耗。任何策略如果 CLV 低於 −3%, 代表它選中的注比隨機選還要差。
前面五條策略的 CLV:
策略 | 場數 | 平均 CLV | CLV > 0 比例 | 收市價 ROI |
A. 季初全下和局 | 10,046 | −2.89% | 31.3% | −0.29% |
B. 季初反買主場熱門 | 4,475 | −4.29% | 35.0% | −9.84% |
C. 季初逆向開局 | 2,140 | −3.46% | 34.3% | −1.26% |
D. 反買升班馬 | 4,536 | −2.65% | 32.5% | −2.25% |
E. 季初主場冷門 | 3,019 | −3.14% | 36.1% | −10.29% |
沒有一條的 CLV 明顯高於 −3% 的隨機基準。策略 A 的收市價 ROI 是 −0.29%, 對比收市盤 2.93% 的水位, 說明「季初和局」這個角度在收市時已經接近公平定價, 開賽盤的那點便宜不足以撐起策略。
def clv(open_odds, close_odds):
"""正值代表下注價優於收市盤。"""
return open_odds / close_odds - 1
# 判斷準則:把自己的 CLV 分佈與同期隨機下注基準比較, 而不是與零比較。
baseline = -0.0316 # 季初開賽盤持有至收市的結構性損耗
edge = clv(my_odds, closing_odds).mean() - baseline要拿到正 CLV, 需要的不是更花巧的角度, 而是在同一時間點拿到比市場共識更好的價格。這就回到第六節:比價本身就是最大的 CLV 來源。全市場最佳價相對市場平均價的溢價, 季初三個注項分別是 5.97%、6.68%、9.80%, 遠大於 3% 的結構性損耗。
十、把研究結果變成流程
綜合全部證據, 季初值得執行的做法是這些。
先解決取價, 再談角度。 最佳價與平均價的差距是 5 至 8 個百分點, 沒有任何一條季初角度接近這個量級。在開多個帳戶、用比價工具之前, 討論策略沒有意義。
用上季數據做主幹, 今季開局只做微調。 頭 6 輪的最佳權重是 19%, 頭 3 輪是 10%。任何在第三輪就把球隊評分大幅上調的系統, 已經違反了數據。
季初對主隊持懷疑態度, 第 7 輪後調轉。 五大聯賽最佳價下, 季初買主隊 ROI −4.30%(95% CI 排除零), 第 7 輪之後 +0.49%。這不是叫人盲買客隊, 而是說主隊那一邊在季初需要更高的觸發門檻。
升班馬的定價在第 7 輪之後才變差。 頭六輪貼近公平, 之後高估。要處理升班馬, 窗口在第 7 至 16 輪, 不在開季。
自建模型在季初的大幅偏離。 賬面 edge 超過 40% 的注, 實際 ROI −17.16%。這種偏離幾乎全部是估計誤差。合理做法是以市場價為基準、只做小幅修正, 而不是讓模型獨立報價。
用 CLV 而不是 ROI 評估自己。 樣本內 ROI 需要幾千注才有判別力, CLV 幾百注已經看到分佈。基準是 −3.16%, 不是 0。
總結表
研究問題 | 結論 | 關鍵數字 | 對應章節 |
季初主場優勢是否偏低 | 是, 且跨年代穩定 | −1.65pp, p = 0.0002 | 二 |
是運氣還是實力 | 場面數據同步收窄, 轉化率不變 | 射正差 −0.089, p = 0.025 | 三 |
開賽盤有無定價 | 未完全定價, 但錯價小於抽水 | 主隊 ROI −9.07% vs 基準 −7.8% | 四 |
收市盤有無定價 | 大致定價, 殘餘偏差 0.8pp | 主隊 −0.82pp, 和局 +0.75pp | 四 |
自建模型能否勝出 | 不能, 極端偏離即最大虧損 | log loss 1.0185 vs 0.9868 | 五 |
取價值多少 | 5 至 8 個百分點 ROI | 水位 7.14% → 1.12% | 六 |
今季開局應佔權重 | 6 場 19%, 3 場 10% | RMSE 0.3081 | 七 |
升班馬窗口 | 第 7 輪之後才明顯高估 | −6.0% vs −13.7% | 七 |
天真策略是否可行 | 五條全部樣本外負 ROI | 見第八節表 | 八 |
如何驗證 edge | CLV 對比 −3.16% 基準 | 五條策略全部未達標 | 九 |
研究限制
資料只涵蓋賽前 1X2 (主客和) 與大細 2.5 球, 沒有亞洲讓球盤的完整逐盤記錄, 也沒有即場盤。football-data 的「開賽盤」不是真正的開盤價, 而是資料商每週固定時點的快照, 因此本文的 CLV 屬於保守估計:真正開盤時的價格通常更好, 也更難拿到足額。
最佳價假設每一注都能在最高賠率的平台以足額成交。實務上, 長期取最佳價的帳戶會被限額或關閉, 這是本文無法量化、但足以改變結論的因素。以最佳價計算的 ROI 應該理解為上限, 不是可實現值。
升班馬只用「上季不在該聯賽」定義, 沒有區分是升班還是新加入。傷停、轉會、換教練等資訊完全沒有納入, 而這些正正是季初資訊落差的主要來源。
Reference
football-data.co.uk, Historical Football Results and Betting Odds Data. https://www.football-data.co.uk/data.php
Dixon, M. J., Coles, S. G. (1997). Modelling Association Football Scores and Inefficiencies in the Football Betting Market. Journal of the Royal Statistical Society: Series C, 46(2), 265-280.
Pope, P. F., Peel, D. A. (1989). Information, Prices and Efficiency in a Fixed-Odds Betting Market. Economica, 56(223), 323-341.
Forrest, D., Goddard, J., Simmons, R. (2005). Odds-setters as Forecasters: The Case of English Football. International Journal of Forecasting, 21(3), 551-564.
Pollard, R. (2008). Home Advantage in Football: A Current Review of an Unsolved Puzzle. The Open Sports Sciences Journal, 1, 12-14.
Wunderlich, F., Weigelt, M., Rein, R., Memmert, D. (2021). How Does Spectator Presence Affect Football? Home Advantage Remains in European Top-class Football Matches Played Without Spectators During the COVID-19 Pandemic. PLOS ONE, 16(3), e0248590.
Constantinou, A. C., Fenton, N. E. (2013). Determining the Level of Ability of Football Teams by Dynamic Ratings Based on the Relative Discrepancies in Scores between Adversaries. Journal of Quantitative Analysis in Sports, 9(1), 37-50.



