資産運用

ビットコインの確率分布について|期待リターン、リスク、ヒストグラム【正規分布じゃない】

こんにちは、毛糸です。

前回、Rライブラリ「crypto」を用いて、仮想通貨の価格が簡単に取得できることを説明しました。
>>仮想通貨の価格ヒストリカルデータを取得する方法|Rライブラリcryptoの使い方

今回は「crypto」を使って取得したBitcoin(BTC)の価格情報を分析します。

BTC価格の時系列データを分析することで、BTCの期待リターン、リスクが極めて高いことがわかりました。

また、ヒストグラムと「正規性の検定」により、BTCのリターンは正規分布に従わないこともわかりました。

cryptoパッケージによるBTC価格の取得とリターンのデータ

cryptoパッケージのcrypto_history()関数を用いて、BTC価格のヒストリカルデータを取得します。
>>仮想通貨の価格ヒストリカルデータを取得する方法|Rライブラリcryptoの使い方

#crypto_history(coin = NULL, limit = NULL, start_date = NULL,
#end_date = NULL, coin_list = NULL, sleep = NULL)
#仮想通貨の価格等情報を取得
#dateはyyyymmdd形式で。NULLとすると最長期間
BTC<-crypto_history(coin = "BTC",
                    start_date = NULL,end_date = NULL)
BTC価格を時系列データとして読み込みます。
BTC_price<-ts(BTC$close,start=BTC$date[1])
plot(BTC_price,type="l")
日次収益率を計算し、プロットしてみましょう。
#日次収益率
BTC_return_daily<-diff(BTC_price,lag=1)/lag(BTC_price,k=-1)
plot(BTC_return_daily,type="l")
以下ではこの日次収益率データを使って、BTCの収益率の統計分析をしていきます。

基本統計量

期待リターン(平均)

日次収益率の平均をとることで、日次期待リターンを推定できます。結果は、日次リターンが0.28%、簡易的に年率換算すると102%となりました。株式のリターンが年率5%ほどと言われていますから、驚異的な水準です。
#日次収益率の平均(期待リターン)(%)
mean(BTC_return_daily)*100
#[1] 0.2808807
#年率換算(%)
mean(BTC_return_daily)*100*365
#[1] 102.5215

リスク(標準偏差)

日次収益率の標準偏差を計算することで、日次収益率のリスクを推定できます。結果は、日次ベースの標準偏差が4.3%、簡易的に年率換算すると82%となりました。株式のリスクが年率25%ほどと言われていますから、とてつもなくハイリスクであることがわかります。
#標準偏差(%)
sd(BTC_return_daily)*100
#[1] 4.333606

#年率換算(%)
sd(BTC_return_daily)*100*365^0.5
#[1] 82.79343

歪度

歪度と尖度の計算には、「moments」ライブラリのskewness()、kurtosis() 関数を用います。
install.packages("moments")
library(moments)

分布の歪み具合を示すのが歪度です。正規分布のように左右対称な分布では、歪度は0になります。

BTC日次収益率の歪度は0.5です。歪度が正であるということは、分布のピークが左側にあり、右側の裾が広い分布であることを意味します。つまり、極端に高いリターンが出やすいと言えます。

#歪度:正規分布は0、正なら右裾が広い
skewness(BTC_return_daily)
#[1] 0.5234792

尖度

尖度は分布の尖り具合を示します。正規分布は尖度3(0とする定義もあり)であり、これより大きければ、分布は平均の周りで尖った、左右に裾野が広い分布になります。

BTC日次収益率の尖度は12であり、正規分布より極端に「尖った」、そして「裾野の広い」分布になります。つまり、極端に高い・低いリターンが出現しやすいことを意味します。

#尖度:正規分布が3
kurtosis(BTC_return_daily)
#[1] 12.9556

BTC収益率(リターン)は正規分布にしたがうか?(正規性の検定)

ファイナンス(金融工学)では、資産のリターンは正規分布に従うと仮定されることが多いです(資産価格が対数正規分布、資産価格が幾何ブラウン運動、も同様の意味です)。
BTC収益率は正規分布に従うのか、確かめてみましょう。
すでに、BTC収益率の歪度が0.5(正規分布なら0)、尖度が12(正規分布なら3)であることは確認しましたので、正規分布ではないような気がしますが、別の視点からも確認します。
本性の内容は下記記事を参考にしています。

ヒストグラム

リターンの実現値が、どの範囲でどのくらいの頻度で出現したかを見るグラフが、ヒストグラムです。

BTC日次収益率のヒストグラムを描いてみます。

正規分布のヒストグラムは左右対称のベルのような形をしていますが、BTC収益率のヒストグラムはやや右に裾野が厚く、かつ裾野が広がっている印象を受けます。

hist(BTC_return_daily,main="BTC算術日次リターンのヒストグラム",xlab="日次リターン",ylab="度数")

Q-Qプロット

Q-Qプロットは、与えられたデータがある確率分布とどれくらい「ずれているか」を図示したものです。データをQ-Qプロットしたとき、データが45度線(y=xのグラフ)に沿って並んでいれば、理論上の分布と近いという根拠になります。Rではqqnorm()関数によって、正規分布を仮定した場合のQ-Qプロットを描画できます。

BTCの日次データをQ-Qプロットしてみると、以下のように曲線を描いており、正規分布に近いとは言えません。

qqnorm(BTC_return_daily,main="BTC算術日次リターンのQ-Qプロット")

シャピロ・ウィルク検定

シャピロ・ウィルク検定は、「データが正規分布に従う」という帰無仮説に関する検定です。したがって、シャピロ・ウィルク検定で計算されたp値が小さければ、帰無仮説を棄却、つまり「データは正規分布に従わない」ということが言えます。Rではshapiro.test()を使います。
検定の結果、p値はほぼ0であり、「BTC日次収益率は正規分布に従わない」と結論付けられます。
> shapiro.test(BTC_return_daily)


 Shapiro-Wilk normality test


data:  BTC_return_daily
W = 0.87881, p-value < 0.00000000000000022

コルモゴロフ・スミルノフ検定

コルモゴロフ・スミルノフ検定は、「データが指定した確率分布に従う」という帰無仮説に関する検定です。したがって、正規分布に関するコルモゴロフ・スミルノフ検定を行ったときにp値が小さければ、帰無仮説を棄却、つまり「データは正規分布に従わない」ということが言えます。Rではks.test()を使います。
検定の結果、p値はほぼ0であり、「BTC日次収益率は正規分布に従わない」と結論付けられます。
> ks.test(BTC_return_daily, "pnorm", mean=mean(BTC_return_daily), sd=sqrt(var(BTC_return_daily)))


 One-sample Kolmogorov-Smirnov test


