mergeron 2025.739439.11__py3-none-any.whl → 2025.739439.13__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 -48
- mergeron/core/guidelines_boundary_functions.py +24 -32
- mergeron/core/pseudorandom_numbers.py +1 -1
- mergeron/gen/__init__.py +38 -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 +39 -73
- mergeron/perks/guidelines_boundary_functions_extra.py +26 -29
- {mergeron-2025.739439.11.dist-info → mergeron-2025.739439.13.dist-info}/METADATA +1 -2
- mergeron-2025.739439.13.dist-info/RECORD +21 -0
- mergeron-2025.739439.11.dist-info/RECORD +0 -21
- {mergeron-2025.739439.11.dist-info → mergeron-2025.739439.13.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,18 @@ def compute_upp_test_counts(
|
|
|
78
78
|
|
|
79
79
|
np.divide(
|
|
80
80
|
np.einsum(
|
|
81
|
-
"ij,ij->ij",
|
|
81
|
+
"ij,ij->ij",
|
|
82
|
+
_market_data_sample.pcm_array,
|
|
83
|
+
_market_data_sample.divratio_array,
|
|
82
84
|
),
|
|
83
|
-
1 - _market_data_sample.
|
|
85
|
+
1 - _market_data_sample.divratio_array,
|
|
84
86
|
out=ipr_array,
|
|
85
87
|
)
|
|
86
88
|
|
|
87
89
|
np.divide(ipr_array, 1 - _market_data_sample.pcm_array, out=cmcr_array)
|
|
88
90
|
|
|
89
91
|
(divr_test_vector,) = _compute_test_array_seq(
|
|
90
|
-
(_market_data_sample.
|
|
92
|
+
(_market_data_sample.divratio_array,),
|
|
91
93
|
_market_data_sample.frmshr_array,
|
|
92
94
|
_upp_test_regime.divr_aggregator,
|
|
93
95
|
)
|
|
@@ -155,78 +157,42 @@ def compute_upp_test_counts(
|
|
|
155
157
|
|
|
156
158
|
def _compute_test_array_seq(
|
|
157
159
|
_test_measure_seq: tuple[ArrayDouble, ...],
|
|
158
|
-
|
|
160
|
+
_weights: ArrayDouble,
|
|
159
161
|
_aggregator: UPPAggrSelector,
|
|
160
162
|
) -> 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.")
|
|
163
|
+
if _aggregator in {UPPAggrSelector.CPA, UPPAggrSelector.CPD}:
|
|
164
|
+
_weights = _weights[:, ::-1] / np.einsum("ij->i", _weights)[:, None]
|
|
165
|
+
elif _aggregator in {UPPAggrSelector.OSA, UPPAggrSelector.OSD}:
|
|
166
|
+
_weights = _weights / np.einsum("ij->i", _weights)[:, None]
|
|
167
|
+
else:
|
|
168
|
+
_weights = np.array([0.5, 0.5], float)
|
|
169
|
+
|
|
170
|
+
# Use weights calculated above to compute average, distance, and geometric mean:
|
|
171
|
+
if _aggregator in {UPPAggrSelector.AVG, UPPAggrSelector.CPA, UPPAggrSelector.OSA}:
|
|
172
|
+
test_array_seq = (
|
|
173
|
+
np.einsum("ij,ij->i", _weights, _g)[:, None] for _g in _test_measure_seq
|
|
174
|
+
)
|
|
175
|
+
elif _aggregator in {UPPAggrSelector.DIS, UPPAggrSelector.CPD, UPPAggrSelector.OSD}:
|
|
176
|
+
test_array_seq = (
|
|
177
|
+
np.sqrt(np.einsum("ij,ij,ij->i", _weights, _g, _g))[:, None]
|
|
178
|
+
for _g in _test_measure_seq
|
|
179
|
+
)
|
|
180
|
+
elif _aggregator in {UPPAggrSelector.CPG, UPPAggrSelector.GMN, UPPAggrSelector.OSG}:
|
|
181
|
+
test_array_seq = (
|
|
182
|
+
np.expm1(np.einsum("ij,ij->i", _weights[:, ::-1], np.log1p(_g)))[:, None]
|
|
183
|
+
for _g in _test_measure_seq
|
|
184
|
+
)
|
|
185
|
+
elif _aggregator == UPPAggrSelector.MAX:
|
|
186
|
+
test_array_seq = (_g.max(axis=1, keepdims=True) for _g in _test_measure_seq)
|
|
187
|
+
elif _aggregator == UPPAggrSelector.MIN:
|
|
188
|
+
test_array_seq = (_g.min(axis=1, keepdims=True) for _g in _test_measure_seq)
|
|
189
|
+
else:
|
|
190
|
+
raise ValueError("GUPPI/diversion ratio aggregation method is invalid.")
|
|
226
191
|
return tuple(test_array_seq)
|
|
227
192
|
|
|
228
193
|
|
|
229
194
|
if __name__ == "__main__":
|
|
230
195
|
print(
|
|
231
|
-
"This module defines
|
|
196
|
+
"This module defines functionsfor generating UPP test arrays "
|
|
197
|
+
"and UPP test-counts arrays on given data."
|
|
232
198
|
)
|
|
@@ -6,6 +6,7 @@ and may provide improved precision than core functions, but tend to have
|
|
|
6
6
|
poor performance
|
|
7
7
|
|
|
8
8
|
"""
|
|
9
|
+
|
|
9
10
|
from __future__ import annotations
|
|
10
11
|
|
|
11
12
|
from typing import Literal
|
|
@@ -15,7 +16,7 @@ from mpmath import mp, mpf # type: ignore
|
|
|
15
16
|
from scipy.spatial.distance import minkowski # type: ignore
|
|
16
17
|
from sympy import lambdify, simplify, solve, symbols # type: ignore
|
|
17
18
|
|
|
18
|
-
from .. import
|
|
19
|
+
from .. import DEFAULT_REC, VERSION # noqa: TID252
|
|
19
20
|
from ..core import GuidelinesBoundary, MPFloat # noqa: TID252
|
|
20
21
|
from ..core import guidelines_boundary_functions as gbf # noqa: TID252
|
|
21
22
|
from . import GuidelinesBoundaryCallable
|
|
@@ -98,11 +99,11 @@ def hhi_delta_boundary_qdtr(_dh_val: float = 0.01, /) -> GuidelinesBoundaryCalla
|
|
|
98
99
|
|
|
99
100
|
def diversion_share_boundary_qdtr_wtd_avg(
|
|
100
101
|
_delta_star: float = 0.075,
|
|
101
|
-
_r_val: float =
|
|
102
|
+
_r_val: float = DEFAULT_REC,
|
|
102
103
|
/,
|
|
103
104
|
*,
|
|
104
105
|
weighting: Literal["own-share", "cross-product-share"] | None = "own-share",
|
|
105
|
-
recapture_form: Literal["inside-out", "
|
|
106
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
106
107
|
) -> GuidelinesBoundaryCallable:
|
|
107
108
|
R"""
|
|
108
109
|
Share combinations for the share-weighted average share-ratio boundary.
|
|
@@ -112,12 +113,12 @@ def diversion_share_boundary_qdtr_wtd_avg(
|
|
|
112
113
|
_delta_star
|
|
113
114
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
114
115
|
_r_val
|
|
115
|
-
Recapture
|
|
116
|
+
Recapture rate.
|
|
116
117
|
weighting
|
|
117
118
|
Whether "own-share" or "cross-product-share" (or None for simple, unweighted average)
|
|
118
119
|
recapture_form
|
|
119
|
-
Whether recapture
|
|
120
|
-
value for both merging firms ("
|
|
120
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
121
|
+
value for both merging firms ("fixed").
|
|
121
122
|
|
|
122
123
|
Returns
|
|
123
124
|
-------
|
|
@@ -211,12 +212,12 @@ def diversion_share_boundary_qdtr_wtd_avg(
|
|
|
211
212
|
|
|
212
213
|
def diversion_share_boundary_distance(
|
|
213
214
|
_delta_star: float = 0.075,
|
|
214
|
-
_r_val: float =
|
|
215
|
+
_r_val: float = DEFAULT_REC,
|
|
215
216
|
/,
|
|
216
217
|
*,
|
|
217
218
|
agg_method: Literal["arithmetic mean", "distance"] = "arithmetic mean",
|
|
218
219
|
weighting: Literal["own-share", "cross-product-share"] | None = "own-share",
|
|
219
|
-
recapture_form: Literal["inside-out", "
|
|
220
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
220
221
|
dps: int = 5,
|
|
221
222
|
) -> GuidelinesBoundary:
|
|
222
223
|
R"""
|
|
@@ -233,14 +234,14 @@ def diversion_share_boundary_distance(
|
|
|
233
234
|
_delta_star
|
|
234
235
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
235
236
|
_r_val
|
|
236
|
-
Recapture
|
|
237
|
+
Recapture rate.
|
|
237
238
|
agg_method
|
|
238
239
|
Whether "arithmetic mean" or "distance".
|
|
239
240
|
weighting
|
|
240
241
|
Whether "own-share" or "cross-product-share".
|
|
241
242
|
recapture_form
|
|
242
|
-
Whether recapture
|
|
243
|
-
value for both merging firms ("
|
|
243
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
244
|
+
value for both merging firms ("fixed").
|
|
244
245
|
dps
|
|
245
246
|
Number of decimal places for rounding returned shares and area.
|
|
246
247
|
|
|
@@ -292,13 +293,9 @@ def diversion_share_boundary_distance(
|
|
|
292
293
|
|
|
293
294
|
match agg_method:
|
|
294
295
|
case "arithmetic mean":
|
|
295
|
-
delta_test = minkowski(
|
|
296
|
-
(de_1, de_2), (0.0, 0.0), p=1, w=weights_i
|
|
297
|
-
)
|
|
296
|
+
delta_test = minkowski((de_1, de_2), (0.0, 0.0), p=1, w=weights_i)
|
|
298
297
|
case "distance":
|
|
299
|
-
delta_test = minkowski(
|
|
300
|
-
(de_1, de_2), (0.0, 0.0), p=2, w=weights_i
|
|
301
|
-
)
|
|
298
|
+
delta_test = minkowski((de_1, de_2), (0.0, 0.0), p=2, w=weights_i)
|
|
302
299
|
|
|
303
300
|
_test_flag, _incr_decr = (
|
|
304
301
|
(delta_test > _delta_star, -1)
|
|
@@ -366,10 +363,10 @@ def diversion_share_boundary_distance(
|
|
|
366
363
|
|
|
367
364
|
def diversion_share_boundary_xact_avg_mp(
|
|
368
365
|
_delta_star: float = 0.075,
|
|
369
|
-
_r_val: float =
|
|
366
|
+
_r_val: float = DEFAULT_REC,
|
|
370
367
|
/,
|
|
371
368
|
*,
|
|
372
|
-
recapture_form: Literal["inside-out", "
|
|
369
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
373
370
|
dps: int = 5,
|
|
374
371
|
) -> GuidelinesBoundary:
|
|
375
372
|
R"""
|
|
@@ -400,7 +397,7 @@ def diversion_share_boundary_xact_avg_mp(
|
|
|
400
397
|
ylabel=s_2
|
|
401
398
|
)
|
|
402
399
|
|
|
403
|
-
# recapture_form = "
|
|
400
|
+
# recapture_form = "fixed"
|
|
404
401
|
sag = solve((s_2/(1 - s_1)) + (s_1/(1 - s_2)) - 2 * d_hat, s_2)[0]
|
|
405
402
|
symplot(
|
|
406
403
|
sag,
|
|
@@ -413,10 +410,10 @@ def diversion_share_boundary_xact_avg_mp(
|
|
|
413
410
|
_delta_star
|
|
414
411
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
415
412
|
_r_val
|
|
416
|
-
Recapture
|
|
413
|
+
Recapture rate.
|
|
417
414
|
recapture_form
|
|
418
|
-
Whether recapture
|
|
419
|
-
value for both merging firms ("
|
|
415
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
416
|
+
value for both merging firms ("fixed").
|
|
420
417
|
dps
|
|
421
418
|
Number of decimal places for rounding returned shares.
|
|
422
419
|
|
|
@@ -520,14 +517,14 @@ def diversion_share_boundary_xact_avg_mp(
|
|
|
520
517
|
# this function is about half as fast as the manual one! ... and a touch less precise
|
|
521
518
|
def _diversion_share_boundary_wtd_avg_autoroot(
|
|
522
519
|
_delta_star: float = 0.075,
|
|
523
|
-
_r_val: float =
|
|
520
|
+
_r_val: float = DEFAULT_REC,
|
|
524
521
|
/,
|
|
525
522
|
*,
|
|
526
523
|
agg_method: Literal[
|
|
527
524
|
"arithmetic mean", "geometric mean", "distance"
|
|
528
525
|
] = "arithmetic mean",
|
|
529
526
|
weighting: Literal["own-share", "cross-product-share", None] = "own-share",
|
|
530
|
-
recapture_form: Literal["inside-out", "
|
|
527
|
+
recapture_form: Literal["inside-out", "fixed"] = "inside-out",
|
|
531
528
|
dps: int = 5,
|
|
532
529
|
) -> GuidelinesBoundary:
|
|
533
530
|
R"""
|
|
@@ -538,14 +535,14 @@ def _diversion_share_boundary_wtd_avg_autoroot(
|
|
|
538
535
|
_delta_star
|
|
539
536
|
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
540
537
|
_r_val
|
|
541
|
-
Recapture
|
|
538
|
+
Recapture rate.
|
|
542
539
|
agg_method
|
|
543
540
|
Whether "arithmetic mean", "geometric mean", or "distance".
|
|
544
541
|
weighting
|
|
545
542
|
Whether "own-share" or "cross-product-share" (or None for simple, unweighted average).
|
|
546
543
|
recapture_form
|
|
547
|
-
Whether recapture
|
|
548
|
-
value for both merging firms ("
|
|
544
|
+
Whether recapture rate is share-proportional ("inside-out") or has fixed
|
|
545
|
+
value for both merging firms ("fixed").
|
|
549
546
|
dps
|
|
550
547
|
Number of decimal places for rounding returned shares and area.
|
|
551
548
|
|
|
@@ -588,7 +585,7 @@ def _diversion_share_boundary_wtd_avg_autoroot(
|
|
|
588
585
|
(s_1, 0.0, d_hat / (1 + d_hat)), ylabel=s_2
|
|
589
586
|
)
|
|
590
587
|
|
|
591
|
-
# recapture_form == "
|
|
588
|
+
# recapture_form == "fixed"
|
|
592
589
|
oswag = solve(
|
|
593
590
|
s_1 * s_2 / (1 - s_1)
|
|
594
591
|
+ 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.13
|
|
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)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
mergeron/__init__.py,sha256=7EfQoQmwD1jpLMoPnuXOjraGsAmq44OP39XMiqoadxM,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=Z8rZvhHrxXBgrLGFpb6yldc8h3lN9rGtGj4yu-fyVBA,15450
|
|
6
|
+
mergeron/core/guidelines_boundary_functions.py,sha256=fdWbqOb3Khz0OkbSTO7amE1q_ao3puZY5tEzj0p4h1o,30695
|
|
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=6xUhaG4kWj2Qx8hLjgjupFWcJ0ZzAKDY9TN7mAFrANI,23880
|
|
12
|
+
mergeron/gen/data_generation.py,sha256=cZW3Dc6bNiBUPXjTDHZDwTc6x1sxXq2STCzfsvk6_tw,17638
|
|
13
|
+
mergeron/gen/data_generation_functions.py,sha256=SWzZ3I7ulkGBcL2F5CCKw2IvCm_wEplvqBasnSjSyU0,26129
|
|
14
|
+
mergeron/gen/enforcement_stats.py,sha256=V3ZeVv-iLFUuKPeM503cMKiVVaYeGVrA_6lInAdXA5w,14387
|
|
15
|
+
mergeron/gen/upp_tests.py,sha256=v-tnhQ85j8zL-TTE52GC61GEZSRFfdCkjaitVQIz0FI,6464
|
|
16
|
+
mergeron/perks/__init__.py,sha256=gGRIuRc7I6OuWLzwSiSZSIE0PEoxAy2DRFWg0VVLlbE,484
|
|
17
|
+
mergeron/perks/guidelines_boundary_functions_extra.py,sha256=q-Cqk9t5oj4yiAsmZJcsfrH434oGvza4YVspFYpdV0g,22113
|
|
18
|
+
mergeron/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
19
|
+
mergeron-2025.739439.13.dist-info/METADATA,sha256=pW4fkwJwFD_eALAZ-TSIryYrJu1AMfczHcoDq1u9LdE,4167
|
|
20
|
+
mergeron-2025.739439.13.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
21
|
+
mergeron-2025.739439.13.dist-info/RECORD,,
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
mergeron/__init__.py,sha256=h6iafamitU2GozjC36LB3hqIfiNPehoVj5ME7qlJIWg,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.11.dist-info/METADATA,sha256=na0otI3x199j_ks6Qr6oigSYe8aZ7NL4FND9L_417zY,4208
|
|
20
|
-
mergeron-2025.739439.11.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
21
|
-
mergeron-2025.739439.11.dist-info/RECORD,,
|
|
File without changes
|