SamSuka
阿程量化交易
阿程量化交易

patreon


【真‧搵Alpha方法 1 + 公開策略量化交易策略 2】 (夏普率1.84)

我相信我的「真‧搵Alpha系列」可以輕鬆寫超過百篇內容 (陸續加進)。每一篇我都會講解以前在大型量化基金內是如何「搵Alpha」,我絕對相信是坊間上極少人會分享的。 今篇是第1節,分享1個簡單方法去如何容易地找到 Alpha。 附圖的績效回報圖,是基於我今天講解的第一種「搵Alpha」的方法: 預測因子的首尾效應


—------------------------------------------------------------------------------------------------------------------------

在講解這種方法前,我們先定義Alpha,這很重要,因為正如我之前的文章所說,很多人對Alpha有不同的看法。為了方便大家理解我對Alpha的看法,我對 Alpha 的定義為:

任何交易訊號可以令我預測某種市況 及 得到一條可信性及回報比高的績效曲線。這種訊號通常由一條公式所產生。

舉個例子: (請不要直使使用)

港股創了最近3年新低 及  大於150天的恆指成份股百份比市寬線由20重上80   ->  買入港期並持有3個月時間

以上便為一條公式,可以文字描述,也可用數學符學表示。

—-----------------------------------------------------------------------------------------------------------------------------

好了,定義完 Alpha 以後,那開始說什麼是預測因子的首尾效應。

當一個量化交易員想要預測恆生指數的Returns時,通常他會先想起一系列對HSI Returns有影響的因子,例如,如果他認為VHSI (恆生恐慌指數) 對預測恆指有用的話,他便去提取 VHSI 的數據。

(市場一般認為 VHSI returns 上升時,恆指的returns 便會下跌; 相反如是。此處的 Returns是對比自身當日的closing price與前一日的closing price)

當他提取了 VHSI 的 Returns數據後,通常量化交易員都會先做個簡單的 Scatter Plot 去看看預測因子與 HSI Returns有沒有明顯的關係:

以上的Scatter plot是對比VHSI當日returns (Time = 0) 與HSI當日returns (Time = 0) (我知道你有可能發現了個問題,我之後再說),而通常量化交易員最希望看到的就是以上這種圖形,有著明顯向下45度,或向上45度的圖形。因為這代表兩個因子有著明顯負/正相關 (此處為負相關)。當X-axis的VHSI returns上升時, Y-axis的HSI returns便下降; 相反時,效果雖沒那麼明顯但也稍有負相關。

你可能會問,那怎麼不直接做回測,找到了有相關的因子就直接回測,不更好嗎? 以下分享些少經驗。

很多初級量化員用了不少時間,但回測多少次,都得不到好結果。其中一個原因是,他們傾向一上來,找到個因子,把止賺止蝕等機制都加進去然後回測+優化,做出一個策略,但很多時侯績效曲線都是差的。我舉個例,假設大家用Python,寫了一個VHSI因子策略去交易恆指ETF,當中包括設下了止蝕,止賺,trailing stop loss,什至是加倉及減倉方法 。於是,那個可測試組合可以輕易地上十萬﹑百萬什至千萬。如果你有不止一個策略,交易不止一個市場,那個優化時間可以上月什至上年計。當然,這裡我說得極端,有技術的朋友絕對不用那麼久,但用幾小時去做個完整優化,也是浪費時間的。所以,我通常做完以上 Scatter plot後,如果得到一個明顯的規律,即肉眼看是有一個明顯的 45度向上或45度向下的規律,我通常才會用該因子去做出一個 Alpha 公式,再能行基本回測,例如純看 Alpha 公式產生買入賣出訊號後,不加止賺止蝕等策略機制下,績效回報會大概是多少,到最後才加入止賺止蝕去優化績效曲線。

(如果沒有明顯規律,我通常會考慮 1.合併因子; 2. 細想該因子的影響力會否被某些因素所覆蓋,如果是的話,再進一步分解; 3. 放棄使用該因子。這三種方法下期再說)

