rollapply and cummin
Using gsubfn its also possible to write it in a way which allows the function body to be specified as a formula for compactness. Note the fn$ prefix: library(gsubfn) fn$rollapply(z, 5, ~ min(cumsum(x)), align = "left") More at http://gsubfn.googlecode.com
On 8/23/07, Voss, Kent <VOSSK at kochind.com> wrote:
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 Koch Quantitative Trading 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 try the latest version of rollapply which was fixed about 2 weeks ago 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. ==============================================================================