摘要

本文源自我為了一次備課而進行的時間序列實作專案。起初,我抱著實驗與反面教材的心態,嘗試使用 LSTM、Transformer 等人工智慧模型來預測台積電(TSM)的股價與漲跌。結果不出所料,這些複雜模型的表現不意外的幾乎都無法超越「直接把昨天價格當作今天預測值」的簡單基線模型,且總是出現明顯的預測延遲現象。透過進一步的統計與自相關性分析,我驗證了股價數據具有高度的噪聲與不平穩性,其變化率更近似於白噪音或隨機漫步,這意味著單純依賴歷史價格的變化,幾乎無法為未來的股價提供任何實質的線性預測能力。

為了理解其根本原因,進一步從市場機制進行推論,我發現這其實源自於市場的「效率」與「適應性」。根據效率市場假說與反身性概念,一旦某個預測模型被證明有效並投入使用,投資者的交易行為就會迅速改變市場趨勢,進而讓該模型的預測提早被消化、套利空間隨之消失。因此,市場中不存在能長期穩定破解股價的單一公式。儘管如此,我們仍可能透過捕捉短期的市場非效率性、利用大型機構的結構性限制,或是掌握不對稱的另類資訊來尋找獲利機會。總歸一句,當模型進入市場,它就成了市場的一部分;我們唯有不斷學習與適應,才能在動態的複雜市場中站穩腳步。

本文誕生緣起

這篇文章的誕生,源自過去對於一次備課的討論與實作。

當時,老師引導我尋找適合的實作題目,希望能讓同學透過小型專案來學習如何使用人工智慧技術解決時間序列預測問題。老師對於股票價格預測這個題目特別感興趣,認為這是一個經典的時間序列預測問題,且具有高度的實際應用價值。

然而,在實作端的我,只是想說這個問題已知非常難以解決,甚至可以說是無法使用單一方法解決的,因為股票價格受到太多不可預測的因素影響,特別是人類的情緒和行為。但是在興趣的驅使下,我還是決定嘗試一下,看看是否能夠找到一些有趣的見解或是方法。拿來做成一個反面的專題練習也不錯,讓同學們了解在實際應用中,並不是所有問題都能夠被人工智慧技術所解決。

測試的結果不出所料,股票價格的預測確實非常困難,幾乎無法超過簡單的基線模型的表現,而在部分情況下甚至與隨機猜測相差不遠。在當時我只下了二個簡單的結論:

  • 股票價格波動劇烈,且受到眾多因素影響,造成其數據具有高度的噪聲和不確定性。當股票價格的變化在許多情況下近似白噪音,任何模型都很難從中學習到有用的模式。
  • 以上的噪音問題同時可以從統計的自我相關性分析中得到驗證,股票價格數據存在不平穩性,且在差分後試圖平穩化後的數據則在線性自相關上通常非常微弱,這意味著過去的價格變化對未來的價格變化幾乎沒有任何預測能力。

而在後續的討論中,老師總是覺得預測結果不佳的原因是因為我沒有使用足夠複雜的模型,或是沒有使用足夠多的資料。這讓我開始思考,是否真的有可能透過更複雜的模型或是更多的資料來提升預測的準確性?還是說這個問題本質上就是無法解決的?

技術驗證:模型為何難以超越基線

這個章節單純的回顧了初步做過的分析與方法,如果對於一些方法與分析沒興趣的可以直接跳過,因為後面討論這個問題是完全不依賴這些分析的。

在這個案例裡面,我取用了 TSM 的 10 年歷史價格資料作為預測目標。輸入參數包含 TSM 以及在這個專案中我認為可能會有幫助的其他指標,包含 QQQ、SMH、VIX、TNX 等指標的歷史價格資料,以及 Google Trends 上面關於 TSM 的搜尋趨勢資料。

在模型的選擇上,我選擇使用 Persistence / Naive Forecast 作為基線模型,也就是直接以前一期價格作為下一期的預測值(如圖 1 所示)。這類方法雖然簡單,但在許多金融時間序列問題中其實是相當強勢且難以超越的基準。並使用 LSTM、BiLSTM、Transformer 常見的時間序列預測模型來進行預測。而評估的指標則是使用了 MAE 作為主要的評估指標,並且與基線模型的表現進行比較。

圖 1. 基線模型的預測結果(藍色為實際價格,紅色為預測價格,可以明顯看到預測價格與實際價格趨勢相同但中間有一個明顯的延遲)

而大部分的模型在預測的表現上都不如基線模型,特別是所有的模型都出現了明顯的延遲現象(如圖 2),預測的價格趨勢與實際價格趨勢大致相同,但預測的價格總是落後於實際價格,這意味著模型無法捕捉到價格變化的即時性,這也是為什麼預測結果不佳的主要原因之一。

