> > Regarding the upwardly compatible comment, the dollar drawdown that > corresponds to the maximum fractional drawdown is not necessarily the > maximum dollar drawdown. > > For example, in this situation the maximum fractional drawdown > is from 100 to 75 but the maximum dollar drawdown is from 200 > to 160. > >> x <- c(1, 100, 75, 200, 160) > >
What type of drawdown to work with depends on the context. If working in percent is more appropriate, then you might use maxdrawdown(log(x))$maxdrawdown or if log returns are not appropriate then the following transformation provides the equivalent what was suggested -(exp(-maxdrawdown(log(x))$maxdrawdown)-1) Best regards Adrian >> maximumdrawdown(x) # function defined in post > > $maximumdrawdown > [1] 0.25 > > $maxdrawdown > [1] 25 > > $from > [1] 2 > > $to > [1] 3 > >> maxdrawdown(x) # function from tseries > > $maxdrawdown > [1] 40 > > $from > [1] 4 > > $to > [1] 5 > > On 5/17/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >> 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)) >> } >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel