如何使用線性迴歸建立 Alpha 訊號(量化框架)

@RohOnChain
英語2 個月前 · 2026年6月08日
475K
339
30
23
824

TL;DR

本指南深入解析交易中線性迴歸的機構級應用,說明如何從 Beta 中分離出 Alpha、使用 p-value 驗證訊號,並透過樣本外測試來防禦雜訊干擾。

我將詳細說明如何利用線性回歸來贏得每一筆交易、建立真正的 alpha 訊號,並分享完整可用的程式碼。

我們直接切入正題。

將此頁加入書籤

- 我是 Roan,一名後端工程師,專注於系統設計、高頻交易風格的執行以及量化交易系統。我的工作重點在於預測市場在負載下的實際行為。如有任何建議、深思熟慮的合作、夥伴關係,我的私訊隨時開放。

每個量化交易者都有自己的版本。

你花了一週時間建立一個模型。回測看起來完美無瑕,權益曲線直線上升,你以為終於找到了。你開始實盤交易。兩週後,它開始賠錢,而你完全不知道為什麼。

我見過這個循環結束的量化交易員生涯,比任何市場崩盤都要多。這個模型從來都不是真實的。它只是偽裝成訊號的雜訊。而在這個領域中,最有價值的技能就是在投入任何一塊錢之前,學會分辨這兩者。

這項技能始於量化金融中被低估最嚴重的工具。

線性回歸。

我知道這聽起來怎麼樣。線性回歸是那種每個人都覺得自己一個下午就學會了,然後就跳過去的東西。但這是我花了多年時間、經歷真實虧損才理解的事。那些頂尖公司管理數十億資金的人,並不是在使用奇異的深度學習怪物來處理大部分核心訊號。他們使用的是線性回歸,只是理解得比大多數人深入得多,並以大多數人從未建立的紀律來應用。

看看歷史上最成功的交易操作。

吉姆·西蒙斯(Jim Simons)正是在這個基礎上建立了文藝復興科技(Renaissance Technologies)。他的大獎章基金(Medallion Fund)從 1988 年到 2018 年平均年化回報率約為 66%,是有史以來最好的記錄。而根據他自己的團隊的說法,該基金在其交易中僅有約 50.75% 是正確的。在數百萬筆交易中,這個微薄到幾乎不存在的優勢,複利累積成了超過 1000 億美元。他們並未預測未來。他們只是從一片雜訊之海中,提取出一個微小、真實、可重複的訊號,而這正是回歸分析的目的所在。

AQR 目前管理著大約 1790 億美元,其帝國建立在基於回歸的因子模型之上。

PDT Partners 多年來運作統計套利,沒有出現過任何虧損年份。

這是你從未學過的那個版本的線性回歸。

到本文結束時,你將理解線性回歸的真正意義、alpha 的實際含義、如何從零開始用真實程式碼建立單因子和多因子訊號、如何像機構研究員一樣解讀回歸輸出、區分真實訊號與巧合的具體測試方法,以及為什麼即使是真的訊號最終也會消亡。

注意:本文刻意篇幅較長,每個部分都建立在前面部分的基礎上。如果你認真想要建立能在實盤市場中存活的訊號,請仔細閱讀每一個字。如果你想要一個神奇的指標,這篇文章不適合你。

第一部分:線性回歸到底是什麼

Roan - inline image

線性回歸找出那一條同時最接近所有數據點的直線。

暫時忘記金融。

線性回歸就只是一個數學方法,用來在散點圖中畫出最合適的一條直線。

想像一下,將房屋大小與房屋價格繪成圖。較大的房子價格更高,所以點會向上漂移。線性回歸找出那一條同時最接近所有這些點的直線。輸入一間新房子的面積,就能讀出預測價格。這就是整個概念。它是一個機器,學習輸入與輸出之間的關係,然後用它來進行預測。

Andrew Ng 在他的著名史丹佛機器學習課程中,就是用這個房屋價格的例子開場,因為它是最簡單的學習演算法,也是所有其他演算法的基礎。

