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

月報酬回測表:淨損益藏起來的東西

月報酬表能看出回測淨損益是怎麼來的:哪些月份撐起了結果、連續虧了幾個月、權益曲線花多久才回到前高,以及每一年是否都有貢獻。請用扣除成本後的已平倉交易來建表,先檢查前三名集中度、連續虧損、回復、季節性與年度總額,再決定要不要相信總數。

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

目錄
  1. 月報酬表能看出哪些淨損益總數看不出來的事?
  2. 要怎麼做出月報酬表?
  3. 怎麼發現獲利集中在少數幾個月?
  4. 連續虧損之後,多久回復才算合理?
  5. 月份的季節性是真的還是雜訊?
  6. 這個策略在各年度之間的表現是否一致?
  7. 常見問題
  8. 參考文獻

月報酬表能看出哪些淨損益總數看不出來的事?

月報酬回測表會顯示淨損益是怎麼累積出來的:哪些月份撐起了結果、連續虧了幾個月、權益曲線花了多久回到前高,以及每一年是否都有貢獻。一個總數把這些全都藏起來了。兩個淨損益相同的策略,可能一個是穩定磨出來的,另一個是靠運氣一次爆發。

月報酬表是一張方格表,每一列是一個年度,每一欄是一個日曆月,每一格記錄該策略在那個月扣除手續費與滑價後的淨結果。想像一場馬拉松的成績。完賽時間只是一個數字,每公里的分段時間才告訴你跑者是穩定配速,還是衝兩次然後走完剩下的路。只看完賽時間分不出這兩種情況,看分段時間就分得出來。淨損益就是完賽時間,月報酬表就是分段時間。所以淨損益是回測報表裡最沒用的數字,而本文的論點是:先讀月報酬表,再看淨損益。

回測是把一條規則套用在過去的價格上重播;期貨回測實際上重播了什麼說明了其運作方式。該回測的摘要頁會給出夏普比率、最大回撤與成長率,如何解讀回測報表中的夏普、索提諾、CAGR 與最大回撤則逐一說明。這些數字都是平均與極端值。月報酬表是唯一能顯示事情發生先後順序的檢視方式。

你想知道的事只看淨損益月報酬表
是不是幾個月撐起了整體結果?看不出來把月份排序,看前三名
連續虧損幾個月?看不出來數最長一段連續負值的格子
多久才會再創新高?看不出來從高點數到回復為止的月數
每一年都有貢獻嗎?看不出來讀年度總額那一欄
某個日曆月特別嗎?看不出來沿著同一欄往下,跨年份來讀

假設範例

策略 A 和策略 B 在四年的日 K 回測中,淨損益都是 24,000 美元。A 的其中三個月就貢獻了 21,000 美元,其餘 45 個月加起來只有 3,000 美元,其中 19 個月為負。B 的最佳月份是 1,800 美元,有 31 個月為正,沒有任何一個月超過總額的 8%。報表頁面上兩者的淨損益一樣,但月報酬表顯示 A 是三次事件,B 則是一種模式。

兩個假設性策略在 48 個月內淨損益相同:A 策略中三個大月佔總額 88%,其餘為小幅損益;B 策略則每月都有溫和獲利,沒有任何一個月特別突出 同樣獲利,兩種故事 假設範例 · 紅格 = 虧損月 A:+$24k B:+$24k 3 個月:88% 無大獲利月 總額掩蓋了獲利的來源。 因此:先看月度表格。
同樣的淨損益,兩種不同的故事。左邊的方格是三個幸運的月份;右邊的方格是一個逐月累積的結果。

要怎麼做出月報酬表?

