為什麼模型需要「遺忘」?
任何量化模型都面臨一個根本張力:
- 記住太多 → 對 2024 年的舊樣本過度擬合,對 2026 年的樣本適應慢
- 記住太少 → 對最新趨勢(騎師傷病、馬匹狀態變化)反應遲鈍
理想的學習算法應該像人類學習:舊的東西慢慢淡忘,新的東西馬上記住。
EMA(指數移動平均,Exponential Moving Average)就是這個直覺的數學表達。
EMA 是什麼?
對於一個時間序列 x₀, x₁, ..., xₜ,EMA 定義為:
θ̂ₜ = α × xₜ + (1 − α) × θ̂ₜ₋₁其中:
- α ∈ (0, 1) 是學習率(α 越大越快記住新的)
- xₜ 是當前觀測值
- θ̂ₜ₋₁ 是上一期的 EMA 估計
展開後可以看到,這其實是加權平均,所有過去觀測值的權重呈指數衰減:
θ̂ₜ = α × Σ (1 − α)ⁱ × xₜ₋ᵢ一個直觀例子
假設我們追蹤某騎師近 10 場的勝率,每日更新一次:
| 場次 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 勝率 | 0.20 | 0.30 | 0.40 | 0.50 | 0.30 | 0.40 | 0.60 | 0.70 | 0.60 | 0.65 |
不同學習率的 EMA:
ema_alpha_03 = 0.71 # α=0.3,較快反應
ema_alpha_01 = 0.61 # α=0.1,較慢反應
ema_alpha_005 = 0.55 # α=0.05,更慢α=0.3 已經追上最新趨勢(場均 65%);α=0.05 還停留在歷史均值附近。
在我們的賽馬模型中怎麼用?
我們用 EMA 做三件事:
1. 騎師 / 練馬師勝率的動態更新
class EMA:
def __init__(self, alpha=0.05):
self.alpha = alpha
self.value = None
def update(self, x):
if self.value is None:
self.value = x
else:
self.value = self.alpha * x + (1 - self.alpha) * self.value
# 騎師勝率追蹤
jockey_ema = EMA(alpha=0.05) # 大約 20 場的時間窗口
for race in races:
jockey_ema.update(1 if won else 0)
runner.jockey_ema = jockey_ema.value2. 賠率走勢的平滑
odds_ema = EMA(alpha=0.1)
for snapshot in odds_snapshots: # 每分鐘一個
odds_ema.update(snapshot.win_odds)
smoothed = odds_ema.value3. 模型超參數的自適應
brier_ema = EMA(alpha=0.02)
for daily_metrics in metrics_history:
brier_ema.update(daily_metrics.brier)
if brier_ema.value < global_brier_baseline:
learning_rate = base_lr * 1.5 # 模型在改善,加快學習新數據
else:
learning_rate = base_lr * 0.7 # 模型在惡化,保守一點這讓模型對「市場結構變化」有自動反應。
α 怎麼選?
理論上最優 α 取決於信號的「半衰期」。半衰期 H 滿足:
(1 − α)ᴴ = 0.5 ⟹ α = 1 − 2^(−1/H)| 應用場景 | 半衰期 | 對應 α |
|---|---|---|
| 騎師即日狀態 | 5 場 | α ≈ 0.13 |
| 騎師近月表現 | 20 場 | α ≈ 0.034 |
| 馬匹長期實力 | 100 場 | α ≈ 0.007 |
| 賠率短期動量 | 30 分鐘 | α ≈ 0.50 |
| 賠率中期趨勢 | 6 小時 | α ≈ 0.10 |
沒有「萬能 α」——必須按應用場景調。我們的特徵工程會為每個特徵存一個 α 配置。
與 SGD 學習率的關係
熟悉深度學習的讀者會發現:EMA 和 SGD 學習率有異曲同工之妙。
- Adam 優化器:自適應學習率 ≈ 動態 α
- Learning rate decay:訓練越久,學習率越小 → 對應「過去樣本權重越來越大」(雖然方向相反)
- Momentum:EMA 的動量版本
EMA 是更簡潔、更可解釋的「在線學習」表達。在金融、量化交易領域,它至今仍是主流特徵工程手段。
為什麼我們公開這個?
EMA 不是什麼秘密——它是 1950 年代就存在的統計工具。但怎麼用、α 怎麼選、如何特徵化,是我們內部的工程細節。
我們選擇公開,原因有三:
- 方法論透明——研究的核心是可重現性
- 教育意義——讀者能從「一個 α = 0.05」理解「為什麼模型需要動態更新」
- 避開紅線——純統計方法論,零博彩用語,符合香港《賭博條例》第 148 章對「研究」的定義
延伸閱讀:Brier Score · LGBM 特徵工程 · Dixon-Coles 校正
參考文獻:Hunter, J. S. (1986). The Exponentially Weighted Moving Average. Journal of Quality Technology, 18(4), 203–210.