Hi,
I am trying to use Quantstrat to backtest a portfolio strategy with user defined weights at each re-balance date. The user defined weights, are given in a matrix (example shown below) Date ABC.UN ABT.UN ACN.UN ADBE.UW 20 2015-05-15 0.50000000 0.000000 0.5 0 21 2015-05-22 0.50000000 0.000000 0.5 0 22 2015-05-29 0.50000000 0.000000 0.5 0 23 2015-06-05 0.50000000 0.000000 0.5 0 24 2015-06-12 0.08865296 0.411347 0.5 0 25 2015-06-19 0.00000000 0.500000 0.5 0 Simply put, how can I backtest such a strategy, using Quantstrat? I have looked at the rule, 'rulePctEquity', but this appears to only govern maximum trade sizes. What information does Quantstrat need to re-balance my portfolio at each user-defined re-balance date? Thanks in advance. Very much appreciated Rgds, Vineet [[alternative HTML version deleted]] _______________________________________________ [hidden email] 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. |
On Wed, 2016-12-14 at 14:28 +0000, Vineet Gupta wrote:
> I am trying to use Quantstrat to backtest a portfolio strategy with > user defined weights at each re-balance date. The user defined > weights, are given in a matrix (example shown below) > > Date ABC.UN ABT.UN ACN.UN ADBE.UW > > 20 2015-05-15 0.50000000 0.000000 0.5 0 > 21 2015-05-22 0.50000000 0.000000 0.5 0 > 22 2015-05-29 0.50000000 0.000000 0.5 0 > 23 2015-06-05 0.50000000 0.000000 0.5 0 > 24 2015-06-12 0.08865296 0.411347 0.5 0 > 25 2015-06-19 0.00000000 0.500000 0.5 0 > > Simply put, how can I backtest such a strategy, using Quantstrat? I > have looked at the rule, 'rulePctEquity', but this appears to only > govern maximum trade sizes. > > What information does Quantstrat need to re-balance my portfolio at > each user-defined re-balance date? > > Thanks in advance. Very much appreciated You haven't really given us enough information to answer your question, so I'm just guessing based on the information you did provide. If you are simply 'trading' a portfolio strategy where the portfolio is rebalanced form one set of weights to another on a specified rebalancing period, you probably don't want quantstrat at all. In that case, you likely want the function Return.portfolio in PerformanceAnalytics or you want to use PortfolioAnalytics to construct your target portfolio. Working in returns and weights is different than working in trades and cash. rulePctEquity simply governs how much of the total equity is available for each instrument in the strategy. It doesn't reduce the size of an existing position on the rebalance period, if there is one. It could certainly be extended to enter orders or transactions to rebalance, if you wanted it to. You'll have to provide a minimal reproducible example and more information about what you'd like to do for someone to be able to help you further. Regards, Brian _______________________________________________ [hidden email] 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. |
Dear Brian,
Thank you for your answer. My apologies for not providing enough information. I have a small example at the bottom of this page – it is incomplete, as I could not figure out how to backtest my portfolio strategy with Quantstrat. Your assumptions are correct. I just want to re-balance my portfolio at specified re-balancing dates, according to a set of weights. With the function ‘Return.portfolio’, aside from the R help documentation, do you know of any other guides for how to use it? If there is no documentation available, then I would be happy to share my notes, if I need to make any. Also, does the ‘Return.portfolio’ function return objects to the Blotter environment, that we can analyse in the same way as Quantstrat strategies? Example code library(quantstrat) startDate <- '2010-01-01' # start of data endDate <- '2010-07-31' # end of data symbols = c("XLF", "XLP", "XLE", "XLY", "XLV", "XLI", "XLB", "XLK", "XLU") Sys.setenv(TZ = "UTC") # set time zone getSymbols(symbols, src = 'yahoo', index.class = c("POSIXt", "POSIXct"), from = startDate, to = endDate, adjust = TRUE) #Initialise currency and instruments initDate <- '2009-12-31' initEq <- 1e6 currency("USD") stock(symbols, currency = "USD", multiplier = 1) #Create our Markowitz weights m_wts <- data.frame('Date' = seq(as.Date("2010-01-31"), by="month", length.out=7)) invisible(lapply(symbols, function(x) m_wts[[x]] <<- as.numeric(NaN))) invisible(lapply(1:nrow(m_wts), function(i) m_wts[i, 2:9] <<- round(runif(8)/8,2))) invisible(lapply(1:nrow(m_wts), function(i) m_wts[i, 10] <<- 1 - sum(m_wts[i, 2:9]))) unlist(lapply(1:nrow(m_wts), function(i) sum(m_wts[i,2:10 ]))) initPortf(name = "markowitz", symbols, initDate = initDate) initAcct(name="markowitz", portfolios="markowitz", initDate = initDate, initEq = initEq) initOrders(portfolio = "markowitz", initDate = initDate) strategy('markowitz', store = T) Rgds, Vineet -----Original Message----- From: Brian G. Peterson [mailto:[hidden email]] Sent: 14 December 2016 14:40 To: Vineet Gupta <[hidden email]>; [hidden email] Subject: Re: [R-SIG-Finance] Quantstrat to backtest portfolio strategy. User Defined Weights On Wed, 2016-12-14 at 14:28 +0000, Vineet Gupta wrote: > I am trying to use Quantstrat to backtest a portfolio strategy with > user defined weights at each re-balance date. The user defined > weights, are given in a matrix (example shown below) > > Date ABC.UN ABT.UN ACN.UN ADBE.UW > > 20 2015-05-15 0.50000000 0.000000 0.5 0 > 21 2015-05-22 0.50000000 0.000000 0.5 0 > 22 2015-05-29 0.50000000 0.000000 0.5 0 > 23 2015-06-05 0.50000000 0.000000 0.5 0 > 24 2015-06-12 0.08865296 0.411347 0.5 0 > 25 2015-06-19 0.00000000 0.500000 0.5 0 > > Simply put, how can I backtest such a strategy, using Quantstrat? I > have looked at the rule, 'rulePctEquity', but this appears to only > govern maximum trade sizes. > > What information does Quantstrat need to re-balance my portfolio at > each user-defined re-balance date? > > Thanks in advance. Very much appreciated You haven't really given us enough information to answer your question, so I'm just guessing based on the information you did provide. If you are simply 'trading' a portfolio strategy where the portfolio is rebalanced form one set of weights to another on a specified rebalancing period, you probably don't want quantstrat at all. In that case, you likely want the function Return.portfolio in PerformanceAnalytics or you want to use PortfolioAnalytics to construct your target portfolio. Working in returns and weights is different than working in trades and cash. rulePctEquity simply governs how much of the total equity is available for each instrument in the strategy. It doesn't reduce the size of an existing position on the rebalance period, if there is one. It could certainly be extended to enter orders or transactions to rebalance, if you wanted it to. You'll have to provide a minimal reproducible example and more information about what you'd like to do for someone to be able to help you further. Regards, Brian [[alternative HTML version deleted]] _______________________________________________ [hidden email] 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. |
Free forum by Nabble | Edit this page |