リスクについて

まずは、必要な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)
+ }