VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 回測與檢驗

蒙地卡羅回測:你真正的最大回撤大概更深

回測報表上的最大回撤,只是同一批交易的一種順序,而且通常是比較好看的那一種。蒙地卡羅回測把這些交易用其他數千種順序重播一遍。部位大小要看這個分布的第 95 百分位,不是報表上那個數字。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 什麼是蒙地卡羅回測?為什麼我真正的最大回撤大概更深?
  2. 什麼是蒙地卡羅模擬?什麼時候發明的?
  3. 蒙地卡羅模擬怎麼套用在回測上:重排、重抽樣、成交變差,還是隨機起始 K 棒?
  4. 拔靴法(bootstrapping)算蒙地卡羅方法嗎?
  5. 怎麼對回測跑蒙地卡羅模擬?
  6. 蒙地卡羅回測需要多少筆交易?
  7. 分布怎麼讀:中位數、第 95 百分位與最差情況?
  8. 怎麼用第 95 百分位決定部位大小?
  9. 蒙地卡羅分析解決不了什麼:同樣的交易、同樣的市場、過度最佳化?
  10. 蒙地卡羅該在推進分析之前跑,還是之後跑?
  11. 常見問題
  12. 參考文獻

什麼是蒙地卡羅回測?為什麼我真正的最大回撤大概更深?

蒙地卡羅回測是把一次跑完的回測裡的已平倉交易,用不同的隨機順序重播數千次,記下每次重播的最大回撤。報表上的回撤只是這數千種順序的其中一種,而且通常是比較好看的一種。部位大小要看重播結果的第 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,總和沒變,回撤卻多了三分之二。

兩條權益曲線,來自相同的六筆範例交易:順序 A 的最大回撤為 3,虧損先出現的順序最大回撤為 5,兩者最終都是 +5 同樣的交易,更深的回撤 六筆範例交易,最終皆為 +5 順序 A 虧損先出 回撤 3 回撤 5 順序決定回撤。 所以:別只信單一順序。
同樣六筆範例交易的兩種順序。總和都是 +5,最大回撤一個是 3,一個是 5。

什麼是蒙地卡羅模擬?什麼時候發明的?

蒙地卡羅模擬是用來估計難以直接算出的數值:隨機抽樣很多次,再看結果分散的情形。這個方法在 1949 年由 Nicholas Metropolis 與 Stanisław Ulam 發表成論文。放到交易上,你想知道的數值是同一批交易換個順序可能走出多大的回撤,而隨機抽的就是順序本身。

舉個日常的例子:想知道兩顆骰子加起來是七的機率,可以直接算,也可以擲一千次再數。後者就是蒙地卡羅模擬。它給的不是一個精確答案,而是一個次數統計,擲得越多越穩定。名稱來自摩納哥蒙地卡羅的賭場,因為這個方法靠的就是反覆的隨機抽取,跟賭局一樣。

原始論文背後的物理,交易者不必懂。帶得過來的是做法本身:精確答案算不出來時,就模擬大量隨機情況,再把結果彙整起來。在交易上主要用在三件事:

  • 同一策略的交易換個順序,可能走出的最大回撤範圍;
  • 放回式抽取交易時的期末餘額範圍,這時有些交易會出現兩次,有些完全不出現;
  • 模擬路徑中碰到虧損底線的比例,這就是實務上的破產風險。

所以交易裡的蒙地卡羅分析,處理的是路徑,不是優勢。它把交易當成既定事實,只問同一批交易可能讓你多難受。單一條回測曲線為什麼藏得住這件事,是權益曲線模擬器指南的主題,它從同樣的角度看單一條曲線。

一份交易明細得到一條權益曲線與一個回撤;將同一份明細以 10,000 種隨機順序重排,則得到回撤的直方圖,此方法由 Metropolis 與 Ulam 於 1949 年提出 一份明細,10,000 條路徑 蒙地卡羅:Metropolis 與 Ulam,1949 一種順序 一個回撤 10,000 種順序 10,000 個回撤 一條曲線掩蓋了分布範圍。 所以:將順序重排多次。
一份清單得到一條曲線、一個回撤。同一份清單抽 10,000 次,得到一張回撤直方圖。方法源自 1949 年的 Metropolis 與 Ulam。

