precise is the natural home for online covariance estimators/skaters, so flagging one that currently lives elsewhere and should migrate here eventually.
What
A downside semicovariance online estimator: an EWMA of the lower-partial-moment cross-products
S_t = (1-α) S_{t-1} + α · min(x_t - τ, 0) min(x_t - τ, 0)ᵀ
(threshold τ, e.g. 0 or a rolling mean), kept PSD with a floored diagonal. It captures how assets co-move on the downside — the lower-tail dependence a plain (full) covariance averages away — and is a drop-in covariance forecaster: same partial_fit / covariance_ interface as the other estimators.
Why it belongs in precise
- It's a general online covariance-forecasting primitive, not specific to any one allocator — exactly the kind of thing
precise collects (cf. the EWMA / shrinkage / factor skaters).
- Downstream consumers can then pull it via a covariance hook rather than re-implementing it. In particular
microprediction/allocation uses it to drive a tail-consistent allocation (the race responds to downside co-movement); it would consume a precise skater instead of shipping its own.
Current location / reference
Implemented today as DownsideSemicovariance in microprediction/allocation (allocation/moments.py), mirroring the EwmaCovariance interface. See allocation PR #11. Happy to port it here as a skater (or hand it off) when there's a good slot.
No urgency — parking it so it isn't lost.
preciseis the natural home for online covariance estimators/skaters, so flagging one that currently lives elsewhere and should migrate here eventually.What
A downside semicovariance online estimator: an EWMA of the lower-partial-moment cross-products
(threshold
τ, e.g. 0 or a rolling mean), kept PSD with a floored diagonal. It captures how assets co-move on the downside — the lower-tail dependence a plain (full) covariance averages away — and is a drop-in covariance forecaster: samepartial_fit/covariance_interface as the other estimators.Why it belongs in
preciseprecisecollects (cf. the EWMA / shrinkage / factor skaters).microprediction/allocationuses it to drive a tail-consistent allocation (the race responds to downside co-movement); it would consume apreciseskater instead of shipping its own.Current location / reference
Implemented today as
DownsideSemicovarianceinmicroprediction/allocation(allocation/moments.py), mirroring theEwmaCovarianceinterface. See allocation PR #11. Happy to port it here as a skater (or hand it off) when there's a good slot.No urgency — parking it so it isn't lost.