Quantify Investment research that keeps its history

Hierarchical Risk Parity (capped)

methodology/hrp@3

Allocate across a fixed multi-asset ETF universe using correlation-based hierarchical clustering, subject to a per-asset ceiling that prevents a near-zero-variance instrument from absorbing the portfolio.

What has been concluded about this

finding/declared-rules-do-not-execute@1 concluded invalidates results of

A methodology's `rules` and `universe_filters` are declared, merged, and hashed into its identity, but no pipeline step evaluates them. They have zero references in the executor. A reader seeing rules: - id: concentration_cap expr: max_asset_weight <= 0.25 reasonably concludes the constraint is enforced by that rule. It is not. In hrp@3 the constraint happens to hold because `contract.weight_bounds.max` is also 0.25 — the rule is decorative, and the two could disagree silently. This inverts the defect class the project has found repeatedly. The usual pattern is a hidden choice that takes effect without being declared. Here a declared rule appears to take effect and does not, which is arguably worse: declaring it creates the belief that it is checked. Surfaced by adding a second methodology family. xsmom@1 declares `has_full_formation_history` and a `min_history` rule; neither runs, and the history requirement is enforced only incidentally by an ExecutionError inside compute_momentum.

On this version: Declares concentration_cap <= 0.25, which is satisfied only because contract.weight_bounds independently enforces the same number.

finding/hrp-degenerates-to-cash-proxy@1 concluded motivated

Hierarchical risk parity degenerates into a cash proxy when the universe contains a near-zero-variance instrument and no per-asset ceiling is imposed. Recursive bisection allocates inverse-variance, so an instrument whose variance approaches zero absorbs an unbounded share of the portfolio. This is a property of the method, not an implementation error, and the source paper does not address it because it demonstrates HRP on assets of comparable risk.

On this version: Created in response, imposing a 25% per-asset ceiling — the smallest change that makes the allocation describe the methodology rather than describing BIL.

finding/joined-panel-inherits-widest-calendar@1 concluded invalidates results of

A price panel joined across instruments with different trading calendars inherits the union of their sessions. Forward-filling a five-session instrument onto a seven-day index manufactures zero-return observations that are not market data — deflating realized volatility and mis-scaling any annualization that assumes a session count the data does not have.

On this version: Annualized 1.3664% -> 2.2892% and volatility 3.1879% -> 4.0939% once weekend padding was removed; a further correction to 2.2094% once NYSE holidays were excluded.

Questions asked about this

InvestigationOutcomeTrialsQuestion
investigation/cost-model-vs-realized-spreads@1 inconclusive 0 Is the flat 10bps transaction cost in protocol/standard@1 an adequate stand-in for realized costs across this universe, or does it...
investigation/declared-rules-are-inert@1 Finding 0 Do the `rules` and `universe_filters` a methodology declares actually constrain what the executor does, or are they documentation that...
investigation/hrp-sharpe-implausible@1 Finding 4 Why does methodology/hrp@1 report a Sharpe ratio of 6.59 on a diversified multi-asset universe, when published multi-asset risk-parity...
investigation/regime-features-leak-future-state@1 Open 0 Do any of the ensemble regime features derive, directly or through a rolling transform, from observations later than the point at which...
investigation/weekend-padding-in-joined-panel@1 Finding 2 Does joining equity and crypto price series into one panel introduce sessions that the equity instruments never traded, and if so does...
Investigations record 2 trials against this version; the ledger counts 0. Deflation uses the ledger count, so the deflated figures on this page are computed against the smaller number — that is, they are optimistic by exactly the trials that were spent without producing a recorded run. Reconciling the two is outstanding work, and stating the gap is the least this page can do in the meantime.

Reasoning

Claims this rests on

claim/hrp-outperforms-mvo-out-of-sample@1 Unassessed
Quasi-diagonalization of the correlation matrix followed by recursive bisection produces out-of-sample performance superior to mean-variance optimization, because it does not require inverting an ill-conditioned covariance matrix.
0 supporting · 0 qualifying · 0 contradicting

Assumptions it depends on

Methodology

lookback
504 trading_days
linkage method
single
correlation distance
sqrt_half_one_minus_rho
covariance estimator
sample
max turnover
0.25 fraction_of_notional
rebalance cadence
21B
weight bounds
[0.0, 0.25]
gross leverage max
1.0
universe
SPY, SH, TLT, TBT, LQD, DBC, GLD, HYG, BIL
content hash
20238973e509efc2bc5aa03be9e8dd6d…

Pipeline

ordered — sequence carries meaning: estimate_correlation → cluster_assets → quasi_diagonalize → recursive_bisection → apply_bounds → apply_turnover_cap
fallback chain: inverse_volatility → equal_weight

Assumptions

  • Close-to-close execution at the next session's price.
  • Correlations estimated over the trailing window are informative for the next rebalance.
  • No borrow constraints or short availability limits (the universe is long-only ETFs).
  • A 25% ceiling is binding often enough to diversify without overriding the method.

Limitations

  • Long-only; expresses bearish views solely through inverse ETFs already in the universe.
  • No regime conditioning — allocation responds to correlation structure alone.
  • Estimated on daily Adj Close, which is restated over time by the data vendor.
  • Ignores capacity and market impact.
  • The 504-day lookback needs two years of history before the first allocation.
  • The per-asset ceiling is an imposed constraint, not part of Lopez de Prado's published method; results are therefore not a replication of that paper.

Grounded in

doi:10.3905/jpm.2016.42.4.59
Building Diversified Portfolios That Outperform Out of Sample
Quasi-diagonalization of the correlation matrix followed by recursive bisection produces out-of-sample performance superior to mean-variance optimization, because it does not require inverting an ill-conditioned covariance matrix.

History

3 versions, 2 comparability walls

not comparable not comparable @1 @2 @3 · latest
BoundaryBlocking difference
@1 → @2 rebalance frequency 5B -> 21B why
@2 → @3 weight bound max 1.0 -> 0.25 why
VersionWhy it existsComparable to this one?
@1 Initial publication. Not comparable
@2 Erratum 2026-07-30-01 established that v1's published performance was computed without an execution lag or transaction costs. Correcting those revealed that v1's 5-business-day rebalance carries turnover the... Not comparable
@3 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...