returns
objects.R/apply_market_model.R
apply_market_model.Rd
The function applies a given market model to securities' rates of returns and
returns a list of returns
objects for each security, which can be
passed directly to a whole battery of tests.
apply_market_model( rates, regressors, same_regressor_for_all = TRUE, market_model = c("mean_adj", "mrkt_adj", "sim"), estimation_method = c("ols"), estimation_start, estimation_end )
rates | an object of |
---|---|
regressors | an object of the same class as |
same_regressor_for_all | logical. Should the same regressor be used for each security? The default value is TRUE. |
market_model | a character indicating the market model among
|
estimation_method | a character specifying an estimation method for
|
estimation_start | an object of |
estimation_end | an object of |
A list of returns
objects.
The generic function is dispatched for such classes as list
,
data.frame
, and zoo
. If same_regressor_for_all
is TRUE,
and regressors
has the length greater than one, the first element of
regressors
will be applied for each security in rates
.
Brown S.J., Warner J.B. Using Daily Stock Returns, The Case of Event Studies. Journal of Financial Economics, 14:3-31, 1985.
## 1. Mean-adjusted-returns model if (FALSE) { library("magrittr") tickers <- c("AMZN", "ZM", "UBER", "NFLX", "SHOP", "FB", "UPWK") securities_returns <- get_prices_from_tickers(tickers, start = as.Date("2019-04-01"), end = as.Date("2020-04-01"), quote = "Close", retclass = "zoo") %>% get_rates_from_prices(quote = "Close", multi_day = TRUE, compounding = "continuous") %>% apply_market_model(market_model = "mean_adj", estimation_start = as.Date("2019-04-01"), estimation_end = as.Date("2020-03-13")) } ## The result of the code above is equivalent to: data(rates) securities_returns <- apply_market_model( rates, market_model = "mean_adj", estimation_start = as.Date("2019-04-01"), estimation_end = as.Date("2020-03-13") ) ## 2. Market-adjusted-returns model if (FALSE) { library("magrittr") rates_indx <- get_prices_from_tickers("^GSPC", start = as.Date("2019-04-01"), end = as.Date("2020-04-01"), quote = "Close", retclass = "zoo") %>% get_rates_from_prices(quote = "Close", multi_day = TRUE, compounding = "continuous") tickers <- c("AMZN", "ZM", "UBER", "NFLX", "SHOP", "FB", "UPWK") securities_returns <- get_prices_from_tickers(tickers, start = as.Date("2019-04-01"), end = as.Date("2020-04-01"), quote = "Close", retclass = "zoo") %>% get_rates_from_prices(quote = "Close", multi_day = TRUE, compounding = "continuous") %>% apply_market_model(regressor = rates_indx, same_regressor_for_all = TRUE, market_model = "mrkt_adj", estimation_start = as.Date("2019-04-01"), estimation_end = as.Date("2020-03-13")) } ## The result of the code above is equivalent to: data(rates, rates_indx) securities_returns <- apply_market_model( rates = rates, regressor = rates_indx, same_regressor_for_all = TRUE, market_model = "mrkt_adj", estimation_start = as.Date("2019-04-01"), estimation_end = as.Date("2020-03-13") ) ## 3. Single-index market model if (FALSE) { library("magrittr") rates_indx <- get_prices_from_tickers("^GSPC", start = as.Date("2019-04-01"), end = as.Date("2020-04-01"), quote = "Close", retclass = "zoo") %>% get_rates_from_prices(quote = "Close", multi_day = TRUE, compounding = "continuous") tickers <- c("AMZN", "ZM", "UBER", "NFLX", "SHOP", "FB", "UPWK") securities_returns <- get_prices_from_tickers(tickers, start = as.Date("2019-04-01"), end = as.Date("2020-04-01"), quote = "Close", retclass = "zoo") %>% get_rates_from_prices(quote = "Close", multi_day = TRUE, compounding = "continuous") %>% apply_market_model(regressor = rates_indx, same_regressor_for_all = TRUE, market_model = "sim", estimation_method = "ols", estimation_start = as.Date("2019-04-01"), estimation_end = as.Date("2020-03-13")) } ## The result of the code above is equivalent to: data(rates, rates_indx) securities_returns <- apply_market_model( rates = rates, regressor = rates_indx, same_regressor_for_all = TRUE, market_model = "sim", estimation_method = "ols", estimation_start = as.Date("2019-04-01"), estimation_end = as.Date("2020-03-13") )