# Estimate monthly betas using monthly return data
set.seed(1234)
data_monthly <- tibble::tibble(
date = rep(seq.Date(from = as.Date("2020-01-01"),
to = as.Date("2020-12-01"), by = "month"), each = 50),
permno = rep(1:50, times = 12),
ret_excess = rnorm(600, 0, 0.1),
mkt_excess = rnorm(600, 0, 0.1),
smb = rnorm(600, 0, 0.1),
hml = rnorm(600, 0, 0.1),
)
estimate_betas(data_monthly, "ret_excess ~ mkt_excess", months(3))
estimate_betas(data_monthly, "ret_excess ~ mkt_excess + smb + hml", months(6))
data_monthly |>
dplyr::rename(id = permno) |>
estimate_betas("ret_excess ~ mkt_excess", months(3),
data_options = data_options(id = "id"))
# Estimate monthly betas using daily return data and parallelization
data_daily <- tibble::tibble(
date = rep(seq.Date(from = as.Date("2020-01-01"),
to = as.Date("2020-12-31"), by = "day"), each = 50),
permno = rep(1:50, times = 366),
ret_excess = rnorm(18300, 0, 0.02),
mkt_excess = rnorm(18300, 0, 0.02),
smb = rnorm(18300, 0, 0.02),
hml = rnorm(18300, 0, 0.02),
)
data_daily <- data_daily |>
dplyr::mutate(date = lubridate::floor_date(date, "month"))
# Change settings via future::plan(strategy = "multisession", workers = 4)
estimate_betas(data_daily, "ret_excess ~ mkt_excess", lubridate::days(90), use_furrr = TRUE)
Run the code above in your browser using DataLab