好了,應該有朋友發現了個問題,就是以上的Scatter Plot是對比當日的HSI 及 VHSI 回報,但現實是不能應用於交易的,因為當你得知當日VHSI的returns後,你基本已經同一時間得知HSI的回報,你不能時光倒流去做這個交易。如果是這樣,我只可以假設VHSI出現了有效訊號後,在下一天的VSI的close買入/沽出,同時我們也plot出VHSI的當天returns與HSI的第二天returns:

是的,我們最怕是看到這種圖形規律,一種類近集中軸點 (0,0) 的模樣,代表基本上X是怎樣,都沒有太明顯規律Y可以預測到。由此見可,只是相隔了一天的預測 (用T=0預測T=1),預測能力已經大打折扣。再看,用當天VHSI returns預測50天及100天之後的HSI returns,結果也與預測1天後的HSI returns相似:

到了這步,其實情況就是「預測因子完全顯示不出45度向上或向下的規律」。我還記得以前坐在office裡,苦思著一大堆因子用來預測下一個時段好像都沒有什麼明顯關係的時侯,突然靈機一觸,想到在金融市場裡,噪音這麼多,要在平常情況下找到預測能力高的因子似乎不容易,倒不如是等因子走到極端時,再看看因子令到回報有什麼變化,或者會更為有效。

今天的戲肉來了,然後就是解說「預測因子的首尾效應」。(抱歉要大家聽廢話那麼久)—------------------------------------------------------------------------------------------------------------------------

「預測因子的首尾效應」的原理是:

如果因子的歷史範圍值是 0 至 100,那麼當預測值處於10-90的時侯,是沒有太多預測能力的。但當值跌破10時,或者升穿90,處於極端狀態時,預測能力便相地大增,可以更有效預測下一個交易時段的走勢。(朋友問: 好像是RSI那種升穿跌穿就反手做對不對? 對了一半,但有時升穿90還可能代表要繼續買上,這就要看看下面步驟 去判斷是反手/順勢就好了。)

—------------------------------------------------------------------------------------------------------------------------

那我會在如何用這個「預測因子的首尾效應」技巧?:

Step 1. 如果我從Scatter plot中得出T=0時預測因子及回報有明顯關係 (正/負),但一到用T=0預測T=1時就關係明顯減低,那我便傾向相信這個因子其實是有預測能力,只不過預測能力被其他因素覆蓋了其影響力。

例如你用10-90的預測值,裡面這麼多噪音(或者可以說是市況通常就是這樣,那肯定不會是太有效的訊號) 的範圍去做預測,結果當然不理想,因為Scatter plots中的很多returns點都是這些噪音形成的點。如果將10-90預測值得出的點去除了,只交易0-10 及 90-100 的點,可能就會得出更好的績效了。

另外,為什麼我說「傾向相信這個因子其實是有預測能力」? 因為通常,如果連T=0的預測因子與T=0 的恆指回報都沒有大關係能看出,那這個預測因子基本上我會暫時放下,把時間留在發掘其他更有意義的Alpha。如果T=0預測T=0 的scatter plot能看出有些少規律,理應會有些少影響是隱弱延伸到下一個交易時段,所以才值得深入研究。

Step 2. 然後,在這個例子中,我建立了10個 expanding rolling的 percentile ranges (0-10,10-20,20-30,..., 80-90,90-100)。即由VHSI 2001年開始,由頭一直rolling落去計 (所以計算時會包含越來越多的數值去進行比較),看看到底當日的VHSI值是掉進了那個 percentile range。掉進那個range就取那個的第二天HSI returns值,當作是那個percentile range 產生買入訊號然後得出的 returns。然後,各自分開去計自己 percentile range 所產生出來的 daily returns,到最後計出各自的 cumulative returns。

結果如下:

是的,就是這麼簡單。 如果只做由VHSI 0-10 percentile的值的所生的買入恆指訊號,夏普率已經直達1.84。 這個策略沒有加任何止賺止蝕及其他風險管理方法,單單就用一天的VHSI值去預測第2天的恆指回報,已經可以做到很好的成績。這裡也不用我多說,不論是risk adjusted returns, MDD, sharpe, 什至是absolute returns,也一定大幅拋離 buy-and-hold 恆指。

