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.
Share