[R-SIG-Finance] how to grow XTS series in R dynamically ? And Quickly!

Ilya Kipnis ||y@@k|pn|@ @end|ng |rom gm@||@com
Fri Sep 6 20:47:39 CEST 2019


Vladimir,

Question--do you have to do operations on the newly updated xts each time
you append it? For instance, when I backtest strategies and I don't know
how long the output would be, I start off by allocating an empty list,
keep updating the list, and rbind it at the end.

EG:

results <- list()
for(i in 1:n){
  #output <- do something
  results[[i]] <-output
}
results <- do.call(rbind, results)

This might help, as this doesn't keep copying the larger list over and over
again, which I remember doing before I learned about this method.

Hope this helps.

-Ilya

On Fri, Sep 6, 2019 at 2:05 PM Vladimir Morozov <vmorozov2006 using gmail.com>
wrote:

> Hi Daniel
> Thanks a lot.
> Those are very helpful ideas.
>
> rbind_append --> it still has to allocate memory for the resulting
> series... so if memory allocation was the main reason for slow performance,
> maybe rbind_append doesn't change much? what do you think?
>
> preallocating regular-interval time-series is a good idea.
> however financial data are irregularly spaced (sometimes there may not be
> any price updates for a few secs, even more).
> even if we postulate that prices are allowed to change no more than once
> per second, there's a lot of uses for the frequency of price updates, not
> only the values of the prices (the simplest assumption is the poisson
> arrival process for the updates, but there are many fancier, more powerful
> models...)
> so, pre-allocating a regularly spaced 1-sec interval xts series dumbs down
> many things!
>
> i wish i could pre-allocate the vector for the values and maybe indices,
> but then do the assignment of the sort:
> (say, in C++ i would have a method)
>     price.set_next_point(time, value);
>
> thanks!
>
> On Sat, Sep 7, 2019 at 12:08 AM Daniel Cegiełka <daniel.cegielka using gmail.com
> >
> wrote:
>
> >
> >
> > > Wiadomość napisana przez Daniel Cegiełka <daniel.cegielka using gmail.com> w
> > dniu 06.09.2019, o godz. 16:10:
> > >
> >
> > >
> > > 2) preallocation
> > >
> > > preallocate_matrix <- function(n)
> > > {
> > >     x <- matrix()
> > >     length(x) <- 4 * n      # bid, ask, bid_size, ask_size
> > >     dim(x) <- c(n, 4)       # see: ?dim
> > >     return(x)
> > > }
> > >
> > > > x <- preallocate_matrix(5)
> > > > x
> > >      [,1] [,2] [,3] [,4]
> > > [1,]   NA   NA   NA   NA
> > > [2,]   NA   NA   NA   NA
> > > [3,]   NA   NA   NA   NA
> > > [4,]   NA   NA   NA   NA
> > > [5,]   NA   NA   NA   NA
> >
> > ?matrix
> >
> > Usage
> > matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
> >        dimnames = NULL)
> >
> > so we don't even need preallocate_matrix() function
> >
> > > x <- .xts(matrix(nrow = 5, ncol = 4), index = Sys.time() + 1:5)
> > > x
> >                     [,1] [,2] [,3] [,4]
> > 2019-09-06 17:07:27   NA   NA   NA   NA
> > 2019-09-06 17:07:28   NA   NA   NA   NA
> > 2019-09-06 17:07:29   NA   NA   NA   NA
> > 2019-09-06 17:07:30   NA   NA   NA   NA
> > 2019-09-06 17:07:31   NA   NA   NA   NA
> >
> >
> >
> >
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-SIG-Finance using 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.
>

	[[alternative HTML version deleted]]



More information about the R-SIG-Finance mailing list