data:  BTC_return_daily
D = 0.11752, p-value < 0.00000000000000022
alternative hypothesis: two-sided


 警告メッセージ: 
 ks.test(BTC_return_daily, "pnorm", mean = mean(BTC_return_daily),  で: 
   コルモゴロフ・スミノフ検定において、タイは現れるべきではありません
なお、警告メッセージは同一データが存在するときに発生します。連続確率分布では同一の値が実現する確率は0なので、本来生じるべきではないというアラートですが、今回は厳密な議論をしているわけではないので、スルーします。
以上のような検討の結果、いずれの方法でも、BTC日次収益率は正規分布に従わないという結論が得られました。

ビットコインの収益率が正規分布に従わないとなにが困るか

ビットコインの収益率が正規分布に従わないということは、収益率が正規分布に従うと仮定して展開される多くのファイナンス理論の道具が使えないことになります。
たとえば、オプションの価格公式であるブラック・ショールズ式は、資産価格が幾何ブラウン運動に従うこと(つまり収益率が正規分布に従うこと)を仮定しています。
したがって、ビットコインのオプションが組成されたときに、そのオプションの価格をブラック・ショールズ式で評価するのと、意思決定を誤ります。
また、将来の投資運用の成績をシミュレーションする「投資シミュレーションプログラム」も、資産の収益率に正規分布を仮定しているため、仮想通貨投資には利用できません。

このように、確率分布が標準的なファイナンスの仮定と異なることにより、やや慎重な議論が必要になってきます。

投資においては、為替や株式等よりも変動性が大きく、また極端に高いもしくは低いリターンが出やすいという点に気をつける必要があります。

まとめ

Rライブラリ「crypto」を用いて、ビットコインの価格情報を取得し、日次リターンの分析を行ってみました。
ビットコインの収益率は極めてハイリスク・ハイリターンであり、また、ファイナンスで通常仮定される正規分布とは大きく異なる性質を持っています。

ビットコインを始めとする仮想通貨のデータを扱う際には、この分布の特性をよく踏まえる必要があります。

関連記事>>ビットコインはバブルである

参考記事


データ解析その前に: 分布型の確認と正規性の検定 #rstatsj(リンク)
Leihcrev’s memo 入門本編 8章 確率分布(リンク
統計解析フリーソフト R の備忘録頁 ver.3.1 63. 正規性の検定(リンク)
Wikipedia 歪度(リンク
Wikipedia 尖度(リンク

長期投資は【安全ではない】ことをシミュレーションで証明する

こんにちは、毛糸です。

「長期投資は安全」というイメージを抱いていませんか?

全国銀行協会のサイト(リンク)でも、長期投資の安全性に関して以下のように書いてあります。

一時的に価格が下がっても、長い目で見れば価格が上がることもあるため、長く保有すればするほど、リスクを軽減する効果があるといわれています。

しかし、この主張は極めて誤解しやすいもので、実際にはむしろ、投資収益のリスクは長期になればなるほど大きくなります。

本記事では「投資シミュレーションプログラム」を用いて、長期投資がリスクを高めることを証明します。
参考記事:>>「投資シミュレーションプログラム」サマリー

投資の「リスク」の定義

投資におけるリスクとは、投資収益の期待値からのブレを指すのが一般的です。

もう少し踏み込んで言えば、そのブレを測る尺度が、標準偏差や分散という統計量です。

投資において「リスクが高い」とは、将来の(額もしくは率ベースの)投資収益の標準偏差が高い、ということを意味します。

この意味において、投資が長期になればなるほど、リスクは高くなります。

つまり、他の条件を一定とすれば、短期と長期の投資収益は、後者のほうが高い標準偏差を持つということです。

本記事ではこのことを「投資シミュレーションプログラム」を用いて示します。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”ウォール街のランダムウォーカー株式投資の不滅の真理”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:”/images/I”,”p”:[“/51j3XxuLcML.jpg”,”/51L5VguO16L.jpg”,”/51pXH1cT26L.jpg”,”/51qzhDA8N8L.jpg”,”/516KF7nD4ML.jpg”,”/51RqxJ5YdzL.jpg”,”/41Z4TQLguaL.jpg”,”/41RDCEkVSWL.jpg”,”/51ZC6wiROQL.jpg”,”/416UAK2gjbL.jpg”,”/51COLQfOYZL.jpg”,”/41wAkIpxalL.jpg”,”/517pu9qvoaL.jpg”,”/51Qd00xstPL.jpg”,”/41a6WwcjPUL.jpg”,”/41whOykxo9L.jpg”,”/51ZYk6jqWTL.jpg”,”/51JXyzvOypL.jpg”,”/51Cx1OLwZwL.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E8%A1%97%E3%81%AE%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%83%BB%E3%82%A6%E3%82%A9%E3%83%BC%E3%82%AB%E3%83%BC%E3%80%88%E5%8E%9F%E8%91%97%E7%AC%AC11%E7%89%88%E3%80%89-%E2%80%95%E6%A0%AA%E5%BC%8F%E6%8A%95%E8%B3%87%E3%81%AE%E4%B8%8D%E6%BB%85%E3%81%AE%E7%9C%9F%E7%90%86-%E3%83%90%E3%83%BC%E3%83%88%E3%83%B3%E3%83%BB%E3%83%9E%E3%83%AB%E3%82%AD%E3%83%BC%E3%83%AB/dp/4532356873″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″},”eid”:”azSuX”});

投資シミュレーションプログラム

「投資シミュレーションプログラム」は、確率論に基づくモンテカルロ・シミュレーションという手法を用いて、投資収益の将来予測をするプログラムです。
参考記事:>>「投資シミュレーションプログラム」サマリー

モンテカルロ・シミュレーションとは、コンピュータによって乱数を発生させ、将来を確率的にシミュレートし、大数の法則によって将来の期待値を算定する手法です。

「投資シミュレーションプログラム」を使えば、投資の期待リターンとリスクと投資期間を入力することで、将来の資産額を計算することが出来ます。

長期投資でリスクは低減されない

今回行うシミュレーションは、投資対象をFXとした場合(期待リターン0%、リスク10%と仮定)と、インデックス投信に分散投資した場合(期待リターン4.57%、リスク12.8%)の2つのケースについて、1年・10年・30年の各投資期間で、将来時点で確定する投資収益の期待値とリスクを計算してみます。

インデックス投信に分散投資、といってもアセット・アロケーションは無限にありますが、ここでは日本の年金運用の基本ポートフォリオと同じ資産配分で行うものと仮定します。

シミュレーション結果は以下のとおりです。

FX(期待リターン0%、リスク10%)に投資した場合

1年後

  • リターンの期待値は0%
  • リスク(標準偏差)は10%
  • シャープレシオは0
  • 1年あたりの平均リターンは0%

10年後

  • リターンの期待値は0%
  • リスク(標準偏差)は32%
  • シャープレシオは0
  • 1年あたりの平均リターンは0%

30年後

  • リターンの期待値は1%
  • リスク(標準偏差)は61%
  • シャープレシオは0.02
  • 1年あたりの平均リターンは0%
FX(期待リターン0%、リスク10%)に投資した場合、長期になってもリターンは(ほぼ)増えませんが、リスクは長期になればなるほど大きくなっていることがわかります。

インデックスに分散投資(期待リターン4.57%、リスク12.8%)した場合

1年後

  • リターンの期待値は5%
  • リスク(標準偏差)は12%
  • シャープレシオは0.4
  • 1年あたりの平均リターンは5%

10年後

  • リターンの期待値は56%
  • リスク(標準偏差)は63%
  • シャープレシオは0.8
  • 1年あたりの平均リターンは5%

30年後

  • リターンの期待値は286%
  • リスク(標準偏差)は298%
  • シャープレシオは1
  • 1年あたりの平均リターンは5%
インデックスに分散投資(期待リターン4.57%、リスク12.8%)した場合、長期になればなるほどリターンは大きくなっていますが、それに伴いリスクも大きくなっていることがわかります。ちなみに、投資のリスクとリターンの比率を示すシャープレシオは、投資が長期化するほど高まります。
上記分析に用いたRのコードは以下のとおりです。
#FX
#投資年数(自由入力)
Year<-1
#シミュレーション回数(自由入力、多いほど正確だが時間がかかる)
sample<-10000
#シミュレーション数値を格納する行列
A<-matrix(0,sample,Year+1)
#初期投資額を入力(自由入力)
initial<-100
#シミュレーション数値に初期投資額を入力
A[,1]<-initial
#期待リターン(期待収益率μ、自由入力)
mu<-0/100
#リスク(標準偏差σ、自由入力)
sigma<-10/100
#シミュレーション開始
set.seed(123)
#sampleの計算は明示せずベクトル化
for ( t in 1:Year){
    #今年の資産額=前年の資産額*(1+収益率)
    A[,t+1]<-A[,t]*(1+rnorm(sample,mu,sigma))
}
#シミュレーション結果の期待値を表示
paste(Year,"年後の資産額の平均は",mean(A[,Year+1]),"万円")
paste(Year,"年後の累積リターンの平均は",(mean(A[,Year+1])/initial-1)*100,"%")
paste(Year,"年後の累積リターンの標準偏差は",sd(A[,Year+1])/initial*100,"%")
paste(Year,"年間の1年あたり 平均収益率は",((mean(A[,Year+1])/initial)^(1/Year)-1)*100,"%")
#インデックス
#投資年数(自由入力)
Year<-1
#シミュレーション回数(自由入力、多いほど正確だが時間がかかる)
sample<-10000
#シミュレーション数値を格納する行列
A<-matrix(0,sample,Year+1)
#初期投資額を入力(自由入力)
initial<-100
#シミュレーション数値に初期投資額を入力
A[,1]<-initial
#期待リターン(期待収益率μ、自由入力)
mu<-4.57/100
#リスク(標準偏差σ、自由入力)
sigma<-12.8/100
#シミュレーション開始
set.seed(123)
#sampleの計算は明示せずベクトル化
for ( t in 1:Year){
    #今年の資産額=前年の資産額*(1+収益率)
    A[,t+1]<-A[,t]*(1+rnorm(sample,mu,sigma))
}
#シミュレーション結果の期待値を表示
paste(Year,"年後の資産額の平均は",mean(A[,Year+1]),"万円")
paste(Year,"年後の累積リターンの平均は",(mean(A[,Year+1])/initial-1)*100,"%")
paste(Year,"年後の累積リターンの標準偏差は",sd(A[,Year+1])/initial*100,"%")
paste(Year,"年間の1年あたり 平均収益率は",((mean(A[,Year+1])/initial)^(1/Year)-1)*100,"%")

考察

FXでもインデックス投資でも、投資が長期になればなるほど、リターンもリスクも大きくなることがわかりました。
本記事の主張を再度述べると、「長期投資をしてもリスクは低くならず、むしろ高まる」ということです。
ちなみに、上記インデックス投資のシミュレーションを図示すると以下のようになります。青い線の1つ1つがシミュレートした資産額の変動であり、長期になればなるほど期待値(赤線)からのブレ(リスク)が大きくなっていることがわかります。

まとめ

投資シミュレーションプログラムによる予測の結果、投資期間が長期になるほど、将来時点でのリターンのブレは大きくなることがわかりました。
つまり「長期投資はリスクを低減する」という主張は、リスクを収益率のブレと解釈する限り、正しくありません。
この点に関しては多くの文献で誤解を招く表現がされているので、十分ご注意下さい。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”[参考文献]ファイナンスのためのRプログラミング証券投資理論の実践に向けて”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:””,”p”:[“/images/I/41UrHrQ9vlL.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%8A%E3%83%B3%E3%82%B9%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AER%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E2%80%95%E8%A8%BC%E5%88%B8%E6%8A%95%E8%B3%87%E7%90%86%E8%AB%96%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%81%AB%E5%90%91%E3%81%91%E3%81%A6%E2%80%95-%E5%A4%A7%E5%B4%8E-%E7%A7%80%E4%B8%80/dp/4320110447″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″},”eid”:”GI2A5″});

