我將深入解析機構級量化交易者如何運用時間序列分析在任何市場尋找優勢,並分享你今天就能開始實施的完整框架。
讓我們直接切入正題。
請把這篇存起來 – 我是 Roan,一名後端開發者,專注於系統設計、高頻交易風格的執行,以及量化交易系統。我的工作主要研究預測市場在實際負載下的行為。任何建議、深度合作或合作機會,都歡迎私訊交流。
2008 年,大多數交易者看著抵押貸款支持證券,看到的是一條持續向上的線。
他們看到了趨勢,看到了動能。他們運行了自己的時間序列模型,模型說要買入。結果,這些模型造成了災難性的錯誤。
一小群交易者看著同一條線,卻問了一個不同的問題。他們不是問「這條線接下來會往哪裡走?」,而是問「這條線到底是怎麼產生的?」他們深入研究了底層的抵押貸款數據,發現許多可調利率貸款被發給那些沒有收入證明的人。他們在價格圖表顯示任何跡象之前,就從數據中察覺違約率正在悄悄攀升。他們利用這些資訊——任何時間序列模型都無法自行捕捉到的資訊——建立了部位,並在市場崩盤時賺取了數十億美元。
這是所有時間序列分析中最重要的一課。你圖表上的線條,是現實世界中某些事件發生的結果。時間序列模型可以告訴你那條線一直在做什麼,但它無法告訴你到底是什麼在驅動它。而當底層現實發生變化時,你的模型就會從資產變成負債。
在先前的文章中,我已經涵蓋了用於狀態偵測的馬可夫鏈,以及用於生成交易信號的神經網路。時間序列分析是系統化交易堆疊中的第三個關鍵層。這三個框架結合在一起,就形成了一個完整的量化交易系統。
讀完這篇文章,你將確切了解:時間序列是什麼,以及市場如何產生它們;為什麼你的時間序列模型總是錯的,以及為什麼這其實沒關係;驅動所有量化交易決策的三項基本任務;從原始數據到即時交易信號的完整實施框架;以及那個導致 90% 的時間序列模型在接觸真實資金之前就失敗的單一錯誤。
注意:這篇文章刻意寫得很長。每個部分都建立在前一個部分的基礎上。如果你真的想透過時間序列分析建立系統化的優勢,請讀完每一個字。如果你只是在找捷徑,那這篇文章不適合你。
第一部分:時間序列的真實面貌,以及它對你隱瞞了什麼
時間序列,是按固定時間間隔記錄的一系列觀察值。一支股票的每日收盤價、每小時的溫度讀數、每月的失業人數。每一個都是由時間索引的值所組成的序列。
這個定義在技術上是正確的,但在實務上是不完整的。
大多數人忽略的關鍵點是:每一個時間序列都是由某種東西產生的。股票價格不會在真空中隨機波動。它是數百萬個由投資者、演算法、做市商和宏觀力量所做出的決策的輸出結果,這些因素你無法單從價格序列中直接觀察到。價格是經濟學家所謂的「結果變數」。真正驅動它的,是底層的數據生成分佈。

