[Rd] Convention difference in tseries.maxdrawdown (PR#8872)

rproject at boonstra.org rproject at boonstra.org
Wed May 17 22:37:30 CEST 2006

Full_Name: Brian K. Boonstra
Version: 2.2.1
Submission from: (NULL) (

The maxdrawdown function in tseries defines the maximum drawdown in terms of
absolute dollars (or whatever units the input is in).  Industry convention is to
do this in percentage terms.  I have written the code below as
maximumdrawdown(), which retains backward compatibility with the current
version.  It has the flaw that it does not check for zero or negative values.

maximumdrawdown <- function (x) 
    if (NCOL(x) > 1) 
        stop("x is not a vector or univariate time series")
    if (any(is.na(x))) 
        stop("NAs in x")
    cminx <- x/cummax(x)
    mdd <- min(cminx)
    to <- which(mdd == cminx)
    from <- double(NROW(to))
    for (i in 1:NROW(to)) {
      from[i] <- max( which(cminx[1:to[i]] == 1) )
    return(list(maximumdrawdown = 1-mdd, maxdrawdown = (1-mdd)*x[from], from =
from, to = to))

More information about the R-devel mailing list