投資シミュレーションプログラムを高速化してみた

こんにちは、毛糸です。

先日、投資の将来予測を行うためのRプログラム「投資シミュレーションプログラム」を公開しました。
>>投資シミュレーションプログラムを作ってみた【Rでプログラミング】

このプログラムを用いて、年金の将来予測を行ったり、FXで億り人になれる確率を計算したりしました。

>>将来の年金積立金の状況と損失確率をシミュレーションしてみた【モンテカルロ・シミュレーション】

>>FXの期待リターン、億り人になれる確率、破産する確率【モンテカルロ・シミュレーション】

「投資シミュレーションプログラム」を使ってみる中で、より「速く」計算するための改善策を思いついたのでメモしておきます。

本記事では投資シミュレーションプログラム1.1(2019年5月29日現在の最新版)の内容を説明します。

Rプログラムを速くするための方法:ベクトル化

統計プログラミング言語Rは、ベクトル演算を高速で行える言語として知られています。

ここではベクトルを「数値やモノ(オブジェクト)を並べたもの」と理解しておけば十分です。

ベクトル演算が高速で行える、とは、具体的には、for文などを用いて一つ一つの対象(オブジェクト)を順繰りに処理していくよりも、ベクトルというまとまりに対して一括で処理を行うほうが速い、ということです。

投資シミュレーションプログラムでは、乱数をサンプル数×年数の数だけ発生させ、

  1. あるサンプルについて、各年の資産額をfor文で計算して
  2. その処理をサンプル数の数だけfor文で繰り返す
という、2重のfor文構造になっています。
しかし、Rはfor文よりもベクトルとして計算したほうが速いため、for文をベクトル演算で置き換えれば、高速化が可能なのです。

投資シミュレーションプログラムのベクトル化

投資シミュレーションプログラムは、年ごとに資産額を計算し、それをサンプルの数だけ繰り返すという方法をとっています。
このうち、年ごとの計算については、前年の資産額に収益率を乗じて当年の資産額を算出しているため、年ごとに資産額を計算する必要があり、for文を使うことを回避できません。
しかし、サンプル数分の繰り返しについては、サンプル一つ一つを順繰りに計算するのではなく、これをベクトル化してやることで、for文を回避することが可能です。

下記に示す投資シミュレーションプログラム1.1は資産額をベクトル化して計算することで、サンプルの繰り返し計算を回避しています。

#投資年数(自由入力)
Year<-40
#シミュレーション回数(自由入力、多いほど正確だが時間がかかる)
sample<-100000
#シミュレーション数値を格納する行列
A<-matrix(0,sample,Year+1)
#初期投資額を入力(自由入力)
initial<-2000
#シミュレーション数値に初期投資額を入力
A[,1]<-initial
#期待リターン(期待収益率μ、自由入力)
mu<-7/100
#リスク(標準偏差σ、自由入力)
sigma<-12.88/100
#シミュレーション開始
#sampleの計算は明示せずベクトル化
for ( t in 1:Year){
    #今年の資産額=前年の資産額*(1+収益率)
    A[,t+1]<-A[,t]*(1+rnorm(sample,mu,sigma))
}
#シミュレーション結果の期待値を表示
paste(Year,"年後の資産額の期待値は",mean(A[,Year+1]))

投資シミュレーションプログラム1.0と1.1の処理時間の比較

ベクトル化によりどれくらい高速化されたのか検証してみましょう。

R onlineでは実行時間が自動計測されますので、これを利用します(手持ちのPCで実行する場合はtitocライブラリを使ったりsystem.timeを使ってください)。

サンプル数100,000(10万)回のシミュレーションで、for文を使って計算するVer.1.0と、ベクトル演算を行うVer.1.1を比較すると、以下のようになりました。

投資シミュレーションプログラムVer.1.0(for文による繰り返し計算)

Absolute running time(絶対実行時間)は、17.18秒でした。

投資シミュレーションプログラムVer.1.1(ベクトル演算)

Absolute running time(絶対実行時間)は、1.46秒でした。

Ver.1.0からVer1.1に改善した場合の処理速度は1/10以上に縮まりました、驚異的な改善です。

まとめ

Rというプログラミング言語はベクトル演算を得意としており、for文をベクトル演算に書き換えられれば大幅な効率化に繋がります。

「動けばOK」という段階から一歩進んで、より速いプログラムを目指したいと思います。

本記事は、以下の書籍を参考にしました。Rを用いたデータ分析や投資意思決定に役立つ知識が豊富に紹介されており、とてもおすすめです。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”ファイナンスのためのRプログラミング証券投資理論の実践に向けて”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:””,”p”:[“/images/I/41UrHrQ9vlL.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%8A%E3%83%B3%E3%82%B9%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AER%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E2%80%95%E8%A8%BC%E5%88%B8%E6%8A%95%E8%B3%87%E7%90%86%E8%AB%96%E3%81%AE%E5%AE%9F%E8%B7%B5%E3%81%AB%E5%90%91%E3%81%91%E3%81%A6%E2%80%95-%E5%A4%A7%E5%B4%8E-%E7%A7%80%E4%B8%80/dp/4320110447″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″},”eid”:”mcwYY”});

