動能因子可以從各種角度切入,包含價格、成交量、周轉率等等。今天,我們將以價格動能為出發點,用python做回測,帶大家一起檢視價格動能在台股上市市場的表現。
(一) 回測前置作業
- 訂定回測期間: 01/01/2008-31/12/2018
- 設定換倉頻率: 每季/每半年/每年
- 蒐集每個時點(portfolio review date)上市公司名單,可在台灣證券交易所官網下載。
- 下載調整後股價資料
[小提醒] 蒐集每個時點的上市公司成分股是必須的,若省略這個步驟將會遺漏一些已下市的股票,回測將產生倖存者偏誤。
(二) 策略設定
本單元,我們目標為驗證價格動能的有效性。我們採用定審日前一個月的股價漲幅作為價格動能因子,分別選取每次定審日表現最好的前50名以及倒數50名當作投資組合成分股,以價格加權(每檔股票各買一張),檢視這些投資組合的表現。
(三) 進行回測
步驟一: 根據價格動能因子策略,選取每次定審日投資組合的成分股。
步驟二: 將成分股以價格加權,即每檔股票各買一張,方便投資。
步驟三: 以調整後股價當為基準,計算投資組合每日價值的變化。
步驟四: 每次換倉時投資組合價值不變,故”前期投資組合=c*當期投資組合”。藉由此公式算出每期的調整係數c,以連結每期投資組合的表現。
步驟五: 投資組合表現評估。
(四) 績效評估
下圖中,藍色線圖代表Top 50的投資組合,橘色線代表Bottom 50的投資組合。我們可以看到,不論換倉頻率為每季、半年或一年,Top 50的投資組合表現都遠勝於Bottom 50的投資組合。這樣的結果應證了台股「強者恆強」的現象,還有市場上所謂「掉下來的刀子不要接」也不是開玩笑的,從Bottom 50的投資組合中,我們確實沒有看到所謂「跌深反彈」的策略有奏效。
另外,在換倉頻率的部分,我們也可以看到每季換倉與每半年換倉的效果明顯優於每年換倉,這樣的結果顯示了台股動能的持續一般來說不超過半年。
接下來,我們將表現比較好的每季換倉與每半年換倉的投資組合與大盤(台灣加權指數)做分年比較。藍色的線圖代表每季換倉的投資組合,橘色線圖代表每半年換倉的投資組合,灰色線圖代表大盤。在下圖中我們可以很明顯的看到,一般來說在多頭時期價格動能的投資組合表現勝過大盤,然而在空頭時期價格動能的投資組合表現會不如大盤。
(五) 策略改進
上述的回測結果基於我們採用純粹的月報酬來代表價格動能。有了這樣的回測結果後,我們在進一步推敲,若將風險考慮進來,採用風險調整後的月報酬來代表價格動能,會有怎麼樣的結果呢?
重複第三部分的回測步驟,我們僅將成分股的挑選設定由原本的月報酬改變為風險調整後的月報酬,進行回測。
(六) 風險調整後策略績效評估
下圖中我們可以看到,採用風險調整後報酬的績效遠勝過純報酬的績效,代表將風險考慮進來是有效的。而在換倉頻率的部分,每季或每半年換倉一次的表現仍然遠遠優於每年換倉一次,再次映證了一般來說價格動能的持續性不超過半年。
在與大盤比較的部分,我們也可以看到,風險調整後的價格動能策略表現更好了,超跌的部分也沒有這麼深了。然而,還是很明顯地看到,此策略下在牛市的表現依然遠勝過熊市。
(七) 總結
綜合以上,我們可以發現相較於大盤,價格動能因子在多頭的表現優於空頭,而且價格因子動能的持續性不超過半年。從改良後的策略我們也可以看到,將考慮風險後的報酬列入考量可以顯著的提升投資組合績效。
在本單元中,我們看到了價格動能因子的表現,並學會了如何驗證一個因子的有效性。值得注意的是,在這邊我們的目的是驗證一個因子的有效性,故僅用調整後的日收盤價進行回測,回測當中並無考慮換倉成本、股票流動性、可投資容量等等的實際投資上的重要議題。而因子有效性的驗證,提供了如何將因子加入投資策略的重要參考。
若想知道更多細節,可參考
版主你好,
我是大學財金所的研究生,
請問可以提供這篇的code讓我研究嗎?
不勝感激 謝謝
研究生您好,
不好意思剛剛查了Github發現這個部份似乎沒有備份到。
建議可以跟著文章中的步驟寫寫看,有問題歡迎提出討論唷,謝謝!
Great post.