量子コンピュータによるポートフォリオ最適化(Part 1: ポートフォリオ最適化の理論)

📅 January 12, 2020

⏱️16 min read

0

Photo by Amber Kipp on Unsplash

株などで資産運用を行う際,どんな金融資産どれくらいの比率で持つか?で迷ったことは無いでしょうか.今回はこの疑問に答えるために金融資産の組み合わせである,「ポートフォリオ」を最適化する理論を紹介します.さらにPart 2ではこの最適化問題を量子コンピュータで解く方法も紹介したいと思います.

金融工学におけるポートフォリオ

ポートフォリオとは金融資産の組み合わせです.金融資産とは例えば,株や債券など様々なものがあります.これらを組み合わせる,というのはメルカリ株を1000株と,個人向け国債を100万円分買って...というような感じです.

また,投資信託等ではポートフォリオ自体に投資することができます.投資信託では投資家から集めたお金を資産運用の専門家がかわりに運用するものですが,専門家(ファンドマネージャー)がこのポートフォリオに組み入れる金融資産の種類や割合を決めています.

金融資産は価格変動がそれぞれ異なるのでうまく組み合わせることで,期待収益率価格変動リスクとを調整することができます.まず期待収益率と価格変動リスクを定義してみます.

ここでは株を考えることにします.ある時点ttにおける株価がStS_tとします.t=t0t=t_0で株価はSt0S_{t_0}であるときに,t1>t0t_1>t_0における株の収益率RR

R=St1St0St0\begin{aligned} R = \frac{S_{t_1} - S_{t_0}}{S_{t_0}} \end{aligned}

と定義されます.対数収益率を用いることもありますが,今回は上の定義を用いることにします.t1t0t_1-t_0を1年とすれば年次収益率,1日とすれば日次収益率...という感じです.

さて,ここでは金融資産の価格変動が確率的であって,収益率は確率変数であり,確率分布に従って生成される,と仮定します.このようなモデルを行うことで,統計学のツールが利用可能になります.組入比率を決めると,ポートフォリオの収益率の確率分布が決定します.ただし,確率分布を直接扱うのは難しいので,期待値等の統計量を用いることにします.また,ここでは確率分布は時間に依存しないという(強い)仮定を起きます.

もちろん,実際は収益率は様々な要因に依存するため,このような静的な確率分布でモデル化するのは不十分です.そのため,機械学習を含め,様々な手法が用いられます.それ自体も重要な話題ではありますが,今回は割愛します.例えばファイナンス機械学習等に乗っています.

複数の資産を組み合わせてポートフォリオを作った場合,そのポートフォリオの収益率の期待値はどのようになるでしょうか? 2銘柄をω1\omega_1ω2\omega_2づつ持っているとすると,期待値には線形性があるので,

E[ω1R1+ω2R2]=ω1μ1+ω2μ2E[\omega_1 R_1 + \omega_2 R_2] = \omega_1 \mu_1 + \omega_2 \mu_2

となります.ここでμiE[Ri]\mu_i\coloneqq E[R_i]です.これを最大化するのがポートフォリオ最適化でしょうか?

このままだと収益率の期待値が最大の銘柄に全資産つっこむことになります.さらに,収益率の期待値が借り入れの金利より大きければ借りられるだけお金を借りて,その銘柄を買えばいいことになります.

実際には価格変動リスクを考慮する必要があります.基本的には収益率の期待値が大きいものは価格変動リスクも大きくなるので,上記の投資だとめちゃくちゃリスクを取ることになります.

では,この価格変動リスクをどう抑えるか?ですが,まず,価格変動リスクを定義する事から始めます.

金融工学においては価格変動リスクを測る指標はボラティリティと呼ばれ,収益率の標準偏差によって定義されます.

σi=Std[Ri]\begin{aligned} \sigma_i = \mathrm{Std}[R_i] \end{aligned}

複数の銘柄を組み合わせた場合のポートフォリオの価格変動リスクはどうなるでしょうか?まずは収益率の分散を考えてみると

