揭開策略的波動面紗|MAE&MFE分析圖組使用指南

  • Post author:
  • Reading time:8 mins read

一般我們跑回測會取得報酬率曲線、最大回撤、夏普率等策略總體數值,但這些指標讓我們難以一窺策略下每筆交易的實際波動細節。交易就像跑步比賽,若只看總體數值結果,就像只看一個人跑步的結果,不看過程細節,但這些過程都是我們可以觀察、優化的階段,比如要觀察策略波動時序、勝敗手交易的波動分布是否明顯分群、策略的停損停利怎麼放比較好?藉由對波動性的分析,就不用每次都要堅持跑完煎熬的過程,可能讓我們在更佳點位出場,減少被洗掉、沒高歌離席的遺憾。

如何顯示MAE&MFE分析圖組

Finlab的回測分析模組可以輕鬆將Report.get_trades(...) 的結果帶入Plotly.python做視覺化呈現。

程式範例

from finlab import data
from finlab.backtest import sim

pb = data.get('price_earning_ratio:股價淨值比')
close = data.get('price:收盤價')

position = (1/(pb * close) * (close > close.average(60)) * (close > 5)).is_largest(20)
report = sim(position, resample='Q',mae_mfe_window=30,mae_mfe_window_step=2)
report.display_mae_mfe_analysis()

輸出圖組範例

newplot 1

名詞定義

波幅

再分析接下來的圖表前,要先認識一下波幅的分類,有利於分析前建立基礎知識。

price data
  • AE (adverse excursion) : 不利方向幅度,做多的話,就是下跌的波段。
  • MAE : 最大不利方向幅度,做多的話,就是持有過程中的最大累積跌幅。
  • FE (favorable excursion) : 有利方向幅度,做多的話,就是上漲的波段。
  • BMFE : MAE之前發生的最大有利方向幅度。若BMFE越高,越有可能在碰上MAE之前,先觸及停利出場 (註1)。
  • GMFE (Global MFE) : 全域最大有利方向幅度。若發生在MAE之前,則BMFE等於GMFE。若在MAE之後,則代表要先承受MAE才可能吃到較高的獲利波段。
  • MDD (Max Drawdown) : 最大回撤幅度。
  • Return : 報酬率。

Edge ratio

newplot 1

來自海龜法則 (註2) 的指標,中文稱優勢比率。
edge ratio為平均GMFE / 平均MAE,這可以藉此評估進場優勢,一個真正隨機性的訊號大致上會帶來相等的MFE與MAE。
若大於1,代表存在正優勢,潛在最大獲利空間比最大虧損多,在持有過程中保有優勢可以中途停利或做其他操作,也就是策略的容錯率較高。反之則為劣勢,可能要抗衡較多的虧損狀態。

如何解讀圖組

將交易分為獲利 (profit-藍點) 與虧損 (loss-紅點) 分別呈現,圖組右方的legend可以任一點選,只看profit或loss的分群呈現。接著會「由上到下、由左至右」,解釋各子圖用途。

報酬率統計圖

截圖 2022 07 25 上午11.40.10

子圖1-1,呈現策略下每筆交易的報酬率分布,計算出勝率及平均每筆報酬。
圖片標題為交易勝率,綠色虛線為平均每筆交易的報酬率。
分布曲線越平坦,代表報酬率範圍大,可能有較多的極端報酬率要處理,通常出現在波動大的策略。
若呈現右偏型態(右側的尾部更長,分布的主體集中在左側),代表多數交易為虧損,若整體策略為獲利,則獲利為少筆交易為主要貢獻。
若呈現左偏型態(左側的尾部更長,分布的主體集中在右側),代表多數交易為獲利。
若呈現鐘型曲線,代表分布較為平均。

Edge Ratio 時序圖

edge ratio

子圖1-2是策略edge ratio隨進場時間 (x軸) 後的變化,可以判斷隨著持有時間推移,策略有沒有波幅操作優勢。

