2

実際のポートフォリオのパフォーマンスを仮想のランダムポートフォリオのパフォーマンスと比較しようとしています。

これが私が扱っているデータセットのサンプルです。2か月分のデータ、ポートフォリオ内のマネージャーの名前、およびそれらのマネージャーのリターン、割り当て、および属性が表示されます。

"date" "manager" "return" "allocation" "attribution"
2005-01-31 "manager01" -0.00763241754291056 0.146 6.94549996404861e-05
2005-01-31 "manager02" 0.0292205518315147 0.048 4.09087725641205e-05
2005-01-31 "manager03" -0.0354047394153526 0.049 -8.85118485383814e-05
2005-01-31 "manager04" 0.0424244772606645 0.124 -0.000148485670412326
2005-01-31 "manager05" -0.0574606103881735 0.134 0.000206858197397425
2005-01-31 "manager06" 0.0465278163188542 0.098 -0.000265208553017469
2005-01-31 "manager07" 0.157063203979822 0.142 -0.000219888485571751
2005-01-31 "manager08" -0.0594342759491509 0.071 2.97171379745754e-05
2005-01-31 "manager09" -0.0199466865109495 0.093 6.18347281839434e-05
2005-01-31 "manager10" 0.118839410130508 0.095 0.000190143056208813
2005-02-28 "manager01" 0.0403671815817711 0.119 -0.000460185870032191
2005-02-28 "manager02" 0.0246109773791459 0.064 -3.93775638066334e-05
2005-02-28 "manager03" 0.00868489880733732 0.065 -4.08190243944854e-05
2005-02-28 "manager04" -0.082332291530606 0.105 2.46996874591818e-05
2005-02-28 "manager05" -0.0903959999837099 0.114 -0.000117514799978823
2005-02-28 "manager06" 0.0514735666329574 0.081 -6.17682799595489e-05
2005-02-28 "manager07" -0.00914374153663751 0.164 -8.41224221370651e-05
2005-02-28 "manager08" -0.0367283709786134 0.083 -4.77468822721974e-05
2005-02-28 "manager09" -0.04752320926613 0.079 -3.8018567412904e-05
2005-02-28 "manager10" -0.0657464361573664 0.126 -0.000309008249939622

データをRに取り込むには、データをクリップボードにコピーしてから、

mydata<-read.table("clipboard",header=TRUE)

ランダムなポートフォリオを作成するために、、、、ddplyおよびmutateからのrlongonly関数を使用plyrrportfolioます。

library(plyr)
library(rporfolio)

mydata.new<-ddply(mydata,.(date),mutate,new.attr=t(rlongonly(m=1,n=length(date),k=10,x.u=.15))*return)

rlongonly関数内:

  • mの値は、作成したいランダムポートフォリオの数です。
  • nの値は、その期間の割り当ての数です。
  • kの値は、ゼロ以外の割り当ての数です。
  • xuの値は、割り当ての上限です。

帰属は単にリターン*割り当てです。

m = 1の場合、すべて問題ありません。m> 1の場合、出力の寸法は正しくありません。

mydata.new2<-ddply(mydata,.(date),mutate,new.attr=t(rlongonly(m=2,n=length(date),k=10,x.u=.15))*return)
dim(mydata.new)

mydata.new2には、7列が必要なときに6列しかありません。最後の列「new.attr」は、基本的に1列に2列です。

meltmydata.new2を実行しようとすると、次のエラーが発生します。

library(reshape2)
drop<-names(mydata.new2) %in% c("manager","return","allocation")
melt(mydata.new2[!drop],id="date")

> Error in rbind(deparse.level, ...) : 
> numbers of columns of arguments do not match

「new.attr」列を分割して、データを溶かしてグラフ化するにはどうすればよいですか?

4

1 に答える 1

1

まず、データを再生成します。次にdput(mydata)を使用して、結果を投稿する必要があります。

次に、mydata.new2ベクトルを生成します。

library(plyr)
library(rportfolios)

mydata.new2<-ddply(mydata,
                  .(date),
                  mutate,
                  new.attr=t(rlongonly(m=2,n=length(date),k=10,x.u=.15))*return)

数値を丸めて、データを表示します

 mydata.new2[,-c(1,2)] <- numcolwise(round_any)(mydata.new2,0.0001)
 head(mydata.new2)
        date   manager  return allocation attribution new.attr.1 new.attr.2
1 2005-01-31 manager01 -0.0076      0.146       1e-04    -0.0009    -0.0007
2 2005-01-31 manager02  0.0292      0.048       0e+00     0.0032     0.0040
3 2005-01-31 manager03 -0.0354      0.049      -1e-04    -0.0024    -0.0049
4 2005-01-31 manager04  0.0424      0.124      -1e-04     0.0029     0.0025
5 2005-01-31 manager05 -0.0575      0.134       2e-04    -0.0047    -0.0042
6 2005-01-31 manager06  0.0465      0.098      -3e-04     0.0051     0.0039

あなたが言ったように、ここでは6列ではなく7列があります。

私はデータを溶かそうとします:

library(reshape2)
drop<-names(mydata.new2) %in% c("manager","return","allocation")
melt(mydata.new2[!drop],id="date")

しかし、ここでエラーが発生します。

 numbers of columns of arguments do not match

mydata.new2data.frameにネストされたdata.framenew.attrがあるため。これは、mutateを使用しているためです。ここでは、変換を繰り返し行う必要がないため、変換を使用することをお勧めします。

それで :

mydata.new2<-ddply(mydata,
                  .(date),
                  transform,
                  new.attr=t(rlongonly(m=2,n=length(date),k=10,x.u=.15))*return)

そしてあなたはあなたの結果を得る

head(melt(mydata.new2[!drop],id="date"))
        date    variable         value
1 2005-01-31 attribution  6.945500e-05
2 2005-01-31 attribution  4.090877e-05
3 2005-01-31 attribution -8.851185e-05
4 2005-01-31 attribution -1.484857e-04
5 2005-01-31 attribution  2.068582e-04
6 2005-01-31 attribution -2.652086e-04
于 2012-11-30T01:18:27.387 に答える