蒙地卡羅回測:你真正的最大回撤大概更深
回測報表上的最大回撤,只是同一批交易的一種順序,而且通常是比較好看的那一種。蒙地卡羅回測把這些交易用其他數千種順序重播一遍。部位大小要看這個分布的第 95 百分位,不是報表上那個數字。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
什麼是蒙地卡羅回測?為什麼我真正的最大回撤大概更深?
蒙地卡羅回測是把一次跑完的回測裡的已平倉交易,用不同的隨機順序重播數千次,記下每次重播的最大回撤。報表上的回撤只是這數千種順序的其中一種,而且通常是比較好看的一種。部位大小要看重播結果的第 95 百分位,不是報表上那個數字。
最大回撤是權益曲線從高點跌到其後最低點的最大跌幅,算到創新高為止。它看的是交易的順序,不是交易的總和。同樣的數字換個順序相加,總和不變,但從起點到終點的路徑不一樣。虧損交易剛好分散在整段歷史裡,報表上的回撤就小;剛好擠在一起,回撤就大。這兩種歷史你會拿到哪一種,策略決定不了。市場只走過一次,報表給你看的就是那一次的結果。
報表上的回撤通常偏好看,原因很簡單:會出現在你螢幕上的策略,本來就有一部分是因為報表漂亮才被挑出來,而回撤小正是漂亮的一部分。過去虧損擠得很嚴重的策略,多半還沒人細看就被淘汰了。所以你手上研究的這些倖存策略,報表上的回撤平均來說,都落在同一批交易可能走出的結果裡比較好看的那一端。重新排列(下面簡稱重排)之後,就看得出它落在哪裡。你可以把自己的清單貼進免費蒙地卡羅模擬器,一分鐘內就能看到分布;如果平台沒有列出回撤,回撤計算機可以從權益序列算出報表上的那個數字。
假設範例
六筆交易:+3、+2、−2、+4、−3、+1。照這個順序,權益是 3、5、3、7、4、5。高點 7,之後的低點 4,最大回撤是 3。現在把虧損排到前面:−3、−2、+3、+2、+4、+1。權益變成 −3、−5、−2、0、4、5,從 0 跌到 −5 才回升,最大回撤是 5。兩種順序最後都是 +5,總和沒變,回撤卻多了三分之二。
什麼是蒙地卡羅模擬?什麼時候發明的?
蒙地卡羅模擬是用來估計難以直接算出的數值:隨機抽樣很多次,再看結果分散的情形。這個方法在 1949 年由 Nicholas Metropolis 與 Stanisław Ulam 發表成論文。放到交易上,你想知道的數值是同一批交易換個順序可能走出多大的回撤,而隨機抽的就是順序本身。
舉個日常的例子:想知道兩顆骰子加起來是七的機率,可以直接算,也可以擲一千次再數。後者就是蒙地卡羅模擬。它給的不是一個精確答案,而是一個次數統計,擲得越多越穩定。名稱來自摩納哥蒙地卡羅的賭場,因為這個方法靠的就是反覆的隨機抽取,跟賭局一樣。
原始論文背後的物理,交易者不必懂。帶得過來的是做法本身:精確答案算不出來時,就模擬大量隨機情況,再把結果彙整起來。在交易上主要用在三件事:
- 同一策略的交易換個順序,可能走出的最大回撤範圍;
- 放回式抽取交易時的期末餘額範圍,這時有些交易會出現兩次,有些完全不出現;
- 模擬路徑中碰到虧損底線的比例,這就是實務上的破產風險。
所以交易裡的蒙地卡羅分析,處理的是路徑,不是優勢。它把交易當成既定事實,只問同一批交易可能讓你多難受。單一條回測曲線為什麼藏得住這件事,是權益曲線模擬器指南的主題,它從同樣的角度看單一條曲線。
蒙地卡羅模擬怎麼套用在回測上:重排、重抽樣、成交變差,還是隨機起始 K 棒?
回測裡有四種不同的做法都叫蒙地卡羅,回答的是四個不同的問題。最常見的混淆就出在把它們混為一談:兩種的總獲利不變,兩種會變;兩種直接用跑完的交易清單,兩種必須重跑回測。
| 變體 | 重排 | 放回式重抽樣 | 成交變差 | 隨機起始 K 棒 |
|---|---|---|---|---|
| 改變什麼 | 已平倉交易的順序 | 抽中哪些交易;有些兩次,有些一次也沒有 | 成交價變差 1 至 3 個跳動點,或略過一部分交易 | 第一次允許進場的時間隨機延後幾根 K 棒 |
| 總獲利 | 不變 | 會變 | 會變 | 會變 |
| 要不要重跑回測 | 不用 | 不用 | 要 | 要 |
| 回答的問題 | 回撤最深可能到哪裡? | 餘額最後會不會跌破零? | 成交變差後優勢還在嗎? | 結果是不是靠某個幸運的起點? |
重排。每筆已平倉交易都只用一次,排成新的隨機順序。每次跑出來的期末餘額都一樣,因為加法不管順序。變的只有路徑,最大回撤和最長連虧也跟著變。本文後面談回撤,用的都是這一種。
放回式重抽樣。新清單的每個位置都從原始交易裡抽,抽出的交易放回去,可以再被抽中。新清單長度不變,但有些交易出現兩次,有些完全沒出現。這時期末餘額也會變,所以你可以數有幾次跑出來的期末餘額低於零。
成交變差。故意把成交做差,例如每次隨機加 1 到 3 個跳動點的滑價,或隨機略過一部分交易。只要動到價格或成本,每次模擬都得重跑回測,比打亂一份清單慢得多。起點本來就含成本時,數字更有意義:AlphaPrime(Valynox)的回測每次評估都計入手續費與滑價,並以下一根 K 棒成交,所以成交變差的模擬是從淨績效出發,不是從毛績效。
隨機起始 K 棒。第一次允許進場的時間隨機延後幾根 K 棒,回測從那裡開始跑。一個突破系統如果只有從某個星期一開始才有那個成績,等於告訴你這個成績屬於那個星期一,不屬於規則。
拔靴法(bootstrapping)算蒙地卡羅方法嗎?
算。拔靴法是從自己的資料裡放回式抽樣很多次,用來估計某個統計量可能變動多少;由 Bradley Efron 在 1979 年正式提出。用在交易清單上,它就是上面講的放回式重抽樣,也是會讓期末餘額變動的那一種蒙地卡羅。
最好懂的比喻是發牌:重排是把同一副牌換個順序發,每張牌都只看到一次。拔靴法是抽一張、記下來、放回去,再抽一張。抽滿跟牌數一樣的次數後,有些牌記了兩次,有些一次也沒記到。如果記兩次的是你最大的獲利交易,這次重抽樣的結果就比原始回測高;如果是最大的虧損交易,就比較低。所以重抽樣的分布會有一段期末餘額的範圍,重排則只有一個數值。
在本文後面的 NQ 實測裡,原始回測最後是賺錢的,但重抽樣仍有 17% 的次數以虧損收場。這個數字不是對策略的預測。它的意思是:這 98 個月的結果裡,如果有幾個好月份沒出現、有幾個壞月份出現兩次,大約每六次就有一次最後是虧的。
拔靴法在短清單上有個弱點。只有 60 筆交易時,少數幾筆大賺的交易就撐起大部分獲利。重抽樣時,其中一筆可能被抽到兩次,另一筆一次也沒抽到,期末餘額的擺動因此遠大於策略真實的不確定性。這時期末餘額的分散程度,反映的更多是清單長度,不是交易本身。所以下面談交易筆數時,重抽樣要求的筆數比重排多。
怎麼對回測跑蒙地卡羅模擬?
匯出已平倉交易或每月結果,選重排或重抽樣,用固定種子跑幾百到 10,000 種順序,記下每種順序的最大回撤,再讀百分位數。百分位數是指有多少比例的模擬結果落在這個值以下;第 95 百分位回撤,就是每 100 種模擬順序裡有 95 種沒有超過的數字。
- 匯出清單。多數平台都能從回測報表複製交易明細或每期結果。每筆已平倉交易一個數字就夠:扣掉手續費與滑價後的淨損益金額。每月結果也能用,但得到的是月底回撤,真正的月內回撤會更深。
- 選變體。想知道手上這批交易的回撤範圍,用重排;還想看期末餘額可能怎麼變,用重抽樣。交易筆數夠的話兩個都跑,它們回答的問題不同。
- 設定次數與固定種子。種子是亂數產生器的起始數字;種子固定,同一份清單跑兩次結果就一樣,你和同事可以互相核對。幾百次就看得出分布的形狀,10,000 次則讓第 95 百分位穩定到最後幾個百分比。
- 記下每種順序的最大回撤。每個模擬順序都算出累積權益、追蹤累積高點,留下從高點回落的最大幅度。每次模擬就留這一個數字。
- 讀中位數、第 95 百分位,以及碰到停損底線的比例。把收集到的回撤排序。正中間的值是中位數;每 100 個裡排第 95 的值是第 95 百分位。再數有幾次回撤超過你會停掉這支策略的虧損金額,這個比例就是這個口數下實務上的破產風險。
第一節連結的免費模擬器,貼上清單就能做完這五步並列出百分位數。想看每個中間數字的話,Excel 蒙地卡羅模擬那篇用 RAND 與 SORTBY 一步步手動建出同樣的流程,每種模擬順序佔一欄。手動做過一次很值得,之後你就清楚任何軟體裡的百分位到底是什麼意思。
蒙地卡羅回測需要多少筆交易?
已平倉交易不到 100 筆,分布的精確是假象;100 到 200 筆,只看中位數;超過 200 筆,第 95 百分位才夠穩,可以拿來決定帳戶大小。重抽樣要的筆數比重排多,因為它被大賺交易牽著走的弱點,在短清單上更嚴重。
| 已平倉交易筆數 | 怎麼做 | 為什麼 |
|---|---|---|
| 不到 100 | 不要跑,先取得更多資料 | 回撤主要由四、五筆大虧決定。打亂 60 筆交易,問的其實只是那五筆湊在一起會怎樣,直方圖卻把這一個問題畫成看似精確的分布。 |
| 100 到 200 | 只看中位數 | 分布中段穩定;尾端還是會被少數幾筆交易牽動。多一筆大虧,第 95 百分位就可能大幅改變。 |
| 超過 200 | 用第 95 百分位決定部位大小 | 沒有單一筆交易能主導尾端。第 95 百分位會穩定下來,換種子也變動不大。 |
這些數字是實務經驗法則,不是定理。重點是:直方圖的平滑來自模擬次數,裡面的資訊量來自交易筆數。40 筆交易重排 10,000 次,畫出來的曲線很漂亮,資訊卻幾乎沒有。
原油週線的慢速系統,十年也跑不出 200 筆已平倉交易,而且沒有更好的工具可以解決。即使如此,在筆記上寫「交易筆數不足」,還是比印出一個只靠 40 筆算出來的第 95 百分位回撤、再拿它決定帳戶大小來得好。下一節的實測用的是 98 筆每月結果,不是單筆交易;每月數字比單筆交易平滑,所以那裡的中位數有參考價值,文中也因此把月底回撤當成下限,而不是全貌。依照上面的筆數規則,98 筆算短,所以那裡的第 95 百分位是用來示範怎麼讀分布,不是這支策略決定部位大小的依據。
分布怎麼讀:中位數、第 95 百分位與最差情況?
中位數是最誠實的預期,第 95 百分位是決定部位大小的數字,最差的一次主要反映你跑了多少次模擬。下面的 NQ 實測把這三個數字和報表印出的回撤並排列出。
資料來源:AlphaPrime 代管回測(ap_backtest 連接器),執行日期 2026-10-31
| 指標(NQ 60 分鐘,2018-09 至 2026-10) | 結果 |
|---|---|
| 回測報表中的最大回撤,期間內 | $82,636 |
| 以月底權益計算的最大回撤,即實際發生時的順序 | $71,435 |
| 10,000 次重新排列順序的中位數 | $95,926 |
| 重新排列順序的第 95 百分位數 | $151,360 |
| 最差的重新排列順序 | $258,016 |
| 比真實順序更差的重新排列順序 | 87% |
| 放回式重抽:最後低於零的次數比例 | 17% |
代管回測回傳的是月度結果,而不是單筆交易,因此這裡的回撤是月底數字,實際的月內回撤會更深。上漲的市場也包含在這些結果之中;重新排列無法把它移除。

