# Shows step by step how to plot drawdowns in R using ggplot2.
if(!require(tbl2xts)) install.packages("tbl2xts")
if(!require(tidyverse)) install.packages("tidyverse")
library(tbl2xts)
library(tidyverse)
library(PerformanceAnalytics)
# Now use TRI data:
data(TRI)
# Direct way:
TRI %>%
group_by(Country) %>%
mutate(Return = TRI/lag(TRI)-1, Return = coalesce(Return, 0)) %>%
filter(Date > first(Date)) %>%
mutate(Cumret = cumprod(1 + Return)) %>%
mutate(cum.max = cummax(Cumret), DD = Cumret/cum.max) %>%
ungroup() %>%
ggplot() +
geom_line(aes(Date, DD, color = Country)) +
theme_bw() + labs("DrawDowns")
# Performance Analytic way:
TRI %>%
group_by(Country) %>%
mutate(Return = TRI/lag(TRI)-1, Return = coalesce(Return, 0)) %>%
filter(Date > first(Date)) %>%
tbl_xts(cols_to_xts = "Return", spread_by = "Country") %>% chart.Drawdown(., geometric = TRUE)