FXの期待リターン、億り人になれる確率、破産する確率【モンテカルロ・シミュレーション】

こんにちは、毛糸です。

資産運用にはいろいろな手段があり、なかでも外貨預金やFX(外国為替証拠金取引)は有名どころです。

しかし、外貨預金やFX(以下FX等といいます)は、文献によっては「手を出すべきでない」投資商品として紹介されていたりもします。

たとえば『図解・最新 難しいことはわかりませんが、お金の増やし方を教えてください!』には、以下のように説明されています。

『為替が上がるか、下がるか』と、『金利が高いか、安いか』をセットで考えて、取引価格が決まっているから、買う前にどっちの通貨がお得かは言えない

外貨預金をやるのはコイントスで『表』か『裏』にお金をかけるのとほぼ一緒

 

本記事ではこの主張について詳しく掘り下げ、FX等の期待リターンについて考察したあと、それに基づく「億り人になれる確率」と「破産する確率」を投資シミュレーションプログラムを用いて計算してみます。

外貨預金・FXはなぜ魅力的なのか

FX等は、2つの収益機会にあずかれます。

ひとつは海外通貨に対して適用される高い金利収入(インカムゲイン)、もうひとつは通貨高による価値の増加(キャピタルゲイン)です。

外貨預金は通常、高金利通貨建てで設定され、高い金利収入(インカムゲイン)が得られるとされています。

またキャピタルゲインに関しても、例えば米ドル建て外貨預金をするとして、1ドル100円のときに1万ドルを預金し、引き出し時に1ドル110円になっていれば、円建てでは100万円から110万円に増えることになります。

FXも同様に、為替の変動による利益を得つつ、スワップポイントと呼ばれる金利収入が得られます。

このように、インカムゲインとキャピタルゲインが同時に得られるという魅力があるため、FX等は人気の投資となっています。

FXリターン分析の前提①:裁定取引とフォワード・パリティ

FX等の期待リターンについて考察する前に、いくつかテクニカルな前提をおきます。

今後、通貨高が見込めるような通貨があったとしましょう。つまり、キャピタルゲインが見込めそうな通貨です。

為替の世界には、将来の為替レートを現時点で「約束」する契約が存在します(通貨先物や為替予約といいます)。

もし将来、通貨高になりそうな通貨に対して、将来低いレートで買う「約束」をすることができれば、その取引を行う投資家は、将来安いレートで通貨を買い、高い市場レートで売却することで利益が得られそうです。

このような投資家の行動を「裁定」とよび、通貨は投資家の裁定によって「適正水準」に収斂します。

やや数学的な表現をすると、将来の( T)年後のスポット為替レートの期待値\(E[S_T] \)が「約束」されたフォワード為替レート\( F_T\)と異なっていれば、市場の効率性を前提として裁定が行われ、両者は一致するようにレートが変化します。つまり

\[ \begin{split} F_T=E[S_T]\end{split} \]
という等式が成り立つようにフォワード為替レート\( F_T\)が調整されます。

両辺を現在のスポット為替レート\( S_0\)で割ると

\[ \begin{split} \frac{ F_T}{S_0 }=E[\frac{ S_T}{ S_0}]=E[1+s_{0,T}]\Leftrightarrow E[s_{0,T}]=\frac{ F_T}{S_0 }-1\end{split} \]
となります。\(E[s_{0,T}] \)は為替の変化率(純額表示のキャピタルゲイン)です。

この等式をフォワード・パリティとか、為替レートの期待形成条件といいます。

 

FXリターン分析の前提②:カバー付き金利パリティ

さて、FX等で高金利通貨を買うことで、高いインカムゲインが得られ、運が良ければキャピタルゲインにもあずかれます。

しかし、このような目論見はあらゆる市場参加者(個人投資家や、証券会社などの機関投資家)が狙っているものです。

もし高い金利水準にありながら割安な通貨があれば、その通貨にはまたたく間に買いが入り、一瞬で「適正水準」にまで通貨高になります。

そうなれば、将来のキャピタルゲインの幅が縮まって、投資の旨味が小さくなりますので、投資家は早くに将来の為替レートを「約束」しようとします。

こうした取引によって、フォワード為替レートで「約束」した通貨の値上がり益は、最終的には金利差と同じ水準になるよう調整されます。

数式で表すと、スポット為替レートを\( S_0\)、フォワード為替レートを\( F_T\)、売り通貨の金利(国内金利)を\( i_D\)、買い通貨の金利(海外金利)を\( i_F\)としたとき

\[ \begin{split} \frac{ F_T}{S_0 }=\frac{1+i_D}{ 1+i_F}\simeq 1+i_D-i_F \end{split}\]
という関係が成り立ちます(右辺は近似式)。

つまり、フォワード為替レートという「約束」された為替レート(カバーされたレート)で測る通貨のリターンは、内外金利差と一致するということです。

FX等の期待リターンはゼロ

フォワード・パリティとカバー付き金利パリティを組み合わせると、FX等の期待リターンが計算できます。

FX等の期待リターンは、金利差(インカムゲイン\( i_F-i_D\))と通貨高による増分(キャピタルゲイン\( E[s_{0,t}]\))の和を意味します。

フォワード・パリティより

\[ \begin{split}E[s_{0,T}]=\frac{ F_T}{S_0 }-1 \end{split} \]
であり、

カバー付き金利パリティより

\[ \begin{split}\frac{ F_T}{S_0 }-1\simeq i_D-i_F  \end{split} \]
ですから、これらを合わせると
\[ \begin{split}E[s_{0,T}]= i_D-i_F \Leftrightarrow (i_F-i_D)+E[s_{0,T}]=0\end{split} \]
となります。第一項はインカムゲイン、第二項はキャピタルゲインを表しており、これらの和、つまりFX等の期待リターンは0であることが示されました。

以上のことをまとめると、フォワード・パリティとカバー付き金利パリティによって、FX等の期待リターンは、インカムゲインとキャピタルゲインが相殺され0になる、ということです。

以上の内容は、下記書籍により詳しい説明と数式での証明が載っていますので、合わせてご参照ください。

FXで億り人になれる確率、破産する確率

期待リターンが0のFXで十分な資産を築ける確率はどれくらいなのでしょうか。

以下では当初資金1,000万円をドル円(年あたりリスク10%と想定)で運用するとして、10年後に億り人になれる確率と破産する確率を計算します。

FXはレバレッジ取引が可能ですから、レバ1倍、5倍、10倍のそれぞれのケースを考えてみます。

本性の計算は「投資シミュレーションプログラム」を用いています。シミュレーション回数は10000回です。

  1. レバ1倍の場合、10年後の資産の期待値は1,002万円、億り人になれる確率は0%破産する確率は0%
  2. レバ5倍の場合、10年後の資産の期待値は1,018万円、億り人になれる確率は1.5%破産する確率は20%
  3. レバ10倍の場合、10年後の資産の期待値は1,866万円、億り人になれる確率は3.12%破産する確率は83%

考察

期待リターン0のFXでは、レバをかけないと億り人にはなれないことがシミュレーションで明らかになりました。
また、レバを高めることで億り人になれる確率は高まりますが、同時に破産する確率も高くなることがわかりました。

まとめ

フォワード・パリティとカバー付き金利パリティという関係式から、FX・外貨預金は理論上、期待リターンが0であることがわかりました。この前提のもとで投資を行うと、レバレッジをかけないと多大な富を築くことは出来ないことが明らかになりましたが、一方で破産の確率も高まることがわかりました。