參數設定

edge ratio的計算設定由回測函數 backtest.sim() 裡的mae_mfe_window, mae_mfe_window_step 兩個參數來控制。

  • mae_mfe_window : 計算mae_mfe於進場後於不同持有天數下的數據變化,主要應用為優勢比率計算。預設為0,只會產生出場階段的mae_mfe。
  • mae_mfe_window_step : 與 mae_mfe_window參數做搭配,為時間間隔設定,預設為1。若mae_mfe_window設20,mae_mfe_window_step 設定為2,相當於 python 的range(0,20,2),以2日為間距計算mae_mfe。

應用解釋

edge ratio若一直保持在1以上,持有都具有優勢,子圖範例就是這類情況,開局就有不錯表現,明顯的谷底落在第8天後持續走高,代表可能延遲到第8天進場會有低點,之後獲利一路放大優勢。
edge ratio時序圖走勢有很多種,若是開低走高,一開始都低於1,代表策略可能太早進場,一開始都要先承受虧損,這時可以檢討進場時機點,考慮延遲進場。

edge ratio走勢保持在1以上,代表策略優勢明顯。若還隨著時間走高,獲利空間也上升,策略容錯率就較大,就算因一些因素延遲進場仍有較大機率有獲利範圍。
edge ratio走勢很常在1以下,代表策略經常被虧損壓著打,是策略負面訊號。

若隨持有時間變化,優勢漸漸流失,比率開始下降,代表MAE普遍變高,可能是策略催化劑褪色,該策略適合短線操作並考慮加上停利提早出場。
edge ratio走勢跳動,代表無明顯趨勢可判斷。
若策略週期是20天,發現time_scale大於20時,edge ratio趨勢持續走升,則透露策略可能太早出場,錯過後面更大的報酬,可以考慮修正持股週期,吃到更大的獲利。

MAE/Return 分布圖

截圖 2022 07 25 上午11.43.44

子圖1-3,x軸為報酬率,Y軸為MAE,將勝敗手分群顯示成散點圖,比對報酬率與MAE的關係。
此範例中可以發現多數獲利的藍點都有較小的MAE,虧損的紅點有較大的MAE。
虧損部位的MAE第75%位數為10.77%,幾乎所有的藍點都低於這個位置,也就是說過了這個位置,交易最終就容易是虧損結果,可設為停損參考位置,可保留多數獲利部位、減少大賠部位損失。
獲利部位的MAE第75%位數為2.93%,代表多數獲利部位在持有過程中可能的最低點區間,碰到這位置後就有較高機率再往上,積極操作者或分批進場者可設為攤平加碼點位置,有機會讓獲利空間更多或賠更多。

MFE/MAE 分布圖

截圖 2022 07 25 下午12.00.35

從子圖 2-1、2-2 可以觀察MAE與MFE的數據關係,散點圖大小由報酬率來決定。
比對兩張圖可發現,策略內許多GMFE很大的標的,都比BMFE大,代表許多漲幅都發生在MAE之後。想要有較高獲利,就要先忍受回檔,通常這容易發生在趨勢波段策略。
若是短線優異的策略,BMFE 會比較高,可以有較高機率在接觸MAE或停損前先做停利。

分佈象限圖解

截圖 2020 09 29 上午7.48.31

MAE/BMFE分布圖(註3) 能幫助我們看出策略體質、優化設置停損停利。
大原則是「分布在第二象限的點越多越好, 第四象限的點越少越好」、「獲利與虧損明顯分群在不同象限」。
如此 stop_loss過濾掉多數mae過大的標的,少過濾掉獲利的標的。take_profit盡量讓多數虧損的交易先觸及停利出場。

MDD/GMFE 分布圖

截圖 2022 07 25 上午11.59.11


