# Load Packages
library(tidyquant)
library(tidyverse)
1 Get Stock Prices And Convert To Returns
Ra <- c("UAL", "AAL", "LUV") %>%
tq_get(get = "stock.prices",
from = "2024-01-01") %>%
group_by(symbol) %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "monthly",
col_rename = "Ra")
Ra
## # A tibble: 51 × 3
## # Groups: symbol [3]
## symbol date Ra
## <chr> <date> <dbl>
## 1 UAL 2024-01-31 0.0162
## 2 UAL 2024-02-29 0.0993
## 3 UAL 2024-03-28 0.0525
## 4 UAL 2024-04-30 0.0748
## 5 UAL 2024-05-31 0.0297
## 6 UAL 2024-06-28 -0.0817
## 7 UAL 2024-07-31 -0.0666
## 8 UAL 2024-08-30 -0.0304
## 9 UAL 2024-09-30 0.296
## 10 UAL 2024-10-31 0.372
## # ℹ 41 more rows
2 Get baseline and convert to returns
Rb <- "^IXIC" %>%
tq_get(get = "stock.prices",
from = "2024-01-01") %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "monthly",
col_rename = "Rb")
Rb
## # A tibble: 17 × 2
## date Rb
## <date> <dbl>
## 1 2024-01-31 0.0270
## 2 2024-02-29 0.0612
## 3 2024-03-28 0.0179
## 4 2024-04-30 -0.0441
## 5 2024-05-31 0.0688
## 6 2024-06-28 0.0596
## 7 2024-07-31 -0.00751
## 8 2024-08-30 0.00649
## 9 2024-09-30 0.0268
## 10 2024-10-31 -0.00517
## 11 2024-11-29 0.0621
## 12 2024-12-31 0.00482
## 13 2025-01-31 0.0164
## 14 2025-02-28 -0.0397
## 15 2025-03-31 -0.0821
## 16 2025-04-30 0.00850
## 17 2025-05-23 0.0740
3 Join the two tables
RaRb <- left_join(Ra, Rb, by = c("date" = "date"))
RaRb
## # A tibble: 51 × 4
## # Groups: symbol [3]
## symbol date Ra Rb
## <chr> <date> <dbl> <dbl>
## 1 UAL 2024-01-31 0.0162 0.0270
## 2 UAL 2024-02-29 0.0993 0.0612
## 3 UAL 2024-03-28 0.0525 0.0179
## 4 UAL 2024-04-30 0.0748 -0.0441
## 5 UAL 2024-05-31 0.0297 0.0688
## 6 UAL 2024-06-28 -0.0817 0.0596
## 7 UAL 2024-07-31 -0.0666 -0.00751
## 8 UAL 2024-08-30 -0.0304 0.00649
## 9 UAL 2024-09-30 0.296 0.0268
## 10 UAL 2024-10-31 0.372 -0.00517
## # ℹ 41 more rows
4 Calculate CAPM
RaRb_capm <- RaRb %>%
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 UAL 0.351 0.0246 -0.0111 0.339 1.48 5.43
## 2 AAL -0.304 -0.0257 -0.0501 -0.268 1.52 4.55
## 3 LUV -0.101 0.0009 0.0023 0.0112 0.648 -0.970
## # ℹ 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>
United Airlines
Which Stock Has A Positively Skewed Distribution Of Returns?
RaRb_skew <- RaRb %>%
tq_performance(Ra = Ra,
performance_fun = skewness)
RaRb_skew
## # A tibble: 3 × 2
## # Groups: symbol [3]
## symbol skewness.1
## <chr> <dbl>
## 1 UAL 0.334
## 2 AAL -0.197
## 3 LUV -0.667
United Airlines