這條線的公式你早就從學校學過:

y = a + b x

這裡 y 是你預測的值,x 是你的輸入,b 是斜率,表示 y 隨著 x 上升而上升的幅度,a 是截距,也就是當 x 為零時 y 的值。找出最佳 a 和 b 的方法叫做普通最小平方法(Ordinary Least Squares, OLS)。在所有可能的直線中,OLS 會選擇那一條使得直線與實際數據點之間的平方差距總和最小的直線。平方是為了讓上方和下方的誤差都算數,而且大的誤差受到的懲罰遠比小的誤差來得重。

你可以用幾行程式碼就看到整個過程:

python
1import numpy as np
2import statsmodels.api as sm
3
4x = np.array([1400, 1600, 1700, 1875, 2350, 2450]) # 房屋面積
5y = np.array([245, 312, 279, 308, 405, 324]) # 價格(千元)
6
7X = sm.add_constant(x) # 加入截距項 'a'
8model = sm.OLS(y, X).fit()
9print(model.params) # 輸出 a 和 b

現在把它應用到市場中。在交易中,你的 y 變成資產的報酬率,而 x 變成你認為能預測該報酬率的因子。斜率就是你對該因子的敏感度。而那個不起眼的截距 a,則成為量化金融中最重要的數字。原因如下。

第二部分:alpha 到底是什麼

Roan - inline image

總報酬可以拆分為兩部分:beta,市場可以解釋的部分,以及 alpha,市場無法解釋的部分。

大多數交易者用 alpha 這個詞來表示利潤。這是錯的,而且這個錯誤代價高昂。

Alpha 是你的策略所賺取的報酬中,無法用已知風險因子的暴露來解釋的部分。如果你一年賺了 20%,但市場也賺了 20%,那麼你的 alpha 就是零。你只是持有 beta,即承擔市場風險所獲得的報酬。你賺到的是搭便車的錢,而不是靠技巧。

這個區別是整場遊戲的核心,而回歸分析就是將兩者分開的利刃。基礎模型如下:你的策略在時間 t 的報酬 rₜ,等於一個基準加上對因子 Xₜ 的暴露,再加上雜訊:

rₜ = α + β Xₜ + εₜ

慢慢讀一遍。β 是你對該因子的敏感度。如果因子是市場,beta 表示當市場變動時你跟著動的幅度。εₜ 是隨機雜訊,沒有任何因子能解釋的部分。而 α,這個截距,是當因子貢獻為零時,你平均賺到的報酬。

這個截距就是全部獎賞。如果在剔除所有已知風險因子之後,你的策略仍然顯示出一個正且統計顯著的 alpha,那麼你就找到了真實的東西。如果 alpha 在考慮因子後就消失了,那麼你從來沒有過優勢。你只是偽裝成天才的 beta。

Michael Jensen 在 1968 年首次以這種方式來定義技巧,當時他測試共同基金經理人是否真的能擊敗市場。他執行這個精確的回歸,只問一個問題:截距是否不等於零?將近六十年後,這仍然是機構評估績效的方式。它被稱為 Jensen's alpha,是這門學科的基石。

**所以,當你建立一個訊號時,你的任務從來不是最大化原始報酬。

你的任務是產生一個正值的截距,並且在所有已知因子被剔除後仍然存活。記住這一點。其他一切都是為了服務這個目標。**

第三部分:從零開始建立你的第一個訊號

Roan - inline image

一個真正的訊號,只有在每一個已知因子都被剔除之後,才能衡量 alpha。

讓我們建立最簡單的真實模型,然後把它升級到機構級別。假設你相信一個資產的報酬可以部分由某個因子預測。例如相關資產的前期報酬、動能指標、價值指標。單因子回歸如下:

rₜ = α + β Xₜ + εₜ

在 Python 中,只需要幾行程式碼,而截距是絕對不能跳過的部分:

