mergeron 2025.739439.10__py3-none-any.whl → 2025.739439.12__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 +6 -6
- mergeron/core/guidelines_boundaries.py +32 -32
- mergeron/core/guidelines_boundary_functions.py +26 -32
- mergeron/core/pseudorandom_numbers.py +1 -1
- mergeron/gen/__init__.py +36 -36
- mergeron/gen/data_generation.py +25 -25
- mergeron/gen/data_generation_functions.py +82 -76
- mergeron/gen/enforcement_stats.py +17 -17
- mergeron/gen/upp_tests.py +37 -73
- mergeron/perks/guidelines_boundary_functions_extra.py +23 -23
- {mergeron-2025.739439.10.dist-info → mergeron-2025.739439.12.dist-info}/METADATA +2 -4
- mergeron-2025.739439.12.dist-info/RECORD +21 -0
- mergeron-2025.739439.10.dist-info/RECORD +0 -21
- {mergeron-2025.739439.10.dist-info → mergeron-2025.739439.12.dist-info}/WHEEL +0 -0
mergeron/gen/upp_tests.py
CHANGED
|
@@ -17,7 +17,7 @@ from .. import ( # noqa
|
|
|
17
17
|
UPPAggrSelector,
|
|
18
18
|
)
|
|
19
19
|
from ..core import guidelines_boundaries as gbl # noqa: TID252
|
|
20
|
-
from . import INVResolution,
|
|
20
|
+
from . import INVResolution, MarketsData, UPPTestRegime, UPPTestsCounts
|
|
21
21
|
from . import enforcement_stats as esl
|
|
22
22
|
|
|
23
23
|
__version__ = VERSION
|
|
@@ -32,7 +32,7 @@ class INVRESCntsArgs(TypedDict, total=False):
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def compute_upp_test_counts(
|
|
35
|
-
_market_data_sample:
|
|
35
|
+
_market_data_sample: MarketsData,
|
|
36
36
|
_upp_test_parms: gbl.HMGThresholds,
|
|
37
37
|
_upp_test_regime: UPPTestRegime,
|
|
38
38
|
/,
|
|
@@ -70,7 +70,7 @@ def compute_upp_test_counts(
|
|
|
70
70
|
|
|
71
71
|
np.einsum(
|
|
72
72
|
"ij,ij,ij->ij",
|
|
73
|
-
_market_data_sample.
|
|
73
|
+
_market_data_sample.divratio_array,
|
|
74
74
|
_market_data_sample.pcm_array[:, ::-1],
|
|
75
75
|
_market_data_sample.price_array[:, ::-1] / _market_data_sample.price_array,
|
|
76
76
|
out=guppi_array,
|
|
@@ -78,16 +78,16 @@ def compute_upp_test_counts(
|
|
|
78
78
|
|
|
79
79
|
np.divide(
|
|
80
80
|
np.einsum(
|
|
81
|
-
"ij,ij->ij", _market_data_sample.pcm_array, _market_data_sample.
|
|
81
|
+
"ij,ij->ij", _market_data_sample.pcm_array, _market_data_sample.divratio_array
|
|
82
82
|
),
|
|
83
|
-
1 - _market_data_sample.
|
|
83
|
+
1 - _market_data_sample.divratio_array,
|
|
84
84
|
out=ipr_array,
|
|
85
85
|
)
|
|
86
86
|
|
|
87
87
|
np.divide(ipr_array, 1 - _market_data_sample.pcm_array, out=cmcr_array)
|
|
88
88
|
|
|
89
89
|
(divr_test_vector,) = _compute_test_array_seq(
|
|
90
|
-
(_market_data_sample.
|
|
90
|
+
(_market_data_sample.divratio_array,),
|
|
91
91
|
_market_data_sample.frmshr_array,
|
|
92
92
|
_upp_test_regime.divr_aggregator,
|
|
93
93
|
)
|
|
@@ -155,78 +155,42 @@ def compute_upp_test_counts(
|
|
|
155
155
|
|
|
156
156
|
def _compute_test_array_seq(
|
|
157
157
|
_test_measure_seq: tuple[ArrayDouble, ...],
|
|
158
|
-
|
|
158
|
+
_weights: ArrayDouble,
|
|
159
159
|
_aggregator: UPPAggrSelector,
|
|
160
160
|
) -> tuple[ArrayDouble, ...]:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
test_array_seq = (
|
|
190
|
-
np.expm1(
|
|
191
|
-
np.einsum("ij,ij->i", _wt_array[:, ::-1], np.log1p(_g))[:, None]
|
|
192
|
-
)
|
|
193
|
-
for _g in _test_measure_seq
|
|
194
|
-
)
|
|
195
|
-
case UPPAggrSelector.DIS:
|
|
196
|
-
test_array_seq = (
|
|
197
|
-
np.sqrt(1 / 2 * np.einsum("ij,ij->i", _g, _g))[:, None]
|
|
198
|
-
for _g in _test_measure_seq
|
|
199
|
-
)
|
|
200
|
-
case UPPAggrSelector.GMN:
|
|
201
|
-
test_array_seq = (
|
|
202
|
-
np.expm1(np.einsum("ij->i", np.log1p(_g))[:, None] / _g.shape[1])
|
|
203
|
-
for _g in _test_measure_seq
|
|
204
|
-
)
|
|
205
|
-
case UPPAggrSelector.MAX:
|
|
206
|
-
test_array_seq = (_g.max(axis=1, keepdims=True) for _g in _test_measure_seq)
|
|
207
|
-
case UPPAggrSelector.MIN:
|
|
208
|
-
test_array_seq = (_g.min(axis=1, keepdims=True) for _g in _test_measure_seq)
|
|
209
|
-
case UPPAggrSelector.OSA:
|
|
210
|
-
test_array_seq = (
|
|
211
|
-
np.einsum("ij,ij->i", _wt_array, _g)[:, None]
|
|
212
|
-
for _g in _test_measure_seq
|
|
213
|
-
)
|
|
214
|
-
case UPPAggrSelector.OSD:
|
|
215
|
-
test_array_seq = (
|
|
216
|
-
np.sqrt(np.einsum("ij,ij,ij->i", _wt_array, _g, _g)[:, None])
|
|
217
|
-
for _g in _test_measure_seq
|
|
218
|
-
)
|
|
219
|
-
case UPPAggrSelector.OSG:
|
|
220
|
-
test_array_seq = (
|
|
221
|
-
np.expm1(np.einsum("ij,ij->i", _wt_array, np.log1p(_g))[:, None])
|
|
222
|
-
for _g in _test_measure_seq
|
|
223
|
-
)
|
|
224
|
-
case _:
|
|
225
|
-
raise ValueError("GUPPI/diversion ratio aggregation method is invalid.")
|
|
161
|
+
if _aggregator in {UPPAggrSelector.CPA, UPPAggrSelector.CPD}:
|
|
162
|
+
_weights = _weights[:, ::-1] / np.einsum("ij->i", _weights)[:, None]
|
|
163
|
+
elif _aggregator in {UPPAggrSelector.OSA, UPPAggrSelector.OSD}:
|
|
164
|
+
_weights = _weights / np.einsum("ij->i", _weights)[:, None]
|
|
165
|
+
else:
|
|
166
|
+
_weights = np.array([0.5, 0.5], float)
|
|
167
|
+
|
|
168
|
+
# Use weights calculated above to compute average, distance, and geometric mean:
|
|
169
|
+
if _aggregator in {UPPAggrSelector.AVG, UPPAggrSelector.CPA, UPPAggrSelector.OSA}:
|
|
170
|
+
test_array_seq = (
|
|
171
|
+
np.einsum("ij,ij->i", _weights, _g)[:, None] for _g in _test_measure_seq
|
|
172
|
+
)
|
|
173
|
+
elif _aggregator in {UPPAggrSelector.DIS, UPPAggrSelector.CPD, UPPAggrSelector.OSD}:
|
|
174
|
+
test_array_seq = (
|
|
175
|
+
np.sqrt(np.einsum("ij,ij,ij->i", _weights, _g, _g))[:, None]
|
|
176
|
+
for _g in _test_measure_seq
|
|
177
|
+
)
|
|
178
|
+
elif _aggregator in {UPPAggrSelector.CPG, UPPAggrSelector.GMN, UPPAggrSelector.OSG}:
|
|
179
|
+
test_array_seq = (
|
|
180
|
+
np.expm1(np.einsum("ij,ij->i", _weights[:, ::-1], np.log1p(_g)))[:, None]
|
|
181
|
+
for _g in _test_measure_seq
|
|
182
|
+
)
|
|
183
|
+
elif _aggregator == UPPAggrSelector.MAX:
|
|
184
|
+
test_array_seq = (_g.max(axis=1, keepdims=True) for _g in _test_measure_seq)
|
|
185
|
+
elif _aggregator == UPPAggrSelector.MIN:
|
|
186
|
+
test_array_seq = (_g.min(axis=1, keepdims=True) for _g in _test_measure_seq)
|
|
187
|
+
else:
|
|
188
|
+
raise ValueError("GUPPI/diversion ratio aggregation method is invalid.")
|
|
226
189
|
return tuple(test_array_seq)
|
|
227
190
|
|
|
228
191
|
|
|
229
192
|
if __name__ == "__main__":
|
|
230
193
|
print(
|
|
231
|
-
"This module defines
|
|
194
|
+
"This module defines functionsfor generating UPP test arrays "
|
|
195
|
+
"and UPP test-counts arrays on given data."
|
|
232
196
|
)
|
|
@@ -15,7 +15,7 @@ from mpmath import mp, mpf # type: ignore
|
|
|
15
15
|
from scipy.spatial.distance import minkowski # type: ignore
|
|
16
16
|
from sympy import lambdify, simplify, solve, symbols # type: ignore
|
|
17
17
|
|
|
18
|
-
from .. import
|
|
18
|
+
from .. import DEFAULT_REC, VERSION # noqa: TID252
|
|
19
19
|
from ..core import GuidelinesBoundary, MPFloat # noqa: TID252
|
|
20
20
|
from ..core import guidelines_boundary_functions as gbf # noqa: TID252
|
|
21
21
|
from . import GuidelinesBoundaryCallable
|
|
@@ -98,11 +98,11 @@ def hhi_delta_boundary_qdtr(_dh_val: float = 0.01, /) -> GuidelinesBoundaryCalla
|
|
|
98
98
|
|
|
99
99
|
def diversion_share_boundary_qdtr_wtd_avg(
|
|
100
100
|
_delta_star: float = 0.075,
|
|
101
|
-
_r_val: float =
|
|
101
|
+
_r_val: float = DEFAULT_REC,
|
|
102
102
|
/,
|
|
103
103
|
*,
|
|
104
104
|
weighting: Literal["own-share", "cross-product-share"] | None = "own-share",
|
|
105
|
-
recapture_form: Literal["inside-out", "
|
|
105
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
106
106
|
) -> GuidelinesBoundaryCallable:
|
|
107
107
|
R"""
|
|
108
108
|
Share combinations for the share-weighted average share-ratio boundary.
|
|
@@ -112,12 +112,12 @@ def diversion_share_boundary_qdtr_wtd_avg(
|
|
|
112
112
|
_delta_star
|
|
113
113
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
114
114
|
_r_val
|
|
115
|
-
Recapture
|
|
115
|
+
Recapture rate.
|
|
116
116
|
weighting
|
|
117
117
|
Whether "own-share" or "cross-product-share" (or None for simple, unweighted average)
|
|
118
118
|
recapture_form
|
|
119
|
-
Whether recapture
|
|
120
|
-
value for both merging firms ("
|
|
119
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
120
|
+
value for both merging firms ("fixed").
|
|
121
121
|
|
|
122
122
|
Returns
|
|
123
123
|
-------
|
|
@@ -211,12 +211,12 @@ def diversion_share_boundary_qdtr_wtd_avg(
|
|
|
211
211
|
|
|
212
212
|
def diversion_share_boundary_distance(
|
|
213
213
|
_delta_star: float = 0.075,
|
|
214
|
-
_r_val: float =
|
|
214
|
+
_r_val: float = DEFAULT_REC,
|
|
215
215
|
/,
|
|
216
216
|
*,
|
|
217
217
|
agg_method: Literal["arithmetic mean", "distance"] = "arithmetic mean",
|
|
218
218
|
weighting: Literal["own-share", "cross-product-share"] | None = "own-share",
|
|
219
|
-
recapture_form: Literal["inside-out", "
|
|
219
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
220
220
|
dps: int = 5,
|
|
221
221
|
) -> GuidelinesBoundary:
|
|
222
222
|
R"""
|
|
@@ -233,14 +233,14 @@ def diversion_share_boundary_distance(
|
|
|
233
233
|
_delta_star
|
|
234
234
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
235
235
|
_r_val
|
|
236
|
-
Recapture
|
|
236
|
+
Recapture rate.
|
|
237
237
|
agg_method
|
|
238
238
|
Whether "arithmetic mean" or "distance".
|
|
239
239
|
weighting
|
|
240
240
|
Whether "own-share" or "cross-product-share".
|
|
241
241
|
recapture_form
|
|
242
|
-
Whether recapture
|
|
243
|
-
value for both merging firms ("
|
|
242
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
243
|
+
value for both merging firms ("fixed").
|
|
244
244
|
dps
|
|
245
245
|
Number of decimal places for rounding returned shares and area.
|
|
246
246
|
|
|
@@ -366,10 +366,10 @@ def diversion_share_boundary_distance(
|
|
|
366
366
|
|
|
367
367
|
def diversion_share_boundary_xact_avg_mp(
|
|
368
368
|
_delta_star: float = 0.075,
|
|
369
|
-
_r_val: float =
|
|
369
|
+
_r_val: float = DEFAULT_REC,
|
|
370
370
|
/,
|
|
371
371
|
*,
|
|
372
|
-
recapture_form: Literal["inside-out", "
|
|
372
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
373
373
|
dps: int = 5,
|
|
374
374
|
) -> GuidelinesBoundary:
|
|
375
375
|
R"""
|
|
@@ -400,7 +400,7 @@ def diversion_share_boundary_xact_avg_mp(
|
|
|
400
400
|
ylabel=s_2
|
|
401
401
|
)
|
|
402
402
|
|
|
403
|
-
# recapture_form = "
|
|
403
|
+
# recapture_form = "fixed"
|
|
404
404
|
sag = solve((s_2/(1 - s_1)) + (s_1/(1 - s_2)) - 2 * d_hat, s_2)[0]
|
|
405
405
|
symplot(
|
|
406
406
|
sag,
|
|
@@ -413,10 +413,10 @@ def diversion_share_boundary_xact_avg_mp(
|
|
|
413
413
|
_delta_star
|
|
414
414
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
415
415
|
_r_val
|
|
416
|
-
Recapture
|
|
416
|
+
Recapture rate.
|
|
417
417
|
recapture_form
|
|
418
|
-
Whether recapture
|
|
419
|
-
value for both merging firms ("
|
|
418
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
419
|
+
value for both merging firms ("fixed").
|
|
420
420
|
dps
|
|
421
421
|
Number of decimal places for rounding returned shares.
|
|
422
422
|
|
|
@@ -520,14 +520,14 @@ def diversion_share_boundary_xact_avg_mp(
|
|
|
520
520
|
# this function is about half as fast as the manual one! ... and a touch less precise
|
|
521
521
|
def _diversion_share_boundary_wtd_avg_autoroot(
|
|
522
522
|
_delta_star: float = 0.075,
|
|
523
|
-
_r_val: float =
|
|
523
|
+
_r_val: float = DEFAULT_REC,
|
|
524
524
|
/,
|
|
525
525
|
*,
|
|
526
526
|
agg_method: Literal[
|
|
527
527
|
"arithmetic mean", "geometric mean", "distance"
|
|
528
528
|
] = "arithmetic mean",
|
|
529
529
|
weighting: Literal["own-share", "cross-product-share", None] = "own-share",
|
|
530
|
-
recapture_form: Literal["inside-out", "
|
|
530
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
531
531
|
dps: int = 5,
|
|
532
532
|
) -> GuidelinesBoundary:
|
|
533
533
|
R"""
|
|
@@ -538,14 +538,14 @@ def _diversion_share_boundary_wtd_avg_autoroot(
|
|
|
538
538
|
_delta_star
|
|
539
539
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
540
540
|
_r_val
|
|
541
|
-
Recapture
|
|
541
|
+
Recapture rate.
|
|
542
542
|
agg_method
|
|
543
543
|
Whether "arithmetic mean", "geometric mean", or "distance".
|
|
544
544
|
weighting
|
|
545
545
|
Whether "own-share" or "cross-product-share" (or None for simple, unweighted average).
|
|
546
546
|
recapture_form
|
|
547
|
-
Whether recapture
|
|
548
|
-
value for both merging firms ("
|
|
547
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
548
|
+
value for both merging firms ("fixed").
|
|
549
549
|
dps
|
|
550
550
|
Number of decimal places for rounding returned shares and area.
|
|
551
551
|
|
|
@@ -588,7 +588,7 @@ def _diversion_share_boundary_wtd_avg_autoroot(
|
|
|
588
588
|
(s_1, 0.0, d_hat / (1 + d_hat)), ylabel=s_2
|
|
589
589
|
)
|
|
590
590
|
|
|
591
|
-
# recapture_form == "
|
|
591
|
+
# recapture_form == "fixed"
|
|
592
592
|
oswag = solve(
|
|
593
593
|
s_1 * s_2 / (1 - s_1)
|
|
594
594
|
+ s_2 * s_1 / (1 - s_2)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: mergeron
|
|
3
|
-
Version: 2025.739439.
|
|
3
|
+
Version: 2025.739439.12
|
|
4
4
|
Summary: Python for analyzing merger enforcement policy
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: merger enforcement policy,merger guidelines,merger screening,enforcement presumptions,concentration standards,diversion ratio,upward pricing pressure,GUPPI
|
|
@@ -26,7 +26,6 @@ Requires-Dist: joblib (>=1.5.1)
|
|
|
26
26
|
Requires-Dist: lxml (>=6.0.0)
|
|
27
27
|
Requires-Dist: matplotlib (>=3.10.3)
|
|
28
28
|
Requires-Dist: mpmath (>=1.3.0)
|
|
29
|
-
Requires-Dist: numexpr (>=2.11.0,<3.0.0)
|
|
30
29
|
Requires-Dist: python-calamine (>=0.4.0)
|
|
31
30
|
Requires-Dist: ruamel-yaml (>=0.18.14)
|
|
32
31
|
Requires-Dist: scipy (>=1.16.0)
|
|
@@ -73,8 +72,7 @@ mergeron: Python for analyzing merger enforcement policy
|
|
|
73
72
|
|
|
74
73
|
|
|
75
74
|
*Visualize* the sets of mergers falling within specified concentration and diversion-ratio thresholds. *Analyze* merger investigations data published by the U.S. Federal Trade Commission in various reports on extended merger investigations (Second Requests) during 1996 to 2011.
|
|
76
|
-
*Generate* data under specified distributions of firm counts, market shares, price-cost margins, and prices, optionally imposing equilibrium conditions for Bertrand oligopoly with MNL demand and
|
|
77
|
-
intrinsic clearance rates using the generated data, given thresholds for
|
|
75
|
+
*Generate* data under specified distributions of firm counts, market shares, price-cost margins, and prices, optionally imposing equilibrium conditions for Bertrand oligopoly with MNL demand and restrictions implied by statutory filing thresholds. *Compute* intrinsic enforcement rates or intrinsic clearance rates using generated data, with bounds for
|
|
78
76
|
concentration;
|
|
79
77
|
diversion ratio;
|
|
80
78
|
gross upward pricing pressure (GUPPI);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
mergeron/__init__.py,sha256=Ou_biclMlp0dqd1uU9FHSIH_7RMfY4G4stoB5TYjU3U,6736
|
|
2
|
+
mergeron/core/__init__.py,sha256=zJcc50CAwm0oNKwk4p-P7oRwVfB_Fp4u0Do5dUeUXfI,3027
|
|
3
|
+
mergeron/core/empirical_margin_distribution.py,sha256=61U-KLB563BPWM5zWyWp82c4PhcsAG-IKI0WWYGjBKg,11740
|
|
4
|
+
mergeron/core/ftc_merger_investigations_data.py,sha256=oM4cs2PnyeSwyV1LOE_EYCUEzCKPm7lnCGxLIc6JQY8,28820
|
|
5
|
+
mergeron/core/guidelines_boundaries.py,sha256=qcb8QrpRQSgT3EfSelV5nNapXPm7H0xPZZxF8qIYxHQ,15551
|
|
6
|
+
mergeron/core/guidelines_boundary_functions.py,sha256=Cz1TKXdoL9S4EhuvbRkSGb1SulZFafRNmhOsHTwfhVw,30753
|
|
7
|
+
mergeron/core/pseudorandom_numbers.py,sha256=CFp-8eu0q2g-81LA0k2oCFltmp6Er7EkrAkoG19G7Os,10138
|
|
8
|
+
mergeron/data/__init__.py,sha256=SAFkR23RBM0zwGam2TeWmw08oHAKmU2YF-Nygj73ies,1845
|
|
9
|
+
mergeron/data/damodaran_margin_data_serialized.zip,sha256=Wc1v9buSrYTWWAravG8W9nPbgsU07zMtSAR2RvMQU5s,623482
|
|
10
|
+
mergeron/data/ftc_merger_investigations_data.zip,sha256=tiB2TLFyS9LMSFIv8DBA_oEEx12DU4MyjHni4NlsRMU,24002
|
|
11
|
+
mergeron/gen/__init__.py,sha256=sAVbyNyePlbUNPe-G4incMARqIYX4TOoDvJwERuCMKM,23874
|
|
12
|
+
mergeron/gen/data_generation.py,sha256=DsNiCNdYi597qF08addnYMVLuSXYQZRi7XaSvFl6CcU,17638
|
|
13
|
+
mergeron/gen/data_generation_functions.py,sha256=EcAakMw5qH8LZp2DImPvcnja2ug3QUBpdjEQOf2otFU,26146
|
|
14
|
+
mergeron/gen/enforcement_stats.py,sha256=V3ZeVv-iLFUuKPeM503cMKiVVaYeGVrA_6lInAdXA5w,14387
|
|
15
|
+
mergeron/gen/upp_tests.py,sha256=xd038HzO-FTqNPQCnKjtW5OKoAc4u4tRGveTGSRQgUY,6439
|
|
16
|
+
mergeron/perks/__init__.py,sha256=gGRIuRc7I6OuWLzwSiSZSIE0PEoxAy2DRFWg0VVLlbE,484
|
|
17
|
+
mergeron/perks/guidelines_boundary_functions_extra.py,sha256=zzpUn8VEd9ciRznXbd-qem4cjKsO-x-wuraI6mA3oGo,22204
|
|
18
|
+
mergeron/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
19
|
+
mergeron-2025.739439.12.dist-info/METADATA,sha256=KTvpzolzGE5hzPVbg7tTEscU0PB43_oSyiGjf_9uTbM,4167
|
|
20
|
+
mergeron-2025.739439.12.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
21
|
+
mergeron-2025.739439.12.dist-info/RECORD,,
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
mergeron/__init__.py,sha256=jahrWTN0aWOMRUBEyN_oKVK7d4LQeYWnK40rglYErN4,6752
|
|
2
|
-
mergeron/core/__init__.py,sha256=zJcc50CAwm0oNKwk4p-P7oRwVfB_Fp4u0Do5dUeUXfI,3027
|
|
3
|
-
mergeron/core/empirical_margin_distribution.py,sha256=61U-KLB563BPWM5zWyWp82c4PhcsAG-IKI0WWYGjBKg,11740
|
|
4
|
-
mergeron/core/ftc_merger_investigations_data.py,sha256=oM4cs2PnyeSwyV1LOE_EYCUEzCKPm7lnCGxLIc6JQY8,28820
|
|
5
|
-
mergeron/core/guidelines_boundaries.py,sha256=PvSOLB6KlXu9KX6NdpStuRluP6nrZqUzSHT6usa5600,15630
|
|
6
|
-
mergeron/core/guidelines_boundary_functions.py,sha256=mW5jW7qgn1Z4wMY3P_l86jtJoSke_Wcnd-JKxoWmYKI,30838
|
|
7
|
-
mergeron/core/pseudorandom_numbers.py,sha256=-mPveXjJJ446NrBMAmWIa2jI6j0Px0xcCJTGEEsn3bo,10149
|
|
8
|
-
mergeron/data/__init__.py,sha256=SAFkR23RBM0zwGam2TeWmw08oHAKmU2YF-Nygj73ies,1845
|
|
9
|
-
mergeron/data/damodaran_margin_data_serialized.zip,sha256=Wc1v9buSrYTWWAravG8W9nPbgsU07zMtSAR2RvMQU5s,623482
|
|
10
|
-
mergeron/data/ftc_merger_investigations_data.zip,sha256=tiB2TLFyS9LMSFIv8DBA_oEEx12DU4MyjHni4NlsRMU,24002
|
|
11
|
-
mergeron/gen/__init__.py,sha256=apcCVC29yVjIM1yLM-wVpwrIwfi3BvJp_fPThe0Bgoc,23864
|
|
12
|
-
mergeron/gen/data_generation.py,sha256=pdQl_uBENCjVt2aPtAcus2md4Qx-j5rOWGJJAzdnlO0,17617
|
|
13
|
-
mergeron/gen/data_generation_functions.py,sha256=hXUq5D2CIUkM4_NdGXiOb4XATYwIUeUcCGadzQGDqLw,26126
|
|
14
|
-
mergeron/gen/enforcement_stats.py,sha256=etTax-sBSn8DveF-IxuBJDdX0XSBD6oFU9vaZe6cYks,14387
|
|
15
|
-
mergeron/gen/upp_tests.py,sha256=gRJISQ2jGmIDmFOvaTIkvYooI4mK-QbgkfgL46RrRio,7445
|
|
16
|
-
mergeron/perks/__init__.py,sha256=gGRIuRc7I6OuWLzwSiSZSIE0PEoxAy2DRFWg0VVLlbE,484
|
|
17
|
-
mergeron/perks/guidelines_boundary_functions_extra.py,sha256=lbqjmeLjrqXBm7dEmhiMcqzlv89cDlmyrG3TDzUFSEY,22296
|
|
18
|
-
mergeron/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
19
|
-
mergeron-2025.739439.10.dist-info/METADATA,sha256=0n-5o-IYKF3E8dgB7h-hZwvlpq0iK-WY9Oh2YoTRTQI,4220
|
|
20
|
-
mergeron-2025.739439.10.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
21
|
-
mergeron-2025.739439.10.dist-info/RECORD,,
|
|
File without changes
|