Not comparable
1 contract difference prevents these figures from being read against each other.
| Field | 2 | 3 | Why it matters |
|---|---|---|---|
| weight bound max | 1.0 | 0.25 | The earlier version could take positions this one cannot (or vice versa), so the two describe different strategies rather than the same strategy tuned differently. |
| Field | 2 | 3 |
|---|---|---|
| assumptions | ['A 21-business-day rebalance is frequent enough to track... | ['A 25% ceiling is binding often enough to diversify without... |
| assumptions_ref | ['assumption/adjusted-close-is-restated@1',... | ['assumption/adjusted-close-is-restated@1',... |
| claims_ref | ['claim/hrp-diversifies-without-constraints@1',... | ['claim/hrp-outperforms-mvo-out-of-sample@1'] |
| contract | {'universe': ['SPY', 'SH', 'TLT', 'TBT', 'LQD', 'DBC', 'GLD',... | {'universe': ['SPY', 'SH', 'TLT', 'TBT', 'LQD', 'DBC', 'GLD',... |
| limitations | ['Estimated on daily Adj Close, which is restated over time by the... | ['Estimated on daily Adj Close, which is restated over time by the... |
| objective | Allocate across a fixed multi-asset ETF universe using... | Allocate across a fixed multi-asset ETF universe using... |
| params | {'correlation_distance': {'value': 'sqrt_half_one_minus_rho',... | {'correlation_distance': {'value': 'sqrt_half_one_minus_rho',... |
| rules | [{'id': 'min_history', 'enforced_by': 'params.lookback',... | [{'id': 'concentration_cap', 'enforced_by':... |
These changed without changing what the methodology promises its consumers.
| ✕ | Versions are directly comparable | 1 blocking contract difference(s) |
| ✕ | Performance classes are declared | no performance_class attached |
| ✕ | Publication permits this surface | no publication decision recorded |
| ✓ | Historical and forward series would be separated |
A performance visual is itself a claim. It renders only when every condition holds — otherwise the chart would assert something the artifacts do not support.
Evaluation under protocol/standard@1 flagged hrp@1 and hrp@2 as degenerate: BIL, the cash proxy, took 99.6% of the portfolio on average, effective breadth was 1.01 assets, and the reported Sharpe of 6.59 was cash return divided by cash volatility rather than risk-adjusted performance. This is inherent to HRP, not an implementation error. Recursive bisection allocates inverse-variance, so an instrument with near-zero variance dominates any universe it is in. Lopez de Prado (2016) demonstrates HRP on a universe of comparable-risk assets and does not address a cash proxy. v3 imposes a 25% per-asset ceiling via the output contract, which is the smallest change that makes the allocation describe the methodology rather than describing BIL. The ceiling is applied by the existing apply_bounds step, which iterates clip-and-renormalize to a fixed point. Comparability: this changes weight_bounds in the contract, so results published against v1 and v2 describe a different strategy and must not be linked to v3's.