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

蒙地卡羅部位大小:一個帳戶該做幾口期貨?

蒙地卡羅部位大小,是把策略自己的已平倉交易重新洗牌數千次,讀出多數洗牌後歷史都不會更深的回撤(第 95 百分位),再加上每口所需的保證金,並決定口數,讓兩者都落在你執行前就選好的帳戶風險比例之內。

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

目錄
  1. 蒙地卡羅模擬如何決定合約口數?
  2. 該把哪一份交易明細放進模擬?
  3. 為什麼模型要保留保證金與每跳動點價值?
  4. 該用哪個回撤百分位?
  5. 如何用 1、2、3 口模擬同樣的交易?
  6. 蒙地卡羅能依各次試驗算出破產機率嗎?
  7. 如何把結果換算成各帳戶規模的口數?
  8. 常見問題
  9. 參考文獻

蒙地卡羅模擬如何決定合約口數?

蒙地卡羅部位大小,會把策略自己的已平倉交易明細重新洗牌數千次,讀出多數洗牌後歷史都不會更深的最大回撤,加上每口未平倉部位所需的保證金,再決定口數,讓兩者都落在你執行任何東西之前就決定好的帳戶風險比例之內。

蒙地卡羅模擬是一種方法:把同一個隨機過程重複執行多次,再統計結果,藉此回答問題,由 Metropolis 與 Ulam(1949)命名。在交易中,隨機過程就是交易的順序。想像一副牌,每張牌是一筆已平倉交易。整副牌的總和固定,所以洗牌不會改變總獲利。改變的是,你能連續翻出幾張虧損牌。這段連續虧損就是回撤,也是決定帳戶能承擔幾口的數字。

整條流程有五個步驟。取扣除成本後的已平倉交易。把順序重新洗牌一千次以上。記錄每個洗牌後歷史的最大回撤。讀出多數試驗都不會更深的那個回撤。拿你願意虧損的那部分帳戶,去除以這個數字加保證金的總和。免費的交易用蒙地卡羅模擬器,可由貼上的交易明細執行中間的步驟。洗牌本身,請先讀什麼是蒙地卡羅模擬,內含期貨範例;回撤方面,請讀蒙地卡羅回測,了解為何它通常顯示比原始回測更深的最大回撤。

從一份交易明細到口數的五個步驟:取扣除成本後的已平倉交易,洗牌一千次以上,記錄每次試驗的最大回撤,讀出第 95 百分位,再用帳戶的風險比例去除。最後一步對 1、2、3 口各重複一次。 從交易到口數 五個步驟,一份交易明細 1 已平倉交易,扣除成本後 2 洗牌數千次 3 每次試驗的最大回撤 4 讀第 95 百分位 5 對照風險比例 1、2、3 口 洗牌改變回撤,不改變獲利。 所以:依深的連虧決定口數。
從一份交易明細到口數。最後的迴圈,對 1、2、3 口各重複最後一步。

該把哪一份交易明細放進模擬?

放進一次真實回測的已平倉交易,已扣除手續費與滑價,口數為一口。模擬只能重新排列你給它的東西。沒有扣成本的交易明細,會得出偏淺的回撤;多口回測得出的明細,必須先除回一口,後面各節的縮放才成立。

本文的實例輸入,是 AlphaPrime(Valynox)在 NQ 日 K 棒上、從 2019 年初到 2025 年 6 月底的一次執行,多空皆做,一口。它只用一條 ATR 平均真實區間規則同時負責進場與出場,是用標準指標做成的替代規則,本身並不是蒙地卡羅規則。它是搜尋在試過的 1,024 個候選中保留下來的那一個,依報酬相對回撤挑選,而事後挑出被保留的那一個,會讓數字顯得好看。這裡沒有任何內容表示這條規則賺到了那筆錢,或讀者可以預期同樣結果;這份明細只用作洗牌的原料。

來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。

項目結果
淨利(已平倉)$233,415
最大回撤$96,430
交易筆數172
勝率59.3%
獲利因子1.52
平均每筆$1,357.06
在場時間81.97%
這次執行的摘要,其 172 筆已平倉交易就是模擬的輸入。請讀交易筆數與最大回撤;下文兩者都會用到。
這次執行的摘要,其 172 筆已平倉交易就是模擬的輸入。請讀交易筆數與最大回撤;下文兩者都會用到。 NQ · 日線 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

該表的最大回撤 $96,430,是 172 筆交易的其中一種排列,也就是日曆恰好產生的那種排列。把同樣的 172 筆交易洗牌,換一種排列就會得到不同的回撤。有些排列把虧損集中在一起,挖得更深;有些把虧損分散,停留較淺。回測得出的單一數字,只是這個分布中的一個點,沒有理由認為它是最深的。供洗牌用的已平倉交易明細,就是 AlphaPrime 的績效報表逐筆列出的那一份,旁邊並列這種日曆順序所產生的回撤。