這個區別對交易來說至關重要。當你將時間序列模型應用於市場數據時,你是在為一個看不見過程的可見輸出建模。只要這個看不見的過程大致保持不變,你的模型就能捕捉到有用的模式。但一旦底層過程發生變化,你的模型就會默默地擬合一個已經不存在的東西。
想想紐約市的溫度。如果是十二月,目前是華氏 20 度,那明天會是多少度?你的答案大概會在華氏 20 度左右,誤差不會太大。你並不是在做精確預測,而是根據當前狀態和已知的季節性模式產生一個期望值。在正常條件下,這個期望值大多數時候會大致正確。
現在想像一下,冰島的一座火山爆發,導致全球氣溫在一週內上升了 15 度。你的模型沒有任何關於那座火山的資訊。它的預測將會極度錯誤。這不是因為模型不好,而是因為底層的數據生成過程以一種在溫度序列中完全看不見的方式發生了變化。
這正是 2008 年抵押貸款證券發生的情況。價格的時間序列告訴你一切安好,但底層的過程——貸款的實際信用質量——卻早已改變。資訊是存在的,只是沒有反映在價格序列中。
一個時間序列可以分解為三個組成部分:
趨勢是長期的方向性移動,是序列在較長時間內遵循的整體軌跡。季節性是以固定間隔重複出現的模式,例如每月銷售週期、每季財報效應、交易量的週間模式。衝擊或殘差,是圍繞趨勢和季節性成分的隨機波動,例如意外事件、新聞、驚喜。
關於趨勢和季節性,關鍵的洞察在於它們只有在穩定的情況下才有意義。如果你在為盤中股價建模,而趨勢每幾個小時就反轉一次,那麼趨勢成分就無法提供任何有用的資訊。穩定性是任何時間序列模型具有預測價值的必要條件。
作業:選取你目前交易的任何資產。用一句話寫下你認為驅動其價格變動的主要因素。那個因素就是你應該與你建立的任何時間序列模型一起監控的對象。如果那個因素改變了,你的模型就需要重建。
第二部分:三項任務,以及為什麼預測總是錯的
時間序列分析的每個應用都屬於以下三類之一。了解你實際上在執行哪項任務,將能幫你避免量化金融中最常見且代價最高的錯誤。
濾波是利用過去和現在的數據來估計系統的當前狀態。你試圖去除雜訊,看清當下真正發生的事。移動平均線就是一種濾波器。它不預測未來,它只是平滑現在。你在交易平台上放到圖表上的每個指標,都在執行某種形式的濾波。當你使用 20 日移動平均線時,你是在說:我想看到這個資產去除每日雜訊之後的底層狀態。僅此而已。
平滑則是利用過去和未來的數據來估計某個先前時間點的狀態。它需要全局路徑知識,也就是說,你需要看到某個時間點之後發生的事情,才能最好地描述那個時間點正在發生什麼。平滑有助於分析歷史數據和建立研究資料集,但由於它需要來自未來的資訊,因此無法用於即時交易決策。
預測是利用當前和過去的狀態來產生對未來的期望。這是大多數交易者關注的焦點,也是最多誤解所在。
以下這個基本事實,大多數交易教育都拒絕清楚說明。
預測(Forecast)不是預言(Prediction)。它是一種期望。這兩者不是同一回事。
期望,是能最小化所有可能未來結果的平均平方誤差的單一數字。數學上,它是條件均值:
E[Xₜ₊₁ | X₁, X₂, ..., Xₜ]
當你擲一顆公平的骰子時,期望值是 3.5。骰子可能擲出 3.5 嗎?不可能。但在你擲出之前,3.5 仍然是你能給出的最佳答案。它是能最小化你在所有未來擲骰中平均誤差的值。
市場預測的運作方式完全相同。你的模型會根據可用的資訊,產生最佳的期望值。這個期望值基本上永遠不會等於實際實現的價格。但是,如果它平均而言是正確的,並且你圍繞它進行系統化的交易,你就能產生穩定的回報。這正是做市商的運作方式。他們不需要知道價格會去哪裡,他們需要知道期望價格,在其周圍報出一個買賣價差,並在數千筆交易中賺取這個價差。
即使模型是錯的,這個方法仍然有效的證明,來自一個簡單的做市模擬。想像一下,圍繞一個真實期望值會隨時間隨機變化的過程,報出一個買賣價差。移動平均線只能不完美地追蹤這個期望值,它總是稍微有點偏差。但是,如果你圍繞這個不完美的估計值進行價差交易,隨著時間推移,你仍然會累積正損益,因為你的平均方向是正確的。
這就是利用時間序列分析進行系統化交易的核心。你不需要完美的預測,你只需要足夠頻繁地做出方向正確的預測,以便克服交易成本。而且你需要一個嚴謹的框架,來判斷你的模型何時不再「大致正確」。

