Discussion:

ARK ETF and its manager, Kathy Woods, are a favorite among the Wall Street Bets meme stock crowd. But how does the ETF perform against another often bet against index, SPY?

Below we see static and interactive charts comparing mean adjusted returns since about 2014 for SPY and a collection of ARK funds.

ARK1 <- ARK_prices_tbl %>%
  filter(date >= ymd("2014-10-31")) %>%
  group_by(ticker) %>%
  ggplot(aes(x = date, y = adjusted, color = fct_reorder2(.f = ticker, 
                                                           .x = date, .y = adjusted))) +
  geom_line() +
  labs(color = "")+
  theme_clean()
ggplotly(ARK1)

Changing to quarterly returns give us a better picture of how the stocks performed. We see that the ARK basket is prone to wild swings in returns, whereas SPY trades in a tighter band. SPY saw comparable dips to ARK in 2020 and did not achieve anywhere near the returns during the 2020-2021 period that ARK’s did. Following the end of 2021 into 2022, however, we see that SPY’s losses were much less than ARK’s over that same period.

ARK_SPY_return_chart <- ARK1_quarterly_returns %>%
  filter(date >= ymd("2014-10-31")) %>%
  group_by(ticker) %>%
  ggplot(aes(x = date, y = quarterly.returns, color = fct_reorder2(.f = ticker, 
                                                           .x = date, .y = quarterly.returns))) +
  geom_line() +
  labs(color = "") +
  theme_clean()

ARK_SPY_return_chart

This density graph shows SPY against ARK’s most popular index, ARKK. We see that SPY’s returns are much tighter, suggesting less variability, whereas ARKK’s are much wider. This suggests greater variance in ARKK’s returns, meaning SPY is much more consistent.

ARK1_quarterly_returns %>%
  filter(ticker == "SPY" | ticker == "ARKK") %>%
  ggplot(aes(x=quarterly.returns, fill= ticker)) +
  geom_density(alpha = 0.3) + 
  theme_clean()

The below graph plots ARKK and SPY from 2015-2022 to give a better look at this variability in action.

ARK_SPY_trend <- ARK1_quarterly_returns %>%
  filter(date >= ymd("2014-10-31")) %>%
  filter(ticker == "SPY" | ticker == "ARKK") %>%
  ggplot(aes(x = date, y = quarterly.returns, color = fct_reorder2(.f = ticker, 
                                                           .x = date, .y = quarterly.returns))) +
  geom_line() +
  labs(color = "") + 
  theme_clean()
ggplotly(ARK_SPY_trend)
ARK1_quarterly_returns %>%
  filter(ticker == "SPY" | ticker == "ARKK") %>%
  ggplot(aes(x=date,y=quarterly.returns,fill=ticker))+
  geom_boxplot(alpha=0.3) + 
  theme_clean()

DOW_breakdown <- tq_index("DOW") %>% 
  select(symbol, company, weight, sector)
## Getting holdings for DOW
DOW_breakdown
## # A tibble: 30 × 4
##    symbol company                         weight sector                
##    <chr>  <chr>                            <dbl> <chr>                 
##  1 UNH    UnitedHealth Group Incorporated 0.113  Health Care           
##  2 GS     Goldman Sachs Group Inc.        0.0678 Financials            
##  3 HD     Home Depot Inc.                 0.0637 Consumer Discretionary
##  4 MCD    McDonald's Corporation          0.0530 Consumer Discretionary
##  5 AMGN   Amgen Inc.                      0.0524 Health Care           
##  6 MSFT   Microsoft Corporation           0.0517 Information Technology
##  7 V      Visa Inc. Class A               0.0411 Information Technology
##  8 CAT    Caterpillar Inc.                0.0403 Industrials           
##  9 HON    Honeywell International Inc.    0.0388 Industrials           
## 10 JNJ    Johnson & Johnson               0.0362 Health Care           
## # … with 20 more rows

This is a tree map I made for DOW just to see how it works.

DOW_breakdown %>%
  ggplot(aes(area = weight, fill = fct_reorder(sector, weight, .fun = sum,.desc = TRUE),label = symbol, subgroup = sector))+
  geom_treemap(alpha = 0.5, start = "topleft")+
  geom_treemap_text(start = "topleft", size = 12)+
  scale_fill_viridis_d(name = "Sector")