クイックノート

ちょっとした発見・アイデアから知識の発掘を

時間分散投資と最適ポートフォリオ選択

投資では、投資先を分散させることによって、
リスクを下げる戦略がよくとられます。

投資先とは何も銘柄のようにモノに限ったものではなく、
時間的に分散するという戦略も取ることができます。

金融商品にも、定期的に積み立てていくような
時間的に分けて投資する商品が多くみられますよね。

ところで、単に時期を分けて複数回買うだけで良いのでしょうか。
一番簡単なのは、毎月決まった数の株を買うなど、
均等に分割することですが、これが最適なのでしょうか。

より良い分割方法があるとすれば、
それはどのように時期を分けることなのでしょうか。

ここでは、時間分散投資でどの時期に資金を投入すべきかを、
ポートフォリオ選択として考えて、
最適な分割方法をみていくことにします。

時間分散投資

例えば、ある会社の株を1000株購入する時に、
今1000株購入するのではなく、
毎月100株ずつを10ヶ月に渡って購入するように、
複数の時期に分けて投資することを、
時間分散投資と呼びます。

決まった量を購入するのではなく、
決まった金額分を定期的に購入するような場合には、
ドルコスト平均法と呼ばれますが、
これも時間分散投資の一種です。

株などの金融商品は、
時間とともに価格が変化するので、
時期をずらしながら購入することで、
その変化のリスクを軽減することが主な狙いとなります。

決まった量、決まった金額など、
消費者にとって分かりやすい商品が多いのですが、
このような均等分割は最適なのでしょうか?

この疑問に答えるために、
最適な分割方法を考えてみましょう。

ポートフォリオ選択

一般に、A会社、B会社、C会社の株といったように、
投資の対象は複数存在しており、
それぞれ期待される収益と、
そのバラツキ(リスク)が異なっています。

複数の会社に資産を分けて投資することで、
収益とリスクを自分でコントロールすることができます。

どの金融商品にどれだけ自分の資産を投入するかの比率は、
ポートフォリオと呼ばれていて、
投資家はこのポートフォリオをうまく調整することで、
所望する収益を最小のリスクで手に入れます。

最適化問題としてのポートフォリオ選択

上述のようなポートフォリオの選択を、
最適化問題として書くと下のようになります。

 minimize :  \sigma^2=\sum_i \sum_j w_i w_j Cov(r_i,r_j)

  subject\ to: \sum_i w_i E[r_i] = \mu

ここで、\muは目標とする全体の期待収益、
\sigma^2は全体の収益の分散です。
w_ii番目の金融商品に対する投資比率を表します。
最適化問題としては、ポートフォリオw_iを調整することで、
期待収益\muを達成しつつ、
リスク\sigma^2を最小化することになります。

E[r_i]i番目の金融商品の収益の期待値で、
Cov(r_i,r_j)i,j間の収益の共分散を表します。

最適化問題の解

上述の最適か問題の解、つまり、
目標の収益を達成しつつ最小のリスクになるようなポートフォリオは、
次のように計算できることが知られています。

 w_i = \frac{\mu\sum_j v_{ij} (CE[r_j]-A) + \sum_j v_{ij}(B-AE[r_j]) }{D}

ここで、v_{ij}は分散共分散行列の逆行列ij要素、
A,B,C,Dはそれぞれ次を表します。

 A =\sum_i \sum_j v_{ij} E[r_j]

 B = \sum_i \sum_j v_{ij} E[r_i] E[r_j]

 C = \sum_i \sum_j v_{ij}

 D = BC - A^2

また、このポートフォリオによって最小化されたリスクは、
次の式で表されます。

 \sigma^2 = \frac{C\mu^2 - 2A\mu+B}{D}

この最適なポートフォリオ選択の結果と、
均等な時間分割投資を比べてみましょう。

ポートフォリオ選択としての時間分散投資

複数の投資先の収益の期待値や共分散がわかれば、
上述の最適化の結果、リスクを最小とする投資比率や、
その時のリスクと期待収益の関係が分かります。

時間分散投資では、
異なる時期ごとを異なる投資先と考えれば、
どの時期に資金を投入すべきかのポートフォリオ選択として、
最適化を考えることができます。

このような方針に沿って時間分散投資をモデル化して、
ポートフォリオ選択の最適化に当てはめていきましょう。