同一批交易經多次重新洗牌後,各種排列的最大回撤分布。請找出單次回測回撤落在分布中的哪裡,以及有多少分布在它的右側。
同一批交易經多次重新洗牌後,各種排列的最大回撤分布。請找出單次回測回撤落在分布中的哪裡,以及有多少分布在它的右側。 NQ · 日線 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

洗牌前先檢查輸入的兩件事。交易筆數至關重要:172 筆只是中等規模的樣本,洗牌無法憑空創造不存在的交易,所以明細太短,會得出偏窄又過度自信的分布。另外,交易的順序不應帶有洗牌會破壞的資訊:虧損自然成群的策略(趨勢規則在盤整市場中常如此),實際回撤可能比洗牌後的更深。Bailey、Borwein、López de Prado 與 Zhu(2014)說明了為何眾多候選中最好的那一個帶有樂觀偏誤,這又是一個理由,要把被保留那次執行本身的回撤,視為下限而非上限。

為什麼模型要保留保證金與每跳動點價值?

兩者都要保留,因為帳戶同時承擔回撤與保證金,漏掉任何一個,口數看起來都會比實際安全。每跳動點價值,是合約一個最小價格變動單位值多少美元;它把圖表上的點數波動,換成帳戶中的美元虧損。維持保證金,是交易所與期貨商要求你為每口未平倉部位持有的資金;持倉期間被鎖住,無法用來吸收虧損。

以 E-mini Nasdaq-100(NQ)為例,CME Group 公告的契約規模為指數乘以 $20,最小跳動點為 0.25 個指數點、價值 $5.00,所以一個完整指數點每口 $20。回測若以正確的每點價值建立,交易本來就以美元回報,洗牌可直接在這些美元上進行。在信任明細之前,先檢查一次這個設定;每點價值設錯的回測,得出的回撤會錯同樣的倍數。交易所可能調整跳動點大小、每點價值與保證金,請到交易所的契約頁面確認;免費的期貨合約與損益計算機,可並排顯示每跳動點價值與每點價值。

假設性範例

假設某個洗牌後的歷史,讓一口的帳戶逆向承受 400 個指數點。以每點 $20 計,回撤是 $8,000。同一口在持倉期間,另需比方說 $20,000 的維持保證金。帳戶必須持有 $28,000 才能留在這筆交易中,而不是 $8,000。若漏掉保證金,口數會算得遠遠偏高。

一口 NQ 的假設性範例:逆向 400 點、每點 20 美元,回撤為八千美元,維持保證金再加兩萬美元,所以帳戶必須持有兩萬八千美元;保證金與每跳動點價值取自交易所的契約頁面,可能變動。 要持有回撤加保證金 一口 NQ,單位千美元 回撤 400 點×$20=8 保證金 20 需要 28 假設;請查交易所頁面 保證金被鎖住,不吸收虧損。 所以:依回撤加保證金定口數。
點數經由每跳動點價值換成美元,再加上保證金,只有總和才拿來與帳戶比較。數值為假設性範例;現行數值以交易所的契約頁面為準。

對指數期貨而言,兩塊之中保證金往往較大,這讓只依回撤決定口數的交易人意外。後面各節的口數規則,把一口視為一個組合:它在模擬回撤中分得的部分,加上它的保證金,兩者一起縮放。

該用哪個回撤百分位?

依模擬最大回撤的第 95 百分位決定口數,不用中位數,也不用原始回測的單一回撤。百分位,是指一定比例的試驗都未達到的數值;第 95 百分位,就是每 100 個洗牌後歷史中,有 95 個不比它更深的回撤。Magdon-Ismail 與 Atiya(2004)指出,預期最大回撤會隨紀錄長度增加,所以你打算交易得越久,現實中的數字就越往右偏移;第 95 百分位已納入其中一部分偏移。

每一條候選線都有明確的否決理由:

決定口數的基準線內容為何是或不是合適的基準線
中位數(第 50 百分位)一半的試驗更深太寬鬆:等於拿擲硬幣的機率,賭實際回撤會不會更糟
原始回測回撤一種排列,日曆的那一種沒有特殊地位;常落在分布中段附近
第 95 百分位20 次試驗中有 19 次落在它之下涵蓋多數排列,且仍留下可交易的口數
最差的一次試驗一種極端排列每次重跑洗牌都會變動,而且會讓你幾乎無法交易
同一口數下洗牌最大回撤的假設性直方圖,並非 NQ 那次執行:中位數為兩萬八千美元,第 95 百分位的四萬美元以醒目方式標出,作為決定口數的基準線,最差試驗為六萬一千美元,單次回測的回撤是靠近中位數的一個點。 依第 95 百分位定口數 洗牌回撤,單位 $k,假設 中位數 28 第 95 40 最差 61 回測 以 20 次中 19 次不更深的線為準 所以:不看中位數,也不看最差。
中位數、第 95 百分位與最差試驗,在回撤分布上的位置。第 95 百分位是決定口數的基準線;單次回測的回撤,只是分布裡的一個點。

