2013-08-26 3 views
2

Я проходил демонстрации в квантстрате. У меня проблема с faber_rebal.r. Он не может со следующей ошибкой:Quantstrat faber_rebal.R demo error

> 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.

Я также получаю ту же ошибку на своей машине Ubuntu 12.04 с R 3.0.1.

Любая помощь для его работы будет оценена по достоинству.

Благодаря Чарльз

+0

Нет необходимости включать всю демоверсию, так как она включена в пакет. Тем не менее, вам необходимо включить фактическую ошибку и вывод из 'sessionInfo()'. –

+0

Спасибо, включили вывод sessionInfo(). – Charles

+0

Работа с последней фиксацией из braverock, [r-forge link] (https://r-forge.r-project.org/scm/viewvc.php/pkg/quantstrat/demo/faber_rebal.R?root=blotter&view= журнал). Также не забудьте установить часовой пояс. – Charles

ответ

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])), 

Я надеюсь, что это поможет.

Бест, Питер

0

Похоже демо была исправлена ​​в последнем обновлении к пакету. Попробуйте обновить версию: 1595 или новее

Смежные вопросы