今次而篇「真‧搵Alpha策略系列 2」分享一個構建交易策略的大框架,令大家更加容易可以搵到高 Sharpe 的 Alpha 策略。何解會寫這篇文? 因為很多新手朋友剛開始做量化交易回測都會行錯路,陷入一到兩年新手期內都找不到高 Sharpe ratio 策略的情況。但其實,在行內有一段時間的朋友,都知道要找到高Sharpe策略並不是一件難事,反而更難的是怎樣去Verify它們的可靠性,我日後會講更多。
回歸正題,新手朋友在一段時間內都找不到高Sharpe策略主要原因有以下兩種:
1. 過於著重回測得出一個45度向上升的績效曲線圖
2. 回測策略多元化太低
解決了以上問題的話,其實是不難找到一個 Sharpe ratio > 1的策略。
—------------------------------------------------------------------------------------------------------------------------
在提供解決方法前,我想和大家分享我以前作為新手時做回測的心路歷程:
以下是一個恒指期貨的短期逆轉 (Short term reversal) 策略交易邏輯:
1.如果5天平均線 上穿 15天平均線,於下一個交易日的close沽出,並於再下一交易日的close平倉;
2.如果5天平均線 下穿 15天平均線,於下一個交易日的close買入,並於再下一交易日的close平倉
(這裡假設是雙邊 4bps,即如果恆期在20000點時,雙邊一共8點交易成本)
作為一個新手,應該也做過 moving average cross over 的策略回測吧。5天及15天平均線相交而入市及出市,很合理也很容易做出來。好,那看看成績是怎樣。
交易績效曲線看上去不夠穩定地向上斜,夏普率及最大回撤看上去應該也不是太好,可能對很多人來說都不夠吸引。
Sharpe ratio: 0.33
CAGR: 2.16%
MDD: 22.89%
Exposure: 7.98%
於是,作為一個新手的我,通常有以下三種做法:
1. 做參數優化
2. 新加進或減去一些技術指標再優化
3. 放棄上述的交易策略,然後在同一個交易資產上嘗試其他策略類型例如趨勢跟隨 (Trend Following)
試做了一下參數優化,發現這個交易策略其實是有更好的參數選擇:
大家可以看見近左下方有數個參數組合都是相對高一些 Sharpe ratio的 (當然低於1也絕對不是高),按傳統的參數選擇方法的話,我會選 快線MA 為26 及 慢線MA 為36 的那個組合,也就是左下黃色的那個格顯示的組合,因為它給我帶來樣本內最高 Sharpe ratio的成績。看看最新的成績:
Sharpe ratio: 0.49
CAGR: 2.09%
MDD: 15.62%
Exposure: 3.12%
與未被優化的參數組合 (5MA&15MA),這個(26MA&36MA)組合在Exposure低了一半有多的情況下CAGR也只是由2.16%跌至2.09%,加上Sharpe ratio及MDD都有明顯改進,感覺上是好了點。但另一方面,我這樣選個最好的參數,聽很多老師說過又好像是overfitting出來,在實盤時策略會容易失效,而且策略績效始終不是45度向上升,而是有些升升跌跌,加上2011年至2023年都是沒有什麼亮麗成績,整體感覺就是不合格。
於是以前的我可能就會左加一些指標,右減一些指標,最後弄不好就直接放棄...... 然後再loop其他交易策略到恒指期貨再做回測,試不好又再用到其他市場,到最後發覺很多市場都沒有好的績效。
—-----------------------------------------------------------------------------------------------------------------------
心路歷程完畢,以前聽太多朋友也是這樣放棄了量化交易,因為好像很不容易找到一個好的策略。
多年之後,我才發現要更容易地找到一個高Sharpe策略的解決辦法是:
「把多個相關性低的單個Alpha組合起來,成為一個新的聚合Alpha策略」
那怎樣才做到?
首先,不要期待單個Alpha有一個完美的45度向上傾斜的績效曲線。如果有,那大概是有問題,例如 Look ahead 問題。像上面的績效曲線,有一個大概的45度向上升,即使上升時有點spikes也可接受。
第二,找尋相關性較低的交易策略,例如交易策略性質不一樣(trend vs mean reversal vs short term arbitrage),或者即使是同一類型的策略但參數組合極為不同 (e.g. 2MA10MA 及 50MA150MA的兩個組合)
最後,將多個alpha合併進行回測,並平均分配/用不同組合優化方法將資金分到每個策略。通常,一條更為平穩的績效曲線及一個Sharpe ratio更高的Alpha策略就可以產生出來。
例如,除了剛才上面的5MA-15MA單個Alpha外(Alpha1),我另外加了兩個新Alphas(Alpha2及Alpha3),3者都計算了交易成本 (4bps 雙邊)。見到3條線的績效回報在不同交易時期都略有不同,整體都是向上。一但將三個獨立Alpha聚合起來,變成一個新的聚合Alpha (平均分配資金),通常就是會有如上圖一樣,聚合Alpha(藍線)會更平穩地向上發展,大大減少出現突然上升及下跌的回報日子,曲線更為平滑而有相當好的回報。
例如在1998,2008及2018的年份,都可見聚合Alpha的drawdown遠遠比單個橙色Alpha為低,更為安全。的確聚合Alpha對比單個Alpha1的回報低了,但都係個句,我地追求的是風險調整後回報高而非絕對回報高,等同過大海可以賭大小一秒一倍但同時風險是一秒變零。
另外,在Sharpe ratio方面,聚合Alpha比任何以上一個單獨Alpha都高。那為何這樣合成通常會有更好的overall成績? 原因很簡單,就是市況不停變的時侯,如果您只用一種類型的交易策略,例如 trend following,那麼在市況回調時你的策略便可能未及早適應而開始輸錢。此時,如果你不只行一個策略,那麼其他類型的交易策略就有機會可以幫您彌補到輸的錢,什至是淨賺。那麼最終只要您多個相關性低的策略是整體賺錢的話,其實就等於在每一個日子您都有些微淨賺,績效曲線當然便可穩定上升,而且遠比只用一個單獨Alpha好。
有人可能會問,我們看到以上的聚合Alpha的回報比其中的一個獨立Alpha為低(比橙線),是否一個壞處? 其實一般情況下如果要 Sharpe ratio高,除用套利/另類數據的交易策略外,一般的交易策略並不能有太高exposure。但低exposure代表未必賺得多,因此會對回報可能有些負面影響。但記住我們要做的是提高風險調整後的回報,而非絕對回報。另外,使用單一策略有極其大的策略風險,例如策略一但失靈,成績便可能大幅受影響。用以上的聚合Alpha則可大大減低單個策略失靈的影響。
寫到此,我留給大家去嘗試,去加多些exposure低但自身整體向上的獨立Alpha,看看對整體的聚合Alpha有何影響。例如,想想有什麼Alpha是可以適應到2009年至2020年期間的市況,從而可以將累積回報及Sharpep提升一些。
不過要記得一個重點,就是當您做 Alpha 合併的時侯,務必要計算好每個 Alpha 的 交易成本(transactions cost)。否則的話你可能會發現同一個策略logics,turnover 高一些的參數組可能會比低 turnover的版本成績好很多,例如 MA(2) cross down MA(5) 的成績比 MA(2) cross down MA(50) 可能好很多,但實際做起交易時並沒有這個優勢,只是紙上回測沒有計入交易成本所以 2-5MA 策略紙上看比較能適應市場而獲利更好。
上一篇文「真‧搵Alpha策略系列 1」分享左點樣「搵」及「測試」一個預測因子,來判斷該因子可否做出一個可行的交易策略。好多朋友都話以前未聽過原來一個咁容易的方法就可以搵到一個高 Sharpe 的 Alpha ,仲要係未優化已經高 Sharpe。但另一邊的朋友聽完之後就話d codes 有少少難明,因為有朋友本身唔識 python,而方面遲下我再幫大家,會有新plan出爐。希望您地可以幫忙分享出去俾更多朋友知道,衷心謝謝各位。
(本文的交易策略雖然有計交易成本,但策略只是用來示範聚合Alpha概念,大家留意。)
SY
2024-08-16 05:13:46 +0000 UTCRyan Ng
2024-08-16 03:54:29 +0000 UTCSY
2024-05-18 08:28:53 +0000 UTCKen Ng
2024-05-18 08:05:42 +0000 UTC