本記事の内容は複数の仮定に基づくものであり、実際の投資収益の成否を保証するものではなく、また実際にFX等で成功していらっしゃる方々の成果を否定する意図は全くありません。また、シミュレーションはあくまで確率論に基づいた予測であることをお断りしておきます。

 

投資シミュレーションプログラムを作ってみた【Rでプログラミング】

こんにちは、毛糸です。

投資にはリスクがあります。

自分の資産が将来どれくらいの金額になるのか、リタイアまでにどれくらいの資産を築けるのか、といった疑問に、現時点で確定した答えを出すのは不可能です。

しかし、投資データと統計学を用いて、将来をシミュレーションすることは可能です。

私は大学院で金融工学を専攻し、公認会計士として日々数字と向き合う仕事をしながら、プログラミングを勉強して投資意思決定に使えるツールを開発して遊んでいます。

今回はそんな日々の勉強の成果として「投資シミュレーションプログラム」を作ってみました。

将来に渡って投資を行っていった場合に、数年・数十年後にいくらの資産が築けるかをシミュレーションするプログラムです。

この記事では「投資シミュレーションプログラム」のコードをすべて公開し、その使いかたを解説します。

統計プログラミング言語Rと、オンラインでの利用

統計プログラミング言語Rは、データサイエンスで用いられるプログラミング言語です。

統計解析や計算を簡単に行うことができ、計算機としても使えます。

本記事ではプログラミング言語Rを用いて、投資シミュレーションプレミアムを作成します。

Rを使うには、本来RのソフトウェアをPCにインストールする必要がありますが、今回はちょっとした計算に使うのみなので、ブラウザ上で完結するR onlineを利用します。
参考記事:ブラウザ上でRプログラミング(R online、Rオンラインを使う方法)

R onlineのサイト(リンク)でコードを打ち込めば、すぐにRによる計算が実行できます。

試しにサイト上で
1+1
と入力し、[Run it]してみると、すぐに下の方に計算結果が表示されます。

以下、このR onlineを使って、「投資シミュレーションプログラム」作成します。

すでに打ち込んである内容は、すべて削除して構いません。

投資シミュレーションプログラムの流れとモンテカルロ・シミュレーション

「投資シミュレーションプログラム」は、以下のような流れでシミュレーションを行い、将来の投資額の予測値や確率分布を算出します。
  1. 投資のリターンやリスクなどの前提条件を入力する
  2. 時間ステップ(年単位、日単位など)ごとに「乱数」を発生させ、ランダムな収益率をシミュレーションする
  3. 複利計算により将来の資産額を算出する
  4. 以上を数千、数万回繰り返し、確率論的に将来資産額の推定値を算出し確率分布を予測する
このように、乱数を用いて将来を予測しシミュレーションする方法を「モンテカルロ・シミュレーション(モンテカルロ法)」といいます。

モンテカルロ・シミュレーションは金融実務において非常に重要な手法として認知されており、金融機関においてデリバティブの価格計算やリスク管理などに用いられています。

「投資シミュレーションプログラム」はモンテカルロ・シミュレーションを使って、将来の資産額がどれくらいになるかを予測するプログラムです。

「投資シミュレーションプログラム」のコードは以下にすべて記しており、コードをR onlineにコピー&ペーストするだけでシミュレーションを行うことが出来ます。

モンテカルロ法は統計学・確率論を基礎として、プログラミング言語を用いながら、ファイナンスの知識をフル活用する高度な手法です。下記書籍はそんなモンテカルロ法を基礎から学べる良書ですので、気になる方は是非手にとってみてください(本書が理解できれば投資シミュレーションプログラムはゼロから自作できます)。


インプット情報の入力

まず、シミュレーションに必要な情報を入力します。

投資年数を入力します。以下では年単位で入力することとし、40年間の投資をシミュレーションしてみますが、自由に変更して構いません。

#投資年数(自由入力)
Year<-40

シミュレーション回数を入力します。今回シミュレーションに使用するのは金融工学で用いられる「モンテカルロ法」という手法で、統計学の「大数の法則」に従っています。シミュレーション回数が多いほど「正確な」計算ができますが、計算に時間がかかるようになります。100回や1000回程度だと、シミュレーションの都度、結果がばらつきます。

#シミュレーション回数(自由入力、多いほど正確だが時間がかかる)
sample<-10000

「投資シミュレーションプログラム」では毎年のリターンが確率的に決まるような状況で、資産額がどのように変化するかをシミュレーションするものです。そのために、シミュレーションの数値を格納する「箱」を用意し、ここに数値を格納します。「箱」は数学用語でいうところの行列にあたります。

#シミュレーション数値を格納する行列
A<-matrix(0,sample,Year+1)

初期投資額を入力します。投資元本(元手)は自由に決めて構いません。単位も問いません(今回は2000万円のつもりで2000を入力します)。

#初期投資額を入力(自由入力)
initial<-2000

先ほど作成したシミュレーション数値格納用の「箱」に初期投資額を代入します。

#シミュレーション数値に初期投資額を入力
A[,1]<-initial

投資の期待リターンを入力します。ここでは一年あたりの期待収益率を入力します。今回は投資の年あたり期待リターンを7%として計算します。

#期待リターン(期待収益率μ、自由入力)
mu<-7/100

投資のリスクを入力します。今回は米国株式に連動して値動きする投資信託VTIのリスク(標準偏差)としての概算値12.88%(12.88/100)を入力します(参考ページリンク)。

#リスク(標準偏差σ、自由入力)
sigma<-12.88/100

「投資シミュレーションプログラム」では、各年の投資収益率が既に入力したリターンとリスクに基づいた正規分布に従うと仮定し、正規分布に従う確率変数(乱数)を多数発生させて将来を予測します。Rではrnorm()で正規分布に従う乱数を生成することが出来ます。この正規乱数を、投資年数×シミュレーション回数の分だけ作ります。

#乱数を生成(ランダムな投資収益率)
x<-rnorm(sample*Year,mu,sigma)

次に、生成した乱数を計算に適した行列形式に整えます。

#乱数(ランダムな収益率)を行列形式に変換
z<-matrix(x,sample,Year)

ではシミュレーションを初めましょう。シミュレーションはsample回行います。各シミュレーションにおいて、1年ごとに資産額を算出します。今年の資産額=前年の資産額×(1+収益率)で計算できます。この計算をRのfor文(繰り返し文)を用いて行います。

#シミュレーション開始
for (s in 1:sample){
        for ( t in 1:Year){
            #今年の資産額=前年の資産額*(1+収益率)
            A[s,t+1]<-A[s,t]*(1+z[s,t])
        }
}

シミュレーションの結果、つまり投資期間経過後の資産額はA[,Year+1]という「箱」に収められています。

シミュレーションでは、良い投資結果を収めたシナリオもあれば、ほとんど儲からなかったケースもあります。全体的な「傾向」を知るためには、シミュレーション結果の平均や中央値を計算します。

#シミュレーション結果の期待値を表示
paste(Year,"年後の資産額の期待値は",mean(A[,Year+1]))
#シミュレーション結果の中央値を表示
paste(Year,"年後の資産額の中央値は",median(A[,Year+1]))

投資期間経過後の資産額はA[,Year+1]に格納されていますので、ここから将来の資産額の分布を用いた様々な確率の計算が可能です。

たとえば将来の資産額が初期投資額を下回るような確率(つまり投資で損失が発生する確率)も計算できます。

#損する確率を表示
paste("損失を被る確率は",length(A[,Year+1][A[,Year+1]<initial])/sample)
ヒストグラムを描くことで、将来の資産額の確率分布をビジュアル的に知ることも出来ます。
#将来の資産額の確率分布(ヒストグラム)を表示
hist(A[,Year+1])

