Convert noisy stock rankings into a diversified, low-turnover portfolio. The validated v4 policy uses the model for stock selection and equal weights for sizing; raw model scores are not treated as expected returns.
sparse_rank.pyselects a limited number of highly ranked securities with sector constraints.hold_zone.pyretains existing names until they cross a wider exit boundary, protecting young positions for a minimum holding period.active_tilts.pysupports bounded tilts but these are disabled in frozen v4 because they added little value in development.factor_covariance.pyandrisk_model.pyestimate shrunk covariance and factor risk.optimizer.pycontains the legacy CVaR-aware optimizer.sleeve_allocator.pycombines directional, pair, and cash sleeves when their activation rules permit it. The pair sleeve currently has zero weight.
- 40 holdings.
- 70% invested, 30% cash.
- Equal weight among selected names.
- Rank-200 exit boundary.
- 26-week minimum holding period.
- 1% minimum optional trade size.
- Maximum 25% of selected names per sector.
- No bounded active tilts and no pair sleeve.
The frozen transparent 120-name universe test was fully invested and beat sector-matched random subsets, but it trailed the full eligible equal-weight universe by 6.57 annualized percentage points and raised weekly turnover to 28.11%. It failed four of five gates and remains inactive.
| Result | CAGR | Sharpe | Volatility | Max drawdown | Weekly turnover |
|---|---|---|---|---|---|
| V4 development | 12.19% | 0.71 | 18.67% | -27.40% | 4.94% |
| V4 public confirmation | 11.34% | 1.11 | 10.19% | -5.73% | 5.43% |
Development turnover fell from 96.9% in sparse v3 to 4.94% in v4. Equal weighting beat inverse volatility and factor-minimum-variance sizing by net Sharpe on the same development selections. However, the public confirmation portfolio did not statistically distinguish itself from the exposure-matched SPY benchmark.
Sharpe is an evaluation metric, not the sole optimization objective. A higher historical Sharpe can result from cash exposure, volatility suppression, or overfitting. Every Sharpe comparison must therefore report exposure, costs, drawdown, benchmark, sample dates, and shuffled controls.
- Equal weight is robust but ignores forecast confidence and heterogeneous risk.
- The 26-week protection rule can retain deteriorating names.
- Current factor risk uses sector proxies rather than a full commercial factor model.
- Medium-term universe characteristics were negatively aligned with the five-session target. A future selector needs a slower target and monthly or quarterly entry/exit bands.
- Test volatility targeting and crisis defenses only under a newly frozen contract.
- Do not alter v4 based on the observed 2024 through 2025 Q1 confirmation period.