圖 2. 多數模型的預測結果(藍色為實際價格,紅色為預測價格,可以明顯看到預測價格與實際價格趨勢相同但中間跟圖 1 一樣有一個明顯的延遲)

因為不同種類的模型在預測的表現上都不如基線模型,確定了這個挑戰的複雜性(下一段會提到對於這個問題的分析)。在金融時間序列中,價格與報酬率通常需要分開看待。價格本身往往具有趨勢性與非平穩性,而報酬率則較常被視為接近平穩的序列。因此後續分析也改以價格變化率與漲跌方向作為預測目標。

所以,我後來又修改了測試的方法,既然預測價格本身難以得到好的結果,那改成預測價格的漲跌(也就是預測價格的變化率)是否能得到更好的結果。因此,我後來又試著以 Transformer 模型作為基礎,分析看看是否在價格變化量存在預測的可能性,又做了下面的分析。評估在不同的輸入窗口下,在不同預測尺度下的預測表現,結果發現不論是使用多長的輸入窗口,或是預測多長的未來價格,模型的預測表現都難以超過基線模型,而僅有的例外是因為選用的驗證區間剛好是價格相對平穩向上的區間,這使得較短期窗口大小的偶然預測點剛好更接近實際價格,這並不能證明模型具備良好的預測能力,因為在其他區間的表現仍然不佳,且整體來說模型的預測表現仍然不如基線模型。

圖 3. Transformer 模型在不同輸入窗口與預測尺度下的預測表現(實線為基線模型的表現,幾乎所有點都在基線模型的上方,顯示模型的預測表現不如基線模型)
圖 4. 其中一個誤差優於基線模型的預測情形(可以看到明顯仍有延遲現象,但因為這段期間價格相對平穩向上,所以偶然的幾個預測點剛好更為接近實際價格,無法證明模型具備良好的預測能力)

而若使用自相關性分析來驗證股票價格的預測能力(圖 5),則可以發現股票價格的自相關性(ACF, Autocorrelation)接近 1 且緩步降低;而偏自相關性(PACF, Partial Autocorrelation)則在第一個滯後期(lag 1)有一個明顯的峰值,之後的滯後期則幾乎接近於零。這其實是典型非平穩價格序列的特徵。價格本身雖然具有高度自相關,但這種相關性主要來自價格水位的累積性,並不代表未來報酬具有可預測性。這個情況可進一步從 PACF 的圖表中得到驗證,股票價格的 PACF 在第一個滯後期有一個明顯的峰值,之後的滯後期則幾乎接近於零,這顯示價格序列具有強烈的一階依賴性,也就是當前價格與前一期價格高度相關。這樣的特徵與許多具有單位根(unit root)的非平穩時間序列相當接近,也是隨機漫步(Random Walk)模型常見的統計特徵之一。

因此,如果再進一步取一次差分來分析股票價格的變化率,通常這樣差分後的數據會變得相對平穩,但在這個案例中,差分後的數據顯著自相關性很弱,這意味著過去的價格變化對未來的價格變化缺乏明顯的線性預測能力。這些分析結果進一步驗證了股票價格的預測困難,因為它們顯示股票價格的數據具有高度的噪聲和不確定性。不過,這不代表金融市場都不存在可預測的模式,本文僅討論股票價格的預測困難,並不代表其他金融市場或是其他類型的時間序列預測問題也具有同樣的特性。

圖 5. 股票價格的自相關性分析(上圖為價格的自相關性分析;下圖為價格的差分(變化)的自相關性分析。)

這是非常典型的股票價格的數據特性,如果股票價格接近隨機漫步的特性:

則在這裡「直接使用當前價格作為預測結果」的基線模型就已經是非常強大的預測方法了,因為在這種情況下,過去的價格變化對未來的價格變化幾乎沒有任何預測能力,任何試圖從過去的價格變化中學習模式的方法都很難超過這個基線模型的表現。

到目前為止,我們只從「數據特性」分析了為什麼模型難以預測股價。但更深層的問題是:為什麼股票市場本身會產生這種近似不可預測的統計特性?

這就必須回到市場本身的運作機制。

股價預測困難的原因探究

再回顧一下前面的分析,我們可以觀察到股票價格的預測表現不佳的主要原因來自股票價格序列本身具有明顯的非平穩性,而其差分後的報酬率序列則常呈現接近白噪音的特性。這樣的數據品質問題使得,多數僅依賴歷史價格的模型都很難穩定學習到可泛化的預測模式。
然而,這個分析只是從數據的角度來看待股票價格的預測困難,並沒有深入探究為什麼股票價格會具有這樣的特性。為了更深入地理解這個問題,我們需要從股票市場的本質和運作機制來進行探究。