最差試驗值得再多說幾句。它取決於你跑了多少次試驗:洗牌一千次得到的最差情況,比洗牌一萬次溫和,因為抽樣越多,就越深入尾端。隨試驗次數而改變的基準線,無法事先寫下來。第 95 百分位隨試驗增加迅速穩定,這正是預先寫好的規則所需要的。

如何用 1、2、3 口模擬同樣的交易?

把每筆交易結果乘以口數,第 95 百分位回撤與保證金就會一起線性放大,帳戶規模則維持不變。同一規則的兩口,每筆交易的美元結果恰好是一口的兩倍,因為進場與出場價格相同;所以不需要重跑洗牌。把一口的百分位與一口的保證金放大,再把每個總和與固定的帳戶風險比例比較。

風險比例,是你在執行任何東西之前就決定的帳戶份額:這個策略在深度回撤時,仍持有保證金的情況下,最多可以虧掉多少。這是你的選擇,應事先寫下來。同時執行多個策略的帳戶,每個策略分到的比例要更小。

假設性範例

帳戶 $150,000。風險比例 60%,所以基準線是 $90,000。一口:第 95 百分位回撤 $40,000,加保證金 $20,000。三種口數比較如下。

口數第 95 百分位回撤保證金所需總額低於 $90,000 基準線?
1$40,000$20,000$60,000是
2$80,000$40,000$120,000否
3$120,000$60,000$180,000否

只有一口放得下。光是第二口,就需要回撤分布淺一半,或帳戶大三分之一。

假設性範例:第 95 百分位回撤加保證金,1 口為六萬美元,2 口為十二萬美元,3 口為十八萬美元,對照固定在九萬美元的基準線,即十五萬美元帳戶的 60%;只有 1 口的長條低於基準線。 只放得下一口 回撤 + 保證金,$k,假設 帳戶的 60% 1 口 60 2 口 120 3 口 180 回撤(第 95) 保證金 需求增加,基準線不動。 所以:只做基準線以下的口數。
回撤加保證金,隨口數線性增加;帳戶的風險比例不動。假設性範例。

請注意帳戶變大時長條的變化。帳戶加倍,基準線加倍,但長條的位置不變,所以口數是一階一階上升,而不是平滑增加。這就是最後一節要無條件捨去到整數口,而不是報出小數的原因。

蒙地卡羅能依各次試驗算出破產機率嗎?

可以:計算帳戶跌破你在執行前寫好的破產線的試驗比例,這個比例就是該口數的破產機率。破產機率,是帳戶在回復之前,損失起始價值某個固定比例的機率,通常是你會停止交易該策略的那個比例。破產線是虧損水準,不是回撤百分位;可以是帳戶的一半,或任何你會停手的那一點。

  1. 先把破產線寫下來。看到試驗結果之後才選的線,是配合試驗結果擬合出來的線。
  2. 在一口下執行一次洗牌,並保留每次試驗完整的權益路徑,而不只是最大回撤。
  3. 對每個口數,把每條路徑乘以口數,計算在任何時點跨過破產線的試驗數。
  4. 除以試驗次數。結果就是該口數下的破產機率。

口數一旦多於第 95 百分位回撤所允許的數量,這個比例就急遽上升。一口時,破產線遠在回撤分布右尾之外,幾乎沒有試驗碰到它。每多一口,分布就再拉長一個單位;而回撤分布的尾端稀薄,小幅拉長就會一次掃進大比例的試驗。在下方的假設性圖中,一口時比例不到百分之一,兩口為數個百分點,三口約為所有試驗的五分之一;交易人事先寫好的百分之二上限,在一口與兩口之間被跨過,與回撤比較得出的界線相同。

假設性範例,破產線設在帳戶虧損 50%:碰到破產線的試驗比例,1 口為 0.2%,2 口為 3%,3 口為 21%,4 口為 48%;只有 1 口低於交易人事先寫好的 2% 上限。 過一口,破產機率跳升 碰到 50% 虧損的試驗,假設 上限 2% 1 口 0.2% 2 口 3% 3 口 21% 4 口 48% 過了上限,破產機率快速上升。 所以:首次執行前先定上限。
依洗牌後試驗得出的各口數破產機率。兩口與三口之間的跳升,是稀薄的尾端被拉過破產線。假設性範例。

免費的破產機率計算機從另一個方向得出類似的數字:用勝率、賺賠比與每筆風險,而不是交易明細。兩條路徑差距大時,解釋通常在交易明細裡:少數幾筆極大的虧損,被以平均為基礎的公式抹平了。