從交易明細建表:把每一筆已平倉交易歸到它的平倉月份,按月加總淨結果,排成年度乘月份的方格,然後加上年度總額欄與正值月數。整個流程只要四個步驟和一份試算表,順序很重要,因為每一步都會餵給下一步。

  1. 匯出含平倉日期與淨結果的交易明細。淨結果是指扣除手續費與滑價之後的數字。如果用毛利來建表,每一格都會被高估,也會把小幅獲利的月份在真實帳戶裡其實是虧損這件事藏起來。
  2. 把每一筆交易歸到它的平倉月份。3 月 28 日開倉、4 月 3 日平倉的交易,算在 4 月。以平倉月份為準,表格就會和已平倉交易的權益曲線一致。對於持倉好幾週的策略,你也可以改為在每個月底以市價計算未平倉部位(mark-to-market);選定一種方法後,比較的每個策略都要用同一種。
  3. 按月加總淨結果並填入方格。列是年度,欄是一月到十二月。沒有平倉交易的月份填零,而不是留白,這樣正值月數的計算才誠實。
  4. 加上年度總額欄與正值月數。正值月數用分數寫,例如 12 個月中的 8 個。另外也加上至少有一筆交易的月數,這樣你才分得清一格零是「持平」還是「沒有交易」。
四個步驟建立月度表:匯出淨交易明細,依出場月份歸類每筆交易,逐月加總填入表格,再加上年度總計;一筆於 4 月 3 日平倉、獲利 400 美元的交易,依序追蹤至 4 月格與年度總計 交易明細到月度表 一筆交易,追蹤至其格子 淨交易明細 出場月份 逐月加總 加總年度 4/3,+$400 4 月 4 月格 計入年度 每筆交易歸入其出場月份。 因此:使用扣除成本後的淨損益。
四個步驟從交易明細到月報酬方格。追蹤一筆交易,從它的平倉日期到它落入的格子。

建表時,回測所用的成本要維持不變。如果回測每筆收了 20 美元手續費與 10 美元滑價,月份格子裡已經包含這些成本,表格標題也應該說明這一點。如果策略報表本來就按期間列出結果,你就可以跳過試算表:AlphaPrime(Valynox)的績效報表在權益曲線、回撤與交易明細之外,也包含定期績效,因此本文所描述的方格可以直接從績效報表讀取,不必自己手動重建。

怎麼發現獲利集中在少數幾個月?

把月份由好到壞排序,加總最好的三個月,再除以淨損益;如果拿掉這三個月後結果持平或為負,這個回測描述的是幾段幸運的時期,而不是可以重複的優勢。獲利集中度,是指總淨損益中,落在少數幾個月的比例。本節所用的公式如下:

前三名占比 =(最佳月份 + 次佳月份 + 第三佳月份)÷ 淨損益

其中最佳月份、次佳月份與第三佳月份,是方格中三個最大的月淨結果,淨損益則是所有月份的總和。占比為 0.9,表示最好的三個月占了結果的 90%,其餘所有月份加起來只占 10%。

前三名占比通常代表什麼接下來怎麼做
約 30% 以下獲利分散在許多月份進入連續虧損與回復的檢查
約 30% 到 60%幾個強勢月份加上穩定的基底拿掉前三名,確認其餘月份仍為正
約 60% 以上結果只是少數幾段行情找出那幾個月的共同點,並判斷會不會再發生

假設範例

某策略在 60 個月中淨損益為 30,000 美元。排序後,最佳三個月分別是 9,000、7,500 與 6,000 美元,合計 22,500 美元。前三名占比為 22,500 ÷ 30,000 = 0.75。拿掉這三個月,其餘 57 個月只剩 7,500 美元,平均每月約 130 美元。結果不是持平,但只剩標題數字的四分之一,而且三個大月份都落在同一個波動很大的春季。這個策略的大部分獲利來自一種行情。

假設性的每月績效,由最佳到最差排序:60 個月中,前三個月占淨損益的 75%,其餘 57 個月合計占 25% 三個月賺了 75% 假設性:3 萬美元,60 個月 前 3 名:75% 其餘 57 個月:25% 由最佳到最差排序 沒有它們,只剩四分之一。 所以:查明那些月份的共同點。
月份由好到壞排序。深色三根長條上方的括號就是前三名占比;長的那個括號,是其餘所有月份的合計貢獻。

集中度之所以重要,是因為選擇效應。當搜尋嘗試許多規則變體並保留最好的一個,被保留的通常是那個規則剛好對上該段歷史中最大行情的變體,而那些行情集中在少數幾個月。Bailey、Borwein、López de Prado 與 Zhu(2014)指出,大量搜尋中最好的結果會因為這個效應而被膨脹;為什麼搜尋中最好的回測通常被高估一文說明了他們的論點。集中的月報酬表,正是這種膨脹在表格上的可見痕跡。

