skfolio.uncertainty_set.BootstrapMuUncertaintySet#
- class skfolio.uncertainty_set.BootstrapMuUncertaintySet(prior_estimator=None, confidence_level=0.95, diagonal=True, n_bootstrap_samples=1000, block_size=None, seed=None)[source]#
Bootstrap Mu Uncertainty set.
Compute the expected returns ellipsoidal uncertainty set using stationary bootstrap:
\[U_{\mu} = \left\{ \mu : (\mu - \hat{\mu})^\top S^{-1}(\mu - \hat{\mu}) \le \kappa^2 \right\}.\]The radius of the ellipsoid \(\kappa\) (confidence region) is computed using:
\[\kappa^2 = \chi^2_{n_{\text{assets}}}(\beta)\]with \(\chi^2_{n_{\text{assets}}}(\beta)\) the inverse cumulative distribution function of the chi-squared distribution with \(n_{\text{assets}}\) degrees of freedom at the \(\beta\) confidence level.
The shape matrix \(S\) of the ellipsoid is computed using stationary bootstrap, with the option to retain only its diagonal. The estimator stores the square-root factor as the linear geometry map:math:
L = S^{1/2}.- Parameters:
- prior_estimatorBasePrior, optional
The prior estimator used to estimate the assets return distribution. 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
True, only the diagonal of the ellipsoid shape matrix is retained.- n_bootstrap_samplesint, default=1000
Number of bootstrap samples to generate. The default value is
1000.- block_sizefloat, optional
Bootstrap block size. The default (
None) is to estimate the optimal block size using Politis & White algorithm for all individual assets.- seedint, optional
Random seed used to initialize the pseudo-random number generator.
- Attributes:
- uncertainty_set_UncertaintySet
Mu Uncertainty set
UncertaintySet.- prior_estimator_BasePrior
Fitted
prior_estimator.
Methods
fit(X[, y])Fit the Bootstrap 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.
References
[1]“Portfolio Optimization: Theory and Application”, Chapter 14, Daniel P. Palomar (2025)
[2]“Robustness properties of mean-variance portfolios”, Optimization: A Journal of Mathematical Programming and Operations Research, Schöttle & Werner (2009).
[3]“Automatic Block-Length Selection for the Dependent Bootstrap”, Politis & White (2004).
[4]“Correction to Automatic Block-Length Selection for the Dependent Bootstrap”, Patton, Politis & White (2009).
- fit(X, y=None, **fit_params)[source]#
Fit the Bootstrap 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:
- selfBootstrapMuUncertaintySet
Fitted estimator.
- get_metadata_routing()#
Get metadata routing of this object.
Please check User Guide on how the routing mechanism works.
- Returns:
- routingMetadataRequest
A
MetadataRequestencapsulating 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.