Var[ω1R1+ω2R2]=ω12Var[R1]+ω22Var[R2]+2ω1ω2Cov[R1,R2]=ω12σ12+ω22σ22+2ω1ω2σ1,2\begin{aligned} \mathrm{Var}[\omega_1 R_1 + \omega_2 R_2] &= \omega_1^2 \mathrm{Var}[R_1] + \omega_2^2 \mathrm{Var}[R_2] + 2\omega_1\omega_2\mathrm{Cov}[R_1, R_2]\\ &=\omega_1^2 \sigma_1^2 + \omega_2^2 \sigma_2^2 + 2\omega_1\omega_2\sigma_{1,2} \end{aligned}

となります.ここでσi2Var[Ri],σi,jCov[Ri,Rj]\sigma_i^2\coloneqq\mathrm{Var}[R_i], \sigma_{i,j}\coloneqq\mathrm{Cov}[R_i, R_j]となります.ポートフォリオのボラティリティはこれの平方根をとったものになります.

ここで一般化して,NN銘柄のポートフォリオの収益率の期待値μp\mu_pと分散σp2\sigma_p^2

μp=i=1Nωiμiσp2=i,j=1Nωiωjσi,j\begin{aligned} \mu_p &= \sum_{i=1}^N\omega_i\mu_i\\ \sigma_p^2 &= \sum_{i,j=1}^N\omega_i\omega_j\sigma_{i,j} \end{aligned}

となります.

収益率の期待値だけでなく,価格変動リスクに関する指標である,ボラティリティも得られました.

分散投資

ところで,分散投資を行うことで(価格変動)リスクが小さくなるという話を聞いたことはないでしょうか?上で紹介したモデルで,このことを検証してみます.

最も簡単には当比率ωi=1/N\omega_i=1/Nで,分散が一定σi2=σ2\sigma_i^2=\sigma^2で,共分散も一定σi,j=σc\sigma_{i,j}=\sigma_cのポートフォリオが考えられます.このとき,

σp2=i=jσ2N2+ijσcN2=σ2N+(N1)σcN=σ2σcN+σc\begin{aligned} \sigma_p^2&=\sum_{i=j}\frac{\sigma^2}{N^2}+\sum_{i\neq j}\frac{\sigma_c}{N^2} \\ &=\frac{\sigma^2}{N}+(N-1)\frac{\sigma_c}{N}\\ &=\frac{\sigma^2-\sigma_c}{N}+\sigma_c \end{aligned}

ここで,σ2σc>0\sigma^2-\sigma_c>0であるので,NNが大きくなるとσp2\sigma_p^2が小さくなることがわかります.NN\rightarrow\inftyσp2σc\sigma_p^2\rightarrow\sigma_cとなります.

分散投資をすることで,価格変動リスクが抑えられることがわかりました.今は分散,共分散が一定のNN銘柄に対し,当比率でポートフォリオを構成しましたが,これよりもっとリスクが小さそうな構成比率がありそうです.

ポートフォリオ最適化

ここでは次のようなポートフォリオ最適化問題を考えます.

収益率の期待値がμp\mu_p^\astという制約のもとで,ポートフォリオのボラティリティσp\sigma_pを最小化するような組入比率を求める

ボラティリティの最小化ですが,これは分散σp2\sigma_p^2の最小化と同じなので解くべき問題は

mini,j=1Nωiωjσi,js.t.i=1NωiRi=μpi=1NωiSi=ξ\begin{array}{ll} \min & \sum_{i,j=1}^N\omega_i\omega_j\sigma_{i,j} \\ \mathrm{s.t.} & \sum_{i=1}^N\omega_iR_i = \mu_p^\ast \\ & \sum_{i=1}^N\omega_iS_i = \xi \end{array}

という等式の制約がついた二次計画問題で表されます. 最後の条件i=1NωiSi=ξ\sum_{i=1}^N\omega_iS_i = \xiは現在時点でのポートフォリオの価格が予算ξ\xiと等しい,という条件です.

