Expected Return Models
Expected return models estimate what a stock's return would have been without the event. The EventStudy R package provides 15 models — from the Market Model to Fama-French, GARCH, and DCC-GARCH — to calculate the benchmark against which abnormal returns are measured.
Part of the Methodology Guide
This page is part of the Event Study Methodology Guide.
The expected return model determines how "normal" returns are estimated during the estimation window. Abnormal returns are the difference between actual and expected returns. The EventStudy R package provides 15 models, from simple benchmarks to multi-factor, volatility, and time-varying parameter models.
Choosing the right expected return model is critical for isolating event effects. Research by Campbell, Lo, and MacKinlay (1997) shows that for short-window event studies of 3 to 11 days, the Market Model and multi-factor models produce similar results in over 90% of cases. The choice of model matters most for long-horizon studies and for small-cap or high-beta stocks where factor exposures diverge substantially from the market average.
Which Expected Return Models Are Available?
An expected return model is a statistical specification that estimates what a stock's return would have been in the absence of the event, using data from a pre-event estimation window. The difference between the actual return and this model-predicted benchmark constitutes the abnormal return. The choice of model directly affects the precision of abnormal return estimates: according to Campbell, Lo, and MacKinlay (1997), the Market Model typically explains 20% to 40% of the variance in individual stock returns, and models with additional risk factors can improve this to 30% to 50%.
- Market Model
- A single-factor OLS regression of stock returns on market index returns, producing firm-specific alpha and beta estimates. Used in approximately 75% of published event studies.
- Factor Model
- A multi-factor extension (e.g., Fama-French 3-Factor or 5-Factor) that controls for additional systematic risk exposures such as size, value, profitability, and investment patterns.
- GARCH Model
- A volatility model that allows the variance of returns to change over time, capturing volatility clustering commonly observed around corporate announcements and macroeconomic events.
| Model | R Class | Factors | Best For |
|---|---|---|---|
| Market Model | MarketModel | Market | General purpose (default) |
| Market Adjusted | MarketAdjustedModel | Market | Limited data, quick analysis |
| Mean Adjusted | ComparisonPeriodMeanAdjustedModel | None | No market index available |
| Fama-French 3-Factor | FamaFrench3FactorModel | Mkt + SMB + HML | Size/value effects |
| Fama-French 5-Factor | FamaFrench5FactorModel | Mkt + SMB + HML + RMW + CMA | Comprehensive risk adjustment |
| Carhart 4-Factor | Carhart4FactorModel | FF3 + Momentum | Momentum-driven events |
| GARCH(1,1) | GARCHModel | Market + GARCH | Volatility clustering |
| BHAR | BHARModel | Market | Long-horizon studies |
| Volume Model | VolumeModel | Market | Abnormal trading volume |
| Volatility Model | VolatilityModel | Market | Abnormal return variance |
| Rolling Window | RollingWindowModel | Market | Time-varying parameters |
| DCC-GARCH | DCCGARCHModel | Market + DCC | Time-varying beta & correlation |
| Linear Factor | LinearFactorModel | Custom | Custom factor specifications |
| Custom Model | CustomModel | User-defined | Full flexibility |
Which Model Should I Choose?
Use the following decision tree:
- No market index data? → Mean Adjusted Model
- Need factor risk adjustment?
- Size + Value → Fama-French 3-Factor
- + Profitability + Investment → Fama-French 5-Factor
- + Momentum → Carhart 4-Factor
- Volatility clustering?
- Constant correlation → GARCH Model
- Time-varying correlation → DCC-GARCH Model
- Parameters unstable over time? → Rolling Window Model
- Long horizon (> 12 months)? → BHAR Model
- Studying volume or volatility? → Volume Model or Volatility Model
- Standard short-window study? → Market Model
Default recommendation
The Market Model is the standard choice in event study literature. Start here unless you have a specific reason to use a different model. Run diagnostics to check if the fit is adequate.
How Do I Configure Models in R?
All models are passed via the ParameterSet:
# Default: Market Model
ps <- ParameterSet$new(return_model = MarketModel$new())
task <- EventStudyTask$new(firm_data, index_data, request)
task <- run_event_study(task, ps)
# Model fit statistics
model_diagnostics(task)Switching models is a one-line change:
# Use a different model
ps <- ParameterSet$new(return_model = MarketAdjustedModel$new())
ps <- ParameterSet$new(return_model = ComparisonPeriodMeanAdjustedModel$new())
ps <- ParameterSet$new(return_model = GARCHModel$new())Statistical Models
Market Model
The most widely used model in event studies, employed in approximately 75% of published short-window studies since the 1990s. It estimates a linear relationship between stock and market returns during the estimation window, typically using 120 to 250 trading days of pre-event data.
- : stock return unexplained by the market (intercept)
- : sensitivity to market movements (slope)
- : firm-specific residual
Abnormal return:
| Pros | Cons |
|---|---|
| Simple, well-understood | Assumes constant alpha, beta |
| Few data requirements | Ignores size, value, momentum factors |
| Standard in the literature | Sensitive to estimation window choice |
Market Adjusted Model
Assumes the stock's expected return equals the market return — no estimation window regression needed.
| Pros | Cons |
|---|---|
| No estimation window required | Ignores firm-specific risk exposure |
| Works with limited data | Less accurate for high-beta stocks |
Comparison Period Mean Adjusted Model
Uses the stock's own average return during the estimation window as the expected return. No market index needed.
where is the mean return during the estimation window.
| Pros | Cons |
|---|---|
| No market data needed | Ignores market-wide movements |
| Simple to compute | Biased if market trends during event window |
Market Model with Scholes-Williams Beta
Adjusts for non-synchronous trading (thin trading, different market hours) by estimating beta using lagged market returns.
| Pros | Cons |
|---|---|
| Corrects for thin trading bias | More complex estimation |
| Better for illiquid stocks | Requires lagged returns |
GARCH(1,1) Model
Models time-varying volatility. Useful when return variance is not constant — common around earnings announcements, crises, and macro events.
| Pros | Cons |
|---|---|
| Captures volatility clustering | Requires longer estimation window |
| Better standard errors | Slower to estimate |
| More realistic for crisis events | May not converge for all stocks |
ps <- ParameterSet$new(return_model = GARCHModel$new())Economic Models
Fama-French 3-Factor Model
Extends the Market Model with size (SMB) and value (HML) factors, as introduced by Fama and French (1993). Controls for the tendency of small-cap and value stocks to earn higher returns. The 3-factor model typically achieves an R-squared of 30% to 50% for individual stocks, compared to 20% to 40% for the single-factor Market Model.
| Pros | Cons |
|---|---|
| Controls for size and value effects | Requires factor data (e.g., from Kenneth French's website) |
| More precise abnormal returns | More complex to set up |
ps <- ParameterSet$new(return_model = FamaFrench3FactorModel$new())
task <- EventStudyTask$new(firm_data, index_data, request, factor_tbl = ff3_data)Carhart 4-Factor Model
Adds a momentum factor (WML — Winners Minus Losers) to the Fama-French 3-Factor Model. Controls for the tendency of recent winners to continue outperforming.
ps <- ParameterSet$new(return_model = Carhart4FactorModel$new())Fama-French 5-Factor Model
Adds profitability (RMW — Robust Minus Weak) and investment (CMA — Conservative Minus Aggressive) to the 3-Factor Model.
The most comprehensive risk adjustment available. Use when you want to rule out that abnormal returns are compensation for known risk factors.
ps <- ParameterSet$new(return_model = FamaFrench5FactorModel$new())Special-Purpose Models
BHAR (Buy-and-Hold Abnormal Returns)
For long-horizon event studies (months to years). Computes the difference between compounded stock returns and compounded benchmark returns.
| Pros | Cons |
|---|---|
| Appropriate for long horizons | Not suitable for short windows |
| Captures compounding effects | Sensitive to rebalancing frequency |
ps <- ParameterSet$new(return_model = BHARModel$new())Volume Model
Measures abnormal trading volume instead of abnormal price returns. Useful for studying information arrival, liquidity events, or market attention.
ps <- ParameterSet$new(
return_model = VolumeModel$new(),
study_type = "volume"
)Volatility Model
Measures abnormal return volatility. Useful for studying uncertainty around events — does the event increase or decrease return variance?
ps <- ParameterSet$new(
return_model = VolatilityModel$new(),
study_type = "volatility"
)Time-Varying Parameter Models
Rolling Window Model
Allows market model parameters (, ) to vary over time by re-estimating on a rolling window. Captures structural breaks and gradual parameter shifts that the standard Market Model misses.
where and are estimated using observations in window with configurable window size .
ps <- ParameterSet$new(return_model = RollingWindowModel$new(window_size = 60))| Pros | Cons |
|---|---|
| Captures time-varying risk exposure | Requires longer estimation period |
| No distributional assumptions on parameters | Noisier estimates with small windows |
| Simple to implement and interpret | Sensitive to window size choice |
Window size
A window of 60 trading days (~3 months) balances responsiveness and stability. Shorter windows capture faster changes but produce noisier estimates.
DCC-GARCH Model
Models both time-varying volatility and time-varying correlation between stock and market returns using the Dynamic Conditional Correlation framework of Engle (2002). The beta is re-estimated at each time step based on the conditional covariance matrix.
where is the conditional covariance from a DCC-GARCH(1,1) model and is the conditional market variance.
ps <- ParameterSet$new(return_model = DCCGARCHModel$new())| Pros | Cons |
|---|---|
| Captures time-varying beta and correlation | Computationally intensive |
| Theoretically grounded (Engle 2002) | Requires rmgarch package |
| More realistic for crisis and structural break periods | May not converge for all stock-market pairs |
When to use DCC-GARCH
Use when you suspect both volatility and the stock-market relationship change over time — common around financial crises, regime changes, or for stocks undergoing fundamental business model shifts.
Custom Models
Linear Factor Model / Custom Model
For custom specifications. LinearFactorModel lets you define arbitrary factors; CustomModel gives full control over the estimation procedure.
# Custom factor model
ps <- ParameterSet$new(return_model = LinearFactorModel$new())
task <- EventStudyTask$new(firm_data, index_data, request, factor_tbl = my_factors)Literature
- Campbell, J.Y., Lo, A.W. & MacKinlay, A.C. (1997). The Econometrics of Financial Markets.
- Kolari, J.W. & Pynnonen, S. (2010). Event Studies for Financial Research.
- Wooldridge, J.M. (2019). Econometrics.
Implement this with the R package
Access advanced features and full customization through the EventStudy R package.
What Should I Read Next?
- Return Calculation — simple vs. log returns
- Test Statistics — choose the right significance test
- Diagnostics & Export — validate model fit and export results