如何把結果換算成各帳戶規模的口數?

用帳戶的風險比例,除以每口的第 95 百分位回撤與保證金之和,再無條件捨去到整數。步驟依序如下:

  1. 匯出一口回測的已平倉交易明細,含手續費與滑價。
  2. 在執行任何東西之前,先寫下風險比例、破產線與破產上限。
  3. 把明細洗牌一千次以上,記錄每次試驗的最大回撤與權益路徑。
  4. 讀出一口的第 95 百分位最大回撤。
  5. 到交易所的契約頁面,查出每口目前的維持保證金。
  6. 用風險比例除以(回撤 + 保證金),再無條件捨去。
  7. 對照事先寫好的上限,檢查該口數下的破產機率;若不通過,就減一口。
  8. 若規則有固定停損,也取免費的期貨部位大小計算機依停損距離與每筆帳戶風險算出的口數,並取兩個口數中較小的一個。依回撤算出的口數,保護帳戶度過一連串虧損;依停損算出的口數,保護帳戶在單筆交易上的風險。

假設性範例

使用 1、2、3 口那一節的數字:$90,000($150,000 帳戶的 60%)÷($40,000 + $20,000)= 1.5。無條件捨去:1 口。1 口的破產機率檢查,低於 2% 上限,所以維持 1 口。同樣的風險比例下,帳戶要達到約 $180,000,除法結果才會到 2。

假設性範例:風險比例除以每口回撤加保證金,得出 1.5,落在一口的階梯內,無條件捨去為 1 口;帳戶要成長約五分之一,結果才達到 2,才容許第二口。 一次除法,無條件捨去 風險比例 ÷(回撤 + 保證金) 今日:1.5 帳戶 +20% 1 口 2 口 1 2 3 無條件捨去到整數口。 所以:保證金或交易變動就重算。
把帳戶規模換成整數口數的那一次除法。假設性範例。

保證金一變動、明細新增交易、或帳戶變動到足以跨過一階時,就重做這次除法。保證金與交易明細改變分母;帳戶改變分子;風險比例一經寫下,就不該再變。

接下來要做的一個測試:拿你自己的一口交易明細,放進模擬器,寫下兩個口數,一個依回測的單一最大回撤,一個依第 95 百分位。若兩者相差整整一口,代表單一回撤藏起了你的帳戶無法承受的排列。若你想看洗牌的每一步,用 Excel 自己做一次蒙地卡羅模擬會逐格帶你走一遍。

常見問題

什麼是蒙地卡羅部位大小?

蒙地卡羅部位大小,是決定交易口數的一種方法:把策略自己的已平倉交易重新洗牌多次,讀出多數洗牌後歷史的回撤有多深。口數就是最大的那個數字,在該數字下,這個回撤加上每口的保證金,仍落在你決定承擔風險的帳戶比例之內。它用的是你已有的交易,而不是由平均值建構的公式。

部位大小需要多少次蒙地卡羅試驗?

洗牌一千次,足以讓第 95 百分位穩定;更多試驗對它的改變極小。相較之下,最差試驗會隨試驗增加而持續變差,這是不依它決定口數的原因之一。比試驗次數更限制準確度的,是明細中真實交易的筆數:明細太短,不管洗牌多少次,都會得出偏窄又過度自信的分布。

回撤該依第 95 或第 99 百分位決定口數?

第 95 百分位是慣常的選擇,因為它在多次重跑之間穩定,且留下實際可交易的口數。第 99 百分位更接近最差試驗,每次執行之間變動較大,往往讓口數少整整一口,破產機率卻幾乎沒有改變。若想要額外保護,請降低帳戶的風險比例,而不是移動百分位。

重新洗牌交易,會改變策略的勝率或獲利嗎?

不會。每個洗牌後的歷史都包含同樣的交易,所以每次試驗的總獲利、勝率、獲利因子與平均每筆損益都完全相同。只有順序改變,最深的連續虧損也隨之改變。這就是此方法適合用來決定部位大小,而不適合用來判斷策略有沒有優勢的原因。

蒙地卡羅能算出期貨策略的破產機率嗎?

可以。在執行前先寫下破產線,例如帳戶虧損 50%。然後計算有多少洗牌後的權益路徑在任一時點跨過這條線,再除以試驗次數。對每個口數重複一次;口數一旦多於第 95 百分位回撤與保證金所允許的數量,這個比例就會急遽上升。

參考文獻

  • Metropolis, N., & Ulam, S. (1949). The Monte Carlo Method. Journal of the American Statistical Association, 44(247), 335–341.
  • Magdon-Ismail, M., & Atiya, A. F. (2004). Maximum Drawdown. Risk, 17(10), 99–102.
  • 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 (contract size $20 × index, minimum tick 0.25 index points = $5.00). cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html