# [R-SIG-Finance] rollapply and cummin

Voss, Kent VOSSK at kochind.com
Thu Aug 23 15:03:35 CEST 2007

```Ah, I had never created a function that way in any of the *apply
functions, I learned something new.  Thank you so much.  R and the R
community is just phenomenal...thank you.

Kent Voss
20 East Greenway Plaza, Suite 450
Houston, TX  77046
Phone: 713.544.5140
Fax: 713.544.6506
kent.voss at kochind.com

-----Original Message-----
From: Gabor Grothendieck [mailto:ggrothendieck at gmail.com]
Sent: Thursday, August 23, 2007 7:56 AM
To: Voss, Kent
Cc: r-sig-finance at stat.math.ethz.ch
Subject: Re: [R-SIG-Finance] rollapply and cummin

In that case you might prefer:

# test data
set.seed(1)
z <- zoo(rnorm(25))

rollapply(z, 5, function(x) min(cumsum(x)), align = "left")

which (1) works with the old rollapply too since the function returns a
single number and (2) has the advantage of returning a zoo object rather
than a numeric vector so the time information is not lost.

On 8/23/07, Voss, Kent <VOSSK at kochind.com> wrote:
> Thank you so much, the new rollapply worked like a charm.  I
> retrospect what I was really trying to do (which the new rollapply
> works perfectly for), is calculate the maximum cumulative loss over
some period.
>
> For the benefit of anyone else who has this problem...
> So with the new rollapply, the following returns an n x m matrix where

> m in the width specified in rollapply and is a cumulative sum over the

> width zl <- rollapply(z, 5, align='left',cumsum)
>
> Then doing an apply gives the minimum for each row, and is the maximum

> cumulative loss over the window.
> zm <- apply(zl, 1, min)
>
> Thank you so much Gabor and Z!!
>
>
>
>
>
> -----Original Message-----
> From: Gabor Grothendieck [mailto:ggrothendieck at gmail.com]
> Sent: Wednesday, August 22, 2007 11:47 PM
> To: Voss, Kent
> Cc: r-sig-finance at stat.math.ethz.ch
> Subject: Re: [R-SIG-Finance] rollapply and cummin
>
> The usual case is that the function used in rollapply returns a single

> number; however, if you really want to return a vector of 5 numbers
> and is not yet on CRAN but can be downloaded from the development
repository.
> From within R:
>
> library(zoo)
> source("http://r-forge.r-project.org/plugins/scmsvn/viewcvs.php/*check
> ou
> t*/pkg/R/rollapply.R?rev=363&root=zoo")
> # ... now run your commands ...
>
>
>
> On 8/22/07, Voss, Kent <VOSSK at kochind.com> wrote:
> > I am getting some unexpected results using rollapply and the cummin
> function that I am hoping someone can help me understand.  I'm just
> trying to get a rolling cumulative minimum of a time series.  Think of

> it as the maximum loss over a rolling window.
> >
> > Here's an example
> > # Create a dummy sequence to use with a set of dates used to create
> > a zoo object x <- c(0,rep(c(seq(1,5,by=1),seq(-1,-3, by=-1)),2))
> > DateList <- as.Date(seq(ISOdate(1990,1,1), length.out=length(x),
> > by="1
>
> > day"), '%Y-%m-%d')
> >
> > z <- zoo(x,DateList)
> >
> > # Doing the following gets expected results, a rolling 5 day sum.
> > So far so good zl <- rollapply(z, 5, align='left',sum)
> >
> > # The following however creates an n x n matrix where n = the length

> > of z, that I can't quite figure out zl <- rollapply(z, 5,
> > align='left',cummin)
> >
> >
> > Now I'm pretty new at this stuff, so I'm sure there's something I'm
> missing, but I can't make heads or tails around the results of the
> cummin.  Any help would be greatly appreciated.  Thanks in advance.
> >
> > Kent
> >
> >
> >
> >
> >
> > "EMF <kochind.com>" made the following annotations.
> > --------------------------------------------------------------------
> > --
> > -------- The information in this e-mail and any attachments is
> > confidential and intended solely for the attention and use of the
> named addressee(s). It must not be disclosed to any person without
> proper authority. If you are not the intended recipient, or a person
> responsible for delivering it to the intended recipient, you are not
> authorized to and must not disclose, copy, distribute, or retain this
> message or any part of it.
> >
> > ====================================================================
> > ==
> > ========
> >
> >        [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-SIG-Finance at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > -- Subscriber-posting only.
> > -- If you want to post, subscribe first.
> >
>
>
> "EMF <kochind.com>" made the following annotations.
> ----------------------------------------------------------------------
> -------- The information in this e-mail and any attachments is
> confidential and intended solely for the attention and use of the
named addressee(s). It must not be disclosed to any person without
proper authority. If you are not the intended recipient, or a person
responsible for delivering it to the intended recipient, you are not
authorized to and must not disclose, copy, distribute, or retain this
message or any part of it.
>
> ======================================================================
> ========
>
>

"EMF <kochind.com>" made the following annotations.
------------------------------------------------------------------------------
The information in this e-mail and any attachments is confidential and intended solely for the attention and use of the named addressee(s). It must not be disclosed to any person without proper authority. If you are not the intended recipient, or a person responsible for delivering it to the intended recipient, you are not authorized to and must not disclose, copy, distribute, or retain this message or any part of it.

```