12 Algoritmi di Ottimizzazione del Portafoglio a Confronto: HRP, Black-Litterman, NCO e Oltre
Ogni ottimizzatore di portafoglio risponde alla stessa domanda: date le serie storiche dei prezzi di un gruppo di asset, quale frazione del capitale dovrebbe essere allocata in ciascuno? Il problema è che non esiste una risposta unica e corretta — esiste una famiglia di risposte, ognuna frutto di un'assunzione diversa su come si comportano i mercati e quanto ci si fida delle proprie stime.
Invece di puntare su un solo metodo, abbiamo costruito uno strumento che esegue dodici di essi fianco a fianco, tutti attraverso un'unica interfaccia, e permette di osservare come divergono su dati reali. È open source, scritto in Rust, e disponibile su portfolio-optimizer.marketmaker.cc. Questo articolo è la mappa: cosa crede ogni algoritmo, da dove viene la matematica, e cosa succede quando si puntano tutti e dodici sullo stesso paniere di criptovalute.
Un'interfaccia, dodici opinioni
Ogni algoritmo nel progetto espone esattamente la stessa firma di funzione:
pub fn optimize(prices: &[Vec<f64>]) -> Vec<f64>
Prezzi in ingresso, pesi in uscita. I pesi sono long-only, non negativi e sommano a 1.0. Questa uniformità è il punto centrale — significa che si può sostituire Hierarchical Risk Parity con Mean-Variance Optimization senza toccare una sola riga del codice chiamante, e si possono confrontare tutti su input identici. Ogni algoritmo vive nel proprio crate (portfolio-hrp, portfolio-mvo, portfolio-nco, …) così si può dipendere solo da quello di cui si ha bisogno.
Internamente non potrebbero essere più diversi. Esploriamo le famiglie.
Il classico: Mean-Variance Optimization (MVO)
È qui che è iniziata la moderna teoria del portafoglio — Harry Markowitz, 1952. MVO tratta l'allocazione come un'ottimizzazione vincolata: massimizzare il rendimento atteso per un dato livello di rischio. Formalmente si risolve
dove è il vettore dei rendimenti attesi, è la matrice di covarianza e è la vostra avversione al rischio. Quando gli input sono buoni, MVO è imbattibile: è, per costruzione, la frontiera efficiente.
Il problema è che gli input non sono mai buoni. I rendimenti attesi sono stimati da una storia rumorosa, e MVO è estremamente sensibile a loro — una piccola variazione in una stima può spostare l'allocazione dall'80% in un asset all'80% in un altro. I professionisti lo chiamano "massimizzazione degli errori": l'ottimizzatore riversa felicemente il capitale nell'asset il cui rendimento è stato più sovrastimato. MVO è il benchmark con cui tutti si misurano e l'ammonimento che tutti citano.
La famiglia gerarchica: HRP, HERC, GHRP, MHRP
Nel 2016 Marcos López de Prado ha proposto un'idea diversa: non invertire affatto la matrice di covarianza. Hierarchical Risk Parity (HRP) aggira l'instabilità di MVO non risolvendo mai direttamente il problema di ottimizzazione. Funziona in tre fasi:
- Clustering ad albero — converte la matrice di correlazione in una metrica di distanza, , e costruisce una gerarchia di asset in modo che asset simili si trovino sullo stesso ramo.
- Quasi-diagonalizzazione — riordina la matrice di covarianza in modo che gli asset correlati siano adiacenti, concentrando i valori grandi lungo la diagonale.
- Bisezione ricorsiva — divide l'albero dall'alto verso il basso, allocando il capitale tra le due metà in proporzione inversa alla loro varianza.
Il risultato è un portafoglio che rispetta la struttura del mercato — gli asset correlati competono tra loro per il peso, non con tutto il resto in una volta. HRP è notevolmente più stabile fuori campione rispetto a MVO proprio perché non inverte mai una matrice mal condizionata.
Il progetto include quattro membri di questa famiglia:
- HRP — l'algoritmo originale di López de Prado.
- HERC (Hierarchical Equal Risk Contribution) — sostituisce la divisione per varianza inversa con una regola di contributo al rischio uguale ad ogni nodo, in modo che ogni cluster contribuisca equamente al rischio totale.
- GHRP (Generalized HRP) — una generalizzazione parametrizzata che consente di regolare i passi di clustering e allocazione.
- MHRP (Modified HRP) — una variante che adatta la ponderazione della bisezione per distribuzioni di rendimento con code più pesanti.
Sono cugini stretti, ma su dati reali divergono in modo significativo — ed è esattamente per questo che avere tutti e quattro è utile.
Incorporare una visione: Black-Litterman
Il modello Black-Litterman (Goldman Sachs, anni '90) è stato costruito per risolvere il difetto più pratico di MVO: costringe a fornire rendimenti attesi per ogni asset, anche quelli su cui non si ha alcuna opinione. Black-Litterman invece parte da un equilibrio di mercato neutrale implicito e consente di integrare le proprie opinioni, ponderate per il grado di confidenza.
Qui è il rendimento di equilibrio, e codificano le vostre opinioni ("l'asset A sovraperformerà l'asset B del 2%") e è l'incertezza di quelle opinioni. Quando non si hanno opinioni, collassa al portafoglio di mercato; quando si è certi, inclina fortemente verso le proprie scommesse. È il più consapevole delle opinioni dei dodici.
L'ibrido: Nested Clustered Optimization (NCO)
NCO, anch'esso di López de Prado, è un matrimonio intelligente dei due mondi precedenti. Raggruppa gli asset come HRP, poi esegue una piccola Mean-Variance Optimization ben condizionata all'interno di ogni cluster e di nuovo tra i cluster. Invertendo solo piccole sotto-matrici stabili, NCO cattura l'ottimalità di MVO dove è sicuro usarlo, evitando l'instabilità di invertire un'unica gigantesca matrice di covarianza. È spesso il meglio di entrambi i comportamenti.
Il resto della formazione
- Entropy Pooling (Meucci) — un framework probabilistico che trova la distribuzione più vicina al proprio prior (per entropia relativa) soddisfacendo un insieme di opinioni come vincoli. Elegante quando si vuole esprimere incertezza piuttosto che previsioni puntuali.
- OLPS (Online Portfolio Selection) — una famiglia di strategie sequenziali (portafogli universali, follow-the-winner, mean-reversion) che ribilanciano all'arrivo di nuovi prezzi, con limiti di rimpianto dimostrabili. L'unico metodo genuinamente online nell'insieme.
- RBA (Robust Bayesian Allocation) — avvolge l'allocazione in un layer di shrinkage bayesiano, avvicinando le stime rumorose a un prior ragionevole in modo che un singolo mese anomalo non possa dominare i pesi.
- TIC (Theory-Implied Correlation) — sostituisce la matrice di correlazione campionaria grezza con una denoisata rispetto a una struttura teorica (spesso una tassonomia economica), che può migliorare notevolmente i metodi gerarchici che si alimentano di correlazioni.
- Pipeline — il nostro algoritmo composito "di casa": una struttura HRP con un overlay long/short opzionale e un vincolo CVaR (rischio di coda). Attraverso il punto di ingresso
optimize()long-only uniforme si comporta come HRP; il suo meccanismo long/short e di rischio di coda si attiva quando viene guidato con segnali espliciti. Lo analizziamo in dettaglio in un approfondimento dedicato: Dentro il Nostro Algoritmo di Casa: HRP + Long/Short + CVaR con Hull-White.
Cosa succede quando si fanno gareggiare tutti e dodici
Ecco la parte divertente. Abbiamo puntato tutti e dodici su un paniere deliberatamente misto — tre forti vincitori (ZEC, Tether Gold, 1000RATS) e tre pesanti perdenti (FLOW, KAVA, LINEA) — nel periodo da settembre 2025 a febbraio 2026, e abbiamo lasciato che ciascuno allocasse.
| Algoritmo | Rendimento annualizzato | Sharpe |
|---|---|---|
| RBA | +149% | — |
| MVO | +74% | 2.52 |
| Entropy Pooling | +57% | 1.93 |
| NCO | +44% | — |
| HERC | +30% | — |
| Black-Litterman | +7% | — |
| OLPS | −74% | — |
| MHRP | −78% | — |
| GHRP | −95% | — |
| HRP / Pipeline | −103% | −2.45 |
| TIC | −131% | — |
Una doverosa avvertenza prima di trarre qualsiasi conclusione: questi numeri provengono da un paniere su una finestra temporale, e il paniere è stato costruito appositamente per contenere vincitori e perdenti estremi. Non si tratta di un'affermazione sulle performance e assolutamente non è un consiglio — è una dimostrazione di divergenza comportamentale. Eseguitelo sui vostri asset e la classifica si riordinerà completamente.
Ma la forma del risultato è la lezione. I metodi orientati al rendimento — MVO, RBA, Entropy Pooling, NCO — hanno concentrato il capitale sui vincitori e ottenuto forti rendimenti positivi. I metodi di pura risk parity — HRP, TIC, MHRP, GHRP — hanno distribuito il peso in modo uniforme per la diversificazione, il che significava detenere anche i perdenti, e sono andati in negativo. Nessun comportamento è "sbagliato". La risk parity è costruita per sopravvivere quando non si riesce a distinguere i vincitori dai perdenti in anticipo; su un paniere dove il futuro era costruito per essere conoscibile, paga il prezzo della propria umiltà. Quella tensione — concentrazione versus diversificazione, convinzione versus robustezza — è l'intero settore in una sola tabella.
Open source e live
Il tutto è aperto: dodici crate Rust con algoritmi come sottomoduli git, un backend HTTP Axum che li distribuisce tutti e un frontend Next.js con un grafico interattivo della frontiera efficiente e una tabella di confronto fianco a fianco. È possibile:
- provarlo live su portfolio-optimizer.marketmaker.cc — scegliere asset, un intervallo di date e un algoritmo, e osservare l'aggiornamento dei pesi e della frontiera;
- aprire la scheda Compare Methods per eseguire tutti e dodici su prezzi identici contemporaneamente;
- dipendere da un singolo crate (
portfolio-hrp,portfolio-nco, …) nel proprio progetto Rust.
Conclusioni
- Non esiste un ottimizzatore universalmente migliore. La scelta giusta dipende da quanto ci si fida delle proprie stime di rendimento. Ci si fida → MVO/Black-Litterman. Non ci si fida → HRP e affini.
- MVO è ottimale e fragile. Definisce la frontiera efficiente ma massimizza l'errore di stima. Trattare i suoi pesi con sospetto a meno che gli input non siano genuinamente affidabili.
- I metodi gerarchici scambiano le performance di picco con la stabilità. Raramente dominano un singolo backtest ma raramente crollano — ed è questo che conta davvero quando il futuro è ignoto.
- Un'interfaccia uniforme è un superpotere. Una volta che ogni algoritmo è
prezzi -> pesi, confrontarli onestamente non costa nulla e passare da uno all'altro è gratuito.
Il modo migliore per capire dodici algoritmi è osservarli mentre discutono. Andate a eseguire il confronto sugli asset che vi interessano davvero.
Riferimenti
- Markowitz, H. (1952). Portfolio Selection. The Journal of Finance.
- López de Prado, M. (2016). Building Diversified Portfolios that Outperform Out of Sample. The Journal of Portfolio Management.
- López de Prado, M. (2020). Machine Learning for Asset Managers. Cambridge University Press.
- Black, F., & Litterman, R. (1992). Global Portfolio Optimization. Financial Analysts Journal.
- Meucci, A. (2008). Fully Flexible Views: Theory and Practice. Risk.
- Marketmaker.cc: marketmaker.cc
Citazione
@article{soloviov2026portfoliooptimization,
author = {Soloviov, Eugen and Zhuravleva, Marina and Kiselev, Kirill},
title = {12 Portfolio Optimization Algorithms, Compared: HRP, Black-Litterman, NCO and Beyond},
year = {2026},
url = {https://marketmaker.cc/it/blog/post/portfolio-optimization-algorithms-compared},
description = {Una panoramica di dodici algoritmi di allocazione del portafoglio — MVO, la famiglia gerarchica (HRP, HERC, GHRP, MHRP), Black-Litterman, NCO, Entropy Pooling, OLPS, RBA, TIC e una pipeline composita — dietro un'unica interfaccia Rust, con un confronto onesto fianco a fianco su un paniere misto di criptovalute.}
}
Autori
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.
Financial mathematics
Fifth-year student at Bauman Moscow State Technical University (Automatic Control Systems), specializing in financial mathematics. Background in calibrating stochastic-volatility (Heston) and local-volatility (Dupire) models, fair pricing of options including exotics via both Monte-Carlo and analytic formulas, hedging-error reduction, and exposure to LSV models.
Portfolio optimization
Fourth-year student at the Faculty of Mechanics and Mathematics, Novosibirsk State University (NSU); thesis on Heston-model calibration and delta-hedging within the same model. Works on portfolio optimization.