python
1import statsmodels.api as sm
2
3# X 是你的因子序列,y 是你要解釋的資產報酬
4X = sm.add_constant(X) # 這一行創建你的 alpha 截距
5model = sm.OLS(y, X).fit()
6print(model.summary())

這行 add_constant 不是形式上的步驟。它是創建 alpha 項目的那一行。忘記它,就會強迫直線通過原點,從而丟掉整個輸出中最重要的一個數字。

但現實世界從來不是只有一個因子。一個嚴謹的訊號需要同時考慮多種影響。這就是多因子模型:

rₜ = α + β₁X₁ₜ + β₂X₂ₜ + ... + βₖXₖₜ + εₜ

現在,每個 beta 衡量的是在保持其他所有因子不變的情況下,其自身因子的效果。那個短語「保持其他因子不變」,正是回歸分析的隱藏超能力。它隔離了每個因子的獨特貢獻,並剔除了重疊的部分。當你將策略報酬對已建立的因子(市場、規模、價值、動能等)進行回歸時,留在截距中的 alpha 就是你的優勢中,沒有任何已知因子能解釋的那一部分。

python
1import statsmodels.api as sm
2
3# factors 是一個 DataFrame,每一列是一個因子,與報酬 y 對齊
4X = sm.add_constant(factors)
5model = sm.OLS(y, X).fit()
6
7alpha = model.params['const'] # 你的候選優勢
8p_alpha = model.pvalues['const'] # 對它的信任程度
9print("Alpha:", round(alpha, 5))
10print("Alpha p-value:", round(p_alpha, 4))

這個殘差截距就是你的候選訊號。接下來的一切,都是為了證明它是否真實。

這正是大多數公開教程停止的地方,而機構級的工作才正要開始。因子構建、中性化處理、權重設計,這些步驟將原始訊號轉化為可交易的投資組合。如果你想了解像 AQR 這樣的公司如何將這些回歸分析轉變為一個實際運作的因子投資組合,那份詳細的拆解內容,我將在後續完整說明。

第四部分:像機構研究員一樣解讀輸出結果

Roan - inline image

專業人士不會問報酬有多大。他們問的是:他們有多確定這不是偶然?

當你執行那個 summary 時,大多數人只看一個數字就跳過去了。受過訓練的研究員會像閱讀診斷報告一樣來閱讀它。以下才是真正重要的東西。

係數及其正負號。每個 beta 提供了方向和強度。在相信任何數字之前,先問問這個正負號在經濟意義上是否合理。如果你的模型告訴你在某個東西更貴的時候買入,而你又無法解釋原因,那你找到的是僥倖,而不是因子。

p 值。這是整個結果的核心。它回答一個問題:如果這個因子真的沒有影響,那麼我純粹因為隨機性而看到這種關係的機率有多大?p 值為 0.62 意味著有 62% 的機率你只是在看著隨機的運氣。低於 0.05 是我們認真對待結果的常規門檻。一個量化分析師看著一個 p 值為 0.62 的失敗模型,他看到的不是一個微弱的訊號。他看到的只是純粹的雜訊。

R 平方。你的模型解釋的報酬變異比例。這裡有一點會讓初學者完全搞錯方向。在報酬預測中,高的 R 平方通常是警告,而不是獎盃。真實的報酬訊號是微弱的。0.01 或 0.02 的 R 平方,如果它持續且真實,可能極其有利可圖。如果你在報酬預測中看到 0.9,你幾乎肯定有了前視偏差,或者不小心把某個東西回歸到它自己身上。

t 統計量。係數除以它的標準誤。一個粗略的規則是,t 統計量的絕對值超過 2 大致對應 0.05 的門檻。嚴謹的研究員對一個全新的訊號會要求 3 或更高,正是因為他們知道自己在此之前默默地測試了多少個訊號。

你可以直接提取這些數字,而不必閱讀整個表格:

python
1print("t-stats:\n", model.tvalues)
2print("p-values:\n", model.pvalues)
3print("R-squared:", round(model.rsquared, 4))