この結果は乱数を用いたものなので、このプログラムを走らせるたびに結果が変わります。乱数の変動性を取り除きたい(つまりより高い精度で計算したい)場合は、sampleの数を増やしてください。

今回の例では、年あたりの収益率が期待リターン7%、リスク(標準偏差)12.88%の正規分布に従うような投資機会に、当初一括で2,000万円を投資した場合に、40年後の資産額の期待値が約3億円となることがわかりました。

まとめ

モンテカルロ・シミュレーションで将来の資産額を推計する「投資シミュレーションプログラム」を作成しました。
以下がそのコードの全体像です。
#投資年数(自由入力)
Year<-40
#シミュレーション回数(自由入力、多いほど正確だが時間がかかる)
sample<-10000
#シミュレーション数値を格納する行列
A<-matrix(0,sample,Year+1)
#初期投資額を入力(自由入力)
initial<-2000
#シミュレーション数値に初期投資額を入力
A[,1]<-initial
#期待リターン(期待収益率μ、自由入力)
mu<-7/100
#リスク(標準偏差σ、自由入力)
sigma<-12.88/100
#乱数を生成(ランダムな投資収益率)
x<-rnorm(sample*Year,mu,sigma)
#乱数(ランダムな収益率)を行列形式に変換
z<-matrix(x,sample,Year)
#シミュレーション開始
for (s in 1:sample){
        for ( t in 1:Year){
            #今年の資産額=前年の資産額*(1+収益率)
            A[s,t+1]<-A[s,t]*(1+z[s,t])
        }
}
#シミュレーション結果の期待値を表示
paste(Year,"年後の資産額の期待値は",mean(A[,Year+1]))
#シミュレーション結果の中央値を表示
paste(Year,"年後の資産額の中央値は",median(A[,Year+1]))
#損する確率を表示
paste("損失を被る確率は",length(A[,Year+1][A[,Year+1]<initial])/sample)
#将来の資産額の確率分布(ヒストグラム)を表示
hist(A[,Year+1])
このプログラムを使うことで、将来の資産額の推計につかったり、将来資産を10倍にするために必要なリターンを探したり、投資で損失が出る確率を知ってリスク管理に活かすことも出来ます。
今後このプログラムを更に発展させていきたいと思います。

もし「こんな使い方もできる!」「こんな内容も知れたらいいな」といったアイデアがあれば、是非教えてください

参考文献

「投資シミュレーションプログラム」はモンテカルロ・シミュレーションという手法に基づく予測を行っております。モンテカルロ・シミュレーションを投資に活用するためには、統計学・プログラム・ファイナンスの知識が必要になりますが、下記書籍はそれらを必要な範囲で解説しており、優れた良書です。

プログラミング言語Rを使ってファイナンスや投資の問題を分析するテキストとして、下記が参考になります。

年金が「目標を達成できない確率」を統計プログラミング言語Rで計算してみた

こんにちは、毛糸です。

前回、年金ポートフォリオのリスクとリターンを、統計プログラミング言語Rを使って計算してみました。
参考記事:年金のリスクとリターンを統計プログラミング言語Rで計算してみた

今回は前回のコードを少し応用して、私たちの年金ポートフォリオが「目標を達成できない確率」を計算してみたいと思います。

年金運用の目標

私たちの年金資産の運用を所管する年金積立金管理運用独立行政法人(GPIF)は、私たちの年金が安定的かつ効率的に運用されるようなポートフォリオを組み、年金資産を運用しています。

「基本ポートフォリオの考え方」(外部リンク)に記載されている通り、2014年には年金運用の中期目標が見直され、以下のような考え方のもと運用が行われることとなりました。

年金積立金の運用は(中略)財政の現況及び見通しを踏まえ、保険給付に必要な流動性を確保しつつ、長期的に積立金の実質的な運用利回り(積立金の運用利回りから名目賃金上昇率を差し引いたものをいう。)1.7%を最低限のリスクで確保することを目標とし、この運用利回りを確保するよう、積立金の管理及び運用における長期的な観点からの資産構成割合(基本ポートフォリオ)を定め、これに基づき管理を行うこと。

ここに書いてあるとおり、年金運用は資産の運用利回り(リターン)から名目賃金上昇率を控除した実質的な運用利回りを1.7%確保することを目標としています。

本記事では統計プログラミング言語Rを用いて、年金運用がこの目標を達成できない確率を計算してみようと思います。

Rの使いかたに関しては前回の記事「年金のリスクとリターンを統計プログラミング言語Rで計算してみた」を参照するか、もしくはより深い理解をしたい方には、下記書籍をおすすめします。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”金融データ解析の基礎 (シリーズ Useful R 8)”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:””,”p”:[“/images/I/41Nyynhmv5L.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E9%87%91%E8%9E%8D%E3%83%87%E3%83%BC%E3%82%BF%E8%A7%A3%E6%9E%90%E3%81%AE%E5%9F%BA%E7%A4%8E-%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-Useful-R-8/dp/4320123719″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″},”eid”:”wjJhB”});

年金ポートフォリオと名目賃金上昇率

「基本ポートフォリオの考え方」(外部リンク)で提供されている「【参考資料】年金積立金管理運用独立行政法人の中期計画(基本ポートフォリオ)の変更(2014年10月31日)」[PDF:249KB](以下の画像は断りがなければこちらからの引用です)には、年金ポートフォリオが投資する各資産の期待リターンと名目賃金上昇率が載っています。

Rに以下のように入力し、リターンと賃金上昇率のベクトル(期待リターンベクトル)を作成します。

#各資産クラスの期待リターン(実質、経済中位) 

mu<-c(2.6/100, 6.0/100, 3.7/100, 6.4/100, 1.1/100,2.8/100)

同様に、各資産と賃金上昇率のリスク(標準偏差)と相関についても、以下のように入力します。

#各資産クラスの分散(標準偏差の2乗) 

sigma<-c(4.7/100, 25.1/100, 12.6/100, 27.3/100, 0.5/100,1.9/100) 

#相関行列

Rho<-rbind(

     c(1,-0.16,0.25,0.09,0.12,0.18),

     c(-0.16,1,0.04,0.64,-0.1,0.12),

     c(0.25,0.04,1,0.57,0.15,0.07),

     c(0.09,0.64,0.57,1,-0.14,0.10),

     c(0.12,-0.1,-0.15,-0.14,1,0.35),

     c(0.18,0.12,0.07,0.10,0.35,1))

年金ポートフォリオの実質リターン

年金ポートフォリオは、以下のような資産配分で投資が行われます。
  • 国内債券(期待リターン(r_1 =2.6%))に35%(これを( w_1)とおく)
  • 国内株式(期待リターン(r_2 =6.0%))に25%(これを( w_2)とおく)
  • 外国債券(期待リターン(r_3 =3.7%))に15%(これを( w_3)とおく)
  • 外国株式(期待リターン(r_4 =6.4%))に25%(これを( w_4)とおく)
  • 短期資産(期待リターン(r_5 =1.1%))に0%(これを( w_5)とおく)
このとき年金ポートフォリオの期待リターン(mu_{PF} )は

[ begin{split}
mu_{PF}=sum_{i=1}^5 w_i r_i
end{split} ]と書けます。

実質リターンはここから名目賃金上昇率(これを( r_w)とします)を差し引けばよいので、年金ポートフォリオの実質期待リターン( mu_{Real})は

[ begin{split}
mu_{Real}=mu_{PF}-r_w
end{split} ]となります。

Rではこれを以下のように記述します。

#ポートフォリオから名目賃金上昇率を控除する実質ポートフォリオのウエイト

weight_Real<-c(0.35,0.25,0.15,0.25,0,-1)

#ポートフォリオから名目賃金上昇率を控除した実質リターン

(mu_Real<-weight_Real%*%mu)

スポンサードリンク


(adsbygoogle = window.adsbygoogle || []).push({});

年金ポートフォリオの実質リスク(標準偏差)

