Event Study
Perform a market-model event study around a single event date, following the methodology in MacKinlay, A.C. (1997), “Event Studies in Economics and Finance,” Journal of Economic Literature, 35(1), 13-39 – the canonical reference and still the dominant approach used to measure the stock-price impact of corporate events (earnings announcements, M&A deals, index additions/deletions, dividend changes, regulatory actions, etc.).
A market model (Return_t = alpha + beta * Benchmark_Return_t + e_t) is fit via OLS over a clean “estimation window” ending gap_days before the event, then the Abnormal Return on each day of the “event window” around the event is the actual return minus the market-model-predicted expected return. These are cumulated into the Cumulative Abnormal Return (CAR) – the stock-price impact attributable to the event, after stripping out what would have been expected from general market movements alone – along with a t-test of whether CAR is significantly different from zero.
Also known as: CAR analysis, abnormal returns analysis, market model event study.
Event Study in Python
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_event_study as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.econometrics.get_event_study(event_date="2023-05-04")
Which returns:
| Value | |
|---|---|
| Cumulative Abnormal Return | 0.0181 |
| CAR t-statistic | 0.3693 |
| CAR p-value | 0.7122 |
| Alpha | 0.0005 |
| Beta | 1.294 |
| Estimation Window Observations | 250 |
Parameters
The function accepts the following parameters:
- event_date (str): The date of the event (e.g. “2023-05-04”). Must fall within the Toolkit instance’s daily historical data.
- dependent_ticker (str | None, optional): The ticker being studied. Defaults to the first ticker in the Toolkit instance.
- column (str, optional): The historical data column to use. Defaults to “Return”.
- estimation_window (int, optional): Number of trading days used to estimate the market model. Defaults to 250 (~one trading year).
- gap_days (int, optional): Number of trading days between the end of the estimation window and the event date. Defaults to 30.
- pre_event_days (int, optional): Number of trading days before the event date included in the event window. Defaults to 10.
- post_event_days (int, optional): Number of trading days after the event date included in the event window. Defaults to 10.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.