第三部分:摧毀大多數交易模型的單位根問題
這一部分將幫你避免在使用時間序列數據進行量化交易時,最常見且代價最高的錯誤。
大多數試圖為股價建立預測模型的人,第一步是對明天的收盤價和今天的收盤價進行迴歸分析。當他們這樣做時,會得到一個高於 0.99 的 R 平方值。他們相信自己發現了一個近乎完美的預測關係。
他們沒有。他們落入了統計學中一個記錄詳盡的陷阱,稱為「虛假迴歸」。
實際情況是這樣的。運行相同的迴歸,但將收盤價替換為每日報酬率。R 平方值會驟降至大約 0.01。你從能解釋 99% 的變異,變成只能解釋 1% 的變異。相同的底層資產、相同的數據、相同的模型結構,卻得到完全不同的結果。
原因是單位根。
當一個時間序列的當前值等於其前一個值加上一個隨機衝擊時,它就具有單位根:
Xₜ = Xₜ₋₁ + εₜ
這被稱為隨機漫步。股票價格大致遵循此過程。當你對一個隨機漫步與另一個隨機漫步進行迴歸時,即使兩個序列完全無關,你幾乎總是會發現一個強烈的統計關係。這就是虛假迴歸,也是業界無數虛假交易信號的來源。
檢驗方法是擴充迪基-富勒檢定。虛無假設是該序列具有單位根。p 值低於 0.05 表示你可以拒絕虛無假設,該序列很可能是平穩的。p 值高於 0.05 表示該序列可能具有單位根,使用原始數值進行迴歸模型會產生虛假結果。
你會發現,價格序列無法通過檢定,而報酬率序列則能通過。這清楚地告訴你應該對什麼進行建模。絕對不要在原始的價格水準上建立預測模型。在應用時間序列模型之前,務必先轉換為報酬率、對數報酬率或其他平穩的衍生量。
將價格序列轉換為平穩序列的轉換稱為「一階差分」:
rₜ = ln(Pₜ) - ln(Pₜ₋₁)
對數報酬率大致是平穩的,儘管金融報酬率序列仍然表現出波動率叢聚和厚尾等純粹平穩性無法完全捕捉的典型事實。我們將在下面的 GARCH 部分處理這些問題。
作業:檢查你目前正在使用或過去使用過的任何交易模型。確認它是建立在價格水準還是報酬率的基礎上。如果是建立在價格水準上,請對底層數據進行迪基-富勒檢定。如果 p 值高於 0.05,那麼你的回測結果可能因虛假相關而高估。
第四部分:真正有效的模型以及如何使用它們
既然你已經理解了時間序列是什麼、三項基本任務以及單位根問題,你已經準備好建立那些能在真實市場中運作的模型了。
構成系統化交易骨幹的模型家族是 ARMA 家族及其擴展。這個家族中的每個模型都捕捉了金融時間序列中序列依賴結構的不同面向。
AR:自迴歸模型
一個 p 階的自迴歸模型,寫作 AR(p),表示序列的當前值是其前 p 個值的線性函數加上一個隨機衝擊:
Xₜ = φ₁Xₜ₋₁ + φ₂Xₜ₋₂ + ... + φₚXₜ₋ₚ + εₜ
φ 係數是自迴歸參數。它們捕捉了當前值被每個落後項解釋的程度。在交易中,AR 模型可用於捕捉短期動能和均值回歸動態。一個 φ₁ 為正的 AR(1) 模型捕捉動能,一個 φ₁ 為負的 AR(1) 模型捕捉均值回歸。
MA:移動平均模型
一個 q 階的移動平均模型,寫作 MA(q),表示當前值是當前和過去隨機衝擊的線性函數:
Xₜ = εₜ + θ₁εₜ₋₁ + θ₂εₜ₋₂ + ... + θqεₜ₋q
MA 模型捕捉了過去的衝擊對當前值的影響。它們在建模市場如何對新聞事件做出反應時特別有用。
ARMA:結合兩者
ARMA(p,q) 模型結合了這兩個組成部分:
Xₜ = φ₁Xₜ₋₁ + ... + φₚXₜ₋ₚ + εₜ + θ₁εₜ₋₁ + ... + θqεₜ₋q
對於非平穩序列,你先進行差分使其平穩,得到的模型稱為 ARIMA(p,d,q),其中 d 是差分階數。
GARCH:為波動率建模
ARMA 模型應用於金融數據的問題在於,它們假設波動率是恆定的。金融報酬率表現出波動率叢聚:大幅波動之後往往跟著大幅波動,小幅波動之後往往跟著小幅波動。這就是 ARCH 效應,也是整個金融領域中最有充分記錄的典型事實之一。
GARCH(1,1) 模型透過將誤差項的變異數建模為一個時變過程來解決這個問題:
σₜ² = ω + α₁εₜ₋₁² + β₁σₜ₋₁²
其中 σₜ² 是時間 t 的條件變異數,εₜ₋₁² 是前一個時期的平方衝擊,σₜ₋₁² 是前一個時期的變異數。這個模型精確地捕捉了你在市場中觀察到的波動率叢聚:今天的高波動率預示著明天的高波動率。
對於交易來說,GARCH 對於倉位規模的設定至關重要。當 σₜ² 很高時,你減少倉位規模。當 σₜ² 很低時,你可以承擔更多風險。這個簡單的洞察——根據估計的波動率動態調整倉位規模——是系統化基金產生的大部分風險調整後報酬的來源。

