quantstrat demo(faber_rebal)
Dear Gei,
Thanks for the swift reply. Replacing timestamp by pindex[i] in the
add.rule doesn't solve the problem. Does the quick fix work for you?
The downloaded data doesn't have any missing values.
Simon
library(quantstrat)
Sys.setenv(TZ = "America/New_York")
source("faber_rebal.R")
[1] "setup completed"
Error in if (is.na(price)) stop("order at timestamp ", timestamp, "
must not have price of NA") :
argument is of length zero
# add quaterly rebalancing
add.rule('faber', 'rulePctEquity',
arguments=list(rebalance_on='quarters',
trade.percent=1/length(symbols),
refprice=quote(last(getPrice(mktdata)[paste('::',pindex[i],sep='')][,1])),
digits=0
),
type='rebalance',
label='rebalance'
)
On Fri, Mar 28, 2014 at 11:36 PM, Gei Lin <gmonaie at gmail.com> wrote:
Looking at applyStrategy.rebalancing(), timestamp is being passed here to
the function rulePctEquity, so it can be used *inside* rulePctEquity, but
you can't reference it in passing arguments because it isn't defined inside
applyStrategy.rebalancing(), it is floating around as the value pindex[i]
ruleProc(s$rules$rebalance, timestamp = pindex[i],
path.dep = TRUE, ruletype = "rebalance",
..., mktdata = md_subset, parameters = parameters,
portfolio = portfolio, symbol = symbol)
Quick fix, replace "timestamp" in the add.rule with "pindex[i]" which has
the intended value and won't be missing.
# add quarterly rebalancing
add.rule('faber', 'rulePctEquity',
+ arguments=list(rebalance_on='quarters',
+ trade.percent=1/length(symbols),
+
refprice=quote(last(getPrice(mktdata)[paste('::',timestamp,sep='')][,1])),
+ digits=0
+ ),
+ type='rebalance',
+ label='rebalance'
+ )
On Fri, Mar 28, 2014 at 5:00 PM, Simon Otziger <simon at volemont.com> wrote:
Dear list members, I'm trying to run the demo(faber_rebal) from the Quantstrat package (R-Forge Rev. 1590): library(quantstrat) Sys.setenv(TZ = "America/New_York") demo(faber_rebal) The demo stops on line 133 with the error message:
out<-applyStrategy.rebalancing(strategy='faber' , portfolios='faber')
Error in paste("::", timestamp, sep = "") :
cannot coerce type 'closure' to vector of type 'character'
I guess it's a namespace/masking clash with the timestamp() function
of the R.utils package. Another quantstrat user posted the same issue
in the R-Forge forums, see
https://r-forge.r-project.org/forum/forum.php?thread_id=28525&forum_id=1032&group_id=316
Any idea how to fix it?
Thanks,
Simon
sessionInfo()
R version 3.0.3 (2014-03-06) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] quantstrat_0.8.0 foreach_1.4.1 [3] blotter_0.8.17 PerformanceAnalytics_1.1.0 [5] FinancialInstrument_1.1.9 quantmod_0.4-0 [7] Defaults_1.1-1 TTR_0.22-0 [9] xts_0.9-7 zoo_1.7-11 loaded via a namespace (and not attached): [1] codetools_0.2-8 grid_3.0.3 iterators_1.0.6 lattice_0.20-27 [5] tools_3.0.3
_______________________________________________ R-SIG-Finance at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
--
Don't quit. Suffer now and live the rest of your life as a champion.
- Muhammad Ali
The world is full of obvious things which nobody by any chance observes.
- Sir Arthur Conan Doyle
Towering genius disdains a beaten path. It seeks regions hitherto
unexplored.
- Abraham Lincoln