skfolio.model_selection.CovarianceForecastComparison#
- class skfolio.model_selection.CovarianceForecastComparison(evaluations, names=None)[source]#
Side-by-side comparison of covariance forecast evaluations.
Aggregates multiple
CovarianceForecastEvaluationinstances and provides combined summary tables and overlay plots for comparing estimator performance.- Parameters:
- evaluationslist of CovarianceForecastEvaluation
Evaluation results to compare.
- nameslist of str or None, default=None
Override display names. When provided, must have the same length as
evaluations. WhenNone, defaults to each evaluation’sname(falling back to"Estimator 0","Estimator 1", etc. when the name is unset).
- Attributes:
- names
Methods
Cross-portfolio bias statistic distribution for all estimators.
exceedance_summary([confidence_levels])Exceedance rate summary for all estimators.
plot_calibration([diagnostics, window, title])Rolling calibration diagnostics comparison.
plot_exceedance([confidence_level, window, ...])Rolling exceedance rate comparison at a fixed confidence level.
plot_qlike_loss([window, title])Rolling portfolio QLIKE loss comparison.
summary()Consolidated summary statistics for all estimators.
Examples
>>> from skfolio.model_selection import ( ... CovarianceForecastComparison, ... online_covariance_forecast_evaluation, ... ) >>> from skfolio.moments import EWCovariance >>> >>> evaluatio_30 = online_covariance_forecast_evaluation( ... EWCovariance(half_life=30), X, warmup_size=252, ... ) >>> evaluatio_60 = online_covariance_forecast_evaluation( ... EWCovariance(half_life=60), X, warmup_size=252, ... ) >>> comparison = CovarianceForecastComparison( ... [evaluatio_30, evaluatio_60], ... names=["EWCov(30)", "EWCov(60)"], ... ) >>> comparison.summary() >>> comparison.plot_calibration()
- bias_statistic_summary()[source]#
Cross-portfolio bias statistic distribution for all estimators.
Returns a DataFrame indexed by estimator name with percentile columns and portfolio count.
- Returns:
- summaryDataFrame
- exceedance_summary(confidence_levels=(0.95, 0.99))[source]#
Exceedance rate summary for all estimators.
Returns a DataFrame with confidence levels as rows and a column-level MultiIndex
(estimator, stat)where stat isobserved_rateordeviation.- Parameters:
- confidence_levelstuple of float, default=(0.95, 0.99)
Confidence levels used to define the upper chi-squared thresholds.
- Returns:
- summaryDataFrame
- plot_calibration(diagnostics=('mahalanobis', 'diagonal', 'bias'), window=50, title=None)[source]#
Rolling calibration diagnostics comparison.
Overlays calibration diagnostics from all estimators on one figure. Each
(estimator, diagnostic)pair gets a distinct auto-assigned color.- Parameters:
- diagnosticstuple of str, default=(“mahalanobis”, “diagonal”, “bias”)
Which diagnostics to include. Valid values are
"mahalanobis","diagonal", and"bias".- windowint, default=50
Rolling window length.
- titlestr, optional
Custom figure title.
- Returns:
- figgo.Figure
- plot_exceedance(confidence_level=0.95, window=50, title=None)[source]#
Rolling exceedance rate comparison at a fixed confidence level.
Overlays exceedance rates from all estimators at a single confidence level on one figure.
- Parameters:
- confidence_levelfloat, default=0.95
Confidence level used to define the upper chi-squared threshold.
- windowint, default=50
Rolling window length.
- titlestr, optional
Custom figure title.
- Returns:
- figgo.Figure
- plot_qlike_loss(window=50, title=None)[source]#
Rolling portfolio QLIKE loss comparison.
Overlays QLIKE loss from all estimators on one figure. For evaluations with multiple portfolios, the median across portfolios is shown with a P5-P95 band.
- Parameters:
- windowint, default=50
Rolling window length.
- titlestr, optional
Custom figure title.
- Returns:
- figgo.Figure