下面的回測顯示這種情況在真實的搜尋結果上會如何出現。AlphaPrime 在 NQ 日 K 上搜尋,期間為 2019-01-02 至 2025-06-30,多空皆做,每次一口,每筆扣 20 美元手續費與 10 美元滑價,並從嘗試過的約一千組中,以報酬對回撤的表現,保留了一個候選策略。該候選策略只用一個 Vortex 指標規則作為唯一的進場與出場,沒有停損、目標或過濾條件;它是一個用標準指標做出來的替身規則,並非用來研究月報酬表本身。事後挑出保留的候選策略會美化它,所以下面的數字只描述這一次回測,不能推廣。

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

項目結果
淨利(已平倉)$61,655
最大回撤$38,185
交易筆數68
勝率63.24%
獲利因子1.597
平均每筆$906.69
在場時間7.45%
看形狀,不要看高度。長段的平坦區是沒有平倉交易的月份;每一段陡峭的階梯,就是一兩個會排在排序表頂端的月份。
看形狀,不要看高度。長段的平坦區是沒有平倉交易的月份;每一段陡峭的階梯,就是一兩個會排在排序表頂端的月份。 NQ・日線・2019-01-02 至 2025-06-30・CPU 引擎回測

方塊裡有兩個數字,可以在你建表之前就告訴你這次回測的月報酬表會是什麼樣子。整段期間共 78 個月,卻只有 68 筆交易,平均不到一個月一筆;在場時間為 7.45%,表示這條規則十天裡有九天以上是空手的。因此方格裡大部分的格子會是沒有交易的零,而結果必須集中在有交易的月份。對於交易如此稀少的規則,集中本身是預料之中的;表格要回答的問題是,前三名以外的月份加起來還有沒有價值,以及 38,185 美元的最大回撤(相對於 61,655 美元的淨損益)是一段長時間的連續虧損,還是好幾段。這些都無法從淨損益看出來。一個通過這項檢查的候選策略,在具備意義之前,仍需要通過策略檢驗中後面的各項檢查。

連續虧損之後,多久回復才算合理?

分別數出最長的連續虧損月數,以及從權益高點回到新高的月數,然後把這兩個數字與策略的交易頻率、你實單時願意承受的回撤相比較。連續虧損是指連續幾個月的淨結果為負。回復時間是指權益從某個高點出發,直到首次超過該高點所花的月數。兩者是不同的數字,而後者通常比較長,因為一段連續虧損之後可能是小幅正值的月份,權益要慢慢爬回來。

假設性24個月權益曲線,高點後連續5個月虧損下滑,之後緩慢回升,直到13個月後才突破前高:連虧期5個月,回復期13個月 回復期長於連虧期 假設性權益,24個月 高點 新高 連虧:5個月 回復:13個月 13個月未創新高。 所以:看盤前先設定門檻。
當某個月轉為正值,連續虧損就結束了。只有權益超過舊高點,回復才算結束,而這可能需要長得多的時間。
衡量項目連續虧損回復時間
計算什麼連續為負的月數從高點到新高的月數
何時結束第一個正值月份權益超過舊高點
測試的是什麼你面對紅色數字的耐性你面對沒有進展的耐性
一般的關係較短較長,通常是連續虧損的兩到三倍

先用交易頻率來衡量連續虧損。一個策略每月平倉一筆,且有 55% 的月份獲利,那麼即使純粹靠機率,在六年的歷史中也會出現一段連續四個月虧損。每個月為負的機率是 45%,在任一個起點連續四個月都為負的機率約為二十五分之一,而可以選的起點有 78 個。在這種表格裡出現四個連續虧損月份,並不代表任何訊號。若出現七到八個,就值得仔細看看那段期間市場發生了什麼事。

