Provide major takeaways from Chapter 1 in 50 words # Reproducible Finance is a philosiphy about how to do quantitative, data science driven financial analysis. Data visualization translates numbers into shapes and colors so others can derive value from the information. One of R’s most powerful traits is its collection of packages that allows us to use smart R codes.
library(tidyverse)
library(tidyquant)
tq_index_options()
## [1] "DOW" "DOWGLOBAL" "SP400" "SP500" "SP600"
data <- tq_index("SP400")
tq_exchange_options()
## [1] "AMEX" "NASDAQ" "NYSE"
data <- tq_exchange("NYSE")
stock prices from yahoo finance
stock <- tq_get("TSLA")
unemployment_nh <- tq_get("NHUR", get = "economic.data")
unemployment_nh
## # A tibble: 128 × 3
## symbol date price
## <chr> <date> <dbl>
## 1 NHUR 2015-01-01 3.8
## 2 NHUR 2015-02-01 3.8
## 3 NHUR 2015-03-01 3.7
## 4 NHUR 2015-04-01 3.6
## 5 NHUR 2015-05-01 3.5
## 6 NHUR 2015-06-01 3.4
## 7 NHUR 2015-07-01 3.3
## 8 NHUR 2015-08-01 3.3
## 9 NHUR 2015-09-01 3.2
## 10 NHUR 2015-10-01 3.1
## # ℹ 118 more rows
NVDA <- tq_get("NVDA")
NVDA %>%
ggplot(aes(x = date, y = close)) +
geom_line() +
labs(title = "NVDA Line Chart", y = "Closing Price", x = "") +
theme_tq()
NVDA %>%
ggplot(aes(x = date, y = close)) +
geom_barchart(aes(open = open, high = high, low = low, close = close)) +
labs(title = "NVDA Bar Chart", y = "Closing Price", x = "") +
theme_tq()
NVDA %>%
tail(30) %>%
ggplot(aes(x = date, y = close)) +
geom_candlestick(aes(open = open, high = high, low = low, close = close)) +
labs(title = "NVDA Candlestick Chart", y = "Closing Price", x = "") +
theme_tq()
Ra <- c("MSFT", "AMZN", "NVDA") %>%
tq_get(get = "stock.price",
from = "2022-01-01") %>%
group_by(symbol) %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "monthly",
col_rename = "Ra")
Ra
## # A tibble: 135 × 3
## # Groups: symbol [3]
## symbol date Ra
## <chr> <date> <dbl>
## 1 MSFT 2022-01-31 -0.0710
## 2 MSFT 2022-02-28 -0.0372
## 3 MSFT 2022-03-31 0.0319
## 4 MSFT 2022-04-29 -0.0999
## 5 MSFT 2022-05-31 -0.0181
## 6 MSFT 2022-06-30 -0.0553
## 7 MSFT 2022-07-29 0.0931
## 8 MSFT 2022-08-31 -0.0667
## 9 MSFT 2022-09-30 -0.109
## 10 MSFT 2022-10-31 -0.00331
## # ℹ 125 more rows
Rb <- ("^IXIC") %>%
tq_get(get = "stock.price",
from = "2022-01-01") %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "monthly",
col_rename = "Rb")
Rb
## # A tibble: 45 × 2
## date Rb
## <date> <dbl>
## 1 2022-01-31 -0.101
## 2 2022-02-28 -0.0343
## 3 2022-03-31 0.0341
## 4 2022-04-29 -0.133
## 5 2022-05-31 -0.0205
## 6 2022-06-30 -0.0871
## 7 2022-07-29 0.123
## 8 2022-08-31 -0.0464
## 9 2022-09-30 -0.105
## 10 2022-10-31 0.0390
## # ℹ 35 more rows
RaRb <- left_join(Ra, Rb, by = c("date" = "date"))
RaRb
## # A tibble: 135 × 4
## # Groups: symbol [3]
## symbol date Ra Rb
## <chr> <date> <dbl> <dbl>
## 1 MSFT 2022-01-31 -0.0710 -0.101
## 2 MSFT 2022-02-28 -0.0372 -0.0343
## 3 MSFT 2022-03-31 0.0319 0.0341
## 4 MSFT 2022-04-29 -0.0999 -0.133
## 5 MSFT 2022-05-31 -0.0181 -0.0205
## 6 MSFT 2022-06-30 -0.0553 -0.0871
## 7 MSFT 2022-07-29 0.0931 0.123
## 8 MSFT 2022-08-31 -0.0667 -0.0464
## 9 MSFT 2022-09-30 -0.109 -0.105
## 10 MSFT 2022-10-31 -0.00331 0.0390
## # ℹ 125 more rows
RaRb_capm <- RaRb %>%
group_by(symbol) %>%
tq_performance(Ra = Ra,
Rb = Rb,
performance_fun = table.CAPM)
RaRb_capm
## # A tibble: 3 × 18
## # Groups: symbol [3]
## symbol ActivePremium Alpha AlphaRobust AnnualizedAlpha Beta `Beta-`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 MSFT 0.0328 0.004 0.0027 0.0492 0.871 0.635
## 2 AMZN -0.0148 -0.0018 0.0016 -0.0216 1.36 1.50
## 3 NVDA 0.504 0.031 0.0281 0.442 2.12 2.87
## # ℹ 11 more variables: `Beta-Robust` <dbl>, `Beta+` <dbl>, `Beta+Robust` <dbl>,
## # BetaRobust <dbl>, Correlation <dbl>, `Correlationp-value` <dbl>,
## # InformationRatio <dbl>, `R-squared` <dbl>, `R-squaredRobust` <dbl>,
## # TrackingError <dbl>, TreynorRatio <dbl>
RaRb_skewness <- RaRb %>%
tq_performance(Ra = Ra,
performance_fun = skewness)
RaRb_skewness
## # A tibble: 3 × 2
## # Groups: symbol [3]
## symbol skewness.1
## <chr> <dbl>
## 1 MSFT 0.275
## 2 AMZN 0.133
## 3 NVDA -0.118