將這個轉變內化。初學者問:報酬有多大?專業人士問:我有多確定這個報酬不是偶然?這個問題的單一改變,就是全部差異所在。

第五部分:區分真實訊號與雜訊的測試,以及訊號為何會消亡

Roan - inline image

讓每一個候選訊號都通過同樣的嚴格考驗。幾乎沒有什麼能存活下來,而這正是重點。

以下是不留情面的事實:如果你測試了足夠多的隨機訊號,有些會純粹因為運氣而看起來有利可圖。在 0.05 的顯著性水準下測試 100 個無用的訊號,大約有 5 個會單憑運氣通過檢驗。這就是多重檢定問題,也是回溯測試說謊的首要原因。以下是嚴肅的交易團隊如何防範它的方法。

樣本外測試。永遠不要在你用來建立訊號的數據上評判它。分割你的歷史數據。在前一部分上建立模型,然後在模型從未見過的後半部分上測試它。一個真實的訊號能通過這個交叉驗證。一個被過度擬合的幻想,一旦遇到新鮮數據就會崩潰。這是沒有商量餘地的。

python
1split = int(len(y) * 0.8)
2X_train, X_test = X[:split], X[split:]
3y_train, y_test = y[:split], y[split:]
4
5model = sm.OLS(y_train, X_train).fit()
6oos_pred = model.predict(X_test) # 在未見過的數據上測試

資訊係數(Information Coefficient, IC)。機構因子研究員很少只靠一次回歸來決定生死。他們會反覆計算 IC,即因子值與實際未來報酬之間的相關性,並持續追蹤。一個平均 IC 大約在 0.03 到 0.05 以上,並且在多個時期內保持穩定的因子,勝過任何一個擁有出色單一回溯測試的因子。跨越不同市場環境的穩定性才是真正的關鍵。

Newey-West 標準誤。金融數據違反了 OLS 的核心假設之一,因為報酬和波動性在時間上會聚集。原始的 p 值會說謊,通常會讓你的訊號看起來更好。Newey-West 方法可以修正你的標準誤以應對這個問題。使用它,就低調地顯示出這個人知道自己在做什麼。

python
1# Newey-West 校正後的顯著性,這是機構的預設做法
2model = sm.OLS(y, X).fit(cov_type='HAC', cov_kwds={'maxlags': 5})
3print(model.summary())

多重檢定校正。如果你嘗試了 50 個訊號,你不能用普通的標準來評判勝出的那一個。最簡單的防範是 Bonferroni 校正,將你的門檻除以你測試的訊號數量。嘗試了 50 個訊號?那麼要求 p 值低於 0.001,而不是 0.05。這很嚴苛,而這正是重點。它強迫你誠實地面對自己進行了多少次嘗試。

讓一個候選訊號通過樣本外驗證、穩定的 IC、Newey-West 顯著性檢定以及多重檢定校正,如果它還能站得住腳,那麼你就擁有了大多數散戶交易者一輩子都無法創造出來的東西:一個你真正贏得了信任的訊號。

但請理解最終的事實:即使是真的訊號,也會衰減。Alpha 存在於市場效率不高的地方,而一旦一個訊號為人所知並被交易,交易行為本身就會將這種效率低下推開。最近關於因子擁擠的研究顯示,機械式的、容易複製的訊號(如簡單的動能策略)會隨著資金湧入而沿著一條清晰可預測的曲線衰減,而且一旦因子投資透過 ETF 變得便宜,這種擁擠會急劇加速。最簡單的訊號是最擁擠的,也死得最快。持久的優勢存在於那些需要真正努力才能建立的訊號中,也存在於一個研究過程中,這個過程產生的新訊號比舊訊號衰減的速度更快。這就是為什麼文藝復興科技三十年來沒有一天停止研究。

作業:選一個你目前相信的訊號。用你數據中最近 20% 的部分來測試它,假裝你從未見過這些數據。如果 alpha 消失了,你就剛剛為自己省下了真正的錢。這將是你做過最有價值的測試。