再用你自己來衡量回復時間。在看表格之前,先寫下你在實單交易時能接受的、最長沒有新高的期間。許多交易者發現,連續十二個月沒有進展,就是他們開始調整設定的時候,而好策略通常就在那時被放棄。如果回測中的回復時間已經超過你事先寫下的上限,實單的回復時間只會更長。Magdon-Ismail 與 Atiya(2004)指出,預期最大回撤會隨觀察期的長度而增加,因此六年的回測會低估一段二十年實單紀錄中可能出現的最大回撤與最長回復。回撤計算機可以從權益序列計算每一段回撤的深度與回復,如何衡量最大回撤則說明該深度應該如何解讀。

假設範例

月報酬表顯示,第二年三月出現高點。四月到八月是五個連續虧損的月份,合計 −9,000 美元。九月到次年二月是六個小幅正值的月份,合計加了 6,000 美元。權益在第三年四月才超過三月的高點。連續虧損是五個月,回復時間是 13 個月。如果一位交易者事先寫下的上限是「十二個月」,就會在新高出現的前一個月停止交易。

月份的季節性是真的還是雜訊?

只有當某個日曆月在大多數年份中符號相同,而且沒有任何單一年份決定了它的平均值時,這個月份才算真正的規律;某一欄裡一個特別大的年度,就是平均值所掩蓋的雜訊。季節性是指某個日曆月的結果,年復一年都傾向於產生相同符號。沿著方格的一欄往下讀,就是檢驗;欄底的平均值,是這一欄最沒有用的部分。

假設的同一個月份、七年期間,兩種策略平均值相同:左邊七年中有六年獲利且幅度相近,右邊則由一年的大幅獲利拉高平均,其餘年份損益小且多為負 是重複出現,還是一年大賺? 同一月份,7 年 · 虛線 = 平均 7 年 6 年賺 一年大賺 一年可能造成假季節性。 所以:剔除最佳年度,重新檢查。
兩欄的平均值相同。左邊的會重複出現;右邊的只是一個貼上季節性標籤的單一年度。

某個月份要進入規則之前,三個條件都必須成立:

  1. 大多數年份符號相同。若有七年資料,至少要有五年一致。七年中只有四年一致,等於擲硬幣。
  2. 沒有任何單一年份占該欄總額超過一半。拿掉最大的那一年後重算平均。如果符號因此翻轉,這個模式就只是那一年。
  3. 你能說出一個理由。例如季末結算、指數調整日期、已知的假期安排。如果某個月為正,但你說不出任何理由,那它比較可能是雜訊,因為有十二欄,其中一欄總會因為機率而看起來特別。

最後這一點是整件事的統計核心。Harvey 與 Liu(2015)主張,從大量可能性中找出的結果,需要比單一測試更高的門檻,而十二個日曆月就是十二次測試。若在一張還包含幾個集中月份的方格上測試,正如前一節所述,問題會更嚴重:大月份會落在某一欄,而那一欄就看起來有季節性。先檢查集中度,再檢查季節性。

假設範例

十月那一欄在七年中的數字分別是 +400、+600、+9,000、−300、+500、−200、+700 美元。平均約 1,500 美元,看起來是一個很強的月份。拿掉 9,000 美元那一年,其餘六年平均約 280 美元,六年中有四年為正。這個模式確實存在,但微弱,而標題平均值是由一年造成的。如果因為那 1,500 美元的平均值,就在十月加碼交易,等於賭那一年會再度重演。

這個策略在各年度之間的表現是否一致?

把年度總額欄與每年的正值月數一起讀。如果一個策略的全部結果只集中在一兩年,就把它視為對某一種市場狀況的單一押注。回測的一致性,是指每一年、以及每一年內的每個月,是否都對最終結果有所貢獻,而不是由少數幾個期間扛起其餘所有結果。年度欄是方格中最粗略的檢視,也是讀得最快的。

