配對交易(Pairs Trading)是最經典的統計套利策略之一:找出長期協整的兩個標的,利用價差偏離均值時的回歸趨勢獲利。本文用一個可交互的檢查表,帶你理解「岩石原理(ROCK)」——挑選配對時最重要的四個維度:Robustness、Orthogonality、Cointegration、Kinetics(均值回復速度)。
什麼是配對交易?用生活比喻來理解
🏠 房價配對的例子
想像你住在一個社區,有兩棟相鄰的公寓 A 和 B。它們戶型相同、年代相近、地段一樣,所以房價通常很接近。如果某天你發現 A 房突然比 B 房貴了 50 萬,而沒有明顯原因(比如裝修、學區變化),你可能會覺得:
- • A 房被高估了,應該會跌
- • B 房被低估了,應該會漲
- • 最終兩者會回到合理的價差範圍
這就是配對交易的核心邏輯:兩個基本面相似的資產,短期價差偏離時會回歸到長期均值。
📈 股票配對的實際操作
假設蘋果(AAPL)和微軟(MSFT)這兩家科技巨頭,歷史上股價走勢高度相關。正常情況下,AAPL 比 MSFT 貴 20%。但某天你發現這個價差突然變成了 40%:
配對交易者會:做空 AAPL、做多 MSFT,賭這個異常價差會收斂回 20% 的歷史均值。這就是「市場中性」策略——不賭整個科技股的漲跌,只賭兩者的相對強弱。
相比單純做多做空,配對交易的優勢是「市場中性」——即使整個市場大跌,只要兩個股票的相對價差按預期收斂,你依然能賺錢。這降低了系統性風險,讓策略在各種市況下都有獲利機會。
1 岩石原理(ROCK)可交互檢查表
- R • Robustness:產業鏈共振,業績高度相關
- O • Orthogonality:對市場指數 Beta 差值低
- C • Cointegration:協整 p 值 < 0.05
- K • Kinetics:半衰期 < 10 天,均值回復快
提示:選擇不同配對,快速檢查 ROCK 四要素是否滿足;協整 p 值越低、半衰期越短,均值回復越可靠。
2 配對交易的核心流程
📚 核心流程白話解釋
配對交易看似複雜,但步驟很清楚:①找朋友(挑選相關性高的股票對)→ ②做體檢(統計檢驗確認長期關係穩定)→ ③等機會(價差偏離時建倉)→ ④賺差價(價差收斂時平倉獲利)。就像等兩個好朋友吵架後和好,從中賺取「和解費」。
生成候選配對
- • 行業/供應鏈相近(避免結構性分叉)
- • 市值/流動性相當(可執行)
- • 先做相關係數排名,再做協整檢驗
通俗理解:就像找結婚對象,要門當戶對、性格相合。股票也是,同行業、同體量的更容易「長相廝守」,價格走勢才會高度相關。
檢驗與打分
- • ADF / PP / KPSS 協整檢驗
- • Ornstein-Uhlenbeck 拟合半衰期
- • 估 Beta、殘差,計算 Z-Score
通俗理解:協整檢驗就像「婚姻穩定性測試」——兩個人短期會吵架,但長期會和好嗎?半衰期告訴你「吵架後多久和好」,越短代表關係越穩定。p 值 < 0.05 表示通過測試。
下單與監控
- • |Z| > 2 開倉,回到 0 平倉
- • 每腿金額對沖,保持市場中性
- • 監控滑點、成交量、費率
通俗理解:Z-Score 像「吵架激烈程度」,|Z| > 2 表示吵得很凶,是入場時機;回到 0 表示和好了,該獲利了結。「金額對沖」確保你賭的是相對強弱,不是整體漲跌。
3 信號構造:Z-Score + 半衰期
Z-Score 深度解析:為什麼它是配對交易的核心?
📏 標準化偏離
就像身高有高矮,但「比平均高 2 個標準差」是統一的衡量標準。Z-Score 把不同股票對的價差偏離程度,轉換成可比較的數值。
🎯 進出場信號
|Z| > 2 意味著「99.7% 的時間都不會這麼極端」,是很好的建倉時機。Z 回歸 0 代表價差恢復正常,該獲利了結。
⏱️ 時間維度
半衰期告訴你「價差偏離後,平均多久會回到一半的位置」。越短越好,意味著你不用等太久就能獲利。
為什麼用 Z-Score?
對殘差標準化,讓不同配對的偏離程度可比較。常見規則:|Z| > 2 建倉,Z 回到 0 平倉;也可用 1 / 1.5 作為分級開倉。
🔢 實際例子
假設 AAPL-MSFT 的價差歷史均值是 $20,標準差是 $5。某天價差變成 $30:
Z = (30-20) / 5 = 2.0
這意味著當前偏離「很極端」,是建倉信號。
spread = y - beta * x
zscore = (spread - spread.mean()) / spread.std()
if zscore > 2: # 做空 y,做多 x
target = -1
elif zscore < -2: # 做多 y,做空 x
target = 1
elif abs(zscore) < 0.5:
target = 0 # 平倉
提示:回測時需加入交易成本、借券費率、成交量過濾。
4 風控與實盤落地清單
⚠️ 配對交易的「隱藏成本」陷阱
很多新手看回測結果很美好,實盤卻虧錢,原因就是忽略了交易成本。配對交易需要同時買賣兩個標的,成本是普通策略的兩倍。而且因為要做空,還有借券費用。一個看似 2% 年化收益的策略,扣除成本後可能只剩 0.5%。
💸 成本清單(必須考慮)
交易成本與滑點
配對策略勝率高但單筆利潤薄,滑點/費率會侵蝕優勢。回測務必加入「買賣雙邊手續費 + 借券利率 + 成交量閾值」。
經驗法則:預期年化收益率至少要達到總交易成本的 3 倍,實盤才有意義。
斷聯風險
公司基本面分叉(併購、業務轉型)可能讓協整失效。用滾動窗口重估 beta 和協整,p 值失效立即下架該配對。
真實案例:2020 年疫情期間,Zoom 和傳統科技股「斷聯」,很多 ZM 配對策略都爆倉了。
倉位與槓桿
建議每腿金額對沖,總倉位不超過帳戶淨值的 60%-70%。槓桿提高收益也放大借券與強平風險。
計算公式:如果 AAPL $200,MSFT $100,要做 $10000 的配對,應該做空 $5000 AAPL + 做多 $5000 MSFT。
監控與告警
實盤需監控:當前 Z-Score、半衰期漂移、成交量是否萎縮、券源可借數量。設置閾值推送通知。
監控清單:Z-Score > 3(極端偏離)、半衰期 > 20天(回復變慢)、成交量 < 平均50%(流動性下降)。
5 過擬合陷阱:配對交易的頭號殺手
⚠️ 過擬合:配對交易最大的敵人
很多人回測配對交易年化收益 50%+,實盤卻虧損慘重。罪魁禍首就是過擬合——模型在歷史數據上表現完美,但對未來失效。這就像背答案考高分,真正考試時卻一敗塗地。
🏠 生活化例子:房價配對的「幻象」
假設你發現市中心豪宅 A 和郊區別墅 B 的價格「高度相關」,歷史上 A 貴 100 萬時,B 就會在 3 個月內漲到差不多價格。於是你制定策略:A 比 B 貴 150 萬就賭 B 會追上。
但現實是:2020 年疫情改變了一切,遠程工作讓郊區更香,歷史的「黏合關係」徹底破裂。你的模型基於過去 10 年數據,卻無法預測結構性變化。
過擬合的數學本質
偏差-方差權衡:
總誤差 = 偏差² + 方差 + 噪音²
模型越複雜,偏差越低但方差越高
樣本外誤差:
E[L(test)] = E[L(train)] + 複雜度懲罰
訓練誤差低不代表泛化能力強
配對交易中的過擬合表現
參數過度調優
Z-Score 閾值調成 1.87、止損設在 3.24,為了「完美貼合」歷史
窗口長度依賴
滾動窗口剛好 247 天效果最佳,但換個時期就失效
多重共線性忽略
多個配對同時建倉,看似分散但實際高度相關
防過擬合實用清單
📊 數據分割
- • 訓練:驗證:測試 = 6:2:2
- • 時間序列用前向驗證
- • 絕不偷看測試集結果
🔧 參數控制
- • 只調核心參數(Z 閾值)
- • 用網格搜索 + 交叉驗證
- • 設定合理參數範圍
⏰ 穩健性檢驗
- • 滾動窗口回測
- • 不同市場環境測試
- • 蒙特卡羅模擬
防過擬合的代碼框架
# 1. 嚴格的數據分割 train_end = '2020-12-31' val_end = '2022-06-30' test_start = '2022-07-01' # 2. 參數網格搜索(只在訓練+驗證集) z_thresholds = [1.5, 2.0, 2.5] for z_thresh in z_thresholds: # 訓練集擬合,驗證集評估 # 3. 最終測試(一次性,不重複) best_params = grid_search_result final_performance = test_on_holdout(best_params) # 警告:如果測試集表現差很多,說明過擬合了!
6 給 AI 的 Prompt 模板
把下面 Prompt 丟給你慣用的模型(Claude / GPT),快速生成配對交易回測腳本:
我想用 Python 回測「配對交易」策略,請給完整可執行代碼: 數據:用 yfinance 下載 AAPL, MSFT 日線收盤價,近 5 年。 步驟: 1) 對兩支股票做 OLS 回歸估計 beta,計算殘差與 z-score。 2) 協整檢驗:ADF / PP / KPSS,打印 p 值。 3) OU 半衰期估計,打印半衰期(天)。 4) 交易規則:|z|>2 開倉,|z|<0.5 平倉;雙邊倉位金額對沖。 5) 回測結果:總收益、年化、勝率、最大回撤、交易次數,並繪製價差與 z-score 曲線。 6) 代碼需加入手續費假設(每股 0.003 美元)。