硬骨の研究者という雰囲気を醸し出す藍崎さんに、自由自在に語っていただく企画です。
今回は、階層的リスクパリティ(HRP)について、縦横無尽に解説していただきます。
![藍崎@システムトレーダー氏プロフィール](https://forex-online.jp/wp-content/uploads/2024/02/aisaki-system-trader-profile.png)
藍崎@システムトレーダー氏プロフィール
クオンツから定量分析を学んで生き残りたい個人トレーダー。システムトレードをする傍ら、MT5でEA開発も行う。よく使うのはMQL5、Python、R、Excel VBA。
複数のEAでポートフォリオを組む
一般的に複数の株や債権などのアセットでポートフォリオを組むことで、リスクを分散させる効果があると言われています。各アセットに割り当てる重みを決定するための理論として現代ポートフォリオ理論(MPT)が広く知られていますが、最近では Marcos Lopez de Prado(2016) によって発表されたポートフォリオ理論である階層的リスクパリティ(Hierarchical Risk Parity:HRP)が、安定して高いパフォーマンスを発揮できるとして注目されています。複数のEAを運用するトレーダーにとって、各EAのロット数のバランスをどのように決めるかは、損益に直結する重要なプロセスです。タイプの違うEAを同時に稼働させるときに、このHRPが利用できる可能性があると考えられます。
階層的リスクパリティ(HRP)の仕組み
HRPの目的は、相関係数が高く類似したEAにポートフォリオの重みを集中させないことと、分散の大きい(損益が激しい)EAの重みを小さくすることです。類似したEAにリスクが集中すると同時に負けるEAがポートフォリオに大きな被害をもたらす危険があります。また、分散が大きなEAの比重を重くすれば、そのEAの損益に大きく依存するポートフォリオとなってしまいます。
詳しい仕組みを知らなくてもHRPは実装できますが、概要をつかむため簡単に説明します。HRPは3つのステップで成り立ちます。
HRPがどのように機能するか
ポートフォリオ内のEAに割り当てる重みを定期的にリバランスするとどうなるかを確認していきましょう。
![MPTによるポートフォリオの重みの変化を表すエリアチャート](https://forex-online.jp/wp-content/uploads/2024/07/vol11-aisaki-system-trader-2.png)
図①はMPTによるポートフォリオの重みの変化を表すエリアチャートです。エリアチャートが安定せずにバラバラに推移している様子がわかります。MPTは最適化した期間で最も優秀だったEAに極端に大きな重みを与えてしまっています。ポートフォリオのバランスが安定せず、一部のEAの損益に大きく依存するポートフォリオとなっています。
![HRPによるポートフォリオの重みの変化](https://forex-online.jp/wp-content/uploads/2024/07/vol11-aisaki-system-trader-3.png)
図②はHRPによるポートフォリオの重みの変化を表しています。HRPは損益の分散が低く安定したEAに大きめの重みを付けますが、リバランスを繰り返してもポートフォリオ全体のバランスを大きくは崩しません。このようにMPTとHRPを比較すると、HRPが安定したバランスを維持し続けることがわかります。HRPの特徴的な挙動として、一つのEAが大きく損失を出したときはそのEAの重みを減らして、代わりに相関関係にある別のEAの重みを増やします。相関関係にあるEAが同時に損失となった場合は、相関のないEAの重みを増やすようにポートフォリオを調整します。
PythonによるHRPの実装
Riskfolio-LibやPyPortfolioOptなどのPythonライブラリでHRPを簡単に実装することが可能です。PyPortfolioOptのGithubにHRPを実装するコードが紹介されています。このサンプルコードでは米国株のデータを扱っていますが、これをEAの損益データなど任意のものに置き換えて利用することができます。PyPortfolioOptのサンプルコードはこのURLから確認できます。
参考文献
Marcos Lopez de Prado(2016) “Building Diversified Portfolios that Outperform Out-of-Sample”