蒙地卡羅部位大小:一個帳戶該做幾口期貨?
蒙地卡羅部位大小,是把策略自己的已平倉交易重新洗牌數千次,讀出多數洗牌後歷史都不會更深的回撤(第 95 百分位),再加上每口所需的保證金,並決定口數,讓兩者都落在你執行前就選好的帳戶風險比例之內。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
蒙地卡羅模擬如何決定合約口數?
蒙地卡羅部位大小,會把策略自己的已平倉交易明細重新洗牌數千次,讀出多數洗牌後歷史都不會更深的最大回撤,加上每口未平倉部位所需的保證金,再決定口數,讓兩者都落在你執行任何東西之前就決定好的帳戶風險比例之內。
蒙地卡羅模擬是一種方法:把同一個隨機過程重複執行多次,再統計結果,藉此回答問題,由 Metropolis 與 Ulam(1949)命名。在交易中,隨機過程就是交易的順序。想像一副牌,每張牌是一筆已平倉交易。整副牌的總和固定,所以洗牌不會改變總獲利。改變的是,你能連續翻出幾張虧損牌。這段連續虧損就是回撤,也是決定帳戶能承擔幾口的數字。
整條流程有五個步驟。取扣除成本後的已平倉交易。把順序重新洗牌一千次以上。記錄每個洗牌後歷史的最大回撤。讀出多數試驗都不會更深的那個回撤。拿你願意虧損的那部分帳戶,去除以這個數字加保證金的總和。免費的交易用蒙地卡羅模擬器,可由貼上的交易明細執行中間的步驟。洗牌本身,請先讀什麼是蒙地卡羅模擬,內含期貨範例;回撤方面,請讀蒙地卡羅回測,了解為何它通常顯示比原始回測更深的最大回撤。
該把哪一份交易明細放進模擬?
放進一次真實回測的已平倉交易,已扣除手續費與滑價,口數為一口。模擬只能重新排列你給它的東西。沒有扣成本的交易明細,會得出偏淺的回撤;多口回測得出的明細,必須先除回一口,後面各節的縮放才成立。
本文的實例輸入,是 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% |

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

洗牌前先檢查輸入的兩件事。交易筆數至關重要: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。若漏掉保證金,口數會算得遠遠偏高。
對指數期貨而言,兩塊之中保證金往往較大,這讓只依回撤決定口數的交易人意外。後面各節的口數規則,把一口視為一個組合:它在模擬回撤中分得的部分,加上它的保證金,兩者一起縮放。
該用哪個回撤百分位?
依模擬最大回撤的第 95 百分位決定口數,不用中位數,也不用原始回測的單一回撤。百分位,是指一定比例的試驗都未達到的數值;第 95 百分位,就是每 100 個洗牌後歷史中,有 95 個不比它更深的回撤。Magdon-Ismail 與 Atiya(2004)指出,預期最大回撤會隨紀錄長度增加,所以你打算交易得越久,現實中的數字就越往右偏移;第 95 百分位已納入其中一部分偏移。
每一條候選線都有明確的否決理由:
| 決定口數的基準線 | 內容 | 為何是或不是合適的基準線 |
|---|---|---|
| 中位數(第 50 百分位) | 一半的試驗更深 | 太寬鬆:等於拿擲硬幣的機率,賭實際回撤會不會更糟 |
| 原始回測回撤 | 一種排列,日曆的那一種 | 沒有特殊地位;常落在分布中段附近 |
| 第 95 百分位 | 20 次試驗中有 19 次落在它之下 | 涵蓋多數排列,且仍留下可交易的口數 |
| 最差的一次試驗 | 一種極端排列 | 每次重跑洗牌都會變動,而且會讓你幾乎無法交易 |
最差試驗值得再多說幾句。它取決於你跑了多少次試驗:洗牌一千次得到的最差情況,比洗牌一萬次溫和,因為抽樣越多,就越深入尾端。隨試驗次數而改變的基準線,無法事先寫下來。第 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 百分位回撤所允許的數量,這個比例就急遽上升。一口時,破產線遠在回撤分布右尾之外,幾乎沒有試驗碰到它。每多一口,分布就再拉長一個單位;而回撤分布的尾端稀薄,小幅拉長就會一次掃進大比例的試驗。在下方的假設性圖中,一口時比例不到百分之一,兩口為數個百分點,三口約為所有試驗的五分之一;交易人事先寫好的百分之二上限,在一口與兩口之間被跨過,與回撤比較得出的界線相同。
免費的破產機率計算機從另一個方向得出類似的數字:用勝率、賺賠比與每筆風險,而不是交易明細。兩條路徑差距大時,解釋通常在交易明細裡:少數幾筆極大的虧損,被以平均為基礎的公式抹平了。
如何把結果換算成各帳戶規模的口數?
用帳戶的風險比例,除以每口的第 95 百分位回撤與保證金之和,再無條件捨去到整數。步驟依序如下:
- 匯出一口回測的已平倉交易明細,含手續費與滑價。
- 在執行任何東西之前,先寫下風險比例、破產線與破產上限。
- 把明細洗牌一千次以上,記錄每次試驗的最大回撤與權益路徑。
- 讀出一口的第 95 百分位最大回撤。
- 到交易所的契約頁面,查出每口目前的維持保證金。
- 用風險比例除以(回撤 + 保證金),再無條件捨去。
- 對照事先寫好的上限,檢查該口數下的破產機率;若不通過,就減一口。
- 若規則有固定停損,也取免費的期貨部位大小計算機依停損距離與每筆帳戶風險算出的口數,並取兩個口數中較小的一個。依回撤算出的口數,保護帳戶度過一連串虧損;依停損算出的口數,保護帳戶在單筆交易上的風險。
假設性範例
使用 1、2、3 口那一節的數字:$90,000($150,000 帳戶的 60%)÷($40,000 + $20,000)= 1.5。無條件捨去:1 口。1 口的破產機率檢查,低於 2% 上限,所以維持 1 口。同樣的風險比例下,帳戶要達到約 $180,000,除法結果才會到 2。
保證金一變動、明細新增交易、或帳戶變動到足以跨過一階時,就重做這次除法。保證金與交易明細改變分母;帳戶改變分子;風險比例一經寫下,就不該再變。
接下來要做的一個測試:拿你自己的一口交易明細,放進模擬器,寫下兩個口數,一個依回測的單一最大回撤,一個依第 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