(如果你覺得有需要睇住教學片,一步一步咁跟住黎複製Alpha,你可以參考以下進階Plan的內容:

Alpha 1 教學片 Part 1:

https://www.patreon.com/posts/jiao-xue-pian-bu-117131096?utm_medium=clipboard_copy&utm_source=copyLink&utm_campaign=postshare_creator&utm_content=join_link

Alpha 1 教學片 Part 2:

https://www.patreon.com/posts/cheng-xin-plan-117824473?utm_medium=clipboard_copy&utm_source=copyLink&utm_campaign=postshare_creator&utm_content=join_link

)

總結:

1. 用Scatter plots 快速找出預測因子與被預測 (例如 returns) 有沒有明確關係。如果T=0預測T=0有關係時,值得花時間更加深入研究

2. 用Percentile range 去分解令到因子預測性更強,更容易做到高Sharpe的Alpha策略

今篇文章本身目的雖然不是送策略 (但唔覺唔覺都送左...有興趣可以試下做下trade HSI ETF / 期貨的效果,其實績效分別唔會太大),但我相信教了大家這個技巧後,應該比我送策略更有意義。

最後,雖然我覺得授人以漁重要,但我希望我的 Patreon可以顧及到兩種讀者:

授人以魚系列: 【公開量化交易策略】-> 直接現成的交易策略

授人以漁系列: 【搵 Alpha 策略 】-> 分享點樣去構思出一個交易策略

如果大家睇完覺得有用,真心,俾個 Like 支持下。多謝晒!

(連結連埋 codes,但我唔係時時都會 update埋 codes,因為我相信一D簡單的 codes 大家也可以自己寫到,未必需要睇我寫的一手爛 codes。我想大家最想要學到的是那個發掘 Alpha 的思維)

----------------------------------------------------------------------------------------------------------------

阿程量化交易 -> 每月數篇精華文章

----------------------------------------------------------------------------------------------------------------

【公開量化策略系列】

策略 1 (Sharpe Ratio 1.4):

https://www.patreon.com/posts/gong-kai-liang-1-98710085

----------------------------------------------------------------------------------------------------------------

【程式交易編程系列】

1. 真正深入回測恆指每月第一個交易日/最後交易日規律:

https://www.patreon.com/posts/zhen-zheng-shen-99709770

----------------------------------------------------------------------------------------------------------------

【行內秘聞】

1. 量化基金如何保護他們的交易策略:

https://www.patreon.com/posts/liang-hua-ji-jin-95730512

2. 行內交易員對Alpha的看法:

https://www.patreon.com/posts/xing-nei-jiao-yi-97170473

3. 上司如何得知一個初級量化交易員的悟性?:

https://www.patreon.com/posts/shang-si-ru-he-99299074

【真‧搵Alpha方法 1 + 公開策略量化交易策略 2】 (夏普率1.84)

Comments

Right, this is to test the factor from another factor processed angle. Sometime alpha sources from this way

SY

文中用daily VHSI return, 我喺度諗如果加入n-day mean VHSI return然後再睇每日呢個value對應嘅percentile, 係咪等同從另一個合角度test緊同一個因子, 同埋呢個做法係唔係make sense? Thanks!

GA

Hi Jacky, For 1, 合併因子有幾種,最常見就係將因子變成z-score,因為變相令因子同因子間有可比性,然後通過arithmetic operation 例如加/除去構建一個新既因子。至於點解要咁做,有d朋友可能覺得靜係用P/E好似唔太robust去describe profitability,咁就可能會combine 埋 P/B 或者其他ratio。 For 2, 如果係合併,通常係降低overfitting機會,因為好似ML既係ensemble方法,lower variance

SY

1. 文中提及到合併因子,可唔可以講多少少如何合併因子呢? 2. 加多咗 / 合併咗因子,會唔會因為增加咗param,同時增加咗overfitting嘅機會? Thanks!

Jacky


More Creators