From rproject at boonstra.org  Wed May 17 22:37:30 2006
From: rproject at boonstra.org (rproject at boonstra.org)
Date: Wed, 17 May 2006 22:37:30 +0200 (CEST)
Subject: [Rd] Convention difference in tseries.maxdrawdown (PR#8872)
Message-ID: <20060517203730.3158DCD14@slim.kubism.ku.dk>

Full_Name: Brian K. Boonstra
Version: 2.2.1
OS: WinXP, OSX
Submission from: (NULL) (63.172.178.137)


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))
}



[Rd] Convention difference in tseries.maxdrawdown (PR#8872)
rproject at boonstra.org