兩組假設的七年紀錄,總淨損益相同:一致型每年都小幅獲利,每年有七到九個獲利月;起伏型有一年幾乎吃下全部總額,其他年份接近零,每年只有四到六個獲利月 每年都賺,還是只有一年? 兩者皆 +$21k · 數字 = 12 個月中的獲利月數 一致型 起伏型 8 7 9 8 7 9 8 5 4 6 6 4 5 5 起伏型:一年扛下全部獲利。 所以:逐年計算獲利月數。
七年,兩份紀錄。年度總額與正值月數合起來,就能分辨一個每年都有效的策略與一個只成功過一次的策略。
年度欄的型態代表什麼實單風險
每年都為正,每年有 7 到 9 個正值月優勢存在於各種行情下一年與所有測試過的年份都不同的機率很低
大多數年份為正,一兩個年份小幅為負優勢周圍的正常波動為負的年份要事先規劃;表格顯示它會發生
一年占了大部分總額,其他年度接近零規則是針對某一種市場狀況擬合的實單結果取決於那種狀況是否再現
早期年度強勁,近期年度持平模式可能正在衰退最近的年度,是你即將進入交易的年度

第四種型態值得仔細看,因為最近的年度權重最大。若前三年撐起了獲利,而最後三年持平,這表示一個規則可能已經失效,而任何總數都看不出來。這正是推進分析以更嚴格的形式所問的問題:一般回測的年度欄,使用的是看過每一年的規則;而推進分析的結果,使用的是每一年開始前就已選定的規則。如何解讀推進分析樣本外(OOS)損益的正負號說明了為什麼每一段推進區段的符號,而不是其大小,才是首先要讀的,這同樣適用於此處的年度總額。

對於 NQ 這類股價指數期貨,這項檢查有特定的意義。2019 到 2025 年的期間包含一段長期上漲、2020 年初的急跌,以及 2022 年的長期下跌。一個只做多的規則,可能單靠上漲的年份就能有不錯的總數。而前面展示的那種多空皆做的回測,在 2022 年也有機會貢獻獲利,它的年度欄會顯示是否真的做到了。把每年的正值月數與總額一起看:一個年度總額為正、但十二個月中只有四個正值月的年度,代表的可能只是一兩筆交易,而不是一個有優勢的年度。

打開你最近一次回測的交易明細,在讀報表上的任何其他內容之前,先把方格建出來。記下四個數字:前三名占比、最長連續虧損的月數、最長回復的月數,以及正值年度數占總年度數的比例。然後把回復的數字與你自己寫下的上限比較。如果回測已經超過那個上限,那就是結論,任何淨損益數字都改變不了它。

常見問題

要怎麼讀月報酬回測表?

分四個步驟讀。先把方格排序,看最好的三個月占了多少淨損益。數出最長的連續負值月數,以及從每個權益高點回到新高的月數。沿著每一個日曆月的欄往下讀,看某個月是否在各年間重複相同的符號。最後讀年度總額欄與每年的正值月數,確認每一年都有貢獻,還是只有一年扛起其餘所有結果。

怎麼發現獲利集中在少數幾個月?

把月度結果由大到小排序,加總前三名,再除以總淨損益,得到前三名占比。當這個占比超過約 60% 時,拿掉那三個月,看剩下的部分。如果其餘月份持平或為負,這個回測描述的就是幾段行情,而不是會重複出現的模式。在相信總數之前,先檢查那幾個月的共同點,例如是否都落在同一段波動劇烈的期間。

連續虧損之後,多久回復才算合理?

沒有通用的數字;合適的上限取決於策略的交易頻率,以及你在實單交易時能忍受多久沒有新高。在看表格之前,先寫下這個上限。接著在回測中,數出從每個權益高點到下一個新高的月數。其中最長的那個,是實單交易可能出現的回復時間下限,因為較長的歷史會包含比短歷史更深、更久的回撤。

月份的季節性是真的還是雜訊?

只有當某個日曆月在大多數測試年份中符號相同、沒有任何單一年份占該欄總額超過一半,而且你能說出一個理由時,才把它視為季節性。由一個特別大的年度拉高的平均值,是平均值所掩蓋的雜訊。十二個月中總會有一個因為機率而看起來特別,所以即使某個月在回測中通過了三個條件,仍然值得用規則沒有見過的資料再檢查一次。

參考文獻

  • 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.
  • Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
  • Magdon-Ismail, M., & Atiya, A. F. (2004). Maximum Drawdown. Risk, 17(10), 99–102.