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)

> 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

Reply via email to