蒙地卡羅模擬怎麼套用在回測上:重排、重抽樣、成交變差,還是隨機起始 K 棒?

回測裡有四種不同的做法都叫蒙地卡羅,回答的是四個不同的問題。最常見的混淆就出在把它們混為一談:兩種的總獲利不變,兩種會變;兩種直接用跑完的交易清單,兩種必須重跑回測。

變體重排放回式重抽樣成交變差隨機起始 K 棒
改變什麼已平倉交易的順序抽中哪些交易;有些兩次,有些一次也沒有成交價變差 1 至 3 個跳動點,或略過一部分交易第一次允許進場的時間隨機延後幾根 K 棒
總獲利不變會變會變會變
要不要重跑回測不用不用要要
回答的問題回撤最深可能到哪裡?餘額最後會不會跌破零?成交變差後優勢還在嗎?結果是不是靠某個幸運的起點?

重排。每筆已平倉交易都只用一次,排成新的隨機順序。每次跑出來的期末餘額都一樣,因為加法不管順序。變的只有路徑,最大回撤和最長連虧也跟著變。本文後面談回撤,用的都是這一種。

放回式重抽樣。新清單的每個位置都從原始交易裡抽,抽出的交易放回去,可以再被抽中。新清單長度不變,但有些交易出現兩次,有些完全沒出現。這時期末餘額也會變,所以你可以數有幾次跑出來的期末餘額低於零。

成交變差。故意把成交做差,例如每次隨機加 1 到 3 個跳動點的滑價,或隨機略過一部分交易。只要動到價格或成本,每次模擬都得重跑回測,比打亂一份清單慢得多。起點本來就含成本時,數字更有意義:AlphaPrime(Valynox)的回測每次評估都計入手續費與滑價,並以下一根 K 棒成交,所以成交變差的模擬是從淨績效出發,不是從毛績效。

隨機起始 K 棒。第一次允許進場的時間隨機延後幾根 K 棒,回測從那裡開始跑。一個突破系統如果只有從某個星期一開始才有那個成績,等於告訴你這個成績屬於那個星期一,不屬於規則。

比較四種蒙地卡羅變體:重排讓損益固定且不需重跑,詢問回撤會有多深;重抽樣讓損益變動且不需重跑,詢問資金最後是否會低於零;成交變差與隨機起點都會讓損益變動並需要重跑,詢問優勢是否能撐過較差成交,或只依賴幸運的起點 四種都叫蒙地卡羅的檢驗 每項各問不同的問題 檢驗 損益 重跑 重排 回撤多深? 固定 否 重抽樣 跌破零? 變動 否 成交變差 撐得過較差成交? 變動 是 隨機起點 只靠幸運起點? 變動 是
四種都叫蒙地卡羅的做法。各自改變不同的東西,回答不同的問題。

拔靴法(bootstrapping)算蒙地卡羅方法嗎?

算。拔靴法是從自己的資料裡放回式抽樣很多次,用來估計某個統計量可能變動多少;由 Bradley Efron 在 1979 年正式提出。用在交易清單上,它就是上面講的放回式重抽樣,也是會讓期末餘額變動的那一種蒙地卡羅。

最好懂的比喻是發牌:重排是把同一副牌換個順序發,每張牌都只看到一次。拔靴法是抽一張、記下來、放回去,再抽一張。抽滿跟牌數一樣的次數後,有些牌記了兩次,有些一次也沒記到。如果記兩次的是你最大的獲利交易,這次重抽樣的結果就比原始回測高;如果是最大的虧損交易,就比較低。所以重抽樣的分布會有一段期末餘額的範圍,重排則只有一個數值。

在本文後面的 NQ 實測裡,原始回測最後是賺錢的,但重抽樣仍有 17% 的次數以虧損收場。這個數字不是對策略的預測。它的意思是:這 98 個月的結果裡,如果有幾個好月份沒出現、有幾個壞月份出現兩次,大約每六次就有一次最後是虧的。

拔靴法在短清單上有個弱點。只有 60 筆交易時,少數幾筆大賺的交易就撐起大部分獲利。重抽樣時,其中一筆可能被抽到兩次,另一筆一次也沒抽到,期末餘額的擺動因此遠大於策略真實的不確定性。這時期末餘額的分散程度,反映的更多是清單長度,不是交易本身。所以下面談交易筆數時,重抽樣要求的筆數比重排多。

有放回重抽八筆交易:抽樣A重複用到大獲利的交易3、跳過交易6,因此終點較高;抽樣B重複用到大虧損的交易7,因此終點較低;重排則每筆各用一次,終點相同 重抽樣會改變終點 交易3為大獲利,7為大虧損 原始 抽樣A 抽樣B 重排 12345678 12334578 13456778 52817364 基準 較高 較低 相同 重複抽取會改變期末餘額。 所以:可用來數以虧損收場的次數。
放回式重抽樣:第 3 筆抽到兩次、第 6 筆沒抽到,期末餘額較高;第 7 筆抽到兩次,期末餘額較低。重排則每筆都只用一次,期末餘額不變。

怎麼對回測跑蒙地卡羅模擬?

匯出已平倉交易或每月結果,選重排或重抽樣,用固定種子跑幾百到 10,000 種順序,記下每種順序的最大回撤,再讀百分位數。百分位數是指有多少比例的模擬結果落在這個值以下;第 95 百分位回撤,就是每 100 種模擬順序裡有 95 種沒有超過的數字。

  1. 匯出清單。多數平台都能從回測報表複製交易明細或每期結果。每筆已平倉交易一個數字就夠:扣掉手續費與滑價後的淨損益金額。每月結果也能用,但得到的是月底回撤,真正的月內回撤會更深。
  2. 選變體。想知道手上這批交易的回撤範圍,用重排;還想看期末餘額可能怎麼變,用重抽樣。交易筆數夠的話兩個都跑,它們回答的問題不同。
  3. 設定次數與固定種子。種子是亂數產生器的起始數字;種子固定,同一份清單跑兩次結果就一樣,你和同事可以互相核對。幾百次就看得出分布的形狀,10,000 次則讓第 95 百分位穩定到最後幾個百分比。
  4. 記下每種順序的最大回撤。每個模擬順序都算出累積權益、追蹤累積高點,留下從高點回落的最大幅度。每次模擬就留這一個數字。
  5. 讀中位數、第 95 百分位,以及碰到停損底線的比例。把收集到的回撤排序。正中間的值是中位數;每 100 個裡排第 95 的值是第 95 百分位。再數有幾次回撤超過你會停掉這支策略的虧損金額,這個比例就是這個口數下實務上的破產風險。

第一節連結的免費模擬器,貼上清單就能做完這五步並列出百分位數。想看每個中間數字的話,Excel 蒙地卡羅模擬那篇用 RAND 與 SORTBY 一步步手動建出同樣的流程,每種模擬順序佔一欄。手動做過一次很值得,之後你就清楚任何軟體裡的百分位到底是什麼意思。

從完成的回測到回撤百分位數的五個步驟:匯出已平倉交易,選擇重排或重抽樣,以固定種子跑 10,000 次模擬,記錄每次的最大回撤,讀取中位數與第 95 百分位數 算出百分位的五個步驟 從完成的回測開始 12345 匯出已平倉交易 選擇重排或重抽樣 以固定種子跑 10,000 次 記錄每次最大回撤 讀取中位數與第 95 百分位
從跑完的回測到回撤百分位,共五個步驟。

蒙地卡羅回測需要多少筆交易?

已平倉交易不到 100 筆,分布的精確是假象;100 到 200 筆,只看中位數;超過 200 筆,第 95 百分位才夠穩,可以拿來決定帳戶大小。重抽樣要的筆數比重排多,因為它被大賺交易牽著走的弱點,在短清單上更嚴重。

已平倉交易筆數怎麼做為什麼
不到 100不要跑,先取得更多資料回撤主要由四、五筆大虧決定。打亂 60 筆交易,問的其實只是那五筆湊在一起會怎樣,直方圖卻把這一個問題畫成看似精確的分布。
100 到 200只看中位數分布中段穩定;尾端還是會被少數幾筆交易牽動。多一筆大虧,第 95 百分位就可能大幅改變。
超過 200用第 95 百分位決定部位大小沒有單一筆交易能主導尾端。第 95 百分位會穩定下來,換種子也變動不大。

這些數字是實務經驗法則,不是定理。重點是:直方圖的平滑來自模擬次數,裡面的資訊量來自交易筆數。40 筆交易重排 10,000 次,畫出來的曲線很漂亮,資訊卻幾乎沒有。

原油週線的慢速系統,十年也跑不出 200 筆已平倉交易,而且沒有更好的工具可以解決。即使如此,在筆記上寫「交易筆數不足」,還是比印出一個只靠 40 筆算出來的第 95 百分位回撤、再拿它決定帳戶大小來得好。下一節的實測用的是 98 筆每月結果,不是單筆交易;每月數字比單筆交易平滑,所以那裡的中位數有參考價值,文中也因此把月底回撤當成下限,而不是全貌。依照上面的筆數規則,98 筆算短,所以那裡的第 95 百分位是用來示範怎麼讀分布,不是這支策略決定部位大小的依據。

已平倉交易數量分為三個區間:不到 100 筆不要跑;100 至 200 筆只看中位數;高於 200 筆使用第 95 百分位數來決定部位大小;重抽樣需要比重排更多的交易 信任度隨交易筆數提高 已平倉交易,而非模擬 低於 100 100–200 高於 200 不要跑 只看中位數 使用第 95 百分位 重抽樣需要更多交易 資訊來自交易。 所以:低於 100 筆,先取得更多資料。
分布能信多少,看的是已平倉交易的筆數,不是模擬次數。

分布怎麼讀:中位數、第 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%

代管回測回傳的是月度結果,而不是單筆交易,因此這裡的回撤是月底數字,實際的月內回撤會更深。上漲的市場也包含在這些結果之中;重新排列無法把它移除。

NQ 60 分鐘,2018-09 至 2026-10,一口。同樣的 98 個月,排列成 10,000 種順序。
NQ 60 分鐘,2018-09 至 2026-10,一口。同樣的 98 個月,排列成 10,000 種順序。 NQ・60 分鐘・2018-09-02 至 2026-10-14・AlphaPrime 回測

表格由上往下看。報表印出的期間內最大回撤是 $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 百分位,它一樣會穩定下來。

示意回撤直方圖,分別為一百次、十倍次數與一百倍次數的隨機重排:中位數與第 95 百分位的標記位置不變,而最差的一次每次都更往右移 最差的一次還在往外跑 同樣的交易,更多模擬 次數 中位數 第95 最差 → 100 ×10 ×100 中位數與第 95 百分位很快穩定。 所以:別拿最差的一次當錨點。
模擬越多,中位數與第 95 百分位越穩。最差的一次則持續往外跑,因為每批新模擬都可能跑出新的極端值。

解讀這次實測要記得兩個限制。第一,這些是月底數字:月內權益跌得比月底數字更深,所以表中每個月底回撤都是下限。第二,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 百分位回撤與緩衝金額組成;旁邊是回撤直方圖與停損底線,超出底線的情況即為實務上的破產風險 帳戶分為三大區塊 示意圖,單口 緩衝 95 百分位回撤 保證金 停損底線 破產風險 保證金 + 95 百分位 + 緩衝 = 帳戶。 所以:帳戶太小?減少口數。
帳戶大小 = 保證金 + 第 95 百分位回撤 + 緩衝。超過停損底線的模擬比例,就是這個口數下實務上的破產風險。

蒙地卡羅分析解決不了什麼:同樣的交易、同樣的市場、過度最佳化?

每次模擬用的都是回測自己的交易,所以曲線擬合的策略一樣會畫出整齊的分布,而它背後的優勢可能根本不存在。過度最佳化是指規則或參數一直調到貼合過去資料的雜訊,回測量到的是擬合得多好,不是規則碰到新資料會怎樣。重排抓不到這件事,因為每次重排都繼承同樣的交易和同樣的運氣。

這種失敗很常見。從數萬種變體挑出最好的一個策略,有人跑了重排,第 95 百分位回撤看起來可以接受,就說它通過驗證了。挑選造成的偏差直接穿過這個檢驗,因為檢驗從來沒問過這些交易從哪裡來。Bailey、Borwein、López de Prado 與 Zhu 在 2014 年指出,從許多次試驗挑出最佳回測,即使每次試驗都沒有優勢,預期結果也會被灌高;對這個最佳回測跑一次蒙地卡羅,完全看不出這種灌水。策略生成的過度最佳化與平減夏普比率兩篇文章,說明怎麼依你試過的變體數量做修正。