第五部分:完整的實施流程
這一部分將所有內容整合成一個你可以在今天就在真實數據上運行的可工作系統。
在部署這個系統之前,有三件關鍵事情你必須理解。
第一:基於 GARCH 的倉位規模設定比 ARIMA 的方向性預測貢獻更大。在高波動率時期減少曝險是整個系統中最可靠的優勢。方向性預測準確率在 52% 到 55% 之間,結合波動率調整後的倉位規模,能產生比 60% 準確率搭配固定倉位規模更好的風險調整後報酬。
第二:走窗驗證結構是不可妥協的。在每個步驟中,你只在歷史數據上擬合模型,並預測下一步。絕對不要在完整數據集上擬合、生成樣本內預測,然後稱之為回測。那不是回測,那只是一個貼上標籤的曲線擬合。
第三:替代數據是時間序列分析所能達到的天花板。你在此建立的框架是地板,它能捕捉價格序列內部存在的模式。而那些持續表現優異的交易者,會添加價格序列無法包含的資訊:財報電話會議的情緒、訂單簿的委託單失衡、信用市場信號、跨資產的狀態資訊。這些不是對模型的改進,它們是來自完全不同的資訊集的輸入。

最重要的實務限制:所有 ARMA 家族的模型都假設序列的統計特性在估計視窗內大致穩定。在金融市場中,這個假設不斷被違反。標準的緩解方法是使用一個滾動的 252 個交易日的估計視窗,在新數據到來時丟棄舊數據。較短的視窗適應速度更快,但會產生噪音更大的參數估計。較長的視窗更穩定,但會落後於狀態的變化。最佳的視窗長度是一個經驗問題,必須針對每個標的和每個策略分別回答。
總結
時間序列分析並不能預測未來。它所做的是,在給定當前狀態和觀察到的歷史數據的情況下,產生對未來的數學上最優的期望。當這個期望值足夠頻繁地方向正確,並與波動率調整後的倉位規模設定相結合時,就能產生持續的優勢。
完整的框架就在這篇文章中。在建立任何模型之前,先檢查平穩性。使用報酬率而非價格作為輸入。擬合 ARIMA 以捕捉報酬率自相關中的方向性信號。在其上疊加 GARCH 來建模時變波動率,並動態調整你的倉位規模。使用滾動的走窗驗證結構來驗證所有內容。並且永遠記住,最大的波動——那些創造或摧毀最多資本的波動——來自於沒有任何時間序列模型能夠預見的狀態變化。
最後那一點不是模型的限制,而是對現實的描述。那些建立了歷史上最成功系統化策略的交易者,確切理解他們的模型能做什麼和不能做什麼。他們將時間序列用於它真正擅長的地方:從穩定的狀態中提取穩定的模式。他們利用替代數據和狀態偵測來判斷那些狀態何時即將改變。
現在,你兩者都擁有了。時間序列框架在這篇文章中。馬可夫鏈狀態偵測框架在上一篇文章中。神經網路信號生成框架在上上一篇。
你現在擁有了一個完整的系統化交易堆疊。
這是我希望你思考的問題。
一個 GARCH 模型根據報酬率歷史中的模式告訴你波動率即將飆升。一個馬可夫鏈根據當前狀態告訴你市場即將從低波動率狀態過渡到高波動率狀態。如果兩個信號一致,這個收斂就是最強的風險管理信號之一。如果它們不一致,這個分歧本身就是資訊。什麼會導致它們不一致?這個分歧又會告訴你關於當前市場條件的什麼訊息?
在留言區寫下你的答案。
沒有錯誤的答案,但有些答案非常具有啟發性。





