← 所有文章

投資 · 2026.09.21 · 4 min · 更新於 2026.10.26

裸K交易法有用嗎?1026 檔台股規則回測,樣本外輸給隨機進場

把一位 YouTube 創作者的裸K交易法寫成規則,用一千多檔台股日線回測,跟只打散進場時點的隨機對照組比,樣本外輸給隨機 2.62 個標準差。

閱讀設定
主題
字級
寬度

裸K(不看指標、只看 K 線本身的交易法)寫成規則回測,會不會有優勢?

我把一位 YouTube 創作者的方法寫成規則,在 1026 檔台股日線上回測,對照組是只把進場時點打散的隨機進場。

結論是規則層面沒有優勢,樣本外輸給隨機進場 2.62 個標準差。樣本外指的是切出來留著驗證的那段資料。

在得到這個結論之前,我錯判了三次,每次都是對照組沒設對。這是這篇最值得帶走的部分。

起因是一則用 Claude 做交易機器人的推特教學。順著問下去,問題變成:這位創作者把裸K講得很有條理,他的方法能不能寫成規則?

驗收標準:贏過隨機進場

驗收標準不是回測賺錢,是樣本外要贏過隨機進場的基準線。

做法是保留每一筆交易的標的、方向、停損 %、目標 %,只把進場時點打散,跑多次取平均當基準。

小停損配大目標這種賺賠比結構,在有漂移(長期往一個方向走)的市場裡,就算亂進場,也會跑出正的毛期望值(未扣成本的平均每筆報酬)。

不扣掉這條基準線,會把市場漂移當成自己的本事。

示意圖:在有漂移的市場裡,隨機對照組保留每筆交易的標的、方向、停損 % 和目標 %,只把進場時點打散,跑多次取平均當基準線;驗收標準是樣本外要贏過這條基準線。

調參數找最佳組合這條路,從一開始就排除,因為那正是要避免的事。

把裸K寫成規則

規則來源是 12 支直播影片。我把這些教學影片轉成文字,整理成一份規格,包含三問的順序(位置、慣性、圖)、2點1線、破底翻、翻亞當的點對稱投影,還有三段式出場。

回測沿用我原本的量化研究平台。它的部位一律用 signal.shift(1),結構上擋掉未來函數(用到當下還拿不到的資料),也有只能 reveal 一次的 holdout(留到最後才打開的驗收資料)。

但原本的引擎是「目標部位 × 收盤報酬」的向量化模型。裸K 的停損和出場都在 K 線內觸發,用收盤模型算,等於停損不存在。

所以我另寫了一個逐筆交易引擎,逐根走 high/low。同一根 K 線同時碰到停損和目標,一律判停損先到。

單一商品的樣本太小,拿 BTC 4 小時線試,只生出 50 筆交易。

這位創作者自己反覆強調方法在任何商品、任何刻度都通用,直播也大量用股票日線示範。所以我改成跨 1026 檔台股日線,380 萬根 K 線,一萬多筆交易。

規則寫完後,我請 Codex 做獨立稽核,它抓到兩個樂觀假設。

一是開盤跳空穿越停損時,程式仍以停損價成交。二是限價單成交的那一根,用整根的 high/low 判斷有沒有停利,但成交之前價格有沒有先碰過目標,從 K 線上無從得知。

修掉之後,train(樣本內那段資料)的毛期望值從 +0.211R 砍半到 +0.104R。R 是以停損距離當一單位的報酬。

結果:輸給隨機 2.62 個標準差

最終版本用 1026 檔、對照組跑 10 次、基準線分段計算:

點圖:train 段 n 6599,隨機基準線 +0.097R(sd 0.028),照規則 +0.120R,高出 0.83 個 sd;val 段 2020 到 2023 年 n 2112,基準線 +0.124R(sd 0.045),照規則只有 +0.005R,輸給隨機 2.62 個 sd。

val(樣本外驗證段)是 2020 到 2023 年,隨機亂進場的毛期望值是 +0.124R,多頭把水位抬起來了。照規則做,只有 +0.005R。

規則把人擋在好機會外面的次數,多過它擋掉壞機會的次數。

再加上台股來回 0.571% 的摩擦(含 0.3% 的證券交易稅),淨值是每筆 −0.4R。

錯了三次,都錯在對照組

下面的 sd 是標準差,三次錯判依序是:

  • 「毛優勢是正的,摩擦是主因」:沒有對照組,把賺賠比結構的效果當成訊號。
  • 「+1.59 sd,第一次高於基準線」:基準線用全期間算,val 剛好是大多頭段,結果被系統性高估。
  • 「+0.49 sd,在雜訊內」:樣本只有 268 檔,val 基準線的 sd 高達 0.070。

基準線期間沒對齊、樣本太小,這兩個錯誤彼此獨立,卻剛好往同一個方向偏,疊起來讓負的結果看起來像正的。

到 1026 檔、基準線分段計算,樣本和方法才對得上。

流程圖:第一次看到毛優勢為正、以為摩擦是主因,錯在沒有對照組;第二次 +1.59 sd,錯在基準線用全期間算;第三次 +0.49 sd,錯在只有 268 檔、val 基準線 sd 高達 0.070;最終版用 1026 檔、基準線分段計算,結果是 −2.62 sd。

最該留下的一條:基準線一定要跟被比較的區間同期間算。

train/val 分割防的是過擬合,隨機對照組防的是把市場漂移當成自己的本事,這次後者更關鍵。

回測證明不了的事

機械化只涵蓋能寫成條件的部分。

這位創作者在直播裡有一半以上的時間在做主觀否決:這張圖不喜歡、這個位置有點尷尬、今天在忙就沒做。這些回測不了,也不代表不存在。

所以我的結論是規則層面沒有東西,不是他的方法無效。

holdout 從頭到尾沒有動用。同一天我把整個研究平台刪了,裸K 的程式還沒 commit,沒有留下,這篇是照當時的筆記寫的。

#回測#裸K#台股#量化交易

留言

載入留言中…

下一篇

工程

Next.js 靜態匯出,Google 只看到 spinner?多語系預渲染與 robots.txt 索引修正

Next.js 靜態匯出的官網,Google 爬到的 HTML 只有 spinner,多語系頁面只認得英文版。改成依網址決定語言、build 時把文案寫進 HTML,再修掉 robots.txt 造成的兩個索引問題。