重排拿不掉的第二件事,是交易裡面的市場。上面的 NQ 結果來自上漲的指數,而且只做多。10,000 種順序每一種都包含同一段漲勢,只是先後不同。多頭市場算出來的蒙地卡羅分布,就是多頭路徑的分布。同樣的規則碰到資料裡沒有的盤整或下跌行情會怎樣,它什麼也說不了。

「這個優勢是真的嗎?」要用規則沒看過的資料來回答。推進分析在一段區間上調整規則,再原封不動拿到下一段區間測試,所以每一筆樣本外交易用的都是資料出現前就選好的設定。整個研究過程都沒碰過的保留 K 棒,會在最後再問一次同樣的問題。其他穩健度測試方法,例如參數鄰域與提高成本,測的是結果是否依賴某個精確設定。蒙地卡羅不屬於這些。它是在優勢已經由別的方法檢驗過之後,用來量路徑風險的。

眾多變體中最好的那個把交易送進 10,000 次重排,畫出整齊的直方圖,但每次都帶著同樣的運氣;只有未見過的資料,透過推進分析與保留 K 棒,才能檢驗優勢是否真實 重排驗不出優勢 每次都用同一批交易 挑出最佳 同樣運氣 未見資料 推進分析 保留 K 棒 重排繼承同樣的運氣。 所以:在未見資料上檢驗優勢。
眾多變體中最好的那個,把同樣的交易和同樣的運氣餵進每一次重排。只有規則沒看過的資料,才能檢驗優勢是否真實。

蒙地卡羅該在推進分析之前跑,還是之後跑?

之後。蒙地卡羅是替倖存策略量風險,不是用來挑策略。只對已通過推進分析與保留 K 棒的策略跑,前面沒過,後面就不用做。

這個順序有成本和意義兩個理由。重排一份清單很便宜,但成交變差與隨機起始 K 棒每次模擬都要重跑回測,硬體再快也不便宜,花在已經沒過推進分析的策略上就是浪費。意義上的理由更強:替一個優勢沒驗過的策略算回撤分布,只是把一個任何部位都不該承擔的風險描述得很精確。下面這個流程把兩個問題分開。

  1. 策略生成從規則與參數範圍產生候選策略。
  2. 基本篩選剔除交易筆數太少,或平均每筆損益低於成本的候選策略。
  3. 推進分析測試在過去區間重新調整後的結果,在接下來的區間是否還站得住;詳細步驟見推進最佳化一文。
  4. 保留 K 棒是前面每個步驟都沒用過的資料,最後再問一次同樣的問題。
  5. 對倖存策略跑蒙地卡羅:重排看回撤範圍,重抽樣看期末餘額。
  6. 部位大小依第 95 百分位、保證金與你的停損底線決定。

在第 3 步或第 4 步沒過的候選策略就到此為止,不跑蒙地卡羅。AlphaPrime 的策略檢驗依你選的門檻做推進分析,候選策略前面的檢查沒過就停掉後面的檢查,跟這個流程對蒙地卡羅的要求是同一種紀律。不管用哪套軟體,規則都一樣:蒙地卡羅只看倖存者。

如果今天就要開始,拿出你最好的策略,數它的已平倉交易筆數。不到 100 筆,先停下來,取得更多資料再談重排。超過 200 筆,就跑重排,看第 95 百分位回撤對你實際的帳戶會造成什麼影響。如果報表上的回撤跟上面的 NQ 實測一樣落在分布裡好看的那一端,你就知道了報表自己講不出來的那件事。

從策略生成、基本篩選、推進分析與保留 K 棒,到倖存策略的蒙地卡羅與部位大小的流程;推進分析或保留 K 棒沒過就停止後續檢驗 蒙地卡羅排最後 沒過就不再往下做 生成策略 基本篩選 推進分析 保留 K 棒 蒙地卡羅 部位大小 失敗:停止 失敗:停止 僅倖存策略
蒙地卡羅排最後,只看倖存者。推進分析或保留 K 棒沒過,後面就不做。

常見問題

白話來說,什麼是蒙地卡羅回測?

把回測已經產生的交易,用不同的隨機順序重播數千次。每次重播的總獲利相同,最大回撤卻不同。這些回撤分散的情形,告訴你報表上的那個順序有多好看或多難看,而分布的第 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