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