mergeron.core.empirical_margin_distribution¶
Functions to parse margin data compiled by Prof. Aswath Damodaran, Stern School of Business, NYU.
Provides margin_data_resampler() for generating margin data
from an estimated Gaussian KDE from the source (margin) data.
Data are downloaded or reused from a local copy, on demand.
For terms of use of Prof. Damodaran’s data, please see: https://pages.stern.nyu.edu/~adamodar/New_Home_Page/datahistory.html
Notes
Prof. Damodaran notes that the data construction may not be consistent from iteration to iteration. He also notes that, “the best use for my data is in real time corporate financial analysis and valuation.” Here, gross margin data compiled by Prof. Damodaran are optionally used to model the distribution of price-cost margin across firms that antitrust enforcement agencies are likely to review in merger enforcement investigations over a multi-year span. The implicit assumption is that refinements in source-data construction from iteration to iteration do not result in inconsistent estimates of the empirical distribution of margins estimated using a Gaussian kernel density estimator (KDE).
Second, other procedures included in this package allow the researcher to generate margins for a single firm and impute margins of other firms in a model relevant antitrust market based on FOCs for profit maximization by firms facing MNL demand. In that exercise, the distribution of inferred margins does not follow the empirical distribution estimated from the source data, due to restrictions resulting from the distribution of generated market shares across firms and the feasibility condition that price-cost margins fall in the interval \([0, 1]\).
Module Contents¶
- mergeron.core.empirical_margin_distribution.WORK_DIR[source]¶
Redefined, in case the user defines WORK_DIR between module imports.
- type mergeron.core.empirical_margin_distribution.DamodaranMarginData = MappingProxyType[str, MappingProxyType[str, MappingProxyType[str, float | int]]][source]¶
-
mergeron.core.empirical_margin_distribution.margin_data_resampler(_dist_parms, /, *, sample_size, seed_sequence=
None, nthreads=NTHREADS)[source]¶ Generate draws from the empirical distribution based on Prof. Damodaran’s margin data.
The empirical distribution is estimated using a Gaussian KDE; the bandwidth selected using Silverman’s rule is narrowed to reflect that the margin data are multimodal. Margins for firms in finance, investment, insurance, reinsurance, and REITs are excluded from the sample used to estimate the empirical distribution.
- Parameters:¶
- _dist_parms : mergeron.ArrayDouble¶
Array of margins and firm counts extracted from Prof. Damodaran’s margin data
- sample_size : int | tuple[int, Ellipsis]¶
Number of draws; if tuple, (number of draws, number of columns)
- seed_sequence : numpy.random.SeedSequence | None¶
SeedSequence for seeding random-number generator when results are to be repeatable
- nthreads : int¶
Number of threads to use in generating margin data.
- Returns:¶
Array of margin values
- Return type:¶
mergeron.ArrayDouble
-
mergeron.core.empirical_margin_distribution.margin_data_builder(_margin_data_dict=
None)[source]¶ Derive average firm-counts and gross-margins by industry from source data.
-
mergeron.core.empirical_margin_distribution.margin_data_getter(*, data_archive_path=
None, data_download_flag=False)[source]¶ Download and parse Prof.Damodaran’s margin data.