【資產配置】第五代資產配置理論:階層式風險平價
修正傳統投資組合理論對於參數過於敏感的問題
原創不易,若轉載請先告知,本人保有法律追訴權
警語:本文為學術目的探討,不表示任何實質投資建議,本部落格也不為投資損益負責,投資人須自負盈虧。
Abstract
Lopez de Prado(2016)結合了機器學習和圖論,想出了將相關係數矩陣降維後再放進MPT求解,如此一來就可以解決MPT對於參數太敏感的問題。其想法是將相關係數矩陣從compete graph 轉換為 binary tree ,原理是透過機器學習中的 clusteing 演算法,總共有3大步驟:
- Tree Clustering:對 correlation matrix 執行 clustering
- Quasi-Diagonalization:將correlation matrix 依照 step1 排序
- Recursive Bisection:依照step2的二叉樹迭代更新權重
Warm up: MPT, IVP
根據馬老師的理論,我們可以建立一個這樣的long-only投資組合
寫成矩陣的形式後
我們可以求得closed form解
Long-Only: Inverse variance portfolio
由於long-only是指作多不做空,所以數學上權重和要為一,即滿足
因此馬老師的解退化為inverse variance portfolio:
Hierarchical Risk Parity(HRP)
Lopez de Prado(2016)提出了3大步驟來執行HRP:
- Tree Clustering:對 correlation matrix 執行 clustering
- Quasi-Diagonalization:將correlation matrix 依照 step1 排序
- Recursive Bisection:依照step2的二叉樹迭代更新權重
由於步驟一和二其實都是針對 correlation matrix 去做降維,至於為何要降維呢?首先我們知道MPT對於參數值過於敏感導致解很難應用,但是為何呢?透過數值分析我們知道是因為相關係數矩陣的conditonal number過高,那要如何解決這個問題呢?
學界對於如何解決conditonal number過高的數值問題有許多方法,但是作者提出來對於相關係數矩陣來說,其根本問題為數學結構上相關係數矩陣等價於圖論上的compete graph,由於太多不必要的edges導致過多雜訊,我們其實只想要一個Hierarchical Structure即可。換言之,左下角的環狀圓形導致太多雜訊所以投資組合的穩定度很差,我們可以透過剪枝的方法將其降維成一個樹狀的結構,減少不必要的雜訊達到優化的目的。
step1 & step2:
可以透過networkx套件視覺化相關係數矩陣,這裡就不做展示。基本上python中只要一行就能完成step1&step2,不過具體上要怎麼選擇linkage method和distance matrix仍然有待實驗,以下為降維後的相關係數矩陣:
import seaborn as sns
sns.clustermap(corr_matrix)
step3
接著重新推導IVP於二叉樹結構下(N=2)的權重:
具體更新步驟如下:
Monte Carlo Simulation
我修改了作者在原論文中所提出的更新算法,改為透過遞歸法從二叉樹bottom-up的走訪迭代更新權重,修改的核心代碼為下:
在100萬次蒙地卡羅模擬中,表現證實優於原有的方法
表現具有robustness,即不論如何修改Linkage方法(Daniel Müllner, 2011),我所修改的bottom-up的方法都勝過原作者所提出的方法至少10%
作者於於蒙地卡羅模擬中證實的確能夠比MPT有更穩定的表現,我自己的實驗實驗結果也是如此。但是在實際的應用中是否能夠有更穩定的表現呢?目前這點還有待證實,目前業界還是傾向於透過BarraRiskModel進行風控,透過平衡各風險因子來穩定投資組合的表現,不過隨著Lopez de Prado本人進入業界鼎鼎有名的量化資金AQR後短短一年不到就離職(AQR Head of Machine Learning Set to Leave After Seven Months),我們或許可以猜測其理論離應用上還有一段距離。
Conclusion
- MPT對於參數敏感的問題是因為相關係數矩陣的conditional number過高
- 可以夠過降維的方式將相關係數矩陣由compete graph 剪枝成二叉樹
- 目前業界還是傾向於使用BarraRiskModel進行風控