Covariance Estimator#
A covariance estimator estimates the covariance matrix of the assets.
It follows the same API as scikit-learn’s estimator: the fit method takes X as the
assets returns and stores the covariance in its covariance_ attribute.
X can be any array-like structure (numpy array, pandas DataFrame, etc.)
covariance_ is expressed in the periodicity of X (daily returns give a daily
covariance) and is consumed as is by the optimizers, without annualization (see
Periodicity Convention).
- Available estimators are:
For online learning and streaming workflows, EWCovariance and
RegimeAdjustedEWCovariance support incremental updates with
partial_fit. They also support NaN-aware updates with active_mask, which
helps distinguish assets that belong to the universe but have missing returns,
(e.g. holidays) or assets outside the universe (e.g. during pre-listing or
post-delisting periods).
See Online Learning for the full online workflow, including covariance
forecast evaluation and online hyper-parameter tuning.
See Missing Data and Changing Universes for the full convention
on NaNs, universe membership, estimator warmup and investability.
Example:
from skfolio.datasets import load_sp500_dataset
from skfolio.moments import EmpiricalCovariance
from skfolio.preprocessing import prices_to_returns
prices = load_sp500_dataset()
X = prices_to_returns(prices)
model = EmpiricalCovariance()
model.fit(X)
print(model.covariance_)