這部分我們可以使用推論的方式來進行分析。

核心矛盾 (β 世界線) - 股票價格的預測困難與股票市場的效率

假設存在一個單一方法或是模型能夠有效地預測股票價格或漲跌,這樣我們可以根據這個方法或是模型來進行投資決策,從而獲得投資回報。

但是,如果這個方法被拿來使用的同時,我們自身的行為會影響股票價格的變化,使得這個方法的預測結果不再準確。這是因為股票市場是一個高度互動的系統,投資者的行為會影響股票價格的變化,而股票價格的變化又會反過來影響投資者的行為。就像是當我們拿一把槍指著算命師,要求他預測我們會不會開槍一樣,算命師的預測結果會受到我們行為的影響,這樣的自我指涉矛盾使得預測變得非常困難。

當一個方法或是模型被證明能夠有效地預測股票價格時,投資者會迅速採用這個方法來進行投資決策,從而導致股票價格的變化趨勢發生改變,使得這個方法的預測結果提早被市場消化,使得套利空間消失。這也是所謂的效率市場假說(Efficient Market Hypothesis, EMH)所描述的情況,該假說認為股票市場是有效的,所有可用的信息都已經反映在股票價格中。因此,在此假說的框架下,單一方法進行長期穩定且有效股票價格預測是不可能的,因為任何有效的方法都會被迅速採用,從而導致股票價格的變化趨勢發生改變,因此,在效率市場假說的框架下,市場中很難存在能長期、穩定且公開套利的單一預測方法。

在撰文期間的搜索中,我發現有名的投資者 George Soros 也為此提出了類似的「反身性」(Reflexivity)概念,來描述這種自我指涉的矛盾現象。雖然效率市場假說強調市場會快速消化資訊,使套利機會消失。而反身性概念則描述了預測與投資行為會強化股票價格的變化趨勢,從而造成價格的過度反應和泡沫。但無論是對市場機制的解釋不同的效率市場假說還是反身性概念,兩者都共同指出:市場參與者本身會影響市場,因此市場並不是一個靜態、可被固定規則永久破解的系統

矛盾的死角 (α 世界線) - 股票價格預測的可能性

而畢竟效率市場假說在當前還只是「假說」,並沒有被完全證明。特別是市場也因為存在各樣的非理性行為,使得市場並非完全是有效的。

而且上述的推論有一個前提:該預測資訊是完全公開且被廣泛使用的,或者是其挾帶的資金規模相對於市場來說足夠大,大到足以引發市場機制的修正。

反之,如果在極端封閉且資金量極少的條件下,可能會存在一個方法或是模型能夠長期、有效、穩定的預測股票價格。然而,一般現實情況下,這樣的系統開發也非常不符合成本效益,不只是不敷開發成本,同時還有手續費、稅金等額外成本。當一個人使用既有的方法或是模型來進行股票價格或漲跌預測並且精確時,不太可能永遠只用極少到不足以影響市場的資金量來進行投資同時不考慮複利效應的影響,因為這樣的投資回報將會非常有限,無法達到預期的收益目標。因此,即使市場存在統計上的可預測性,也不代表存在可實際套利的空間。

市場的適應性 - 股票價格預測的短暫有效性

這裡需要區分的是:「不存在長期穩定且公開可泛化的預測方法」,並不代表「不存在短期、局部、暫時性的統計優勢」。許多量化交易策略本質上利用的並不是市場存在可長期破解的規律,而是市場在特定時間、特定條件下暫時出現的非效率性。

回到前面提到的核心矛盾,當一個方法或是模型被證明能夠有效地預測股票價格時(就算我們不要求完全準確),在完美效率的市場中,投資者會迅速採用這個方法來進行投資決策,從而導致股票價格的變化趨勢發生改變,使得這個方法的預測結果提早被市場消化,這個部分可以歸因於市場的適應性。然而現實中,因為市場並非完全效率的,所以在某些情況下,可能會存在一些方法或是模型能夠在短期內有效地預測股票價格,但這些方法或是模型的有效性通常是短暫的,因為市場會迅速適應這些方法或是模型,從而導致它們的預測結果不再準確。

這也是當前許多量化交易機構的核心運作模式。他們會不斷地開發大量新的方法或是模型來進行股票價格的預測,用以捕捉尚未被市場適應的機會,從而獲得投資回報。這在前面的推論中我們可以知道這也是一個可能有效的投資策略,但同時也意味著這些方法或是模型的有效性通常是短暫的,因為同時也有許多競爭者在不斷地開發新的方法或是模型來進行股票價格的預測競爭,這也使得市場的適應性變得更加迅速和強大。

