Windowsを再インストールした際にインストールしたアプリケーション一覧(2020年5月)
世の中はコロナ一色であるが、私もご多分に漏れずコンピュータの整理を行った。
Windows 10を再インストールした際にインストールしたアプリケーションを一覧化しておく。
ツール系
Microsoft Office 365
言わずもがな。私はサブスクリプションで購入し、かつOnedriveにファイルをアップロードしている。1TBまで保存できるため非常に便利。
デスクトップに保存してあるファイルも自動で同期された。
www.office.com
Google Chrome
Googleのブラウザ。再インストール前はこちらを使用していたものの、デフォルトのEdgeも非常に使いやすくなっており、
しばらくはChromeではなく、Edgeを使ってみようと思う。※ただし、Bing検索だけは受け入れられなかったのでGoogle検索へすぐ変更した。
www.google.co.jp
uBlock
Chrome, Edgeのどちらにもインストール。広告ブロックは様々な議論があることは承知をしているが、
便利なので使用している。
Google 日本語入力
Googleの日本語入力エンジン。私はこのIMEがお好み。
www.google.co.jp
Google Drive
現在はバックアップと同期という名前。サブのオンラインストレージとして使用しており、
インストール。
www.google.com
Adobe Acrobat Reader
PDFファイルの閲覧のため必要。
acrobat.adobe.com
ESET Internet Security
セキュリティソフト。現在はWindows 10にデフォルトでセキュリティソフトが導入されているため、
あまり必要性を感じていないが、念の為。動作も軽いし、プログラムに対する不具合もない。
eset-info.canon-its.jp
1password
パスワードを一元管理できるアプリ。
1password.com
GIMP
画像編集ソフトウェア。これらの機能が無料にて使用できるのは大変素晴らしいことだと思う。
www.gimp.org
プログラミング系
Python
Anaconda3を使用してインストール。
Spyderも付いてくる。
www.python.jp
R
Rは気がついたら4.xxまでバージョンが上がっていた。
www.r-project.org
rstudio.com
Visual Studio Code
HTMLのコーディング等に重宝している。
code.visualstudio.com
ファクターベースドリスクパリティポートフォリオの構築
リスクパリティポートフォリオの概説
2010年台前半にかけて、リスクパリティ戦略によるポートフォリオ構築が話題になっています。
このようにリスクパリティ戦略が出てきた背景には、既存の最適化モデルの問題があります。従来はMarkowitzによる平均・分散アプローチが資産運用では主流でした。このモデルでは、各資産の期待収益率と分散共分散行列によって最適解が出力されます。しかし、この期待収益率の推定が非常に難しい上にその期待収益率に対してセンシティブ(少しの変化に対して、大きく最適解が変わってしまう)という問題がありました。
そこで登場してきたのがリスクパリティポートフォリオです。この構築方法では分散共分散行列だけで最適解が出力されます。この中でも分散は比較的推定が容易であることが知られており、この性質はリスクパリティポートフォリオを構築するときに好ましい性質です。その為、学術的・実務的に広がりを見せました。
この方法ではリスク寄与度(risk contribution)と呼ばれる指標を使用します。これはポートフォリオ全体のリスクを各資産に分解した値で、各資産がポートフォリオ全体のリスクにどの程度寄与しているのかを図る指標です。具体的には以下のような式で定義されます。
は各資産の投資比率、はポートフォリオのリスクを表します。
このリスク寄与度は以下の式を満たします。
リスク寄与度を全部足し合わせると、ポートフォリオ全体のリスク量と等しくなるのです。これがあたかもポートフォリオ全体のリスクを各資産に分解したような値として使用される所以です!
ここからはリスク指標が標準偏差の時を見ていきましょう。リスク指標が標準偏差の場合、リスク寄与度は以下のように計算できます。
はポートフォリオ全体の標準偏差、は資産と資産の共分散を示しています。この計算は単純でポートフォリオの標準偏差の式をで微分しただけです。
実際にRで計算してみました。分散共分散行列はRoncalli and Weisang(2016)を参考にして作成しています。
#ポートフォリオの分散共分散行列 sigma<-rbind(c(0.0449016,0.0396086,0.0442209,0.0323200), c(0.0396086,0.0733868,0.0543290,0.0357016), c(0.0442209,0.0543290,0.0689063,0.0400982), c(0.0323200,0.0357016,0.0400982,0.0530842) ) #投資比率 x<-c(0.25,0.25,0.25,0.25) #ポートフォリオの標準偏差 sigma_P<-as.numeric(sqrt(t(x)%*%sigma%*%x)) #リスク寄与度 RC<-x*(t(x)%*%sigma/sigma_P)
実際にリスク寄与度は以下のようになり、合計がポートフォリオの標準偏差と等しくなっていることがわかります。
資産1 | 資産2 | 資産3 | 資産4 |
0.04703276 | 0.05929095 | 0.06061341 | 0.04707741 |
次に、このリスク寄与度がすべての資産で均等になるように、最適化を行います。
具体的には以下のような最適化問題を解きます。
#目的関数 obj<-function(x){ x<-x/sum(x) sigma_P<-as.numeric(sqrt(t(x)%*%sigma%*%x)) RC<-x*(t(x)%*%sigma/sigma_P) #誤差二乗和 sum((RC/sigma_P-1/length(x))^2) } #最適化 res<-optim(x,obj,method="L-BFGS-B",lower=rep(0,4)) x.star<-res$par/sum(res$par) RC.star<-x.star*(t(x.star)%*%sigma/sigma_P)
この計算によって、リスクパリティポートフォリオは以下のように計算でき、そのリスク寄与度は資産間で等しくなっています。
資産1 | 資産2 | 資産3 | 資産4 | |
投資比率 | 0.2785453 | 0.2260281 | 0.2198282 | 0.2755985 |
リスク寄与度 | 0.0521757 | 0.0521757 | 0.0521757 | 0.0521757 |
ファクターベースドリスクパリティ
しかしこのリスクパリティ戦略ですが、大きな問題があります。それはユニバースに対して、敏感であることです。その為、資産ベースでリスクパリティを行うのではなく、ファクターベースでリスクパリティを行うことが考えられています。ファクターとは資産のリターンが背後に潜む、ファクターによって構成されていると考える理論のことで、食品における栄養素に例えられることがあります。
実際にRoncalli(2016)の方法に従って、このファクターベースドリスクパリティを算出してみましょう。
まず、前提として、資産とファクターは以下のような線形関係にあるとします。
ここでは資産のリターンのベクトル、はファクターのリターンのベクトルです。これらは横に資産、縦に時系列データが入っている行列を想像してください。はそれらをつなぐ因子行列と呼ばれる行列です。
実際にこのを推定するときは、ある資産のリターンをファクターリターンで回帰を行い、その回帰式のベータが横一列に並び、それが資産ごとで縦に並んでいるイメージです。
次にファクターエクスポージャー(ポートフォリオに対するファクターの割合・ポートフォリオのベータに相当)とアセットエクスポージャー(投資比率のこと)は以下の関係にあります。
これをxの式にすると以下のようになります。
ここではの転置であり、はのMoore-Penrose inverse行列です。これは正則でない行列に対して逆行列に近い行列を与える操作です。また、はに対して、左零空間に基底を張る行列で、これはとなることを示しています。(はアセットの数からファクターの数だけ引いた次元を持っています)
ファクターに対するリスク寄与度は以下のように書き表せます。
またこのモデルではadditional factorと呼ばれるファクターが存在します。これらは回帰式の残差に相当する部分で、アセットの数からファクターの数だけ引いたadditional factorが存在します。要はアセットの次元からファクターの次元まで減ってしまっているため、それらの差の部分を示します。これらに対するリスク寄与度は
と計算できます。これらはリスク指標を標準偏差とした時、以下のように計算できます。
なお
という関係があります。
実際に計算してみましょう。数学的な定義は比較的難しいですが、これらの関数はRに組み込まれているため、簡単に求めることができます。
library(MASS) A<-rbind(c(0.9,0,0.5), c(1.1,0.5,0), c(1.2,0.3,0.2), c(0.8,0.1,0.7) ) B<-t(A) A.plus<-ginv(A) B.plus<-ginv(B) B.tilde.plus<-Null(B.plus) B.bar<-cbind(B.plus,B.tilde.plus) B.tilde<-solve(B.bar)[-c(1:length(A[1,])),] RC.F<-(t(A)%*%x)*(A.plus%*%sigma%*%x)/sigma_P RC.tilde.F<-(B.tilde%*%x)*(B.tilde%*%sigma%*%x)/sigma_P
これらの結果から、以下のようなファクターリスク寄与度が算出できました。
ファクター1 | ファクター2 | ファクター3 | additional factor 1 |
0.17235202 | 0.02035163 | 0.02116794 | 0.00014295 |
ファクターエクスポージャーの大きいファクター1のリスク寄与度が大きく、2,3は小さい結果となりました。また、同様にファクター3つとadditional factorを足し合わせると全体の標準偏差と等しくなります。
ファクターのリスク寄与度が算出されたところで、ファクターリスク寄与度が均等になるように配分することを考えます。
やり方は前の章でのアセットベースでのリスクパリティと全く同じです。リスク寄与度の算出方法が変わっただけです。
obj<-function(x){ x<-x/sum(x) sigma_P<-as.numeric(sqrt(t(x)%*%sigma%*%x)) RC.F<-(t(A)%*%x)*(A.plus%*%sigma%*%x)/sigma_P RC.tilde.F<-(B.tilde%*%x)*(B.tilde%*%sigma%*%x)/sigma_P #誤差二乗和 sum((RC.F/sigma_P-1/3)^2) } res<-optim(x,obj,method="L-BFGS-B",lower=rep(0,4)) x.star<-res$par/sum(res$par) RC.F<-(t(A)%*%x.star)*(A.plus%*%sigma%*%x.star)/sigma_P RC.tilde.F<-(B.tilde%*%x.star)*(B.tilde%*%sigma%*%x.star)/sigma_P
資産1 | 資産2 | 資産3 | 資産4 | |
投資比率 | 0 | 0.39243535 | 0.00579411 | 0.60177054 |
リスク寄与度 | 0 | 0.0927818 | 0.001241312 | 0.1298707 |
ファクター1 | ファクター2 | ファクター3 | additional factor 1 | |
ファクターエクスポージャー | 0.9200482 | 0.2581330 | 0.4223982 | 0.06304726 |
リスク寄与度 | 0.07449179 | 0.07447801 | 0.07449111 | 0.0004329 |
ファクターに対するリスク寄与度がすべてのファクターで等しくなっています。このようにして、ファクターベースドのリスクパリティポートフォリオを求めることができました。