AI選股系統跑了45天 最後守住錢的不是預測準確率

Rising candlestick chart with market trend, volatility, and AI node network labels

45 Days Running an AI Stock System, One Bug at a Time

高分不代表會漲,預測準不代表守得住…
這是兩件不同的事
初期實驗到這裡先停下來,驗證結束…不理想
哈….TT 等調整好點再繼續分享

「我不是在做AI選股系統」,而是「我拿股票預測來驗證AI融合,結果發現什麼」

這一年多的台股,真的很妙。

AI概念股一路狂飆,很多人覺得找到方向了。然後黑天鵝一出來,幾天就跌掉好幾千點,又V型反彈回來。

就是這種市場,讓我開始認真想….AI到底能不能幫忙看清楚這些。我本來在做AI融合研究,研究怎麼把不同的AI模型結合在一起,讓它們互相補強。後來這個想法自然打到了股票預測上,就動手做了。

但做下去才發現,真難。

我在做一套用AI幫忙選股的系統,有一天看著聯電的評分,覺得哪裡不對勁…它的事件分數打得很高,但直覺告訴我這個分數有問題。於是我開始往下查,想說應該很快,調一下權重就好。

結果一路查下去,查了45天,幾乎每天都在跟AI對帳,抓程式碼裡的漏洞。

這篇不是成果報告,也不是期刊等級的研究,純粹是想把這段時間到底發生了什麼,老實記下來。

地基裂縫,比表面數字更嚇人

第一個抓到的問題,是一個叫做「連買天數」的欄位。

這個欄位的用途是記錄法人連續買進某支股票的天數,用來判斷這支股票是不是有持續性的資金流入。邏輯上很合理——如果外資連續買了十天,跟只買一天,意義完全不同。

但系統的實際邏輯是:只要當天轉賣,連買天數就直接歸零。

這代表什麼?一支被外資狂賣十天的股票,跟一支完全沒有法人動靜的股票,在系統眼裡是同一回事。連續賣超這件事,完全沒有被記錄下來。

這個修完,以為告一段落,結果往下追,發現更根本的東西。

系統裡有一個欄位標記成「30天報酬」,照理說應該是算這支股票買進後30天的漲跌幅。但實際上,它算的是隔天的漲跌,不是30天。

這個錯誤之所以沒有被發現,是因為模型訓練時用的標籤剛好也是「隔天漲跌」,兩邊彼此對得起來,系統跑起來沒有報錯,看起來一切正常。但這個「30天報酬」根本不是30天,而且跟我後來一直在講的「贏過大盤」完全是兩件事。

把標籤改成真正的20個交易日(約一個月)之後,US模型的AUC從0.51爬到0.57左右。

AUC是用來衡量分類模型好壞的指標,數值從0到1,0.5代表跟瞎猜沒有差別,越接近1代表預測越準。從0.51到0.57聽起來只差一點點,但這個差距讓模型從「跟瞎猜一樣」變成「開始有一點點預測能力」,而且連續好幾輪重新訓練都穩定落在這個區間,不是運氣好。

這是這45天裡,少數可以百分之百確定「真的變好了」的部分。

高分不代表會漲,這件事我查了很多次

比較難堪的發現,是Precision@K出現了倒置。

Precision@K的意思是:把系統評分最高的前K支股票挑出來,看看它們實際上有多少比例真的漲了。如果系統評分有意義,排名越前面的股票,漲的比例應該越高。

但實際狀況是:按分數排名前三名的股票,勝率長期以來常常比隨機挑的還差。

為什麼會這樣?我往下查,發現幾個問題疊在一起。

系統裡有三個「專家」分別從技術面、籌碼面、事件面給分,最後加權合併成一個總分。但這三個專家分開來看,跟實際報酬的相關係數常常是負的,或者接近零。也就是說,分數高的股票,實際上漲的機率並沒有比較高。

籌碼面的問題更具體。它的公式幾乎只會往上加分,幾乎沒有下修的機制。而且候選股票本身是從「法人連買」的清單裡篩出來的,等於同一個訊號用了兩次——先用連買當篩選條件,再用連買當加分項目,系統自己在繞圈圈。

事件面的問題最明顯。系統用LLM(大型語言模型,像ChatGPT這類AI)來判斷新聞是利多還是利空,結果判斷偏多的比例常年維持在98到99%。幾乎每一則新聞,AI都覺得是好事。

更糟的是,同一則利多新聞,今天用一次,隔天新聞列表沒有更新,AI又用滿格力道再判斷一次,等於同一則新聞被重複計分。一個沒有新資訊的股票,分數卻一直在累積。

這幾個問題,這45天陸續加了時效衰減(越舊的新聞,影響力越低)、事件類型分類、分數上限強制裁切,但要看到真正的效果,得再等一輪完整的資料回填才知道。

另外還抓到一個ATR停損的bug

ATR是一個衡量股票波動幅度的指標,動態停損的概念是根據ATR設定一個停損價,當股價跌到這個價格就賣出,保護資本不要繼續損失。

但系統的實際邏輯是:停損價會隨著股價往下同步下探。意思是,股價跌了,停損價也跟著往下調,等於停損線永遠追不上,完全失去保護資本的功能。