同様に、リスク(標準偏差)についても計算します。

前回の記事「年金のリスクとリターンを統計プログラミング言語Rで計算してみた」と同じく、分散ベクトルと共分散行列から、分散共分散行列を作成します。

Rでは以下のように記述します。

#実質標準偏差
Var_Real<-weight_Real%*%Sigma%*%weight_Real
#ポートフォリオのリスク(標準偏差)
sigma_Real<-Var_Real^0.5
これでポートフォリオの実質リスク(標準偏差)が計算できました。

年金ポートフォリオの目標が達成できない確率と下方確率

各資産の収益率と賃金上昇率が、以上で述べたような期待リターンベクトルと分散共分散行列をもつ多次元正規分布に従うと仮定すると、年金ポートフォリオの実質収益率も正規分布に従うことがわかります。

正規分布の性質や計算方法について詳しく知りたい方は、下記参考文献を参照してください。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”統計学入門”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:””,”p”:[“/images/I/512H1E9ARDL.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E7%B5%B1%E8%A8%88%E5%AD%A6%E5%85%A5%E9%96%80-%E5%9F%BA%E7%A4%8E%E7%B5%B1%E8%A8%88%E5%AD%A6%E2%85%A0-%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E6%95%99%E9%A4%8A%E5%AD%A6%E9%83%A8%E7%B5%B1%E8%A8%88%E5%AD%A6%E6%95%99%E5%AE%A4/dp/4130420658″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″},”eid”:”A0r5B”});

年金ポートフォリオの実質リターン(名目リターンから賃金上昇率を控除したもの)を( r_{Real})とすると、( r_{Real})は平均( mu_{Real})、分散(sigma_{Real}^2 )の正規分布に従います。

したがって、年金ポートフォリオが目標となる実質利回り1.7%を達成できない確率( P(r_{Real}<1.7%))は、計算以下のように計算できます。

#目標達成できない確率
pnorm(1.7/100,mean=mu_Real,sd=sigma_Real)
結果は49.8%でした。
目標を達成できない確率が約半分というのはオカシイと思われるかもしれませんが、この目標は期待リターンが1.7%を上回るようなギリギリのラインとして設定されたものなので、こういう結果になって当然です。
なお、資料には名目リターンが賃金上昇率を下回る確率(下方確率)も記載されています。
こちらは実質利回り( r_{Real})が0以下となる確率( P(r_{Real}<0))を意味するので、以下のような計算で求められます。
#下方確率
pnorm(0,mean=mu_Real,sd=sigma_Real)

計算結果は0.444(44.4%)で、上記資料と一致しています。

この確率は名目リターンが賃金上昇率を下回る確率であり、運用によって給付の伸びを賄えない状況ということです。

まとめ

年金ポートフォリオが運用目標利回りである1.7%を超えられない確率は49.8%でした。

また、名目リターンが賃金上昇率に達しない確率(下方確率)は44.4%でした。

年金に関しては、最近金融庁が示した報告書でその制度の存続性に疑問が投げかけられており、議論の的となっています。
参考記事:【年金は頼れない?】「高齢社会における資産形成・管理」を読んだあとに私たちが取るべき行動

年金制度の今後について議論する際には、本記事のような科学的・数理的検知からの判断も考慮できるとよいのではないでしょうか。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”人生100年時代の年金戦略”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:”/images/I”,”p”:[“/513QJpUzziL.jpg”,”/51aYTRz-7LL.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E4%BA%BA%E7%94%9F100%E5%B9%B4%E6%99%82%E4%BB%A3%E3%81%AE%E5%B9%B4%E9%87%91%E6%88%A6%E7%95%A5-%E7%94%B0%E6%9D%91-%E6%AD%A3%E4%B9%8B/dp/4532358027″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″},”eid”:”dAsUD”});

【年金は頼れない?】「老後までに2,000万」報告書を読んだあとに私たちが取るべき行動

こんにちは、毛糸です。

2019年5月22日、金融審議会市場ワーキング・グループが「高齢社会における資産形成・管理」と題する報告書の案を公表し(以下「報告書案」、外部リンク)、話題になっています。

人生100年と言われる現代日本において、金融機関に対する顧客目線に立った資産管理のあり方に指針を提供する内容です。

報告書はまだ素案の段階ですが、ニュースメディアはこぞってこれを取り上げています。

なかには「実質的な年金制度の敗北宣言だ」と言わんばかりの取り上げ方をしているメディアもありますが、本当でしょうか?

今回はこの報告書案の内容と、私たちが取るべき行動について考えてみたいと思います。

忙しい人のための報告書案まとめ

まず、忙しい読者の方のために、「高齢社会における資産形成・管理」の内容を箇条書きでまとめてみました。
  • 高齢社会の金融サービスのあり方についてまとめている
  • 高齢化は進み続けており、「資産寿命」の長期化の重要性が増している
  • 老後を見据え現役時代から資産形成に取り組む必要があり、金融機関はそのニーズに応えることが求められる
  • 唯一の正解はないが、個々人がリテラシーを高め「自分ごと」として資産形成に取り組むべし
これらの内容に関連して、以下では補足的な情報と、私たちが取るべき具体的な行動について考えてみます。

超高齢社会の日本の現状

現代の日本は超高齢社会といわれ、総人口に占める高齢者(65歳以上)の割合は27.3%に登ります。

既に国民の4人に1人は高齢者なのです(内閣府高齢化の状況より)。

日本人の平均寿命は男性81歳女性87歳に達し、今後も医療の発展等によりさらに長寿化すると考えられています。

(出所:報告書案 p3)

そんな状況において深刻化するのがいわゆる「長生きリスク」です。

長生きすることで老後の生活費に困窮したり、医療・介護費を工面できなくなるなどのリスクが懸念されています。

今回の報告書案はそうした長生きリスクに対処すべく、資産寿命をいかに伸ばすかという観点から指針が示されたものです。

高齢期に備えた資産管理の必要性

報告書案では、老後までの資産形成について「かつてのモデルは成り立たなくなってきている」と指摘されており、退職金や国民年金・企業年金に依存してきた旧来の老後の資産形成のあり方に警鐘を鳴らしています。

報告書案には高齢無職世帯の平均値として毎月5万円の赤字になっていることが示されており、リタイア後の余生30年で約2,000万円の取り崩しが必要であると述べられています。

メディアではこの内容を受けて「年金を当てにせず自助に努めよという政府からのメッセージ」と捉える向きもあるようです。

報告書案では年金制度の破綻に関して直接述べられてはいないものの、「少子高齢化により働く世代が中長期的に縮小していく以上、年金の給付水準が今までと同等のものであると期待することは難しい」との記述があり、ネガティブな印象は拭いきれません。

国に任せていれば安心、という前提は、政府の打ち出す制作やメッセージに鑑みるともはや成り立たないと考えたほうがよく、資産形成について一人ひとりが責任を持って向き合う必要があります。

現役世代が利用すべき制度:NISAとiDeCo

個人の自助努力による資産形成の支援政策として、NISAとiDeCoがあります。

(出所:報告書案 p29)

これらは投資信託などの金融商品に対して行った投資について、運用益への課税が免除されたり、現役世代の税金が減るといったメリットがあります。

NISAもiDeCoも現役世代の資産形成の強い味方であり、私も最大限活用しています。

NISA、iDeCoは証券会社がこぞって解説をしている他、下記の書籍などにその内容や上手な利用方法がまとまっていますので、将来に向けて準備したい人は早めに勉強すると良いでしょう。

ハイリスク商品に注意、リテラシーを高めて

自助努力による資産形成の重要性が高まっているのは確かですが、一方で過度な恐怖心を持つのはかえって危険です。

年金が破綻する、老後の生活費の確保が難しくなる、といったフレーズは、金融機関からすれば、高い手数料を生むハイリスクな商品を買わせるチャンスでもあります。

