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, optional
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