こんにちは、毛糸です。
先日の金融庁が「老後に2,000万円必要です」という報告書を出して以降、SNSでは資産運用に関する話題が増えています。
【参考記事】
【年金は頼れない?】「老後までに2,000万」報告書を読んだあとに私たちが取るべき行動
年利○%で30年運用すれば、老後に2,000万円は余裕。
この○%には、3とか6とか下手すると10%とかいう数字が入ってくることが多いのですが、年利6%で30年間運用する、という仮定は、はっきりいって乱暴です。
こんにちは、毛糸です。
先日の金融庁が「老後に2,000万円必要です」という報告書を出して以降、SNSでは資産運用に関する話題が増えています。
【参考記事】
【年金は頼れない?】「老後までに2,000万」報告書を読んだあとに私たちが取るべき行動
年利○%で30年運用すれば、老後に2,000万円は余裕。
この○%には、3とか6とか下手すると10%とかいう数字が入ってくることが多いのですが、年利6%で30年間運用する、という仮定は、はっきりいって乱暴です。
こんにちは、毛糸です。
先日の金融庁が「老後に2,000万円必要です」という報告書を出して以降、SNSでは資産運用に関する話題が増えています。
【参考記事】
【年金は頼れない?】「「老後までに2,000万」報告書を読んだあとに私たちが取るべき行動
とにかく米国株に投資しておけばいいんだ!
最近、米国株式のパフォーマンスがよいことや、世界の時価総額ランキングの上位が米国企業ばかりであることなどを理由に、米国株だけ持っていればいいのだという結論に至る人が少なくないようです。
実際、2019/7/12のS&P500指数は3013.77ポイントで、
30年前329.81ポイントでしたから、
成長倍率は4倍超、
30年間の平均利回りに直すと年率7.6%を超える高いパフォーマンスになっています。
(出典:Google検索「S&P500」)
米国株式についても同様に、今後いままでと同じような成長を続ける確証などどこにもないのです。
したがって、資産運用においては、米国株式一辺倒ではなく、複数の資産クラスに分散投資することが必要です。
ちなみに、「いままで良かったからといって、今後も良いとは限らない」のと同様、「いままで悪かったからといって、今後も悪いとは限らない」もまた真です。
具体的には、日本株式が今後も低迷を続けるかは神のみぞ知る事であり、世間の言うような「日本株は魅力的な投資対象ではない」というのも、疑ってかかるべき主張です。
【参考記事】
「日本株に投資すると長期的には損」は本当か?
こんにちは、毛糸です。
株式の期待リターンを推定するために広く用いられているのが、CAPM(Capital Asset Pricing Model)です。
CAPMは株式のリターンを市場ポートフォリオの1次関数として表す、とてもわかり易いモデルです。
本記事ではCAPMの計算(具体的には、ベータの推定)を、統計プログラミング言語Rで行う方法についてまとめます。
CAPMにおけるベータの推定には、個別株式と市場ポートフォリオのリターンのデータが必要になりますが、quantmodというパッケージを使えば、簡単に取得できるため、その方法も説明します。
また、推定に必要な無リスク金利(安全資産利子率)には、財務省が公表している国債利回りを用いることとします。
こんにちは、毛糸です。
こんにちは、毛糸です。
先日の記事で、株価の日次リターンが正規分布に従わないことを確認しました。
>>日本株式、米国株式、欧州株式、全世界株式の日次リターンが正規分布ではなかった件
本ブログでたびたび登場する投資シミュレーションプログラムは、リターンが正規分布に従うと仮定した場合の将来予測ツールなので、正規分布に従わないことがわかった今、何らかの改善をしなくてはなりません。
>>「投資シミュレーションプログラム」サマリー
本記事では改善のための手法として考えている「ブートストラップ法」について解説し、ブートストラップ法を株価リターン分布の推定にどう利用できるかを説明します。
なお、本記事は下記サイトの内容を参考にしています。
>>Rで「ブーツ」(PDFリンク)
これにより、リターンが正規分布に従うと仮定できなくても、実際の株価リターンデータを乱数のように用いて、統計的・確率論的な分析が可能になります。
実際に、日本株式のリターンを使って、分析を行ってみましょう。
まず、下記の記事を参考に、日本株式のリターンのデータを読み込みます。
>>ファーマ-フレンチの3ファクターモデルのデータを入手する方法
#csvデータの読み込み JP <- read.csv("Japan_3_Factors_Daily.csv", skip=5) #時系列データとして加工 JP_mkt<-ts(JP$Mkt.RF+JP$RF,start=JP$X[1])/100
日本株の日次リターンの統計量を求めてみます。
#平均 m=mean(JP_mkt) #標準偏差 s=sd(JP_mkt) library(moments) #歪度:正規分布が0 skewness(JP_mkt) skewness(rnorm(10000,m,s)) #尖度:正規分布が3 kurtosis(JP_mkt) kurtosis(rnorm(10000,m,s))
株価リターンと同じ平均、標準偏差をもつ正規分布より、尖度はかなり大きな値になっていることがわかります。
データが正規分布に従うかを調べるための、コルモゴロフ・スミルノフ検定も行っていますが、「正規分布に従う」という帰無仮説は棄却され、株価リターンは正規分布ではないと結論付けられます。
#コルモゴロフ・スミルノフ検定 ks.test(JP_mkt, "pnorm", mean=m, sd=s)
ヒストグラムを正規分布と比較してみます。実際の株価リターンデータと、同じ平均、標準偏差の正規分布の密度関数を描きます。実際のデータのほうが、左右の裾が厚い感じがします。
hist(JP_mkt,freq = FALSE,ylim=c(0,30)) curve(dnorm(x,m,s),add=TRUE,col="red")
株価リターンにブートストラップ法を適用してみます。株価リターンから、無作為に10000個のサンプルを抽出し、ヒストグラムを描きます。
#ブートストラップ法
bs<-sample(JP_mkt,10000,replace=T) hist(bs,freq = FALSE)
ブートストラップ法で得たサンプルを使って、損失確率を計算し、正規分布の場合と比較してみましょう。
#損失確率ブートストラップ法 length(bs[bs<0])/length(bs) #損失確率正規分布 pnorm(0,m,s)
ブートストラップ法で得たサンプルから計算した損失確率は49.2%、正規分布の場合は49.5%でしたので、実際のデータのほうがやや損失が出にくい(利益が出やすい)分布であることがわかりました。
損失確率を求めるくらいであれば、データをそのまま使えばよいので、ブートストラップ法を適用する必要もありませんが、より複雑な分析をするときには、ブートストラップ法は強力なツールになります。
実際の株価リターンは、理論で前提とするような正規分布ではありませんが、だからといって理論の価値が損なわれるわけではありません。
正規分布との差異をきちんと把握し、必要ならば適切に対処できることが大事です。
>>理論・モデルの意義と、理論と現実の差異を知ったあとにとるべき行動
こんにちは、毛糸です。
2019年6月3日、金融庁金融審議会 市場ワーキング・グループが、『高齢社会における資産形成・管理』と題する報告書を公表しました。
参考>>金融審議会 「市場ワーキング・グループ」報告書 の公表について
この表によれば、退職後の高齢夫婦世帯の1ヶ月の収入(年金等)は支出を超えており、赤字額の月5万円ほどを資産の取り崩しで対応する必要があると述べています。
この表は総務省家計調査をもとに作成されています。
老後までに2,000万円の根拠がわかったところで、この金額は果たして現役時代の貯蓄でまかなえるものなのでしょうか?
65歳時点で2,000万円を確保するには、現役時代(20歳から60歳)の40年間に、年50万円ずつ確保する必要がありますが、果たして可能な水準なのでしょうか。
年収水準がもう少し高い層(356〜498万円)の人は、月々の黒字が8.2万円あります。
これをすべて貯蓄に回せられれば65歳時点で4,428万円になり、それなりに余裕が持てることになります。
仮にすべて日本株に投資すれば65歳時点の投資時価の中央値は1億を超え、2,000万を確保できない確率は5%以下と、かなり安心の将来設計です。
というわけで、結論としては、2,000万確保したければ年収上げろ、ということかと思います。
(出所:総務省家計調査2018)
資金の出入りを反映させるに伴い、まず期間を原則として月数とするようにし、投資月数をhorizonという変数に格納します。
#投資年数(自由入力) Year<-1 #1年あたりの月数(通常は12) Month_par_year<-12 #投資月数 horizon<-Year*Month_par_year#monthes
また、投資期間中の資金の出入りを、inv_schedule変数に格納します。たとえば、毎月1万円の積立投資を行う場合には、指定した数字を繰り返す関数rep()を用いて、以下のように記述します。
#投資スケジュールを入力(自由入力) inv_schedule<-rep(1,horizon)
投資のリスク・リターンも、月次ベースに直します。
#年率期待リターン(期待収益率μ、自由入力) mu<-7/100 mu_par_month<-mu/Month_par_year #年率リスク(標準偏差σ、自由入力) sigma<-12.88/100 sigma_par_month<-sigma/(Month_par_year)^0.5
シミュレーションを行う繰り返し計算の部分に、前述のinv_scheduleの各要素を足すように変更します。
#シミュレーション開始 for (s in 1:sample){ for ( t in 1:horizon){ #撤退していれば計算を飛ばす if(W[s]==1) break #今年の資産額=前年の資産額*(1+レバ比率*収益率) A[s,t+1]<-A[s,t]*(1+Lev*z[s,t])+inv_schedule[t] #もし資産額が撤退額を下回ったら撤退目印を立てる if(A[s,t+1]<Withdraw)W[s]<-1 } }
#投資年数(自由入力) Year<-1 #1年あたりの月数(通常は12) Month_par_year<-12 #投資月数 horizon<-Year*Month_par_year#monthes #シミュレーション回数(自由入力、多いほど正確だが時間がかかる) sample<-1000 #シミュレーション数値を格納する行列 A<-matrix(0,sample,horizon+1) #初期投資額を入力(自由入力) initial<-1000 #投資スケジュールを入力(自由入力) inv_schedule<-rep(1,horizon) #シミュレーション数値に初期投資額を入力 A[,1]<-initial #年率期待リターン(期待収益率μ、自由入力) mu<-7/100 mu_par_month<-mu/Month_par_year #年率リスク(標準偏差σ、自由入力) sigma<-12.88/100 sigma_par_month<-sigma/(Month_par_year)^0.5 #レバレッジ比率 Lev<-1 #撤退をカウントする目印 W<-rep(0,sample) #撤退額を設定 Withdraw<-0 #乱数を生成(ランダムな投資収益率) set.seed(1234) x<-rnorm(sample*horizon,mu_par_month,sigma_par_month) #乱数(ランダムな収益率)を行列形式に変換 z<-matrix(x,sample,horizon) #シミュレーション開始 for (s in 1:sample){ for ( t in 1:horizon){ #撤退していれば計算を飛ばす if(W[s]==1) break #今年の資産額=前年の資産額*(1+レバ比率*収益率) A[s,t+1]<-A[s,t]*(1+Lev*z[s,t])+inv_schedule[t] #もし資産額が撤退額を下回ったら撤退目印を立てる if(A[s,t+1]<Withdraw)W[s]<-1 } } #シミュレーション結果の期待値を表示 paste(Year,"年後の資産額の期待値は",mean(A[,horizon+1])) #シミュレーション結果の中央値を表示 paste(Year,"年後の資産額の中央値は",median(A[,horizon+1])) #損する確率を表示 paste("損失を被る確率は",length(A[,horizon+1][A[,horizon+1]<initial])/sample) #億り人になれる確率を表示 paste("億り人になれる確率は",length(A[,horizon+1][A[,horizon+1]>10000])/sample) #破産する確率を表示 paste("破産する確率は",sum(W)/sample) #将来の資産額の確率分布(ヒストグラム)を表示 hist(A[,Year+1])
こんにちは、毛糸です。
ドルコスト平均法は投資手法の一つであり、決まった期間ごと(たとえば一ヶ月ごと)に一定の金額を投資することを指します。
ドルコスト平均法は投資の平均買い付け価格を下げる効果があるとされています。
しかし、ドルコスト平均法が投資手法として優れているのかというのは、学術的には肯定的な意見も否定的な意見もあり、科学的に立証された方法ではありません。
資産運用の初心者におすすめの入門書『難しいことはわかりませんが、お金の増やし方を教えてください!』には、ドルコスト平均法について、
三流ファイナンシャルプランナーが書いたんじゃない?
早めに買ってお金に働いてもらう期間が長いほうが、現時点の判断としては正しい。
と書かれており、ドルコスト平均法に否定的です。
このように、専門家の間でもドルコスト平均法の有効性については判断が分かれています。
こういうケースにおいては、ドルコスト平均法によって、買い付け単価の平均は小さく抑えられます。
出典:三井住友DSアセットマネジメントhttps://www.daiwasbi.co.jp/fundcollege/investment/about/index4.html
したがって、特定期間のデータに依拠したドルコスト平均法の分析は説得力にかけるものがほとんどです。
データ期間に依存しない一般的なケースでの分析が難しいことが、ドルコスト平均法の分析を難しくする要因のひとつとなっています。
計算によって、この購入量もまた、対数正規分布に従うことがわかります。
数式で書くと、時点\( t\)において資産価格が\( S_t\)だったときに、一定額\( A\)を投資したときの購入量\(Q_t \)は、以下のように表すことができ、これは対数正規分布に従います。
ただし、\( \mu\)は資産の期待リターン、\( \sigma\)はリスク、\( W_t\)は正規分布に従う確率変数です。
こんにちは、毛糸です。
仮想通貨に再び注目が集まっています。
2017年に価格が高騰し、2018年に暴落した仮想通貨は、現代のバブルとして一躍有名になりました。
参考記事:ビットコインはバブルである
install.packages("crypto", dependencies = TRUE)
library(crypto)
#仮想通貨のリストを表示 crypto_list()
> #仮想通貨のリストを表示 > crypto_list() # A tibble: 2,212 x 6 symbol name slug rank exchange_url history_url <chr> <chr> <chr> <dbl> <chr> <chr> 1 BTC Bitcoin bitcoin 1 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 2 ETH Ethereum ethereum 2 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 3 XRP XRP ripple 3 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 4 BCH Bitcoin… bitcoin… 4 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 5 EOS EOS eos 5 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 6 LTC Litecoin litecoin 6 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 7 BNB Binance… binance… 7 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 8 BSV Bitcoin… bitcoin… 8 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 9 USDT Tether tether 9 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… 10 XLM Stellar stellar 10 https://coinmarketcap.com/… https://coinmarketcap.com/currencies/… # … with 2,202 more rows
#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_saikin<-crypto_history(coin = "BTC", start_date = "20190501",end_date = "20190530")
#データの先頭 head(BTC,1) #データの最後尾 tail(BTC,1)
BTC$close
のように$マークのあとに取り出したい列のラベルを指定します。#BTCの終値情報を時系列として取り出す。 #時系列情報の開始日をBTC$date[1]と指定 BTC_price<-ts(BTC$close,start=BTC$date[1])
#type="l"は線グラフ plot(BTC_price,type="l")
と計算できます。
#日次収益率 BTC_return_daily<-diff(BTC_price,lag=1)/lag(BTC_price,k=-1) plot(BTC_return_daily,type="l")
mean(BTC_return_daily)*100 #[1] 0.2808807 #表示は% #年率換算では mean(BTC_return_daily)*100*365 #[1] 102.5215
標準偏差はsd()関数で計算できます。
sd(BTC_return_daily)*100 #[1] 4.333606 #表示は% sd(BTC_return_daily)*100*365^0.5 #[1] 82.79343
最近のコメント