quantlab.factor.predefined.fundamental_alpha.FundamentalAlphaParameters#

class quantlab.factor.predefined.fundamental_alpha.FundamentalAlphaParameters(issuance_window=252, sue_quarters=8, insider_window=126, insider_value_window=252, quarter_days=91.3, lag_tolerance_days=45.0, denominator_floor=1e-09, ranked=False)[source]#

Bases: object

Windows of FundamentalAlpha, read from FactorConfig.kwargs.

Parameters:
issuance_windowint, default 252

Bars of market-cap growth and total return in composite_issuance.

sue_quartersint, default 8

Quarterly changes whose standard deviation scales a SUE.

insider_windowint, default 126

Bars summed by insider_npr and insider_breadth.

insider_value_windowint, default 252

Bars summed by insider_net_buy.

quarter_daysfloat, default 91.3

Days in one fiscal quarter, for checking that two reports are k quarters apart.

lag_tolerance_daysfloat, default 45

Largest gap between k quarters and two reports’ period ends.

denominator_floorfloat, default 1e-9

Smallest absolute denominator of a ratio; smaller gives NaN.

rankedbool, default False

Whether each output is its cross-sectional percentile rank (KunQuant Rank, NaN ignored) instead of the raw value. The raw ratios are heavy-tailed, so neutralize the ranks (NeutralizedFactor), not the raw values: a regression on raw values follows the outliers.

classmethod from_config(config)[source]#

Build validated parameters from config.kwargs.

Raises:
ValueError

If a key is unknown or a value is invalid.

lags(outputs)[source]#

Return the report lags each lagged column needs for outputs.

required_panel_columns(outputs)[source]#

Return the exact data_columns outputs read, in a stable order.

Examples

>>> FundamentalAlphaParameters().required_panel_columns(("roa_change",))
('netinc', 'assetsavg', 'reportperiod')