時間分散投資のモデル

手数料のない金融商品の売買を考えます。
ある時の金融商品の価格をP_kとして、
時間の経過で次のように価格が変化するものとします。

P_{k+1} = P_{k} + d_k

ここで、d_kは一定時間ごとの価格の上下を表す確率変数で、
その平均と分散は\mu_d,\sigma^2_dとします。
ただし、異なる時間での価格の変化は独立であるとします。

現時点での価格をP_0とすれば、
k時点目の価格は、

P_k = P_0 + d_1 + \cdots + d_k

とも表すことができます。

k時点で購入した金融商品を、
最終的にt時点で売却すれば、
その差額が収益r_kとなり、

 r_k = P_t - P_k = d_t + d_{t-1} + \cdots + d_{k+1}

で表されます。

売却はt時点で行うものとして、
いつ購入するかを選ぶものとして考えることとします。

収益の期待値

最適なポートフォリオを計算する上で必要となるのが、
それぞれの収益の期待値と共分散でした。

まず、期待値に関しては、期待値の和の法則から、

 E[r_k] = (t-k)\mu_d

となります。

収益の分散

共分散の前に分散を求めておきましょう。

分散についても和の法則から、
 V[r_k] = (t-k)\sigma^2_d

となります。

収益の共分散

異なる時期に購入したものも、
同じ商品の価格変化を追っているので、
そこから生まれる収益にも関連性があります。
それが共分散の形で現れてきます。

時点 i,j (i \lt j) について、
共分散の和の法則から、

Cov(r_i,r_j) = Cov(d_t + d_{t-1} + d_{j+1},r_j) + Cov(d_{j}+\cdots+d_{i+1}, r_j)\\      =Cov(r_j,r_j)

となりr_jの分散と等しくなります。

数値例

実際に数値を当てはめて、
上述の時間分散投資について調べてみましょう。

数値設定

直感的にも、上述の式からも分かる通り、
初期の価格は収益に影響を及ぼしませんが、
初期の価格も含めて、以下のように数値を設定します。

変数 数値
初期価格 P_0 100
期待変化 \mu_d 5
変化の分散 \sigma^2_d 5
期間 t 10

長期的な価格が上昇している状況の設定です。

最小分散フロンティア

最適化を行うと、
同じ期待収益を得るための最小の分散(リスク)が分かるのでした。

この期待収益と最小の分散の関係を表す曲線を最小分散フロンティア
と呼びます。

まずは、この最小分散フロンティアを表示してみましょう。

dollar_cost_asset = function(buy_time){
  buyP = initP + d_mu*buy_time
  sellP = initP + d_mu*term
  
  list(MU=sellP-buyP,V=(term-buy_time)*d_v)
}

mvf = function(x){
  V = solve(V)
  MUij = MU %*% t(MU)
  
  A = sum(V %*% MU)
  B = sum(V * MUij)
  C = sum(V)
  D = B*C-A^2
  
  (C*x^2-2*A*x+B)/D
}

tmp = sapply(0:(term-1),function(t){dollar_cost_asset(t)})
MU = unlist(tmp[1,])
V= diag(tmp[2,])
for(i in 1:term){
  for(j in 1:term){
    V[i,j] = min(term-i+1,term-j+1) * d_v
  }
}

plot(mvf,min(MU)*1.0,max(MU)*1,xlab="return",ylab="risk")
lines(x=MU,y=diag(V),type="p")

下のグラフは横軸を期待収益、縦軸をリスクとして、
最小分散フロンティアを曲線で、
特定の時点に全資産を投入して購入した場合を点で表示しています。

f:id:u874072e:20190830140337p:plain
最小分散フロンティア

確かに最適化によって求められる解では、
特定の時期に全資産投入する場合に比べて、
同じ収益を得るためのリスクが低いことがわかります。

ただし、全額を最初につぎ込む右端の点と、
全額を直前につぎ込む左端の点では、
最小分散フロンティアと一致していることが分かります。

均等分割との比較

次に興味があるのは、
一番簡単な均等分割を行なった場合は、
上のグラフのどこにくるかということです。

ということで、ポートフォリオを等分割した時の収益とリスクを、
グラフに書き加えます。

