原版最有特色的工具,是在下單前把同一筆交易模擬一萬次。台股版加上了一件原版沒做的事:扣掉手續費和證交稅。結果很直接:一個不算成本時「接近擲銅板」的計畫,扣掉成本就變成偏向虧錢。
跟著 Claude 把美股當沖 skill 改成台股版・第 8 篇
Time Machine 台股版:把交易成本算進去之後,勝率還剩多少?
原版最有特色的工具,是在下單前把同一筆交易模擬一萬次。台股版加上了一件原版沒做的事:扣掉手續費和證交稅。結果很直接:一個不算成本時「接近擲銅板」的計畫,扣掉成本就變成偏向虧錢。
1. 這一篇會做什麼
第 7 篇的例子剛好碰到停利,但一天的結果說明不了什麼。這一篇要回答的問題是:同樣的計畫重複做很多次,平均起來會怎樣?
- 進場判斷第 7 篇
- 停損停利第 4 篇
- Time Machine本篇
- 張數+風控第 4、5 篇
小辭典
- 模擬
- 用過去的資料拼湊出很多種「今天剩下的時間可能怎麼走」,看結果的分布。不是預測。
- R
- 以「1 張停損出場會虧多少」當作 1 個單位。+1R 代表賺到和停損一樣多,−1R 代表停損出場。
- 損益兩平勝率
- 要贏幾成才不賠錢。報酬風險比 1:1 要贏 50%,2:1 只要贏 33.3%。
- seed(隨機種子)
- 讓隨機抽樣可以重現的數字。同樣的 seed,任何人跑都得到同樣的結果。
2. 原版的 Time Machine 怎麼運作
原版的想法很巧妙,分成兩部分:
方法 1
一萬次模擬
從進場那一刻開始,接下來的每一根 5 分 K,都從這檔股票過去 60 天「同一個時段」隨機抽一根,依漲跌比例接上去。重複一萬次,統計先碰到停利、先碰到停損、都沒碰到的比例。
方法 2
真實歷史
把同一套規則(開盤區間、停損放哪、停利幾倍)在過去 60 天每一天重跑一次,看實際發生了什麼。這不是模擬,是真的發生過的結果。
「同一個時段」很重要:台股開盤後半小時和中午的波動完全不同,從同時段抽,模擬出來的走勢才像真的。
原版的範例是 2026 年 10 月 19 日的特斯拉,1R 停利、不算成本:先停利 29.4%、先停損 25.5%、都沒碰到 45.1%,結論是「接近擲銅板」。這是原版很誠實的地方。
3. 台股版改了什麼
我對 Claude 說:
開始開發第四階段:Time Machine 台股版。用 FinMind 的 1 分 K,抽樣過去 60 個交易日,模擬 10,000 次並重跑歷史。
這次一定要把手續費和證交稅算進去,而且把「扣成本」和「不算成本」兩個結果並列,讓人看到差別。
| 項目 | 原版(美股) | 台股版 |
|---|---|---|
| 資料 | Yahoo 60 天 5 分 K | FinMind 1 分 K 合成 5 分 K(每天一次請求,存起來不再重抓) |
| 完整交易日 | 78 根 5 分 K | 53 根連續交易 5 分 K 都在;停牌、處置分盤的日子不算 |
| 價格範圍 | 不限 | 限制在當日漲跌停之間 |
| 模擬到幾點 | 收盤 16:00 | 平倉時間 13:20(台股 13:25 起是收盤集合競價) |
| R 怎麼算 | 只看價差 | 1R = 1 張停損出場的總虧損(含手續費、證交稅) |
| 判斷 | 一個 | 扣成本、不算成本兩個並列 |
保留原版的保守規則:同一根 K 棒同時碰到停損和停利,算停損;跳空跌破停損仍算 −1R(實際成交可能更差)。
4. 跑一次:2409 的 2R 計畫
用第 7 篇的那筆交易:2409 在 11 月 12 日 09:20 以 29.0 進場,停損 28.45(開盤區間中點),停利 30.1(2R),手續費 6 折、現股當沖。
2409 做多,2026-11-12:進場 29(09:20)、停損 28.45、停利 30.1。
10,000 次模擬剩下的時段(09:20 到 13:20,48 根 5 分 K),seed 19。
每一根都從過去 60 個完整交易日(2026-08-13 ~ 2026-11-11)同一時段前後 2 根中隨機抽取;價格限制在漲跌停之間。
先停利 14.0 %
先停損 53.6 %
都沒碰到 32.4 % 到 13:20 仍未出場
扣成本後賺錢 33.8 %
都沒碰到的模擬,13:20 的價格:中位數 29.21,90% 落在 28.66 ~ 29.83。
平均 R:扣成本 -0.250,不算成本 -0.125(1R = 1 張停損出場虧 640 元,含成本)
真實歷史:同一套規則在這 60 個交易日中觸發 29 次:停利 5、停損 8、都沒碰到 16。平均 R:扣成本 -0.076,不算成本 +0.086。
扣掉成本:明顯偏向停損(碰到一邊的模擬中,先停利占 20.7%;扣成本後要 38.9% 才能打平)。
不算成本:偏向停損(要 33.3% 才能打平)。
一萬次模擬只花了約 2 秒。第一次執行要下載 60 天的分鐘資料(約 16 秒),之後都存在電腦裡,每次約 1 秒。
5. 怎麼讀這些數字
不要只看「先停利 14%」
停利 2R 的計畫,本來就不需要贏一半。賺的時候賺 2 倍,所以只要碰到一邊的情況中,有 1/3(33.3%)是先停利,不算成本就能打平。這就是「損益兩平勝率」:
損益兩平勝率 = 1 ÷(1 + 報酬風險比)
1:1 要 50%;2:1 要 33.3%;3:1 要 25%。扣掉成本後,報酬風險比會變小(2R 變成 1.57),所以要求的勝率會變高(33.3% 變成 38.9%)。
這次的判斷
| 需要的先停利比例 | 模擬實際得到 | 判斷 | |
|---|---|---|---|
| 不算成本 | 33.3% | 20.7% (14.0 ÷ (14.0+53.6)) | 偏向停損 |
| 扣成本 | 38.9% | 明顯偏向停損 |
差距小於 5 個百分點算「接近損益兩平」,5~15 是「偏向」,15 以上是「明顯偏向」。
都沒碰到的 32.4%
將近三分之一的模擬,到 13:20 停利停損都沒碰到,最後以平倉時的價格出場(中位數 29.21,略高於進場價)。這些交易的結果,會反映在「平均 R」裡。
平均 R 是最終的總結
平均 R = 把所有結果平均。扣成本 −0.250R,代表平均每做一次,虧掉停損金額的四分之一(以 1 張計約 160 元)。
6. 成本把擲銅板變成虧錢
把停利改成 1R(停利距離和停損一樣),再跑一次:
| 2R 計畫 | 1R 計畫 | |
|---|---|---|
| 先停利/先停損/都沒碰到 | 14.0%/53.6%/32.4% | 41.3%/48.8%/9.9% |
| 真實歷史(29 次觸發) | 停利 5、停損 8、沒碰到 16 | 停利 9、停損 8、沒碰到 12 |
| 平均 R(模擬)不算成本/扣成本 | −0.125/−0.250 | −0.079/−0.210 |
| 不算成本的判斷 | 偏向停損 | 接近損益兩平 |
| 扣成本的判斷 | 明顯偏向停損 | 偏向停損(要贏 58.3%) |
1R 計畫的那一欄,就是這整個系列最想讓你看到的事:
- 不算成本:接近擲銅板。這也是原版範例的結論,看起來好像「不賺不賠」。
- 扣掉成本:偏向虧損。每次來回的手續費和證交稅,讓 1:1 的計畫要贏到 58.3% 才能打平。
真實歷史也一樣:2R 計畫在過去 60 天實際觸發 29 次,平均 R 不算成本是 +0.086(看起來小賺),扣成本後是 −0.076(其實小賠)。正負號直接翻過來。
如果只用原版,你會看到什麼?
原版不算成本,所以你會看到「接近擲銅板」或「歷史平均小賺」,然後覺得可以試試看。台股版把成本放進來,才看得出這個策略在台股可能是一個長期穩定虧小錢的方法。這不是原作者的錯,而是美國券商幾乎零手續費、也沒有證交稅;規則不同,結論就不同。
7. 那天其實賺錢了
有趣的是,第 7 篇回放的那一天(11 月 12 日),這筆交易在 09:29 就碰到停利,2 張淨賺約 2,000 元。
如果只看那一天,你會覺得「這方法有效」。但 Time Machine 告訴你:那天是 14% 的那一種情況。重複做很多次,更常見的是先碰到停損。
這是我覺得 Time Machine 最有價值的地方:它把「我記得某次賺很多」這種印象,換成「平均起來會怎樣」的數字。人很容易記住賺錢的那一次,卻忘記其他七、八次的停損。
8. 模擬的限制
工具每次都會提醒「這是模擬,不是預測」,具體來說有這些限制:
- 只看過去 60 天。財報、重大消息、處置、鎖漲跌停,都可能做出這 60 天沒有過的事。
- 每根 K 棒獨立抽樣。真實的走勢有慣性(漲了容易再漲),波動也會聚集(大波動常接著大波動),這種隨機抽樣都忽略了。
- 跳空跌破停損仍算 −1R。真實成交可能更差。
- 歷史樣本不多。29 次觸發不算多,結果會受少數幾天影響。
- 只模擬這一檔、這一種計畫。換一檔股票、換一種停損,結論可能完全不同,要各自重跑。
所以正確的用法是當成一道檢查:如果連模擬和歷史都偏向停損,就沒有理由覺得真的做會比較好。反過來,模擬看起來不錯,也不代表一定會賺。
開發小記
這一階段 Claude 寫的 7 個測試第一次就全部通過(前幾個階段常常是 Claude 自己手算的預期值錯了)。另外,用實際連線的資料和離線測試資料各跑一次,數字完全一樣,證明同樣的 seed 真的可以重現結果。
9. 這一步學到的事
01
看平均,不看單日
那天賺錢,是 14% 的那一種。重複做才看得出真相。
02
勝率要和報酬風險比一起看
2R 只要贏 33.3%,1R 要贏 50%;扣成本後都會更高。
03
成本會翻轉結論
擲銅板變偏向虧損,小賺變小賠。看策略一定要看扣成本的數字。
04
模擬是檢查,不是保證
連模擬都不好看就別做;好看也不代表會賺。
你可以照著說的話
有 FinMind Sponsor 方案,就能請 Claude 自己寫一個簡易版(記得要求它扣成本、固定 seed):
用 FinMind 的 1 分 K,抓 2409 在 2026-11-12 之前 60 個交易日的資料,合成 5 分 K。
模擬 10,000 次:從 09:20 以 29.0 進場開始,之後每一根 5 分 K 都從過去同一時段前後 2 根隨機抽一根,按漲跌比例接上去,價格限制在漲跌停之間。
停損 28.45、停利 30.1,同一根碰到兩邊算停損,到 13:20 為止。統計先停利、先停損、都沒碰到的比例。用固定的 seed 19。
同一個模擬,把手續費(0.1425%、6 折、最低 20 元)和當沖證交稅 0.15% 算進去,以 1 張停損出場的總虧損當 1R,列出扣成本和不算成本的平均 R。
停利 2R、扣掉成本後的報酬風險比變多少?損益兩平勝率是多少?
把「開盤 15 分鐘區間突破、停損放區間中點、停利 2R」這套規則,在 2409 過去 60 個交易日每一天重跑,告訴我觸發幾次、停利幾次、停損幾次,以及扣成本後的平均 R。
常見問題
結果偏向停損,就代表這檔股票不能做嗎?
代表「這個計畫」在「過去 60 天的走勢」下不划算。換停損位置、停利倍數、進場時間,結果會不同。但不要為了讓結果好看,一直調參數直到符合為止,那只是在配合過去的資料。
為什麼要用固定的 seed?
讓結果可以重現。你、我、任何人用同樣的計畫、資料和 seed,都會得到同樣的數字,方便檢查和比較。
60 天夠嗎?可以用更久嗎?
可以調整天數,但越久以前的走勢,可能越不像現在。60 天是原版的預設,算是「夠近也夠多」的折衷。
沒有 Sponsor 方案怎麼辦?
沒有分鐘資料就無法做這種模擬。不過第 4 篇的「扣成本報酬風險比」和損益兩平勝率,用免費資料就能算,也能先排除一大半不划算的計畫。
台股版的程式可以下載嗎?
台股版還在開發中,暫不提供下載。等整個系列完成後,我會整理好放上 GitHub,並詳細說明安裝與使用方式。在那之前,可以用上面「照著說的話」請 Claude 寫一個簡易版。
進階:給習慣終端機的讀者
python "$R/tw-timemachine/timemachine.py" run # trader/plan.json,10,000 次,seed 19
python "$R/tw-timemachine/timemachine.py" run --write # -> trader/timemachine.json
python "$R/tw-timemachine/timemachine.py" run --replays 20000 --seed 7 --sessions 60 --window 2
python "$R/tw-timemachine/timemachine.py" run --until 13:00 --json
抽樣池:計畫日前 N 個交易日中 53 根連續交易 5 分 K 都完整的日子,每根換算成相對前一根收盤的比例(開、高、低、收)。1R = 1 張停損出場的價差+買賣手續費+證交稅;先停利 = 淨賺 ÷ 淨虧;都沒碰到 = 平倉價出場的淨損益 ÷ 淨虧。判斷門檻:碰到一邊的模擬中先停利比例與 1 ÷(1+報酬風險比)相差 5、15 個百分點。1 分 K 快取在 trader/state/tw_cache/kbar/。
下一篇預告
到這裡,從盤前選股、盤中進場、停損停利、張數、風控到模擬,整條流程都有了,只差最後一步:下單。下一篇會談原版「三道閘門」的設計、台股沒有交易所停損停利單的影響,以及我為什麼決定先只產生委託單、由人親手下單。
本文僅為軟體工具教學與開發經驗分享,不構成任何投資建議。模擬與歷史回測是用過去資料做的計算,不代表未來結果;文中個股僅為示範。當沖風險極高,請自行評估並為自己的交易決策負責。費率與方案以撰文時為準。