提升預測維度的可能性 - 股票價格預測的複雜性

在前面的推論中,我們假設存在一個單一方法或是模型能夠有效地預測股票價格或漲跌,但這個假設可能過於簡化了股票市場的複雜性和非線性特性。

股票市場是一個高度複雜的系統,受到行為經濟、個體經濟、總體經濟、政治、社會等多種因素的影響,這些因素之間存在著高度的非線性關係和相互作用。這在目前仍是無法被完全理解和建模的,而現在不行不代表未來也不行,個人認為有兩個創新的可能性讓股票價格的預測變得可能:

  1. 數學理論突破:如果未來在數學理論上有重大的突破,可能可以把股票市場的複雜性和非線性特性更好地理解和建模,從而開發出更有效的方法或是模型來掌握市場的運作機制和預測股票價格的走勢。
  2. 量子計算發展:如果未來量子計算技術有重大的發展,可能可以利用量子計算的新穎模擬方式與計算效率提升對高維金融系統的模擬能力,從而開發出更有效的方法或是模型來來掌握市場的運作機制,但這仍不能突破市場因反身性與適應性帶來的根本限制。這同時引發了另一個博弈—當不只有你掌握量子計算時,預測又會陷入相互預測與適應的矛盾中,市場終會演化更高度的複雜性機制。

最後,就算上面兩點造成的突破讓我們能夠開發出一個方法或是模型能夠有效地預測股票價格,但如果這個方法或是模型是完全公開且被廣泛使用的,或者是其挾帶的資金規模相對於市場來說足夠大,大到足以引發市場機制的修正,那麼這個方法或是模型的預測結果仍然不會準確。因此前提是只有少數人能夠運用這個方法或是模型具備技術與實踐的護城河,不然一旦普及就會被市場適應掉。

結論

總結來說,股票價格的預測困難根本原因在於股票市場的效率和適應性。當一個方法或是模型被證明能夠有效地預測股票價格時,投資者會迅速採用這個方法來進行投資決策,從而導致股票價格的變化趨勢發生改變,使得這個方法的預測結果不再準確,這種自我指涉的矛盾使得股票價格的預測變得非常困難。這也是為什麼當我們單純檢視股票價格的數據特性時,會發現股票價格具有高度的噪聲和不確定性,這些特性使得,多數僅依賴歷史價格的模型都很難穩定學習到可泛化的預測模式來進行預測。這也是為甚麼我們不能寫了一套公式來破解股票市場從而建立穩定且可持續的套利機制的原因。

然而,股票價格與走勢預測儘管不存在一個單一方法或是模型能夠長期、有效、穩定的預測,但不代表我們無法從股票中透過預測評估獲利。像是可能存在以下情境使得股票價格的預測變得可能:

  • 市場的非效率性:如果市場存在某些非效率的現象,可能會存在一些方法或是模型能夠在短期內有效地預測股票價格。像是現在的量化交易、高頻交易模式就是利用市場的非效率性來開發出一些方法或是模型來進行股票價格的預測,從而獲得投資回報。特別是現在有越來越強的生成式人工智慧技術,可以更快速的進行試誤與分析。惟本人對這些方法僅初步認識,就目前個人的理解與推論這個領域是可能有機會的。
  • 市場的結構性挑戰:市場中存在一些巨大資金,像是國家管理的基金或是大型的投資機構、法人投資者等,他們的行為因為可能會對市場產生較大的影響,因此交易行為受到嚴格的限制。這些限制可能會導致他們無法完全採用某些方法或是模型來進行投資,從而可能會存在一些方法或是模型能夠在短期內有效地預測股票價格。
  • 資訊的不對稱性:如果每個投資者能夠取得的資訊都相同,利潤空間當然會被壓縮到幾乎不存在的程度。所以在現實中,許多人在挑戰別人沒用過或想過的資料來源,像是衛星圖像、社交媒體等數據來進行股票價格的預測,這些資料來源可能會提供一些獨特的資訊。

總的來說,因為股票市場本質上是一個動態且具適應性的複雜系統,因此我們不能像是解數學題一樣找到一個單一的方法或是模型來破解股票市場從而獲得穩定的投資回報。然而,我們基於對於股票市場的理解和分析,仍然可以根據這樣的理解認識到一些可能存在的投資機會,並且將投資系統設計的比市場修正更快,從而獲得投資回報。

結語:

一旦模型進入市場,模型本身就變成市場的一部分。因此,唯有不斷學習適應,才能至少維持在目前的市場上站穩腳步。