這種錯誤比預測不準更危險,因為它會讓損失沒有上限。

斷路器守住了,預測還在學走路

不過有一件事我覺得該記下來。

這45天裡有兩次真正的市場重挫,7月底跟8月中,預測層幾乎全軍覆沒,AI給出的選股建議大部分都錯了。

但月線斷路器跟後來加的VIX風險模式,兩次都成功把買入建議整批關掉。

月線斷路器是一個規則:當整體市場趨勢向下,系統自動停止發出買入建議,不管個股評分多高。VIX是市場恐慌指數,數值越高代表市場越不穩定,當VIX超過一定水準,系統進入風險模式,對買入建議設定更嚴格的條件。

就算AI給出七成以上的看漲機率,只要沒有通過75%的硬門檻,系統照樣不解鎖,不發出買入建議。

預測準不準,跟會不會把錢守住,是兩件不同的事。這次算是看清楚了——前者還在學走路,後者這次真的擋住了。

52%,才是真正的門檻

一路做下來,一直有個念頭在拉扯,覺得應該要做到很高的準確率才算成功。

後來查了一些資料才發現,真正頂尖的量化基金,單筆交易的勝率長期大概就落在51到55%左右。

聽起來低得離譜。但這些基金賺錢的方式,不是每一筆都準,而是在足夠大的交易量裡,讓微小的優勢持續累積。就像賭場的莊家優勢只有2到3%,但因為每天有幾千幾萬筆交易,這個微小的優勢最終會穩定地變成獲利。

這個數字第一次聽到會覺得也太低了,但想清楚之後反而放鬆了不少。

不是要追一個不存在的完美分數,是要讓系統穩定地、一點一點地贏過大盤,而且要撐得過不同的市場狀況,不是只在某一段特定行情裡表現好。

回來之後,要做的事不是變聰明,是變誠實

要繼續做的事排了幾件。

把超額報酬正式變成唯一的驗證標準。超額報酬的意思是,這套系統的選股結果,有沒有真的贏過大盤指數?不是看絕對漲跌,而是跟大盤比。如果大盤漲了10%,系統選的股票也漲了10%,那其實什麼都沒做到。以前的驗證方式有時候會被大盤漲跌污染判斷,以為系統在進步,其實只是大盤在漲。

價格區間長期偏高的問題還沒真正修,事件類型的比對邏輯偶爾會因為LLM用詞不完全一樣而失效,這些都排在待辦裡。

比起追求更聰明的模型,這段時間學到更多的,反而是先把量測本身做誠實。

量錯的時候,再厲害的模型也只是在一個錯的靶上打得很準而已,高分不代表會漲。預測準不代表守得住錢。這兩件事,花了45天才真正看清楚。

繼續努力…..

如果一開始就用AI Agent,會不一樣嗎?

做到後來,我問了自己一個問題:

如果一開始不是自己寫規則、自己抓bug,而是直接用AI Agent….讓AI自己決定要看哪些資料、自己評估、自己下判斷….結果會不一樣嗎?

想了一下,答案是:會不一樣,但不是變好。
Agent需要一個目標,才知道自己在優化什麼。

但這45天最根本的問題,是目標本身量錯了。「30天報酬」其實是隔天漲跌,標籤從一開始就是歪的。

如果是Agent從頭跑,它會非常有效率地去優化這個錯的目標。而且它不會停下來告訴你哪裡不對,它只會一直跑、一直學、一直覺得自己在進步。

數字看起來會很順,系統好像一直在改善,但地基從一開始就是歪的,而且你不會知道。Agent很強的地方是執行力,它可以做到人工做不到的速度和規模。

但它沒有「覺得哪裡不對勁」這件事。

聯電那支事件分打太高,當時只是一個直覺,一個說不清楚為什麼的感覺,然後順著這個感覺往下查,才拉出了後面一連串的問題。

這個直覺,是我有的,不是Agent有的。所以如果從零開始用Agent,我大概會少掉這45天最有價值的部分….

  • 親手抓bug的過程,讓我真正搞清楚系統在做什麼。
  • 不清楚系統在做什麼,就沒辦法給Agent一個正確的目標。
  • 沒有正確的目標,Agent再強,也只是更快地在錯的靶上打得很準。

這45天走的彎路,反而是之後能正確使用Agent的前提。等系統穩了,那時候再交給Agent,才有意義。

更多文章….
AI 股票預測實驗 Day 1|AI 多模型融合預測
AI 股票預測實驗 Day 10|AI 多模型融合預測
AI 股票預測實驗 Day 20|AI 多模型融合預測
AI 股票預測實驗 Day 30|AI 多模型融合預測
AI 股票預測實驗 Day 40|AI 多模型融合預測
AI 多模型融合研究:如何設計可重現的融合實驗、評估指標與結果校準(含 blending / stacking / gating)
QQCDR AI Engine 是什麼?多模型融合 AI 決策系統解析
從命令AI到AI Agent自動化……未來工作流程的重構邏輯
企業開始重視的,不只是技術,而是 AI 把技術變成產品的能力


探索更多來自 YinOnMars 的內容

訂閱即可透過電子郵件收到最新文章。

發表迴響

探索更多來自 YinOnMars 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

繼續閱讀