今回は株を空売り1可能であると仮定します.これはωi\omega_iが負の値を取りうるということです.

さらに,実際には上式以外にも様々な指標に対する制約があるのですが,今回は簡単のためにこのモデルを検証することにします.(Part 2ではこの問題に対する量子アルゴリズムを考えるため,という理由もあります)

Lagrangeの未定乗数法

さて,等式制約付きの二次計画問題を解くわけですが,これはLagrangeの未定乗数法を用いることで解くことができます.

Lagrangeの未定乗数と呼ばれるパラメータη,θ\eta, \thetaを導入して

L=i,j=1Nωiωjσi,j+ηi=1N(ωiRiμp)+θi=1N(ωiSiξ)L = \sum_{i,j=1}^N\omega_i\omega_j\sigma_{i,j} + \eta \sum_{i=1}^N\left(\omega_iR_i - \mu_p^\ast\right) + \theta\sum_{i=1}^N\left(\omega_iS_i - \xi\right)

という量を定義します.このLLの各パラメータωi,η,θ\omega_i, \eta, \thetaに対する停留点が解になっているというのがLagrangeの未定乗数法です.2

実際

Lη=i=1NωiRiμp=0Lθ=i=1NωiSiξ=0Lωi=2j=1Nσi,jωj+ηRi+θSi=0\begin{aligned} \frac{\partial L}{\partial \eta} &= \sum_{i=1}^N\omega_iR_i - \mu_p^\ast = 0 \\ \frac{\partial L}{\partial \theta} &= \sum_{i=1}^N\omega_iS_i - \xi = 0 \\ \frac{\partial L}{\partial\omega_i} &= 2\sum_{j=1}^N\sigma_{i,j}\omega_j+\eta R_i+\theta S_i = 0 \end{aligned}

となる.

N+2N+2個のパラメータに対して,N+2N+2本の線形方程式が与えられるので,この連立方程式を解いてやると最適な組入比率ωi{\omega_i^\ast}が得られます.

この連立線形方程式を行列で書くと

(00R00SRSΣ)(ηθω)=(μpξ0)\begin{aligned} \begin{pmatrix} 0 & 0 & \vec{R}^\top \\ 0 & 0 & \vec{S}^\top \\ \vec{R} & \vec{S} & \Sigma \end{pmatrix} \begin{pmatrix} \eta \\ \theta \\ \vec{\omega} \end{pmatrix}= \begin{pmatrix} \mu_p^\ast \\ \xi \\ \vec{0} \end{pmatrix} \end{aligned}

となります.ここでR=(R1,,RN),S=(S1,,SN)\vec{R}=(R_1,\dots,R_N)^\top, \vec{S}=(S_1,\dots,S_N)^\topであり,Σ\Sigmaσi,j\sigma_{i,j}を成分に持つ分散共分散行列です.

よってポートフォリオ最適化問題は逆行列計算を行えばいいということがわかります.逆行列計算はO(N3)O(N^3)かかるので銘柄数が多くなってくるとけっこう大変になってきます.

この逆行列計算はHHLと呼ばれる量子アルゴリズムによって高速化できます.(ただし,いくつか条件があります)

まとめ

本稿では金融工学におけるポートフォリオの理論を紹介し,分散投資によって価格変動リスクが低下することを見ました. また,簡単なポートフォリオの最適化問題を二次計画問題として定式化し,線形連立方程式に帰着することを見ました.

Part 2ではHHLよってポートフォリオの最適化を行う手順を紹介したいと思います.また,最適化問題の設定によっては線形連立方程式に帰着しないため,内点法に基づいた量子アルゴリズムによって最適化問題を解く方法を紹介します.


  1. 空売りとは,実際には持っていない株を売ることである.これは,株を借りて市場で売り,決済の際には,市場で買い戻して株を返す,といった方法や,信用取引を用いることで実現可能である.ただし,実際には空売りできない銘柄も存在する.

  2. ラグランジュの未定乗数法の解説と直感的な証明がわかりやすいかも

0