2

私は quantstrat でデモを行ってきました。faber_rebal.r の実行に問題があります。次のエラーで失敗します。

> out<-applyStrategy.rebalancing(strategy='faber' , portfolios='faber')
Error in `colnames<-`(`*tmp*`, value = c("MaxPos", "LongLevels", "MinPos",  : 
length of 'dimnames' [2] not equal to array extent

sessionInfo() の出力は次のとおりです。

R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_South Africa.1252  LC_CTYPE=English_South Africa.1252   
[3] LC_MONETARY=English_South Africa.1252 LC_NUMERIC=C                         
[5] LC_TIME=English_South Africa.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] quantstrat_0.7.8           foreach_1.4.1              blotter_0.8.15            
 [4] PerformanceAnalytics_1.1.0 FinancialInstrument_1.1    quantmod_0.4-0            
 [7] Defaults_1.1-1             TTR_0.22-0                 xts_0.9-5                 
[10] zoo_1.7-10                 lattice_0.20-23           

loaded via a namespace (and not attached):
[1] codetools_0.2-8 grid_3.0.1      iterators_1.0.6 tools_3.0.1

この問題は、関数 applyStrategy.rebalancing がプライベート関数 ruleProc を呼び出すときに発生します。

R 3.0.1 を搭載した Ubuntu 12.04 マシンでも同じエラーが発生します。

それを機能させるための助けをいただければ幸いです。

ありがとうチャールズ

4

2 に答える 2

0

パッケージの最新のアップデートでデモが修正されたようです。Rev.:1595以降にアップデートしてみてください

于 2014-04-01T19:46:36.760 に答える
0

faber_rebal.R デモを動作させるのにもいくつか問題がありました。

まず、タイムゾーンを設定する必要があります:

ttz<-Sys.getenv('TZ')
Sys.setenv(TZ='UTC')

次に、add.rule のリバランスで次の行を機能させることができました。

refprice=quote(last(getPrice(mktdata)[paste('::',timestamp,sep='')][,1])),

だから私はそれを次のように変更しました:

refprice=quote(last(getPrice(mktdata)[paste('::','20140119',sep='')][,1])),

それが役立つことを願っています。

ベスト、ピーター

于 2014-01-19T21:33:10.683 に答える