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 useEmpiricalPrior
.- 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 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 usingsklearn.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.