skfolio.uncertainty_set.EmpiricalMuUncertaintySet#

class skfolio.uncertainty_set.EmpiricalMuUncertaintySet(prior_estimator=None, confidence_level=0.95, diagonal=True)[source]#

Empirical Mu Uncertainty Set.

Compute the expected returns ellipsoidal uncertainty set [1]:

\[U_{\mu}=\left\{\mu\,|\left(\mu-\hat{\mu}\right)S^{-1}\left(\mu-\hat{\mu}\right)^{T}\leq\kappa^{2}\right\}\]

Under the assumption that \(\Sigma\) is given, the distribution of the sample estimator \(\hat{\mu}\) based on an i.i.d. sample \(R_{t}\sim N(\mu, \Sigma), t=1,...,T\) is given by \(\hat{\mu}\sim N(\mu, \frac{1}{T}\Sigma)\).

The size of the ellipsoid \(\kappa\) (confidence region), is computed using:

\[\kappa^2 = \chi^2_{n\_assets} (\beta)\]

with \(\chi^2_{n\_assets}(\beta)\) the inverse cumulative distribution function of the chi-squared distribution with n_assets degrees of freedom at the \(\beta\) confidence level.

The Shape of the ellipsoid \(S\) is computed using:

\[S = \frac{1}{T}\Sigma\]

with the option to force the non-diagonal elements of the covariance matrix to zero.

Parameters:
prior_estimatorBasePrior, optional

The prior estimator used to estimate the assets covariance matrix. The default (None) is to use EmpiricalPrior.

confidence_levelfloat , default=0.95

Confidence level \(\beta\) of the inverse cumulative distribution function of the chi-squared distribution. The default value is 0.95.

diagonalbool, default=True

If this is set to True, the non-diagonal elements of the covariance matrix are set to zero.

Attributes:
uncertainty_set_UncertaintySet

Mu Uncertainty set UncertaintySet.

prior_estimator_BasePrior

Fitted prior_estimator.

References

[1]

“Robustness properties of mean-variance portfolios”, Optimization: A Journal of Mathematical Programming and Operations Research, Schöttle & Werner (2009).

Methods

fit(X[, y])

Fit the Empirical Mu Uncertainty set 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 Mu Uncertainty set estimator.

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

Price returns of the assets.

yarray-like of shape (n_observations, n_factors), optional

Price returns of factors. The default is None.

**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:
selfEmpiricalMuUncertaintySet

Fitted estimator.

get_metadata_routing()#

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.