Quantify Investment research that keeps its history

Hierarchical Risk Parity

methodology/hrp@1

Allocate across a fixed multi-asset ETF universe using correlation-based hierarchical clustering, avoiding the estimation error of explicit mean-variance optimization by never inverting the covariance matrix.

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 min_history; the rule does not execute.

finding/hrp-degenerates-to-cash-proxy@1 concluded invalidates results of

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: Its reported Sharpe of 6.59 was cash return divided by cash volatility. The figure is arithmetically correct and economically meaningless.

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 4 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
claim/hrp-diversifies-without-constraints@1 Unassessed
Hierarchical risk parity produces a diversified allocation without needing explicit per-asset weight constraints.
0 supporting · 0 qualifying · 0 contradicting

Assumptions it depends on

AssumptionKindChecked?
assumption/adjusted-close-is-restated@1 data test
assumption/nyse-sessions@1 market structure test
assumption/one-session-execution-lag@1 execution test
assumption/sample-covariance@1 estimation test

Methodology

lookback
252 trading_days
linkage method
single
correlation distance
sqrt_half_one_minus_rho
covariance estimator
sample
rebalance cadence
5B
weight bounds
[0.0, 1.0]
gross leverage max
1.0
universe
SPY, SH, TLT, TBT, LQD, DBC, GLD, HYG, BIL
content hash
37be258ee3b6b15bec75e2ffd3d6f56d…

Pipeline

ordered — sequence carries meaning: estimate_correlation → cluster_assets → quasi_diagonalize → recursive_bisection → apply_bounds
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).

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.

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.
@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... Not comparable