第六部分:你剛剛建立了什麼——端到端檢視

Roan - inline image

每一個真實的訊號都會隨著變得擁擠而衰減。能夠取代它們的研究引擎才是真正的優勢。

退後一步,看看你現在擁有的完整機器,因為這些部分連接成了一個乾淨的流程。

你從一個因子開始,任何你認為包含了關於未來報酬資訊的東西。你用 OLS 將資產的報酬對該因子進行回歸,一定要包含截距項,而這個截距就是你的候選 alpha。你擴展到多因子回歸,這樣你的 alpha 只有在剔除已知的風險因子(市場、規模、價值、動能)之後才能被衡量。截距中剩下的就是純粹的、無法解釋的優勢。

然後你對它進行嚴格的審查。你讀取 p 值來問它是否可能是運氣。你檢查正負號在經濟意義上是否合理。你忽略那個誘人的高 R 平方,並尊重那個微小但誠實的 R 平方。你在模型從未見過的樣本外數據上進行驗證。你計算跨越許多時期的資訊係數,以確認它是穩定的,而不是一次性的巧合。你用 Newey-West 校正你的標準誤,這樣市場的時間結構就不會欺騙你。你應用多重檢定校正,這樣你嘗試過的訊號數量就不會製造出一個虛假的勝利者。

從另一端出來的東西不是猜測。它是一個具有可衡量優勢、已知信心水準、在未見過的數據上存活證明,以及對其真實可能性進行誠實評估的訊號。這就是那個模型兩週內就會死掉的人,與那個建立出能夠持久東西的人之間的區別。

而這就是它實際賺錢的方式:一個具有微小但真實且穩定優勢的訊號,在許多獨立機會上進行交易,並透過複利成長。文藝復興科技的勝率僅略高於一半,卻將其變成了市場歷史上最大的財富,因為這個優勢是真實的、可重複的,而且他們在大量的賭注中正確地配置了它。你現在正是基於同樣的藍圖在運作。建立訊號,證明它是真實的,合理地配置它,並在其 IC 開始衰退時替換它。

這個替換循環就是整個職業生涯。一個訊號只是一個交易;一個能夠持續產生比衰減速度更快的新真實訊號的研究過程,則是一個特許經營權。

總結

線性回歸不是那個你跳過去的無聊工具。它在你的數據中畫出最好的直線,它定義了 alpha 的真正含義,它建立你的第一個真實訊號,它測試這個訊號是真實的還是雜訊,並在訊號開始衰亡時向你發出警告。

Alpha 是在剔除所有已知風險因子後存活下來的截距。你使用 OLS 建立候選模型,先做單因子,然後做多因子。你像研究員一樣閱讀輸出結果,其中 p 值和穩定性比報酬的大小更重要。你透過樣本外驗證、穩定的資訊係數、Newey-West 標準誤以及對你嘗試過多少訊號的校正,來防範多重檢定陷阱。你接受每一個真實的訊號都會衰減的事實,這意味著真正的優勢在於研究引擎,而不是任何單一模型。正是這個引擎,建造了歷史上最偉大的基金。

那個盯著 Sharpe 比率 0.03 和 p 值 0.62 的量化分析師並不是運氣不好。他跳過了本文中的這門紀律。不要成為他。

以下是我希望你思考的問題。

如果真正的 alpha 一旦廣為人知就會衰減,那麼發布一個訊號會摧毀它,而隱藏一個訊號則意味著它仍會隨著其他人獨立發現它而緩慢死去。

那麼,持久的優勢究竟從哪裡來?是訊號本身,還是取代它們的研究過程的速度?

你的答案將揭示你思考的方式——是像一個追逐一次大賺的交易者,還是像一個建造能夠持續產生優勢數十年的機器的量化分析師。

在評論區留下你的答案。沒有錯誤的答案。但有些答案會極具啟發性。

一鍵儲存

使用 YouMind AI 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章