mergeron.perks.guidelines_boundary_functions_extra

Specialized methods for defining and analyzing boundaries for Guidelines standards.

These methods (functions) provide rely on scipy of sympy for core computations, and may provide improved precision than core functions, but tend to have poor performance

Module Contents

mergeron.perks.guidelines_boundary_functions_extra.dh_area_quad(_dh_val=0.01, /)[source]

Area under the ΔHHI boundary.

When the given ΔHHI bound matches a Guidelines safeharbor, the area under the boundary is half the intrinsic clearance rate for the ΔHHI safeharbor.

Parameters:
_dh_val : float

Merging-firms’ ΔHHI bound.

Returns:

Area under ΔHHI boundary.

Return type:

float

mergeron.perks.guidelines_boundary_functions_extra.hhi_delta_boundary_qdtr(_dh_val=0.01, /)[source]

Generate the list of share combination on the ΔHHI boundary.

Parameters:
_dh_val : float

Merging-firms’ ΔHHI bound.

Returns:

Callable to generate array of share-pairs, area under boundary.

Return type:

mergeron.perks.GuidelinesBoundaryCallable

mergeron.perks.guidelines_boundary_functions_extra.diversion_share_boundary_qdtr_wtd_avg(_delta_star=0.075, _r_val=DEFAULT_REC, /, *, weighting='own-share', recapture_form='inside-out')[source]

Share combinations for the share-weighted average share-ratio boundary.

Parameters:
_delta_star : float

Diversion share, \(\overline{d} / \overline{r}\) or \(\overline{g} / (m^* \cdot \overline{r})\).

_r_val : float

Recapture rate.

weighting : Literal['own-share', 'cross-product-share'] | None

Whether “own-share” or “cross-product-share” (or None for simple, unweighted average)

recapture_form : Literal['inside-out', 'fixed']

Whether recapture rate is share-proportional (“inside-out”) or has fixed value for both merging firms (“fixed”).

Returns:

Array of share-pairs, area under boundary.

Return type:

mergeron.perks.GuidelinesBoundaryCallable

mergeron.perks.guidelines_boundary_functions_extra.diversion_share_boundary_distance(_delta_star=0.075, _r_val=DEFAULT_REC, /, *, agg_method='arithmetic mean', weighting='own-share', recapture_form='inside-out', dps=5)[source]

Share combinations for the share-ratio boundaries using various aggregators.

Reimplements the arithmetic-averages and distance estimations from function, diversion_share_boundary_wtd_avg but uses the Minkowski-distance function, scipy.spatial.distance.minkowski for all aggregators. This reimplementation is useful for testing the output of diversion_share_boundary_wtd_avg but runs considerably slower.

Parameters:
_delta_star : float

Diversion share, \(\overline{d} / \overline{r}\) or \(\overline{g} / (m^* \cdot \overline{r})\).

_r_val : float

Recapture rate.

agg_method : Literal['arithmetic mean', 'distance']

Whether “arithmetic mean” or “distance”.

weighting : Literal['own-share', 'cross-product-share'] | None

Whether “own-share” or “cross-product-share”.

recapture_form : Literal['inside-out', 'fixed']

Whether recapture rate is share-proportional (“inside-out”) or has fixed value for both merging firms (“fixed”).

dps : int

Number of decimal places for rounding returned shares and area.

Returns:

Array of share-pairs, area under boundary.

Return type:

mergeron.core.GuidelinesBoundary

mergeron.perks.guidelines_boundary_functions_extra.diversion_share_boundary_xact_avg_mp(_delta_star=0.075, _r_val=DEFAULT_REC, /, *, recapture_form='inside-out', dps=5)[source]

Share combinations along the simple average diversion-ratio boundary.

Notes

An analytical expression for the exact average boundary is derived and plotted from the y-intercept to the ray of symmetry as follows:

from sympy import latex, plot as symplot, solve, symbols

s_1, s_2 = symbols("s_1 s_2")

g_val, r_val, m_val = 0.06, 0.80, 0.30
d_hat = g_val / (r_val * m_val)

# recapture_form = "inside-out"
sag = solve(
    (s_2 / (1 - s_1))
    + (s_1 / (1 - (r_val * s_2 + (1 - r_val) * s_1)))
    - 2 * d_hat,
    s_2
)[0]
symplot(
    sag,
    (s_1, 0., d_hat / (1 + d_hat)),
    ylabel=s_2
)

# recapture_form = "fixed"
sag = solve((s_2/(1 - s_1)) + (s_1/(1 - s_2)) - 2 * d_hat, s_2)[0]
symplot(
    sag,
    (s_1, 0., d_hat / (1 + d_hat)),
    ylabel=s_2
)
Parameters:
_delta_star : float

Diversion share, \(\overline{d} / \overline{r}\) or \(\overline{g} / (m^* \cdot \overline{r})\).

_r_val : float

Recapture rate.

recapture_form : Literal['inside-out', 'fixed']

Whether recapture rate is share-proportional (“inside-out”) or has fixed value for both merging firms (“fixed”).

dps : int

Number of decimal places for rounding returned shares.

Returns:

Array of share-pairs, area under boundary, area under boundary.

Return type:

mergeron.core.GuidelinesBoundary