skfolio.prior.EmpiricalPrior#

class skfolio.prior.EmpiricalPrior(mu_estimator=None, covariance_estimator=None, is_log_normal=False, investment_horizon=None)[source]#

Empirical Prior estimator.

The Empirical Prior estimates the PriorModel by fitting a mu_estimator and a covariance_estimator separately.

Parameters:
mu_estimatorBaseMu, optional

The assets expected returns estimator. The default (None) is to use EmpiricalMu.

covariance_estimatorBaseCovariance , optional

The assets covariance matrix estimator. The default (None) is to use EmpiricalCovariance.

is_log_normalbool, default=False

If this is set to True, the moments are estimated on the logarithmic returns as opposed to the linear returns. Then the moments estimations of the logarithmic returns are projected to the investment horizon and transformed to obtain the moments estimation of the linear returns at the investment horizon. If True, investment_horizon must be provided. The input X must be linear returns. They will be converted into logarithmic returns only for the moments estimation.

See also

data preparation

investment_horizonfloat, optional

The investment horizon used for the moments estimation of the linear returns when is_log_normal is True.

Attributes:
prior_model_PriorModel

The assets PriorModel.

mu_estimator_BaseMu

Fitted mu_estimator.

covariance_estimator_BaseCovariance

Fitted covariance_estimator.

n_features_in_int

Number of assets seen during fit.

feature_names_in_ndarray of shape (n_features_in_,)

Names of features seen during fit. Defined only when X has feature names that are all strings.

References

[1]

“Linear vs. Compounded Returns - Common Pitfalls in Portfolio Management”. GARP Risk Professional. Attilio Meucci (2010).

Methods

fit(X[, y])

Fit the Empirical Prior estimator.

get_metadata_routing()

Get metadata routing of this object.

get_params([deep])

Get parameters for this estimator.

set_params(**params)

Set the parameters of this estimator.

fit(X, y=None, **fit_params)[source]#

Fit the Empirical Prior estimator.

Parameters:
Xarray-like of shape (n_observations, n_assets)

Price returns of the assets.

yIgnored

Not used, present for API consistency by convention.

**fit_paramsdict

Parameters to pass to the underlying estimators. Only available if enable_metadata_routing=True, which can be set by using sklearn.set_config(enable_metadata_routing=True). See Metadata Routing User Guide for more details.

Returns:
selfEmpiricalPrior

Fitted estimator.

get_metadata_routing()[source]#

Get metadata routing of this object.

Please check User Guide on how the routing mechanism works.

Returns:
routingMetadataRequest

A MetadataRequest encapsulating routing information.

get_params(deep=True)#

Get parameters for this estimator.

Parameters:
deepbool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns:
paramsdict

Parameter names mapped to their values.

set_params(**params)#

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters:
**paramsdict

Estimator parameters.

Returns:
selfestimator instance

Estimator instance.