mergeron 2024.739105.2__py3-none-any.whl → 2024.739105.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mergeron might be problematic. Click here for more details.
- mergeron/__init__.py +3 -1
- mergeron/core/guidelines_boundaries.py +21 -10
- mergeron/core/guidelines_boundary_functions.py +5 -5
- mergeron/core/guidelines_boundary_functions_extra.py +3 -3
- mergeron/gen/__init__.py +6 -3
- mergeron/gen/data_generation.py +4 -2
- mergeron/gen/data_generation_functions.py +9 -5
- {mergeron-2024.739105.2.dist-info → mergeron-2024.739105.5.dist-info}/METADATA +9 -9
- {mergeron-2024.739105.2.dist-info → mergeron-2024.739105.5.dist-info}/RECORD +10 -10
- {mergeron-2024.739105.2.dist-info → mergeron-2024.739105.5.dist-info}/WHEEL +0 -0
mergeron/__init__.py
CHANGED
|
@@ -9,7 +9,7 @@ from numpy.typing import NDArray
|
|
|
9
9
|
|
|
10
10
|
_PKG_NAME: str = Path(__file__).parent.stem
|
|
11
11
|
|
|
12
|
-
VERSION = "2024.739105.
|
|
12
|
+
VERSION = "2024.739105.5"
|
|
13
13
|
|
|
14
14
|
__version__ = VERSION
|
|
15
15
|
|
|
@@ -34,6 +34,8 @@ ArrayBoolean: TypeAlias = NDArray[np.bool_]
|
|
|
34
34
|
ArrayDouble: TypeAlias = NDArray[np.double]
|
|
35
35
|
ArrayBIGINT: TypeAlias = NDArray[np.int64]
|
|
36
36
|
|
|
37
|
+
DEFAULT_REC_RATE = 0.85
|
|
38
|
+
|
|
37
39
|
|
|
38
40
|
@enum.unique
|
|
39
41
|
class RECForm(enum.StrEnum):
|
|
@@ -13,7 +13,13 @@ import numpy as np
|
|
|
13
13
|
from attrs import Attribute, field, frozen, validators
|
|
14
14
|
from mpmath import mp, mpf # type: ignore
|
|
15
15
|
|
|
16
|
-
from .. import
|
|
16
|
+
from .. import ( # noqa: TID252
|
|
17
|
+
DEFAULT_REC_RATE,
|
|
18
|
+
VERSION,
|
|
19
|
+
ArrayDouble,
|
|
20
|
+
RECForm,
|
|
21
|
+
UPPAggrSelector,
|
|
22
|
+
)
|
|
17
23
|
from . import guidelines_boundary_functions as gbfn
|
|
18
24
|
|
|
19
25
|
__version__ = VERSION
|
|
@@ -86,7 +92,7 @@ class GuidelinesThresholds:
|
|
|
86
92
|
"""
|
|
87
93
|
|
|
88
94
|
def __attrs_post_init__(self, /) -> None:
|
|
89
|
-
# In the 2023
|
|
95
|
+
# In the 2023 Guidelines, the agencies do not define a
|
|
90
96
|
# negative presumption, or safeharbor. Practically speaking,
|
|
91
97
|
# given resource constraints and loss aversion, it is likely
|
|
92
98
|
# that staff only investigates mergers that meet the presumption;
|
|
@@ -128,7 +134,7 @@ class GuidelinesThresholds:
|
|
|
128
134
|
)
|
|
129
135
|
|
|
130
136
|
# imputed_presumption is relevant for 2010 Guidelines
|
|
131
|
-
# merger to
|
|
137
|
+
# merger to symmetry in numbers-equivalent of post-merger HHI
|
|
132
138
|
object.__setattr__(
|
|
133
139
|
self,
|
|
134
140
|
"imputed_presumption",
|
|
@@ -262,16 +268,13 @@ class DiversionRatioBoundary:
|
|
|
262
268
|
)
|
|
263
269
|
|
|
264
270
|
recapture_rate: float = field(
|
|
265
|
-
kw_only=False, default=
|
|
271
|
+
kw_only=False, default=DEFAULT_REC_RATE, validator=validators.instance_of(float)
|
|
266
272
|
)
|
|
267
273
|
|
|
268
274
|
recapture_form: RECForm | None = field(
|
|
269
275
|
kw_only=True,
|
|
270
276
|
default=RECForm.INOUT,
|
|
271
|
-
validator=(
|
|
272
|
-
validators.instance_of((type(None), RECForm)),
|
|
273
|
-
_rec_spec_validator,
|
|
274
|
-
),
|
|
277
|
+
validator=(validators.instance_of((type(None), RECForm)), _rec_spec_validator),
|
|
275
278
|
)
|
|
276
279
|
"""
|
|
277
280
|
The form of the recapture rate.
|
|
@@ -373,7 +376,11 @@ class DiversionRatioBoundary:
|
|
|
373
376
|
|
|
374
377
|
|
|
375
378
|
def guppi_from_delta(
|
|
376
|
-
_delta_bound: float = 0.01,
|
|
379
|
+
_delta_bound: float = 0.01,
|
|
380
|
+
/,
|
|
381
|
+
*,
|
|
382
|
+
m_star: float = 1.00,
|
|
383
|
+
r_bar: float = DEFAULT_REC_RATE,
|
|
377
384
|
) -> float:
|
|
378
385
|
"""
|
|
379
386
|
Translate ∆HHI bound to GUPPI bound.
|
|
@@ -431,7 +438,11 @@ def critical_share_ratio(
|
|
|
431
438
|
|
|
432
439
|
|
|
433
440
|
def share_from_guppi(
|
|
434
|
-
_guppi_bound: float = 0.065,
|
|
441
|
+
_guppi_bound: float = 0.065,
|
|
442
|
+
/,
|
|
443
|
+
*,
|
|
444
|
+
m_star: float = 1.00,
|
|
445
|
+
r_bar: float = DEFAULT_REC_RATE,
|
|
435
446
|
) -> float:
|
|
436
447
|
"""
|
|
437
448
|
Symmetric-firm share for given GUPPI, margin, and recapture rate.
|
|
@@ -5,7 +5,7 @@ from typing import Any, Literal, TypedDict
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
from mpmath import mp, mpf # type: ignore
|
|
7
7
|
|
|
8
|
-
from .. import VERSION, ArrayBIGINT, ArrayDouble # noqa: TID252
|
|
8
|
+
from .. import DEFAULT_REC_RATE, VERSION, ArrayBIGINT, ArrayDouble # noqa: TID252
|
|
9
9
|
|
|
10
10
|
__version__ = VERSION
|
|
11
11
|
|
|
@@ -211,7 +211,7 @@ def hhi_post_contrib_boundary(
|
|
|
211
211
|
|
|
212
212
|
def shrratio_boundary_wtd_avg(
|
|
213
213
|
_delta_star: float = 0.075,
|
|
214
|
-
_r_val: float =
|
|
214
|
+
_r_val: float = DEFAULT_REC_RATE,
|
|
215
215
|
/,
|
|
216
216
|
*,
|
|
217
217
|
agg_method: Literal[
|
|
@@ -420,7 +420,7 @@ def shrratio_boundary_wtd_avg(
|
|
|
420
420
|
|
|
421
421
|
def shrratio_boundary_xact_avg(
|
|
422
422
|
_delta_star: float = 0.075,
|
|
423
|
-
_r_val: float =
|
|
423
|
+
_r_val: float = DEFAULT_REC_RATE,
|
|
424
424
|
/,
|
|
425
425
|
*,
|
|
426
426
|
recapture_form: Literal["inside-out", "proportional"] = "inside-out",
|
|
@@ -579,7 +579,7 @@ def shrratio_boundary_xact_avg(
|
|
|
579
579
|
|
|
580
580
|
def shrratio_boundary_min(
|
|
581
581
|
_delta_star: float = 0.075,
|
|
582
|
-
_r_val: float =
|
|
582
|
+
_r_val: float = DEFAULT_REC_RATE,
|
|
583
583
|
/,
|
|
584
584
|
*,
|
|
585
585
|
recapture_form: str = "inside-out",
|
|
@@ -645,7 +645,7 @@ def shrratio_boundary_min(
|
|
|
645
645
|
|
|
646
646
|
|
|
647
647
|
def shrratio_boundary_max(
|
|
648
|
-
_delta_star: float = 0.075, _r_val: float =
|
|
648
|
+
_delta_star: float = 0.075, _r_val: float = DEFAULT_REC_RATE, /, *, prec: int = 10
|
|
649
649
|
) -> GuidelinesBoundary:
|
|
650
650
|
"""
|
|
651
651
|
Share combinations on the minimum GUPPI boundary with symmetric
|
|
@@ -16,7 +16,7 @@ from mpmath import mp, mpf # type: ignore
|
|
|
16
16
|
from scipy.spatial.distance import minkowski as distance_function # type: ignore
|
|
17
17
|
from sympy import lambdify, simplify, solve, symbols # type: ignore
|
|
18
18
|
|
|
19
|
-
from .. import VERSION, ArrayDouble # noqa: TID252
|
|
19
|
+
from .. import DEFAULT_REC_RATE, VERSION, ArrayDouble # noqa: TID252
|
|
20
20
|
from .guidelines_boundary_functions import (
|
|
21
21
|
GuidelinesBoundary,
|
|
22
22
|
_shrratio_boundary_intcpt,
|
|
@@ -105,7 +105,7 @@ def hhi_delta_boundary_qdtr(_dh_val: float = 0.01, /) -> GuidelinesBoundaryCalla
|
|
|
105
105
|
|
|
106
106
|
def shrratio_boundary_qdtr_wtd_avg(
|
|
107
107
|
_delta_star: float = 0.075,
|
|
108
|
-
_r_val: float =
|
|
108
|
+
_r_val: float = DEFAULT_REC_RATE,
|
|
109
109
|
/,
|
|
110
110
|
*,
|
|
111
111
|
weighting: Literal["own-share", "cross-product-share"] | None = "own-share",
|
|
@@ -224,7 +224,7 @@ def shrratio_boundary_qdtr_wtd_avg(
|
|
|
224
224
|
|
|
225
225
|
def shrratio_boundary_distance(
|
|
226
226
|
_delta_star: float = 0.075,
|
|
227
|
-
_r_val: float =
|
|
227
|
+
_r_val: float = DEFAULT_REC_RATE,
|
|
228
228
|
/,
|
|
229
229
|
*,
|
|
230
230
|
agg_method: Literal["arithmetic mean", "distance"] = "arithmetic mean",
|
mergeron/gen/__init__.py
CHANGED
|
@@ -15,6 +15,7 @@ from attrs import Attribute, cmp_using, field, frozen, validators
|
|
|
15
15
|
from numpy.random import SeedSequence
|
|
16
16
|
|
|
17
17
|
from .. import ( # noqa: TID252
|
|
18
|
+
DEFAULT_REC_RATE,
|
|
18
19
|
VERSION,
|
|
19
20
|
ArrayBIGINT,
|
|
20
21
|
ArrayBoolean,
|
|
@@ -164,8 +165,8 @@ class ShareSpec:
|
|
|
164
165
|
"generated data. Either delete recapture rate specification or set it to None."
|
|
165
166
|
)
|
|
166
167
|
|
|
167
|
-
recapture_rate: float | None = field(default=
|
|
168
|
-
"""A value between 0 and 1
|
|
168
|
+
recapture_rate: float | None = field(default=DEFAULT_REC_RATE)
|
|
169
|
+
"""A value between 0 and 1.
|
|
169
170
|
|
|
170
171
|
:code:`None` if market share specification requires direct generation of
|
|
171
172
|
outside good choice probabilities (:attr:`mergeron.RECForm.OUTIN`).
|
|
@@ -276,7 +277,9 @@ class PCMSpec:
|
|
|
276
277
|
f'"given value, {_v!r} is ignored."'
|
|
277
278
|
)
|
|
278
279
|
|
|
279
|
-
firm2_pcm_constraint: FM2Constraint = field(
|
|
280
|
+
firm2_pcm_constraint: FM2Constraint = field(
|
|
281
|
+
kw_only=False, default=FM2Constraint.IID
|
|
282
|
+
)
|
|
280
283
|
"""See :class:`FM2Constraint`"""
|
|
281
284
|
|
|
282
285
|
|
mergeron/gen/data_generation.py
CHANGED
|
@@ -13,7 +13,7 @@ from attrs import Attribute, define, field, validators
|
|
|
13
13
|
from joblib import Parallel, cpu_count, delayed # type: ignore
|
|
14
14
|
from numpy.random import SeedSequence
|
|
15
15
|
|
|
16
|
-
from .. import VERSION, RECForm # noqa: TID252 # noqa
|
|
16
|
+
from .. import DEFAULT_REC_RATE, VERSION, RECForm # noqa: TID252 # noqa
|
|
17
17
|
from ..core import guidelines_boundaries as gbl # noqa: TID252
|
|
18
18
|
from ..core.guidelines_boundaries import HMGThresholds # noqa: TID252
|
|
19
19
|
from . import (
|
|
@@ -73,7 +73,9 @@ class MarketSample:
|
|
|
73
73
|
|
|
74
74
|
share_spec: ShareSpec = field(
|
|
75
75
|
kw_only=True,
|
|
76
|
-
default=ShareSpec(
|
|
76
|
+
default=ShareSpec(
|
|
77
|
+
SHRDistribution.UNI, None, None, RECForm.INOUT, DEFAULT_REC_RATE
|
|
78
|
+
),
|
|
77
79
|
validator=validators.instance_of(ShareSpec),
|
|
78
80
|
)
|
|
79
81
|
"""Market-share specification, see :class:`ShareSpec`"""
|
|
@@ -11,7 +11,13 @@ import numpy as np
|
|
|
11
11
|
from attrs import evolve
|
|
12
12
|
from numpy.random import SeedSequence
|
|
13
13
|
|
|
14
|
-
from .. import
|
|
14
|
+
from .. import ( # noqa: TID252
|
|
15
|
+
DEFAULT_REC_RATE,
|
|
16
|
+
VERSION,
|
|
17
|
+
ArrayBIGINT,
|
|
18
|
+
ArrayDouble,
|
|
19
|
+
RECForm,
|
|
20
|
+
)
|
|
15
21
|
from ..core.damodaran_margin_data import mgn_data_resampler # noqa: TID252
|
|
16
22
|
from ..core.pseudorandom_numbers import ( # noqa: TID252
|
|
17
23
|
DIST_PARMS_DEFAULT,
|
|
@@ -100,7 +106,7 @@ def gen_share_data(
|
|
|
100
106
|
|
|
101
107
|
# If recapture_form == "inside-out", recalculate _aggregate_purchase_prob
|
|
102
108
|
_frmshr_array = _mkt_share_sample.mktshr_array[:, :2]
|
|
103
|
-
_r_bar = _share_spec.recapture_rate or
|
|
109
|
+
_r_bar = _share_spec.recapture_rate or DEFAULT_REC_RATE
|
|
104
110
|
if _recapture_form == RECForm.INOUT:
|
|
105
111
|
_mkt_share_sample = ShareDataSample(
|
|
106
112
|
_mkt_share_sample.mktshr_array,
|
|
@@ -226,9 +232,7 @@ def gen_market_shares_dirichlet_multimarket(
|
|
|
226
232
|
FCOUNT_WTS_DEFAULT if _firm_count_wts is None else _firm_count_wts
|
|
227
233
|
)
|
|
228
234
|
|
|
229
|
-
_min_choice_wt =
|
|
230
|
-
0.03 if _dist_type_dir == SHRDistribution.DIR_FLAT_CONSTR else 0.00
|
|
231
|
-
)
|
|
235
|
+
_min_choice_wt = 0.03 if _dist_type_dir == SHRDistribution.DIR_FLAT_CONSTR else 0.00
|
|
232
236
|
_fcount_keys, _choice_wts = zip(
|
|
233
237
|
*(
|
|
234
238
|
_f
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mergeron
|
|
3
|
-
Version: 2024.739105.
|
|
3
|
+
Version: 2024.739105.5
|
|
4
4
|
Summary: Merger Policy Analysis using Python
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: merger policy analysis,merger guidelines,merger screening,policy presumptions,concentration standards,upward pricing pressure,GUPPI
|
|
@@ -49,18 +49,18 @@ Here, enforcement rates derived with merger enforcement as being exogenous to fi
|
|
|
49
49
|
Introduction
|
|
50
50
|
------------
|
|
51
51
|
|
|
52
|
-
Module :code:`.core.guidelines_boundaries` includes classes for specifying concentration bounds (:code
|
|
52
|
+
Module :code:`.core.guidelines_boundaries` includes classes for specifying concentration bounds (:code:`.core.guidelines_boundaries.ConcentrationBoundary`) and diversion-ratio bounds (:code:`.core.guidelines_boundaries.DiversionRatioBoundary`), with automatic generation of boundary (as an array of share-pairs) and area. This module also includes a function for generating plots of concentration and diversion-ratio boundaries, and functions for mapping GUPPI standards to concentration (ΔHHI) standards, and vice-versa.
|
|
53
53
|
|
|
54
54
|
Module :code:`.gen.data_generation` includes the :code:`.gen.data_generation.MarketSample` which provides for a rich specification of shares and diversion ratios (:code:`.gen.data_generation.MarketSample.share_spec`), margins (:code:`.gen.data_generation.MarketSample.pcm_spec`, prices (:code:`.gen.data_generation.MarketSample.price_spec`), and HSR filing requirements (:code:`.gen.data_generation.MarketSample.hsr_filing_test_type`), and with methods for, (i) generating sample data (:code:`.gen.data_generation.MarketSample.generate_sample`), and (ii) estimating enforcement or clearance rates under specified enforcement regimes given a method of aggregating diversion ratio or GUPPI estimates for the firms in a merger (:code:`.gen.data_generation.MarketSample.estimate_enf_counts`). While the latter populate the properties, :code:`.gen.data_generation.MarketSample.data`
|
|
55
|
-
and :code:`.gen.data_generation.MarketSample.enf_counts`, respectively, the underlying methods for generating standalone :code:`MarketDataSample` and :code:`UPPTestCounts` objects are included in the class definition, with helper functions defined in the modules, :code:`.gen.data_generation_functions` and :code:`.gen.upp_tests`. Notably, market shares are generated for a sample of markets with firm-count distributed as specified in :code:`.gen.data_generation.MarketSample.
|
|
55
|
+
and :code:`.gen.data_generation.MarketSample.enf_counts`, respectively, the underlying methods for generating standalone :code:`MarketDataSample` and :code:`UPPTestCounts` objects are included in the class definition, with helper functions defined in the modules, :code:`.gen.data_generation_functions` and :code:`.gen.upp_tests`. Notably, market shares are generated for a sample of markets with firm-count distributed as specified in :code:`.gen.data_generation.MarketSample.share_spec.firm_count_weights`, with defaults as discussed below (also see, :code:`.gen.ShareSpec.firm_count_weights`.
|
|
56
56
|
|
|
57
|
-
By default, merging-firm shares are drawn with uniform distribution over the space :math:`s_1 + s_2 \leqslant 1` for an unspecified number of firms. Alternatively, shares may be drawn from the Dirichlet distribution
|
|
57
|
+
By default, merging-firm shares are drawn with uniform distribution over the space :math:`s_1 + s_2 \leqslant 1` for an unspecified number of firms. Alternatively, shares may be drawn from the Dirichlet distribution (see property `dist_type` of :code:`.gen.data_generation.MarketSample.share_spec`, of type, :code:`.gen.SHRDistribution`), with specified shape parameters (property `dist_parms` of :code:`.gen.data_generation.MarketSample.share_spec`. When drawing shares from the Dirichlet distribution, the user specifies the `firm_count_weights` property of :code:`.gen.data_generation.MarketSample.share_spec`, as a vector of weights specifying the frequency distribution over sequential firm counts, e.g., :code:`[133, 184, 134, 52, 32, 10, 12, 4, 3]` to specify shares drawn from Dirichlet distributions with 2 to 10 pre-merger firms distributed as in data for FTC merger investigations during 1996--2003 (See, for example, Table 4.1 of `FTC, Horizontal Merger Investigations Data, Fiscal Years 1996--2003 (Revised: August 31, 2004) <https://www.ftc.gov/sites/default/files/documents/reports/horizontal-merger-investigation-data-fiscal-years-1996-2003/040831horizmergersdata96-03.pdf>`_). If the property `firm_count_weights` is not explicitly assigned a value when defining :code:`.gen.data_generation.MarketSample.share_spec`, the default values is used, which results in a sample of markets with 2 to 7 firms with relative frequency in inverse proportion to firm-count, with 2-firm markets being 6 times as likely to be drawn as 7-firm markets.
|
|
58
58
|
|
|
59
|
-
Recapture rates can be specified as, "proportional", "inside-out", "outside-in" (see :code:`.RECForm
|
|
59
|
+
Recapture rates can be specified as, "proportional", "inside-out", or "outside-in" (see :code:`.RECForm`). The "inside-out" specification (assigning :code:`.RECForm.INOUT` to the `recapture_form` property of :code:`.gen.data_generation.MarketSample.share_spec`) results in recapture ratios consistent with merging-firms' in-market shares and a default recapture rate. The "outside-in" specification (assigning :code:`.RECForm.INOUT` to the `recapture_form` property of :code:`.gen.data_generation.MarketSample.share_spec`) yields diversion ratios from purchase probabilities drawn at random for :math:`N+1` goods, from which are derived market shares and recapture rates for the :math:`N` goods in the putative market (see, :code:`.gen.ShareSpec`). The "outside-in" specification is invalid when the distribution of markets over firm-count is unspecified, i.e., when the property `dist_type` of :code:`.gen.data_generation.MarketSample.share_spec` is assigned :code:`.gen.ShareDistributions.UNI`, raising a :code:`ValueError` exception. The "proportional" form (`recapture_form` = :code:`.RECForm.FIXED`) is often used in the literature, as an approximation to the "inside-out" calibration. See, for example, Coate (2011).
|
|
60
60
|
|
|
61
|
-
Price-cost-margins may be specified as having uniform distribution, Beta distribution (including a bounded Beta distribution with specified mean and variance), or an empirical distribution (see, :code:`.gen.PCMSpec`). The empirical margin distribution is based on resampling margin data published by Prof. Damodaran of NYU Stern School of Business (see Notes), using an estimated Gaussian KDE. The second merging firm's margin (:code:`.gen.data_generation.MarketSample.
|
|
61
|
+
Price-cost-margins may be specified as having uniform distribution, Beta distribution (including a bounded Beta distribution with specified mean and variance), or an empirical distribution (see, :code:`.gen.PCMSpec`). The empirical margin distribution is based on resampling margin data published by Prof. Damodaran of NYU Stern School of Business (see Notes), using an estimated Gaussian KDE. The second merging firm's margin (per the property `firm2_pcm_constraint` of :code:`.gen.data_generation.MarketSample.pcm_spec`) may be specified as symmetric, i.i.d., or subject to equilibrium conditions for (profit-maximization in) Bertrand-Nash oligopoly with MNL demand (:code:`.gen.FM2Constraint`).
|
|
62
62
|
|
|
63
|
-
Prices may be specified as symmetric or asymmetric, and in the latter case, the direction of correlation between merging firm prices, if any, can also be specified (see, :code:`.gen.PriceSpec`). Prices may also be defined by imposing cost symmetry on firms in the sample, with fixed unit marginal costs normalized to 1 unit, such that
|
|
63
|
+
Prices may be specified as symmetric or asymmetric, and in the latter case, the direction of correlation between merging firm prices, if any, can also be specified (see, :code:`.gen.PriceSpec`). Prices may also be defined by imposing cost symmetry on firms in the sample, with fixed unit marginal costs normalized to 1 unit, such that prices equal :math:`1 / (1 - \pmb{m})`, where :math:`\pmb{m}` represents the array of margins for firms in the sample.
|
|
64
64
|
|
|
65
65
|
The market sample may be restricted to mergers meeting the HSR filing requirement under two alternative approaches: in the one, the smaller of the two merging firms meets the lower HSR size threshold ($10 million, as adjusted) and the larger of the two merging firms meets the size test if it's share is no less than 10 times the share of the smaller firm. In the other, the :math:`n`-th firm's size is maintained as $10 million, as adjusted (see, :code:`.gen.SSZConstant`), and a merger meets the HSR filing test if either, (a.) the smaller merging firm is no smaller than the n-th firm and the larger merging firm is at 10-times as large as the n-th firm, or (b.) the smaller merging firm's market share is in excess of 10%; in effect this version of the test maintains that if the smaller merging firm's market share exceeds 10%, the value of the transaction exceeds $200 million, as adjusted, and the size-of-person test is eliminated (see, FTC (2008, p. 12); the above are simplifications of the statutory HSR filing requirements). The second assumption avoids the unfortunate assumption in the first that, within the resulting sample, the larger merging firm be at least 10 times as large as the smaller merging firm, as a consequence of the full definition of the HSR filing requirement.
|
|
66
66
|
|
|
@@ -80,9 +80,9 @@ Documentation for this package is in the form of the API Reference. Documentatio
|
|
|
80
80
|
|
|
81
81
|
.. code-block:: python
|
|
82
82
|
|
|
83
|
-
import mergeron.core.
|
|
83
|
+
import mergeron.core.data_generation as dgl
|
|
84
84
|
|
|
85
|
-
help(
|
|
85
|
+
help(dgl.MarketSample)
|
|
86
86
|
|
|
87
87
|
.. rubric:: References
|
|
88
88
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
mergeron/License.txt,sha256=7iX-y0EyjkbVJKJLS4ZKzuuE1wd0lryfsD_IytLG8lQ,1246
|
|
2
|
-
mergeron/__init__.py,sha256=-
|
|
2
|
+
mergeron/__init__.py,sha256=-3gjwZueq74GYzA1RSyR_liNB1jimnX76BXoJtg5iSs,1479
|
|
3
3
|
mergeron/core/__init__.py,sha256=KtjBlZOl7jwBCAUhrTJB9PdrN39YLYytNiSUSM_gRmA,62
|
|
4
4
|
mergeron/core/damodaran_margin_data.py,sha256=rMrgN1Qtw572a0ftY97OOj4otq8ldlLrcOi-bcE-org,8554
|
|
5
5
|
mergeron/core/ftc_merger_investigations_data.py,sha256=qGAjjXEyqwS1PKKxvJGsSkr0sfI--4oyLss9I1qCNR4,28247
|
|
6
|
-
mergeron/core/guidelines_boundaries.py,sha256=
|
|
7
|
-
mergeron/core/guidelines_boundary_functions.py,sha256=
|
|
8
|
-
mergeron/core/guidelines_boundary_functions_extra.py,sha256=
|
|
6
|
+
mergeron/core/guidelines_boundaries.py,sha256=sEvIIaOvWl6tMDYeZCIr8EsBioXOn9RSXKyKlmxnH-k,15610
|
|
7
|
+
mergeron/core/guidelines_boundary_functions.py,sha256=GGn5mwBWmxkqcat4Ya0D-J6-7ujosgCCK3eJ9RFWASI,29749
|
|
8
|
+
mergeron/core/guidelines_boundary_functions_extra.py,sha256=HDwwKZDWlrj3Tw-I0gHm0TCSDcIyb9jDfwbuDvK55B8,11322
|
|
9
9
|
mergeron/core/pseudorandom_numbers.py,sha256=cJEWDTfy9CUTzR_di6Fm1Vl1Le6xWoU8wFHbYVMEuLI,9225
|
|
10
10
|
mergeron/data/__init__.py,sha256=KtjBlZOl7jwBCAUhrTJB9PdrN39YLYytNiSUSM_gRmA,62
|
|
11
11
|
mergeron/data/damodaran_margin_data.xls,sha256=Qggl1p5nkOMJI8YUXhkwXQRz-OhRSqBTzz57N0JQyYA,79360
|
|
@@ -20,12 +20,12 @@ mergeron/data/jinja2_LaTeX_templates/mergeron_table_collection_template.tex.jinj
|
|
|
20
20
|
mergeron/data/jinja2_LaTeX_templates/setup_tikz_tables.tex,sha256=1hw3RINDtBrh9ZEToMIiNFIu9rozcPwRly69-5O_0UQ,3207
|
|
21
21
|
mergeron/demo/__init__.py,sha256=KtjBlZOl7jwBCAUhrTJB9PdrN39YLYytNiSUSM_gRmA,62
|
|
22
22
|
mergeron/demo/visualize_empirical_margin_distribution.py,sha256=v1xFJumBX2Ooye82kSSgly-_GpFVkYSDqBwM__rcmZY,2363
|
|
23
|
-
mergeron/gen/__init__.py,sha256=
|
|
24
|
-
mergeron/gen/data_generation.py,sha256=
|
|
25
|
-
mergeron/gen/data_generation_functions.py,sha256=
|
|
23
|
+
mergeron/gen/__init__.py,sha256=0rfcWpKDhYE_jNsw6xKTGFJqgNtfJ-5JFxHS89CIEuI,16575
|
|
24
|
+
mergeron/gen/data_generation.py,sha256=ZwcVoAfqGTwVBL7PRil_A9kZU8DQK0eCHtsBFA1QElA,16773
|
|
25
|
+
mergeron/gen/data_generation_functions.py,sha256=bP3E0IPXINRc8s0dUxS_Wqo1byVzheZLX811A17WNbU,28571
|
|
26
26
|
mergeron/gen/enforcement_stats.py,sha256=4YQYOeU3dqrOLejhK4chGZMO9ZoID9ZiJZ1V95eSboQ,27370
|
|
27
27
|
mergeron/gen/upp_tests.py,sha256=yzEwWK1bVfjtBYMwXnL5uEWWRiR0_9y0wmjNMB-O3rU,12589
|
|
28
28
|
mergeron/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
29
|
-
mergeron-2024.739105.
|
|
30
|
-
mergeron-2024.739105.
|
|
31
|
-
mergeron-2024.739105.
|
|
29
|
+
mergeron-2024.739105.5.dist-info/METADATA,sha256=bXrOPZHW8geGaddHFgzrOETf2z6WNSAn0eV_Ye7hZRk,14005
|
|
30
|
+
mergeron-2024.739105.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
31
|
+
mergeron-2024.739105.5.dist-info/RECORD,,
|
|
File without changes
|