リスクについて
まずは、必要なRの関数について。
・cummax関数
引数に与えたベクトルの要素について、それまでの要素の最大値を求める。
日本語では上手く言えないが試してみれば分かる。
> cummax(c(1,5,2,6,7,8,9,10,2)) [1] 1 5 5 6 7 8 9 10 10
この関数を使用してドローダウンの計算をする。
原系列は次のデータ。
> c(1,5,2,6,7,8,9,10,2) > plot(c(1,5,2,6,7,8,9,10,2), type='l')
このデータをリターンのデータと考えた時、リターンのピーク(最大資産)はcummax関数を使用して次のように計算できる。
> cummax(c(1,5,2,6,7,8,9,10,2)) > plot(cummax(c(1,5,2,6,7,8,9,10,2)), type='l')
ドローダウン(最大資産からの落ち込み)は次のように計算できる。
> cummax(c(1,5,2,6,7,8,9,10,2))-c(1,5,2,6,7,8,9,10,2) > plot(cummax(c(1,5,2,6,7,8,9,10,2))-c(1,5,2,6,7,8,9,10,2), type='l')
以上のことから、ドローダウンを計算する関数を次のように定義する。
> drawdown<-function(x){ + cummax(x)-x + }
次にシャープレシオ。
これは教科書通りに次のように定義する。。。
> sharpe_ratio<-function(x, rf){
+ sharpe<-(mean(x, na.rm=TRUE)-rf)/sd(x, na.rm=TRUE)
+ return(sharpe)
+ }