狠狠撸
Submit Search
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
?
20 likes
?
13,006 views
horihorio
Follow
1 of 45
Download now
Downloaded 146 times
More Related Content
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
1.
Rで学ぶ 現代ポートフォリオ理論入門
TokyoR #18 2011/10/22 @horihorio
2.
0.1. 自己紹介 >My.Profile
$性格 $TwitterID *1+ “暇人” *1+ “horihorio” *2+ “物好き” $出身地 $経験アリ統計ソフト *1+ “日本各地転々” *1+ “IBM SPSS” $これまでの仕事 *2+ “IBM Modeler” *1+ “統計分析@金融” *3+ “Matlab” *2+ “主にリスク管理系” *4+ “SAS” $お勉強中 $R使用歴 *1+ “DB, IFRS” *1+ “1ヶ月←え?” 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 2
3.
0.2. やりたいこと 要件定義 ? 日本株で何か面白い戦略はないか ?
面倒臭い、難しいことはしたくない 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 3
4.
◇ 全体構成 ◇ 1.
理論編 1. 投資のリターン 2. 投資のリスクの考え方 3. リスク&リターンの考え方 4. トービンの分離定理 2. 実践編 1. データの用意 2. ポートフォリオ構築(2資産) 3. ポートフォリオ構築(多資産) 4. CAPM 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 4
5.
1.1. 投資のリターン 投資対象が2つの場合、リターンは以下のとおり RP ?
w1 R1 ? w2 R2 Ri ? 資産iからのリターン wi ? 資産iへの投資比率 投資比率は? wi ? 1だが、 個々のwiは、wi ? 0でも OK(カラ売り) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 5
6.
1.1. 投資のリターン 例1:資産1の期待リターンが12%、資産2の期待リ ターンが6%、これに 4:6
で投資する RP ? w1 R1 ? w2 R2 ? 0.4 ? 0.12 ? (1 ? 0.4) ? 0.06 ? 8.4% 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 6
7.
1.1. 投資のリターン 例2:資産1の期待リターンが12%、資産2の期待リ ターンが6%、これに w_1:(1-w_1)
で投資する RP ? w1 R1 ? w2 R2 ? 0.12w1 ? 0.06(1 ? w1 ) ? 0.06 ? 0.06w1 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 7
8.
1.2. 投資のリスクの考え方 (とりあえず)リスクを、リターンの標準偏差とする
( 標 準リ 偏スク 差 ) 【追記】Rって幾何ブラウン運動によるパス生成が楽、と思うと@teramonagi さん が紹介済だった。 http://d.hatena.ne.jp/teramonagi/20101117/1289950470 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 8
9.
1.2. 投資のリスクの考え方 2資産に投資した時のリスク(σ)を求めると、 RP ?
w1 R1 ? w2 R2 なので ? ? w ? ? w ? ? 2 w1w2? 12 2 P 2 1 2 1 2 2 2 2 (? ? 標準偏差 ? ij ? 共分散) , 相関係数 ? ? ? 12 (? 1 ? 2 ) を導入し ? ? w ? ? w ? ? 2 w1w2 ?? 1? 2 2 P 2 1 2 1 2 2 2 2 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 9
10.
1.2. 投資のリスクの考え方 (再掲)例1:資産1のリターンの標準偏差が18%、資 産2の期待リターンが12%、相関はゼロとする ? ?
w ? ? w ? ? 2w1w2 ?? 1? 2 2 P 2 1 2 1 2 2 2 2 ? 0.4 ? 0.18 ? 0.6 ? 0.12 2 2 2 2 ? 0.010368 よって、 ? P ? 0.010368 ? 10.2% 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 10
11.
1.2. 投資のリスクの考え方 (再掲)例2:資産1のリターンの標準偏差が18%、資 産2の期待リターンが12%、相関はゼロとする ? ?
w ? ? w ? ? 2w1w2 ?? 1? 2 2 P 2 1 2 1 2 2 2 2 ? 0.18 w ? 0.12 (1 ? w1 ) 2 2 1 2 2 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 11
12.
1.2. 投資のリスクの考え方 あれ?何か下に凸な放物線のような ? ?
w ? ? w ? ? 2w1w2 ?? 1? 2 2 P 2 1 2 1 2 2 2 2 ? ( w1? 1 ? w2? 2 ) ? 2(1 ? ? ) w1w2? 1? 2 2 ? iは非負、? 1 ? ? ? 1なので ? P ? w1? 1 ? w2? 2 この式の解釈:分散投資をすれば、個別投資よりリス クを削減することが出来る。 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 12
13.
1.2. 投資のリスクの考え方 相関係数が小さい程、リスク削減効果が大きくなる
リ ス ク 削 減 効 果 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 13
14.
1.3. リスク&リターンの考え方 リスク×リターンのグラフを書いてみる
リスク リスク ×リターン カ 統 ラ 合 売 り カ リターン ラ 売 り 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 14
15.
1.3. リスク&リターンの考え方 リスク×リターンのグラフで、上半分を、効率的フロン ティアという。(下半分を選ぶことはあり得ない)
効率的 フロンティア 選ばれない 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 15
16.
1.4. トービンの分離定理 ポートフォリオ+安全資産(国債)への投資を考える
無リスク(?)& 尐々のリターン 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 16
17.
1.4. トービンの分離定理 色々な組み合わせを考えてみる 2011/10/22
Rで学ぶ現代ポートフォリオ理論入門 入門 17
18.
1.4. トービンの分離定理 【トービンの分離定理】安全資産があると、効率的ポートフォ リオは、安全資産と接点ポートフォリオの組合せで実現可能
効率的 ポートフォリオ 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 18
19.
◇ 全体構成 ◇ 1.
理論編 1. 投資のリターン 2. 投資のリスクの考え方 3. リスク&リターンの考え方 4. トービンの分離定理 2. 実践編 1. データの用意 2. ポートフォリオ構築(2資産) 3. ポートフォリオ構築(多資産) 4. CAPM 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 19
20.
2.1. データの用意 【データ準備】 1. 株式
? データ:東証1部株式 各日調整後終値 ? 母集団:日経225採用銘柄 ? 期間:2011/1/4~10/14(193営業日) ? 入手方法:次のスライドで 2. 安全資産:日本国債 ? データ:1年物日本国債利回り ? 入手方法:財務省HP「国債金利情報」から加工 http://www.mof.go.jp/jgbs/reference/interest_rate/index.htm 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 20
21.
2.1. データの用意 株式データの取得方法 ? パッケージ
RFinanceYJ を使用 →尐々疑問:どこまでアクセスして良いの??? ## パッケージ RFinanceYJ の呼び出し library("RFinanceYJ") ## (Ticker, 企業名)の2列 リスト。データはHP「日経平均プロフィル」よりコピペ&EXCEL Nikkei225_ls <- read.csv("Nikkei225_ls.csv", sep=",", header=T) ## とりあえずゼロ行列作成 Nikkei225_close <- matrix(0, nrow=193, ncol=225) ## あとはひたすらループ。配列は怖くてやらなかった for (i in 1:225){ eval(parse(text=paste("T.", Nikkei225_ls[i,1], “<- quoteStockTsData('", Nikkei225_ls[i,1], ".t','2011-01-01')", sep=""))) eval(parse(text=paste("Nikkei225_close[,", i, "] <- T.", Nikkei225[i,1] ,"[,7]", sep=""))) eval(parse(text=paste("rm(T.", Nikkei225_ls[i,1],")", sep=""))) } 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 21
22.
2.1. データの用意 脱線:(10/14時点)年初比上昇/下降5傑 を見たい 上昇
下降 銘柄 年初比 銘柄 年初比 9766 コナミ 146.5% 9501 東京電力 11.0% 5233 太平洋セメント 140.7% 6767 ミツミ 39.4% 5232 住友大阪セメント 133.3% 9107 川崎汽船 43.0% 9412 スカパーJ 124.3% 6857 アドテスト 47.1% 9433 KDDI 122.3% 6976 太陽誘電 47.7% ## 列名を付けたいつもり。絶対良い方法があるに決まっている、が… colnames(Nikkei225_close) <- c(“T.1332”, ~略~,“T.9984”) ## 最終日(10/14) / 年初(1/4) を計算して並び替え sort_ls <- t(sort( tail(Nikkei225_close, n=1) / head(Nikkei225_close, n=1) )) ## 頭と最後の5件を取得 head(sort_ls ,n=5) tail(sort_ls ,n=5) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 22
23.
2.1. データの用意 後で fPortfolio
のために、timeSeries型に変換 ## 【前工程】1列目を日付にしたい ## 営業日をPOSIXct型で取得のDUMMY。多分営業日パッケージがある筈 T.1332 <- quoteStockTsData('1332.t',since='2011-01-01', date.end='2011-10-14') ## 結合。1列目のcastが分からず、かなりハマった。 Nikkei225_close <- cbind(Date=as.POSIXct(T.1332[,1]), Nikkei225_close) ## 内容確認 head(Nikkei225_close[1:3]) str(Nikkei225_close[1:3]) ## 【ここから本番】 library(timeSeries) ## timeSeriesオブジェクトへ変換 Nikkei225_close.ts <- as.timeSeries(Nikkei225_close) ## 内容確認 head(Nikkei225_close.ts[1:3]) str(Nikkei225_close.ts[1:3]) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 23
24.
2.2. ポートフォリオ構築(2資産) 試しに、相関が低いのを探してみる ## 相関行列(225×225)を作成。計算はほぼ一瞬なのね。へぇ。 tmp
<- cor(Nikkei225_close.ts) ## 最小値とその値を出す組み合わせを探す。 min(tmp) ## 最小値 which(tmp==min(tmp), arr.ind=TRUE) ## 最小値を出す列名取得 結果: SUMCO (3436) と コナミ (9766? で、 ) 相関係数は、 -0.899 ※SUMCO:住友金属と三菱マテリアルのシリコンウエハ事業統合、 コマツ系も合流。半導体用世界首位級(YJ Financeより) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 24
25.
2.2. ポートフォリオ構築(2資産) 確かに相関は低そう
) コナミ(9766? SUMCO(3436) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 25
26.
2.2. ポートフォリオ構築(2資産) SUMCO と
コナミ の効率的フロンティア。かなり曲がってる ) コナミ(9766? SUMCO(3436) ※注:カラ売りはナシとして描いた 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 26
27.
2.2. ポートフォリオ構築(2資産) 先のソース ## @teramonagi
さんのをコピペ改変 ## 元ソース:http://d.hatena.ne.jp/teramonagi/20090712/1247387723 # ポートフォリオ用ライブラリロード library("fPortfolio") # SUMCO(3436)とコナミ(9766)を抽出 data <- as.timeSeries( cbind(Nikkei225_close.ts$T.3436, Nikkei225_close.ts$T.9766) ) # 作成するフロンティアの条件設定。フロンティア上のポートを100個作成。 conditions <- portfolioSpec() setNFrontierPoints(conditions) <- 100 # データ、効率的フロンティアの作成 efficientFrontier <- portfolioFrontier(data ,conditions) # 効率的フロンティアを描画 plot(efficientFrontier,1) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 27
28.
2.2. ポートフォリオ構築(2資産) 更に1年国債を混ぜ、効率的フロンティアを描画
) コナミ(9766? SUMCO(3436) 1年国債 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 28
29.
2.2. ポートフォリオ構築(2資産) 先のソース ## 今度は日本国債をポートフォリオに追加 #
1年国債データを用意 JGB1YR <- read.table("JGByield.csv", header=F, sep=",") colnames(JGB1YR) <- c("DATE","YR1") # 3資産でデータ作成 data <- as.timeSeries( cbind(Nikkei225_close.ts$T.3436, Nikkei225_close.ts$T.9766, JGB1YR$YR1) ) # 前掲の繰り返し conditions <- portfolioSpec() setNFrontierPoints(conditions) <- 100 efficientFrontier <- portfolioFrontier(data ,conditions) plot(efficientFrontier,1) # 各2資産を保有した場合をプロット plot(efficientFrontier,6) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 29
30.
2.2. ポートフォリオ構築(2資産) 国債を混ぜた絵を見て気づくこと ? 理系屋→国債を原点にすると(下に平行移動)式が綺麗 ?
投資家→要は、国債比の期待超過リターンが重要なのね リ Before 超 After タ 過 ー リ期 ン ポート タ待 フォリオ ー ン ポート フォリオ 国債 リスク リスク 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 30
31.
2.2. ポートフォリオ構築(2資産) 国債とポートフォリオとの接点を結ぶ線を資本市場 線といい、式で書くと、こんな感じ: リスクを ?、リターンを
rとすると 分子:期待超過リターン 切片:国債 E ?rP ? ? rF E ?rCML ? ? rF ? ? ? CML ?P 引数の意味: ? リスク?プレミアム CML→資本市場線 ? シャープ比 という F →安全資産 P →株の組合せ(ポートフォリオ) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 31
32.
2.3. ポートフォリオ構築(多資産) で、データを対国債比の期待超過リターンに変換 ## 単位株?株価数値の水準を揃える。初値を1に基準化し、国債との超過リターンにする ##
平均?分散は各々 (?mu-国債)/初値, ?sigma/初値 になる # 初期化 Nikkei225_adj <- c() # 初値で割った列ベクトルを次々結合 for (i in 2:226) {Nikkei225_adj <- cbind(Nikkei225_adj, Nikkei225_close[,i]/Nikkei225_close[1,i])} # 国債からの超過リターンに変換 Nikkei225_adj <- Nikkei225_adj - JGB1YR[,2]/100 # 営業日をくっつける Nikkei225_adj <- cbind(Date=as.POSIXct(Nikkei225_close[,1]), data.frame(Nikkei225_adj)) #列名をくっつける colnames(Nikkei225_adj) <- c("Date","T.1332", ~略~,"T.9984") ## timeSeriesオブジェクトへ変換 Nikkei225_adj.ts <- as.timeSeries(Nikkei225_adj) Nikkei225_adj.ts <- Nikkei225_adj.ts - JGB1YR[,2]/100 ## 内容確認 head(Nikkei225_adj.ts[1:3]); str(Nikkei225_adj.ts[1:3]) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 32
33.
2.3. ポートフォリオ構築(多資産) 次は3資産を考える。 SUMCO
(3436) , コナミ (9766?) に、旭硝子 (5201) 追加←コナミと2番目に低い相関 (-0.887) ) コナミ(9766? ) 旭硝子(5201? SUMCO(3436) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 33
34.
2.3. ポートフォリオ構築(多資産) 3資産の効率的フロンティアは、2資産+1資産となる
) コナミ(9766? まず以下の組合せ SUMCO: 17.9% コナミ: 38.3% SUMCO(3436) 次に 旭硝子: 43.9% ) 旭硝子(5201? を追加 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 34
35.
2.3. ポートフォリオ構築(多資産) 先のソース ## 3資産での効率的フロンティア data
<- as.timeSeries( cbind(Nikkei225_adj.ts$T.3436, Nikkei225_adj.ts$T.5201, Nikkei225_adj.ts$T.9766) ) # 作成するフロンティアの条件設定 conditions <- portfolioSpec() # 効率的フロンティアの作成 efficientFrontier <- portfolioFrontier(data ,conditions) # 今度は効率的フロンティアの描画関数を使ってみる tailoredFrontierPlot(efficientFrontier, risk = c("Sigma"), twoAssets=TRUE) # 接点ポートフォリオを取得 ## 余談:get*** なるコマンドで色々な指標が取れる p.tan <- tangencyPortfolio(data) getWeights(p.tan) 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 35
36.
2.3. ポートフォリオ構築(多資産) 資産の組み合わせ次第では、比率ゼロも出てくる
SUMCO(3436) 旭硝子: 32.9% 日本板硝子 日本板硝子: 67.1% ) (5202? ) 旭硝子(5201? 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 36
37.
2.3. ポートフォリオ構築(多資産) で、日経225銘柄を全部投入。接点ポートフォリオの 結果は以下のとおり
銘柄 組入割合 1812 鹿島 14.5% 4502 武田薬品 40.4% 4503 アステラス 7.3% 4523 エーザイ 27.4% 5233 太平洋セメント 0.5% 6366 千代田化工建設 4.2% 7751 キャノン 1.8% 8304 あおぞら銀行 3.9% 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 37
38.
2.3. ポートフォリオ構築(多資産) (あまり役立たない)効率的フロンティアのお絵かき 2011/10/22
Rで学ぶ現代ポートフォリオ理論入門 38
39.
2.3. ポートフォリオ構築(多資産) ポートフォリオのお値段は、単位株数でしか取引でき ないため、約3.4億かかる。個人では無理
銘柄 10/14 単位 (A)*(B) 構成 終値(A) 株数(B) 割合 1812 鹿島 259 1,000 259,000 14.5% 鹿島を145, 4502 武田薬品 3,585 100 358,500 40.4% 武田を404, …として 4503 アステラス 2,865 100 286,500 7.3% 計算 4523 エーザイ 3,085 100 308,500 27.4% 5233 太平洋セメント 152 1,000 152,000 0.5% 6366 千代田化工建設 870 1,000 870,000 4.2% 7751 キャノン 3,445 100 344,500 1.8% 8304 あおぞら銀行 190 1,000 190,000 3.9% 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 39
40.
2.4. CAPM (Capital
Asset Pricing Model) そういえば、こんなお話がある 【CAPM第一定理】安全資産があると、市場の均衡状態では マーケット?ポートフォリオ(後述)は接点ポートフォリオと一致。 よって、マーケット?ポートフォリオは効率的ポートフォリオ リ タ マーケット?ポートフォリオ ー ン = 接点ポートフォリオ ポートフォリオ 国債 2011/10/22 リスク Rで学ぶ現代ポートフォリオ理論入門 40
41.
2.4. CAPM 【マーケット?ポートフォリオ】市場に供給されるすべての証券 のバスケット →
日経平均? ならば、日経平均 vs お手製ポートフォリオを比較しよう ## 日経平均取得 library("RFinanceYJ") N225 <- quoteStockTsData('998407.O',since='2011-01-04', date.end='2011-10-14') ## 作成ポートフォリオの系列作成 data <- as.timeSeries(cbind( 0.1450 * Nikkei225_adj.ts$T.1812 + 0.4040 * Nikkei225_adj.ts$T.4502 + 0.0734 * Nikkei225_adj.ts$T.4503 + 0.2742 * Nikkei225_adj.ts$T.4523 + 0.0053 * Nikkei225_adj.ts$T.5233 + 0.0417 * Nikkei225_adj.ts$T.6366 + 0.0177 * Nikkei225_adj.ts$T.7751 + 0.0388 * Nikkei225_adj.ts$T.8304) ) ## 日経平均と、作成ポートフォリオの結合作業 N225 <- cbind( Date=as.POSIXct(N225[,1]) , data.frame(N225[,5]/N225[1,5] - JGB1YR[,2]/100) , data.frame(data) ) N225.ts <- as.timeSeries(N225); colnames(N225.ts) <- c("Nikkei225","Create") 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 41
42.
2.4. CAPM CAPMの御託とは違うが、日経平均には勝っている 2011/10/22
Rで学ぶ現代ポートフォリオ理論入門 42
43.
2.4. CAPM 最適ポート探索は10/14までのデータを使用。この構 成比で、10/20終値に当ててみる
項目 日経平均 お手製 勝 リターン(平均値) -7.29% 0.17% イン か利 リスク(標準偏差) 6.31% 1.22% な、 サンプル で 【参考】相関係数 0.335 … アウト リターン(平均値) -7.51% 0.29% ?い い サンプル リスク(標準偏差) 6.38% 1.21% の 留意事項 ? 東日本大震災のショック有、CAPMの前提が成立? ? 所要3.4億円 等々 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 43
44.
3.1. まとめ ? 相関係数が小さい程、リスク削減効果が大きくなる ?
【トービンの分離定理】安全資産があると、効率的 ポートフォリオは、安全資産と接点ポートフォリオの 組合せで実現可能 ? RFinanceYJを使用し東証の株価を取得し、 fPortfolioを使って効率的ポートフォリオを作成 ? 【CAPM第一定理】マーケット?ポートフォリオは効率 的ポートフォリオ → を確認しようとした ※ CAPM第一定理があるので、当然?CAPM第二定理 (βの話)もあるが、今回は準備時間切れで放置 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 44
45.
3.2. 参考資料 【ファイナンス理論】 ?
「一人で学べるファイナンス理論」佐野三郎 http://selflearn.web.infoseek.co.jp/ ? 2011年証券アナリスト1次レベルテキスト 第3回 「現代ポートフォリオ理論」、小林孝雄、本多俊毅 【R初心者が使った資料】 ? R-Tips,舟尾 暢男 http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html ? 以下Blogから引用コピペ 里さん(@ yokkuns) http://d.hatena.ne.jp/yokkuns/ てなもなぎさん(@teramonagi) http://d.hatena.ne.jp/teramonagi/ 2011/10/22 Rで学ぶ現代ポートフォリオ理論入門 45
Download