老後の不労所得を確保するという建前で、収益性の低い不動産を高い価格で売ろうとしてくる業者も現れるでしょう。

大切なのは、自分の将来を可能な限り客観的に予測・評価し、過度な不安にとらわれることなく、自分自身で判断できるようなリテラシーを身につけることです。

もしこれを読んでいるあなたが自身の資産形成に全く興味を持っていなかったとしたら、今が絶好の機会だと思って、資産運用の入門書を手に取るなどしてみてはいかがでしょうか。

「複利の効果」にまつわる2つの致命的な誤解

こんにちは、毛糸です。

資産運用について勉強する際、必ずと行っていいほど目にする言葉、それが「複利の効果」です。

「複利の効果」とは、利息に利息がつくことで、資産が雪だるま式に増えていく仕組みのことで、アインシュタインはこれを「人類最大の発明」と呼んだとも言われています。

しかしこの「複利の効果」については、多くの文献で誤解を招く表現がされており、投資初心者に間違った解釈を与えています。

今回はそんな「複利の効果」にまつわる2つの致命的な誤解について説明します。

なお、本記事は下記書籍を参考にしていますので、合わせて参照してください。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”お金は寝かせて増やしなさい”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:”/images/I”,”p”:[“/51xHIGALUZL.jpg”,”/51UFsW4HuvL.jpg”,”/51d7m7hcbYL.jpg”,”/61ULYpbutcL.jpg”,”/51uCgEZrhmL.jpg”,”/51ne7%2Bl4ysL.jpg”,”/51TjKtJWpzL.jpg”,”/51Zj-OmTSML.jpg”,”/410JAnn80uL.jpg”,”/51cjtS6tWPL.jpg”,”/61Q0Zvqja7L.jpg”,”/613B004TKQL.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E3%81%8A%E9%87%91%E3%81%AF%E5%AF%9D%E3%81%8B%E3%81%9B%E3%81%A6%E5%A2%97%E3%82%84%E3%81%97%E3%81%AA%E3%81%95%E3%81%84-%E6%B0%B4%E7%80%AC%E3%82%B1%E3%83%B3%E3%82%A4%E3%83%81/dp/4894517833″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″}});

高い利回りは確定したものではない(リスクの存在)

「複利の効果」に関する文献でこんな例を見たことはないでしょうか。

  • 定期預金の年率0.01%で100万円を20年間運用しても100万2千円にしかならない
  • もし年率5%で運用できれば、20年後には265万円にもなる
こういう文献では、「複利の効果」を実感させるために、高い利回りを例に出すことが多々あります。
しかし、投資において、年利数パーセントという高い利回りを、長期に渡り安定的に実現させるのは不可能です。
投資において利回り(リターン)はリスクに見合う報酬として、期待値の意味で高くなるものです。
期待値の意味で、とは、実現するリターンは高かったり低かったリスクけれども、平均すると、という意味です。
したがって、期待値の意味でリターンが高くとも、実現するリターンが高いとは限りません。
日本株の期待リターンは5%前後と言われていますが、バブル崩壊やリーマンショックの際には-40%超のマイナスとなりましたし、
比較的期待リターンが高いと言われている新興国株式は、現在の私の投資状況においては、悲しいことにマイナスリターンとなっています。
このように、高い期待リターンが見込める資産は、マイナスになる可能性もはらんでいます。
「複利の効果」をうたうときに、高いリターンを例にしている場合は、そのリターンが安定的に得られると考えてしまいがちですが、それは大きな誤解です。


(adsbygoogle = window.adsbygoogle || []).push({});

複利によって損が増幅する可能性がある

「複利の効果」は利息に利息がつく仕組みですが、前述の通り投資にはリスクがあります。
したがって、運悪くリターンがマイナスになることもあります。
「複利の効果」は、このマイナスのリターンを増幅する作用があります。
こんな例を考えてみましょう。
100万円を投資し、ある時点で10%のリターンが得られたとしましょう。
このとき得られたリターン10万円を再投資すれば「複利の効果」が得られると考えられます。
しかし、もし次の時点で運悪くマイナスのリターンが実現した場合はどうなるでしょうか。
たとえば実現リターンが-10%であった場合には、「複利の効果」を期待して再投資した場合、110×(1-10%)=99万円になります。
一方、前期のリターン10万円を再投資せず、ポケットに入れておいた場合には、投資額は100万円×(1-10%)=90万円になりますが、ポケットの10万円と合わせて資産総額は100万円のままです。
この場合「複利の効果」を期待して再投資したのに、むしろ資産が減ってしまっています。
この例からわかることは、「複利の効果」は必ずしも資産を増やすとはかぎらず、リターンの実現値によっては、むしろ損になることもあるということです。
投資はリスクから逃れることは出来ませんから、マイナスリターンが実現する可能性も十分にあります。
「複利の効果」をうたう文献では、こういうネガティブな例には全くと言っていいほど触れていませんので、「複利の効果」は無条件に良いものと誤解しがちです。
しかし、リターンの実現地がマイナスである場合には、「複利の効果」は裏目に出るのだということを認識しておかなくてはいけません。


(adsbygoogle = window.adsbygoogle || []).push({});

まとめ

資産運用で重要な「複利の効果」に関する2つの誤解について説明しました。
「複利の効果」は利息が利息を生む大切な仕組みですが、高いリターンが安定的に獲得できるわけではなく、また運が悪ければ損を増幅する作用があります。
こうした負の側面も正しく理解しながら、資産運用と向き合っていきましょう。
以下の書籍は今回触れたような「複利の効果」の負の側面にも言及している、大変優れた投資入門書です。
資産運用の正しい理解を得たい人は、是非読んでみると良いでしょう。

(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;
b[a]=b[a]||function(){arguments.currentScript=c.currentScript
||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};
c.getElementById(a)||(d=c.createElement(f),d.src=g,
d.id=a,e=c.getElementsByTagName(“body”)[0],e.appendChild(d))})
(window,document,”script”,”//dn.msmstatic.com/site/cardlink/bundle.js”,”msmaflink”);
msmaflink({“n”:”お金は寝かせて増やしなさい”,”b”:””,”t”:””,”d”:”https://images-fe.ssl-images-amazon.com”,”c_p”:”/images/I”,”p”:[“/51xHIGALUZL.jpg”,”/51UFsW4HuvL.jpg”,”/51d7m7hcbYL.jpg”,”/61ULYpbutcL.jpg”,”/51uCgEZrhmL.jpg”,”/51ne7%2Bl4ysL.jpg”,”/51TjKtJWpzL.jpg”,”/51Zj-OmTSML.jpg”,”/410JAnn80uL.jpg”,”/51cjtS6tWPL.jpg”,”/61Q0Zvqja7L.jpg”,”/613B004TKQL.jpg”],”u”:{“u”:”https://www.amazon.co.jp/%E3%81%8A%E9%87%91%E3%81%AF%E5%AF%9D%E3%81%8B%E3%81%9B%E3%81%A6%E5%A2%97%E3%82%84%E3%81%97%E3%81%AA%E3%81%95%E3%81%84-%E6%B0%B4%E7%80%AC%E3%82%B1%E3%83%B3%E3%82%A4%E3%83%81/dp/4894517833″,”t”:”amazon”,”r_v”:””},”aid”:{“amazon”:”1251300″,”rakuten”:”1249750″,”yahoo”:”1251299″}});

Warning: Trying to access array offset on value of type bool in /home/r1406503/public_html/keito.luxe/wp-content/themes/xeory_base/lib/functions/bzb-functions.php on line 299

Warning: Trying to access array offset on value of type bool in /home/r1406503/public_html/keito.luxe/wp-content/themes/xeory_base/lib/functions/bzb-functions.php on line 301
class="col-md-4" role="complementary" itemscope="itemscope" itemtype="http://schema.org/WPSideBar">