「我的策略在過去十年的回測裡,最大連續虧損 (MDD) 只有 15%,這代表我未來最多也只會賠 15% 嗎?」
「如果我運氣真的很差,剛上線實戰就遇到連續十次停損,我的帳戶會不會直接破產?」
當你在 開發自己的程式交易系統 並完成初步回測後,你可能會看著那條穩步向上的資金曲線感到安心。在 程式交易回測的重要性 中,我們確認了策略具備正期望值。
然而,歷史回測有一個致命的盲點:過去發生的行情,只不過是無數種可能路徑中的「其中一種」而已。 如果未來的市場走勢,以一種你從未見過的極端順序出現,你的系統還撐得住嗎?為了解決這個焦慮,專業的量化交易員會使用一種名為蒙地卡羅模擬 (Monte Carlo Simulation) 的統計技術,為策略進行終極的壓力測試。
什麼是蒙地卡羅模擬?探索平行宇宙
蒙地卡羅這個名字源自於著名的賭城,因為這項技術的核心就在於「隨機機率」與「重複抽樣」。
在程式交易中,它的運作邏輯非常簡單但極度強大。假設你的 趨勢追蹤型策略 在過去十年裡總共產生了 1,000 筆交易紀錄(有賺有賠)。蒙地卡羅模擬會把這 1,000 筆交易的結果丟進一個「籤筒」裡。
接著,電腦會隨機從籤筒裡抽出一筆交易結果,記錄下來後再放回去(這稱為取後代入抽樣)。電腦會重複這個動作 1,000 次,生成一條全新的、在現實中從未發生過的「模擬資金曲線」。
然後,電腦會把這個過程重複執行 10,000 遍。
最終,你不會只看到一條歷史曲線,你會看到一萬條代表著「各種平行宇宙」的資金曲線。這能幫助我們看清在極端運氣好或極端運氣差的情況下,帳戶的真實樣貌。
歷史回測的盲點:順序風險 (Sequence Risk)
為什麼我們需要把過去的交易順序打亂重抽?因為交易結果的「出場順序」,決定了你會不會破產。
假設你有一個策略,勝率 50%,停損固定賠 1 萬元,停利固定賺 2 萬元。這是一個絕對會賺錢的正期望值系統。
在過去的歷史回測中,交易結果可能是:賺、賠、賺、賺、賠… 資金穩穩地往上走。
但如果未來的真實市場中,你運氣極度糟糕,一開始就面臨了「連續 15 次的虧損」呢?即使這個系統長期來看會賺錢,但你的帳戶本金可能在第 10 次虧損時就已經歸零被斷頭了,你根本撐不到後面賺錢的日子。
蒙地卡羅模擬的目的,就是透過打亂順序,強迫系統去面對那種「連續虧損集中爆發」的極端地獄模式。
蒙地卡羅模擬的實戰應用
當我們透過 程式交易軟體如 MultiCharts 或 Python 跑完一萬次模擬後,我們通常會關注以下三個決定生死的數據。
預估真實的最大連續虧損 (Estimated Maximum Drawdown)
歷史回測告訴你過去的 MDD 是 15%。但蒙地卡羅模擬可能會告訴你:「在 95% 的信心水準下,你未來的 MDD 可能會高達 28%。」
這是一個非常震撼的現實檢驗。它打破了 過度優化 (Over-optimization) 所帶來的完美幻象,讓你在設定資金規模時,能夠以 28% 這個更嚴苛的標準來準備保證金,避免在真實市場中被洗出場。
破產機率分析 (Risk of Ruin)
這是每一個量化交易員在實單上線前必須直視的數字。
你可以設定一個破產臨界點(例如:當帳戶虧損超過總資金的 50% 時,我就認輸退出)。蒙地卡羅模擬會告訴你,在這一萬次平行宇宙的模擬中,有多少次會觸及這個底線。如果破產機率大於 1%,這套系統通常就會被專業機構打回票,必須重新修改邏輯。
最佳化資金管理
如果你發現破產機率太高,或者極端 MDD 無法承受,你不需要急著去修改進出場指標。通常你只需要降低每次下單的部位大小(例如從每次投入總資金的 5% 降到 2%),破產機率就會呈現斷崖式的下降。這也是為什麼在量化領域,如何控制部位永遠比預測方向更重要。
結語:用最壞的打算,迎接最好的結果
蒙地卡羅模擬就像是金融市場裡的照妖鏡與防彈衣。它不會幫你提高策略的勝率,也不會告訴你明天 S&P 500 (SPY) 會漲還是會跌。
它唯一的作用,是戳破你對完美回測的幻想,強迫你面對市場的隨機性與殘酷。當你能夠平靜地看著電腦模擬出最糟糕的連續虧損,並且確認你的帳戶依然能夠存活時,你才算真正擁有了將系統推向真實市場的底氣。
經過了回測、防避過度優化,以及蒙地卡羅的壓力測試後,我們已經確認了策略的有效性。接下來,我們必須把焦點轉移到保護這些獲利的終極防線上。
下一步行動: 在程式交易中,進場只決定了一半的勝負。該如何利用客觀的公式,為帳戶建構堅不可摧的防護網?
如何在程式交易中設定風險管理規則?保護本金的量化思維




