Live covariance memory
Live covariance memory is one of 21 measurements this engine publishes in full. It is regenerated from a real run rather than transcribed, and it is shown here with its own claim boundary so the number and its limits arrive together.
The measurement
- Schema
- canli.alphac-live-covariance-memory.v1
Correction 2026 08 21. An earlier revision of this analysis sampled only 21 days and up, found every result in a 20-25 day band, and concluded the parameter was 'nearly inert' on crypto with cov_window_bars as the only lever. That was wrong and is withdrawn. The band is the window, not the parameter: below 30 days the halflife is honoured almost exactly (3d -> 3.0d, 7d -> 7.0d, 14d -> 14.0d). Reading the shape of a sampled range as a property of the mechanism is the error, and the ladder now spans both sides of the window so it cannot recur.
Ledoit wolf intensity mismatch
- Site
- src/alphaforge/portfolio/strategy.py, the ledoit_wolf_cc call
- Status
- OPEN — flagged, not fixed; no study has measured it
Description. ledoit_wolf_cc computes its shrinkage intensity delta* with T = the number of rows passed, and production passes the full unweighted 720-row window while the matrix being shrunk is the EWMA. That approximation is documented and was conservative while the EWMA's effective sample EXCEEDED 720. It stops being conservative at a short halflife.
Effective sample by request
Crypto H1
9 further fields. Read them in the artifact.
Equity D1
9 further fields. Read them in the artifact.
Production
- Cov min periods
- 240
- Cov window bars
- 720
- Estimator
- alphaforge.portfolio.covariance.ewma_cov
- Legacy cov halflife bars
- 720
Sleeves
Crypto H1
- Bars per day
- 24
| Effective sample rows | Halflife bars | Halflife days | Lambda | Mean weight age days | Median weight age days | Seed bars | Seed block weight | Truncation absorbed fraction | Untruncated equivalent halflife days | Window bars | Window days |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 207.752395 | 72 | 3 | 0.990419 | 4.313899 | 2.958333 | 240 | 0.009843 | 0.013889 | 2.958333 | 720 | 30 |
| 475.510028 | 168 | 7 | 0.995883 | 9.374344 | 6.958333 | 240 | 0.138011 | 0.005952 | 6.958333 | 720 | 30 |
| 682.984972 | 336 | 14 | 0.997939 | 14.530967 | 13.958333 | 240 | 0.371499 | 0.002976 | 13.958333 | 720 | 30 |
| 618.523036 | 504 | 21 | 0.998626 | 17.203018 | 20.291667 | 240 | 0.516779 | 0.033730 | 20.291667 | 720 | 30 |
| 514.437641 | 720 | 30 | 0.999038 | 19.144594 | 22.041667 | 240 | 0.629961 | 0.265278 | 22.041667 | 720 | 30 |
| 361.684525 | 1512 | 63 | 0.999542 | 21.944006 | 23.750000 | 240 | 0.802481 | 0.623016 | 23.750000 | 720 | 30 |
| 297.061240 | 3024 | 126 | 0.999771 | 23.397264 | 24.416667 | 240 | 0.895813 | 0.806217 | 24.416667 | 720 | 30 |
| 267.485148 | 6048 | 252 | 0.999885 | 24.171371 | 24.708333 | 240 | 0.946474 | 0.901951 | 24.708333 | 720 | 30 |
| 249.375089 | 17280 | 720 | 0.999960 | 24.692506 | 24.875000 | 240 | 0.980930 | 0.965451 | 24.875000 | 720 | 30 |
Legacy setting
13 further fields. Read them in the artifact.
Equity D1
- Bars per day
- 1
| Effective sample rows | Halflife bars | Halflife days | Lambda | Mean weight age days | Median weight age days | Seed bars | Seed block weight | Truncation absorbed fraction | Untruncated equivalent halflife days | Window bars | Window days |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 8.694644 | 3 | 3 | 0.793701 | 3.847322 | 3 | 240 | 6.842e-49 | 0 | 3 | 720 | 720 |
| 20.214231 | 7 | 7 | 0.905724 | 9.607116 | 7 | 240 | 2.280e-21 | 0 | 7 | 720 | 720 |
| 40.403713 | 14 | 14 | 0.951695 | 19.701856 | 13 | 240 | 4.775e-11 | 0.071429 | 13 | 720 | 720 |
| 60.598693 | 21 | 21 | 0.967532 | 29.799358 | 20 | 240 | 1.316e-7 | 0.047619 | 20 | 720 | 720 |
| 86.565553 | 30 | 30 | 0.977160 | 42.783947 | 29 | 240 | 1.526e-5 | 0.033333 | 29 | 720 | 720 |
| 181.782550 | 63 | 63 | 0.989058 | 90.538775 | 62 | 240 | 0.005087 | 0.015873 | 62 | 720 | 720 |
| 362.610457 | 126 | 126 | 0.994514 | 176.873803 | 126 | 240 | 0.071321 | 0 | 126 | 720 | 720 |
| 635.172445 | 252 | 252 | 0.997253 | 298.014309 | 251 | 240 | 0.267060 | 0.003968 | 251 | 720 | 720 |
| 514.437641 | 720 | 720 | 0.999038 | 459.470256 | 529 | 240 | 0.629961 | 0.265278 | 529 | 720 | 720 |
Legacy setting
13 further fields. Read them in the artifact.
The headline. The WINDOW bounds the memory, so the halflife is faithful below it and truncated above it. On the crypto H1 sleeve the 720-bar window is 30 days: a 7-day request delivers 7.0 days and a 14-day request 14.0, while a 30-day request delivers 22.0 and a 720-day request 24.9. The legacy setting is 30 days requested against 22 days of memory. On the equity D1 sleeve the same 720-bar window is 720 SESSIONS, so the parameter is faithful across the whole practical range and only the legacy 720-day setting is truncated, to 529 days.
What this does not say. It does not say which halflife is right. It says what the estimator DOES with each one, which is the mapping a halflife decision needs and did not have. Choosing a value still requires a drawdown study run through this estimator rather than through an untruncated simulation of it.
Which lever to use for SHORT memory. Both routes reach short memory and they are not equivalent. Halflife 7 days at the production 720-bar window gives 7.0 days of memory on an effective sample of ~475 rows; shortening the window to 240 bars gives ~8 days of memory on ~107 rows. The HALFLIFE route preserves roughly four times the effective sample for comparable memory, which also keeps ledoit_wolf_cc's T=720 approximation far closer to valid. If the drawdown study's finding holds -- that shorter covariance memory reduces expected maximum drawdown -- the halflife is the instrument, and it has to be asked for BELOW the window rather than at 21 days where truncation has already started.
Why the parameter is not the memory. ewma_cov sees only cov_window_bars rows and seeds S_0 with the EQUALLY WEIGHTED sample covariance of the oldest cov_min_periods rows, decayed by lambda^k. The seed block is therefore a flat slab of old data the recursion cannot forget inside the window, and the shorter the requested halflife the smaller that slab -- but it never vanishes. The sweep that set overlay policy simulated an untruncated recursion, so its halflife ladder and this estimator's memory are different quantities.
Check it yourself
Every figure above is read from /glassbox/live_covariance_memory.json, the
artifact the engine wrote. Nothing on this page is typed by hand: the page is generated from that
file, so a figure that moves in the artifact moves here and a figure that is not in the artifact
cannot appear here at all.