表格由上往下看。報表印出的期間內最大回撤是 $82,636。改用月底權益、照各月實際發生的順序算,回撤是 $71,435;重排要比的是這個數字,因為重排移動的是月份,不是交易。10,000 種重排順序裡,有 87% 的月底回撤比真實順序更深。每八種其他順序,大約就有七種比真實順序難看。整篇文章的主張就是這一句:報表背後的那個順序,是比較好看的一個。
| 數字 | NQ 實測值 | 怎麼用 |
|---|---|---|
| 真實順序(月底) | $71,435 | 只是一個樣本,不要拿來決定部位大小。 |
| 重排的中位數 | $95,926 | 誠實的預期:一半的順序比這更差。 |
| 第 95 百分位 | $151,360 | 決定部位大小的數字:20 種順序有 19 種沒超過。 |
| 最差的一次 | $258,016 | 主要反映模擬次數,不要拿它來規劃帳戶。 |
中位數 $95,926 比真實順序的月底數字深約三分之一,第 95 百分位 $151,360 則是它的兩倍多。換個尺度看,NQ 每點每口 $20,所以第 95 百分位回撤在一口上大約是七千五百個指數點;期貨合約計算機可以把這些美元金額換回點數與跳動點。交易所可能調整合約價值,以 CME 合約頁面為準。
最差的一次 $258,016,是唯一不該拿來當錨點的數字。一般經驗是(這不是這次實測量出來的)中位數與第 95 百分位跑個幾百次就穩定,從一千次到 10,000 次幾乎不動。最差值正好相反:每多跑一批模擬,都有一點機會出現新的、更極端的順序,所以跑得越多,最差值就越往外跑。它量的是你的耐心,不是策略。想要保守一點的尾端數字,就看第 99 百分位,它一樣會穩定下來。
解讀這次實測要記得兩個限制。第一,這些是月底數字:月內權益跌得比月底數字更深,所以表中每個月底回撤都是下限。第二,NQ 在 2018 到 2026 年間上漲,這段漲勢就在 98 個月的結果裡。重排可以搬動月份,拿不掉裡面的漲勢。只做多的策略在上漲的指數上,10,000 種順序每一種都吃到這份順風。
怎麼用第 95 百分位決定部位大小?
先定好回撤到多少美元你就停掉策略,確認第 95 百分位回撤加上保證金放得進帳戶,再把碰到停損底線的模擬比例,當成這個口數下實務上的破產風險。停損底線是從起始餘額算起、你會關掉策略的虧損金額;要在第一筆實單之前就定好,不是等第一次回撤來了才決定。
一口的帳戶由三塊組成。最下面是原始保證金,由交易所訂定,也可能調整;目前的數字以交易所合約頁面為準。中間是重排得到的第 95 百分位回撤,依你打算交易的口數換算成美元。最上面是緩衝,用來吸收月底或出場數字藏起來的期間內回撤,以及行情不好那天吃到的滑價。這三塊放不進你實際的帳戶,答案是減少口數或換小一點的合約,不是縮小緩衝。
破產風險是賠掉帳戶某個比例的機率。經典公式用勝率、賺賠比與每筆風險,破產風險計算機可以直接算出這個數字。蒙地卡羅的版本更具體:10,000 種模擬順序裡,有幾種碰到你的停損底線?這個比例就是這支策略在這個口數下實務上的破產風險,來自你自己的交易,不是公式的假設。口數加倍,分布裡每個回撤都跟著加倍,碰到固定停損底線的比例會快速上升;當問題是一口 ES 還是兩口微型 E-mini 時,看這個比例比看夏普比率有用得多。
假設範例
某策略做一口,重排後的第 95 百分位回撤是 $30,000。這個例子裡,該合約的原始保證金是 $12,000。交易者再加 $8,000 緩衝,應付持倉中的回撤與糟糕的成交,所以一口的帳戶是 $50,000。停損底線設在 $35,000,虧到這裡就關掉策略。重排結果中,10,000 種順序有 300 種回撤超過 $35,000,所以一口的實務破產風險是 3%。做兩口時,每個回撤都加倍;換算回一口的尺度,只要回撤超過 $17,500 的順序都會碰到停損底線,在這個例子裡超過三分之一。兩口需要的大約是兩倍的帳戶,不是同樣的帳戶多一點希望。
蒙地卡羅分析解決不了什麼:同樣的交易、同樣的市場、過度最佳化?
每次模擬用的都是回測自己的交易,所以曲線擬合的策略一樣會畫出整齊的分布,而它背後的優勢可能根本不存在。過度最佳化是指規則或參數一直調到貼合過去資料的雜訊,回測量到的是擬合得多好,不是規則碰到新資料會怎樣。重排抓不到這件事,因為每次重排都繼承同樣的交易和同樣的運氣。
這種失敗很常見。從數萬種變體挑出最好的一個策略,有人跑了重排,第 95 百分位回撤看起來可以接受,就說它通過驗證了。挑選造成的偏差直接穿過這個檢驗,因為檢驗從來沒問過這些交易從哪裡來。Bailey、Borwein、López de Prado 與 Zhu 在 2014 年指出,從許多次試驗挑出最佳回測,即使每次試驗都沒有優勢,預期結果也會被灌高;對這個最佳回測跑一次蒙地卡羅,完全看不出這種灌水。策略生成的過度最佳化與平減夏普比率兩篇文章,說明怎麼依你試過的變體數量做修正。
重排拿不掉的第二件事,是交易裡面的市場。上面的 NQ 結果來自上漲的指數,而且只做多。10,000 種順序每一種都包含同一段漲勢,只是先後不同。多頭市場算出來的蒙地卡羅分布,就是多頭路徑的分布。同樣的規則碰到資料裡沒有的盤整或下跌行情會怎樣,它什麼也說不了。
「這個優勢是真的嗎?」要用規則沒看過的資料來回答。推進分析在一段區間上調整規則,再原封不動拿到下一段區間測試,所以每一筆樣本外交易用的都是資料出現前就選好的設定。整個研究過程都沒碰過的保留 K 棒,會在最後再問一次同樣的問題。其他穩健度測試方法,例如參數鄰域與提高成本,測的是結果是否依賴某個精確設定。蒙地卡羅不屬於這些。它是在優勢已經由別的方法檢驗過之後,用來量路徑風險的。
蒙地卡羅該在推進分析之前跑,還是之後跑?
之後。蒙地卡羅是替倖存策略量風險,不是用來挑策略。只對已通過推進分析與保留 K 棒的策略跑,前面沒過,後面就不用做。
這個順序有成本和意義兩個理由。重排一份清單很便宜,但成交變差與隨機起始 K 棒每次模擬都要重跑回測,硬體再快也不便宜,花在已經沒過推進分析的策略上就是浪費。意義上的理由更強:替一個優勢沒驗過的策略算回撤分布,只是把一個任何部位都不該承擔的風險描述得很精確。下面這個流程把兩個問題分開。
- 策略生成從規則與參數範圍產生候選策略。
- 基本篩選剔除交易筆數太少,或平均每筆損益低於成本的候選策略。
- 推進分析測試在過去區間重新調整後的結果,在接下來的區間是否還站得住;詳細步驟見推進最佳化一文。
- 保留 K 棒是前面每個步驟都沒用過的資料,最後再問一次同樣的問題。
- 對倖存策略跑蒙地卡羅:重排看回撤範圍,重抽樣看期末餘額。
- 部位大小依第 95 百分位、保證金與你的停損底線決定。
在第 3 步或第 4 步沒過的候選策略就到此為止,不跑蒙地卡羅。AlphaPrime 的策略檢驗依你選的門檻做推進分析,候選策略前面的檢查沒過就停掉後面的檢查,跟這個流程對蒙地卡羅的要求是同一種紀律。不管用哪套軟體,規則都一樣:蒙地卡羅只看倖存者。
如果今天就要開始,拿出你最好的策略,數它的已平倉交易筆數。不到 100 筆,先停下來,取得更多資料再談重排。超過 200 筆,就跑重排,看第 95 百分位回撤對你實際的帳戶會造成什麼影響。如果報表上的回撤跟上面的 NQ 實測一樣落在分布裡好看的那一端,你就知道了報表自己講不出來的那件事。
常見問題
白話來說,什麼是蒙地卡羅回測?
把回測已經產生的交易,用不同的隨機順序重播數千次。每次重播的總獲利相同,最大回撤卻不同。這些回撤分散的情形,告訴你報表上的那個順序有多好看或多難看,而分布的第 95 百分位,就是決定部位大小的數字。
蒙地卡羅回測和推進分析是同一回事嗎?
不是。蒙地卡羅用其他順序或較差的成交重播手上的交易,量的是路徑風險。推進分析是在規則沒調整過的資料上測規則,驗的是優勢存不存在。先跑推進分析,通過的策略才跑蒙地卡羅。
蒙地卡羅模擬要跑幾次?
幾百次重排就看得出回撤分布的形狀,10,000 次能讓中位數與第 95 百分位穩定下來。再多跑,變的只有最差情況,它會繼續往外跑。增加交易筆數比增加模擬次數有用得多。
該重排交易,還是放回式重抽樣?
想知道手上交易的回撤範圍就重排,因為總獲利固定,只有路徑會變。還想讓期末餘額變動,例如數有幾次最後低於零,就用放回式重抽樣。交易清單短時,重抽樣會放大少數幾筆大賺交易的影響,所以需要更多交易。
蒙地卡羅結果好,代表策略有效嗎?
不代表。曲線擬合的策略一樣會畫出平滑的蒙地卡羅分布,因為每次都重複用它那些幸運的交易。分布也把測試期間的市場條件(例如上漲的指數)留在每一次模擬裡。先用保留資料測試策略,再用蒙地卡羅決定帳戶大小。
參考文獻
- Metropolis, N., & Ulam, S. (1949). The Monte Carlo Method. Journal of the American Statistical Association, 44(247), 335–341.
- Efron, B. (1979). Bootstrap Methods: Another Look at the Jackknife. The Annals of Statistics, 7(1), 1–26.
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- CME Group. E-mini Nasdaq-100 Futures contract specifications(合約規格:合約乘數 $20 × 指數,最小跳動點 0.25 指數點 = $5.00)。cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html

