knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
Ra <- c("FNV", "WPM", "NEM", "CCJ", "CEG", "BWXT", "NVDA", "TSM", "ASML", "CAT", "ITW", "HON", "PLD", "EQIX", "PSA", "TPL", "XOM", "CVX") %>%
tq_get(get = "stock.prices",
from = "2022-01-01") %>%
group_by(symbol) %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "monthly",
col_rename = "Ra")
Ra
## # A tibble: 1,026 × 3
## # Groups: symbol [18]
## symbol date Ra
## <chr> <date> <dbl>
## 1 FNV 2022-01-31 -0.0280
## 2 FNV 2022-02-28 0.112
## 3 FNV 2022-03-31 0.0865
## 4 FNV 2022-04-29 -0.0524
## 5 FNV 2022-05-31 -0.0602
## 6 FNV 2022-06-30 -0.0716
## 7 FNV 2022-07-29 -0.0274
## 8 FNV 2022-08-31 -0.0608
## 9 FNV 2022-09-30 -0.00338
## 10 FNV 2022-10-31 0.0343
## # ℹ 1,016 more rows
Rb <- c("^IXIC") %>%
tq_get(get = "stock.prices",
from = "2022-01-01") %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "monthly",
col_rename = "Rb")
Rb
## # A tibble: 57 × 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
## # ℹ 47 more rows
RaRb <- left_join(Ra, Rb, by = c("date" = "date"))
RaRb
## # A tibble: 1,026 × 4
## # Groups: symbol [18]
## symbol date Ra Rb
## <chr> <date> <dbl> <dbl>
## 1 FNV 2022-01-31 -0.0280 -0.101
## 2 FNV 2022-02-28 0.112 -0.0343
## 3 FNV 2022-03-31 0.0865 0.0341
## 4 FNV 2022-04-29 -0.0524 -0.133
## 5 FNV 2022-05-31 -0.0602 -0.0205
## 6 FNV 2022-06-30 -0.0716 -0.0871
## 7 FNV 2022-07-29 -0.0274 0.123
## 8 FNV 2022-08-31 -0.0608 -0.0464
## 9 FNV 2022-09-30 -0.00338 -0.105
## 10 FNV 2022-10-31 0.0343 0.0390
## # ℹ 1,016 more rows
RaRb_capm <- RaRb %>%
tq_performance(Ra = Ra,
Rb = Rb,
performance_fun = table.CAPM)
RaRb_capm
## # A tibble: 18 × 18
## # Groups: symbol [18]
## symbol ActivePremium Alpha AlphaRobust AnnualizedAlpha Beta `Beta-`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 FNV 0.047 0.0153 0.0132 0.200 0.112 0.468
## 2 WPM 0.209 0.0262 0.0204 0.364 0.268 0.633
## 3 NEM 0.0769 0.0189 0.0178 0.251 0.220 0.177
## 4 CCJ 0.229 0.0215 0.0179 0.291 1.06 1.03
## 5 CEG 0.358 0.0333 0.026 0.482 0.703 -0.165
## 6 BWXT 0.163 0.0187 0.0159 0.249 0.523 0.406
## 7 NVDA 0.410 0.0248 0.0174 0.341 1.92 2.61
## 8 TSM 0.198 0.0151 0.01 0.197 1.24 1.24
## 9 ASML 0.0661 0.0064 -0.0096 0.0797 1.37 1.16
## 10 CAT 0.240 0.0204 0.0155 0.274 1.03 0.642
## 11 ITW -0.0698 0.0004 -0.0023 0.0051 0.487 0.843
## 12 HON -0.0916 -0.0007 -0.007 -0.0084 0.449 0.239
## 13 PLD -0.127 -0.0064 -0.0019 -0.074 0.824 0.532
## 14 EQIX -0.0504 0.0001 -0.0057 0.001 0.717 0.810
## 15 PSA -0.113 -0.0033 -0.0056 -0.0394 0.542 0.281
## 16 TPL 0.112 0.0263 0.0101 0.366 0.0781 1.80
## 17 XOM 0.148 0.0238 0.0139 0.326 -0.132 0.029
## 18 CVX 0.0569 0.0155 0.0167 0.203 0.107 0.392
## # ℹ 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,
Rb = NULL,
performance_fun = skewness)
RaRb_skewness
## # A tibble: 18 × 2
## # Groups: symbol [18]
## symbol skewness.1
## <chr> <dbl>
## 1 FNV 0.515
## 2 WPM 0.466
## 3 NEM 0.0452
## 4 CCJ 0.431
## 5 CEG 0.563
## 6 BWXT 0.237
## 7 NVDA -0.0392
## 8 TSM 0.353
## 9 ASML 0.410
## 10 CAT 0.255
## 11 ITW 0.432
## 12 HON 0.754
## 13 PLD -0.354
## 14 EQIX 0.358
## 15 PSA 0.347
## 16 TPL 0.868
## 17 XOM 0.583
## 18 CVX 0.0823
The Following Stocks Have Positive Skewness: FNV, WPM, NEM, CCJ, CEG, BWXT, TSM, ASML, CAT, ITW, HON, EQIX, PSA, TPL, XOM, and CVX. This means that those 16 stocks, on average, take on more gains then losses each year.