子圖2-3,判斷損益兩平點與鎖利點,橘線為45度線。
橘線以上為MDD > GMFE,如果越多獲利點位於這個位置,代表持有歷程可能歷經大回檔吃掉獲利轉為虧損,雖然最終會是獲利,但我們原本有機會賺更多。

MDD > GMFE 的情況常是一開始就吃大虧損~後來轉正,或是途中大賺後,突然急速下殺賠錢。都是比較不理想的狀況。子標題顯示的「Missed win-profits pct」為「獲利交易位於橘線上的數量/獲利交易數」,數值越高代表潛在錯失獲利的機會較高,數值越高代表越需要設定移動停利去保護獲利。

橘線以下為MDD < GMFE,代表獲利的交易達到價格高點後,即使後來回檔,因回檔不會吃掉全部GMFE,所以不會轉為虧損。若是虧損的部位位於橘線以下,由於MAE <= MDD < GMFE、MAE <= Return,可以推導出即使虧損,MAE也會比GMFE小,比較高的機會是小虧出場。子標題顯示的「Breakeven safe pct」 為「橘線下的比例/全部交易數」,也就是越不容易輸的比例。

MAE、MFE 密度分佈圖

截圖 2022 07 25 下午12.40.53

子圖3-1、3-2、3-3。由 plotly-distplot 繪製而成,看指標的比例分佈曲線。
子圖3-1為 MAE 密度分佈圖,通常策略體質若較優,勝敗手的高峰會有明顯分群,贏錢的MAE通常較小、輸錢的MAE通常較大,向右過了藍紅曲線的交叉點後,虧損的交易會變得比獲利的交易多,可以視為比較緊的停損點或是開始分批停損的參考。勝敗手Q3(第75分位數)的應用可參考MAE/Return 分布圖的說明,勝手Q3為積極者加碼點,敗手Q3為絕對停損點,再不跑就容易大賠啦!

子圖 3-2、3-3 為 MFE 密度分佈圖,應用概念與子圖3-1類似。
多數的敗手不會超過敗手MFE Q3 的位置 (圖中的5.16),換句話說,漲過這個點後,多數交易最終會是獲利的,既然最終會是獲利的,那就會是一個不錯的突破加碼點位,若想要更高的機率確保加碼點安全性,可以用敗手MFE 大於Q3 的位置,例如藍紅曲線的交叉點。
勝手MFE Q3 則可視為分批停利減碼點參考位置。

Indices Stats

截圖 2022 07 25 下午12.42.21
group模式
截圖 2022 07 25 下午1.41.57
overlay模式

子圖4-1,將各種數據用提琴圖呈現統計結果,可藉由display_mae_mfe_analysis 中的 violinmode 參數控制顯示模式,預設為group模式,將勝敗手分群統計,overlay模式為全數統計。提琴圖hover過後能顯示數據的分位數資料,可快速觀察所有數據的統計分佈,方便設定停損停利點能參考分位數的數值。
除了先前介紹的mae_mfe,其他還有統計數值:

  • pdays_ratio:獲利交易日數/交易持有日數,中位數數值若大於0.5,代表多數交易持有期間都是獲利,操作起來更有彈性。若mfe高,但pdays_ratio低,代表若沒把握到衝高的少數時期,則會錯過理想報酬。

結論

是不是對波動分析更加瞭解了呢?一張圖表包山包海,完整分析出策略細節。

若想更深入了解MAE/MFE最大幅度分析法。除了國外資源,中文內容推薦藍月記事,其對這方面的策略體質觀察、優化有全方位的影片教學內容,作者對量化分析與交易心理有獨道見解,推薦大家前往學習。

相關學習資源

Ben

Python 軟體工程師與量化策略研究員。 鑽研資料工程、網頁後端、資料視覺化、量化交易策略開發。 投資主力在台股市場,量化策略為主、質化分析為輔,追求人機攜做最佳化。逐步將觸角延伸到總經、美股、加密貨幣,朝更全方位的交易人邁進。