dca = function(){
  tmp = sapply(0:(term-1),function(t){dollar_cost_asset(t)})
  
  mu = mean(unlist(tmp[1,]))
  v = sum(V/(dim(tmp)[2])^2)
  return(list(mu=mu,v=v))
}

library(plotly)
plot_ly() %>% 
  add_trace(x=MU,y=sapply(MU,mvf),mode="lines",name="最小分散フロンティア") %>%
  add_trace(x=MU,y=diag(V),mode="markers",name="まとめて投資") %>% 
  add_trace(x=dca()$mu,y=dca()$v,mode="markers",name="均等分割") %>% 
  layout(xaxis=list(title="revenue"),yaxis=list(title="risk"))

下のグラフでは、均等分割の場合を追加しました。
ついでに、グラフの見栄えをよくしました。

f:id:u874072e:20190830145925p:plain
均等分割を追加

全額を一気に投入するよりは、
最小分散フロンティアに近づきましたが、
曲線と一致していないので、
均等分割はリスク最小化の意味で最適ではないことが分かります。

とはいえ、難しいことを考えずに、
最適に近づきはするので、
ダメということはなさそうですね。

均等分割よりも良い分割方法

上のグラフから、
均等分割と同じ収益を得るために、
よりリスクの低い分割方法があることが分かりました。

では、その分割方法とはどういうものでしょうか。
計算してみましょう。

opt_port = function(goal){
  V = solve(V)
  MUij = MU %*% t(MU)
  
  A = sum(V %*% MU)
  B = sum(V * MUij)
  C = sum(V)
  D = B*C-A^2
  
  w1 = goal * V %*% (C*MU-A)
  w2 = V %*% (B-A*MU)
  
  return((w1+w2)/D)
}
plot_ly(x=paste(0:(term-1)),y=t(opt_port(dca()$mu))[1,],type="bar")

下のグラフは、 横軸に投資する時点、
縦軸に投資する割合を示したものです。

f:id:u874072e:20190830150731p:plain
均等分割よりも良い分割方法

最初と最後に半分ずつ投資することが、
均等に分割して投資するよりもリスクが抑えられるということですね。

最初の投資はハイリスクハイリターン、
最後の投資はローリスクローリターンなので、
この二つでバランスを取るのが良いという結果ですね。

時間相関がない場合

ここまでは、同じ商品を異なる時間で購入していたので、
時間的な相関を避けようがありませんでした。

一方で、異なる時間で、異なる値動きをする商品を購入する場合には、
時間的な相関がない状況を作れるかもしれません。

時間相関がない場合、
つまり共分散がゼロになる場合は、
どのような結果になるでしょうか。

tmp = sapply(0:(term-1),function(t){dollar_cost_asset(t)})
MU = unlist(tmp[1,])
V= diag(tmp[2,])

plot_ly() %>% 
  add_trace(x=MU,y=sapply(MU,mvf),mode="lines",name="最小分散フロンティア") %>%
  add_trace(x=MU,y=diag(V),mode="markers",name="まとめて投資") %>% 
  add_trace(x=dca()$mu,y=dca()$v,mode="markers",name="均等分割") %>% 
  layout(xaxis=list(title="revenue"),yaxis=list(title="risk"))

下のグラフは、時間的な相関がない場合の
最小分散フロンティア(曲線)と、
単一時点に全資産投資した場合(黒丸)、
時間均等分割の場合(赤丸)を表しています。

f:id:u874072e:20190830150054p:plain
時間相関がない場合

グラフを見ると分かるように、
時間的に相関がない異なる商品を購入する場合は、
均等分割の場合が最小分散フロンティア上に乗っていることがわかります。

つまり、時間的に相関がなければ、
均等分割という簡単な方法で、
ある種の最適な分割が得られる
ということです。

逆にいえば、
均等分割をするからには、
購入する商品も分割して、
時間的に相関がないようにしないと、
ベストとは言えないということですね。

まとめ

時間分散投資を最適ポートフォリオ選択の枠組みで捉えて、
均等分割で良いのか、より良い分割があるのかをみてきました。

結果として、時間的な相関が結果に大きく影響していて、
同じ商品を買い続ける場合には、
均等分割はまとめて買うよりはリスクを抑えることもあるが、
ベストではないことが分かりました。

時間的に分割するなら、
時間軸だけではなく、
商品なども分散して、
時間相関がないよう注意すると良さそうです。

プライバシーポリシー