Nicktz
8/3/2017 - 12:00 PM

Plot Drawdowns using ggplot (exactly similar to PerformanceAnalytics drawdown plot)

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