12 algoritmos de optimización de carteras, comparados: HRP, Black-Litterman, NCO y más
Todo optimizador de carteras responde a la misma pregunta: dado el historial de precios de un puñado de activos, ¿qué fracción del capital debería estar en cada uno? La trampa es que no existe una única respuesta correcta — solo una familia de respuestas, cada una producto de un supuesto distinto sobre cómo se comportan los mercados y cuánto se confía en las propias estimaciones.
Así que en lugar de apostar por un solo método, construimos una herramienta que ejecuta doce de ellos en paralelo, todos detrás de una sola interfaz, y le permite ver cómo discrepan sobre datos reales. Es de código abierto, escrita en Rust, y está en vivo en portfolio-optimizer.marketmaker.cc. Esta publicación es el mapa: en qué cree cada algoritmo, de dónde viene las matemáticas, y qué ocurre cuando se apuntan los doce a la misma cesta de cripto.
Una interfaz, doce opiniones
Cada algoritmo del proyecto expone exactamente la misma firma de función:
pub fn optimize(prices: &[Vec<f64>]) -> Vec<f64>
Precios entran, pesos salen. Los pesos son solo-largo, no negativos y suman 1,0. Esa uniformidad es todo el punto — significa que puede sustituir Hierarchical Risk Parity por Mean-Variance Optimization sin tocar una sola línea del código que lo invoca, y puede comparar todos con entradas idénticas. Cada algoritmo vive en su propio crate (portfolio-hrp, portfolio-mvo, portfolio-nco, …), de modo que puede depender solo del que necesite.
Por dentro no podrían ser más distintos. Recorramos las familias.
El clásico: Mean-Variance Optimization (MVO)
Aquí comenzó la teoría moderna de carteras — Harry Markowitz, 1952. MVO trata la asignación como una optimización restringida: maximizar el retorno esperado para un nivel de riesgo dado. Formalmente, se resuelve
donde es el vector de retornos esperados, es la matriz de covarianzas y es su aversión al riesgo. Cuando los datos de entrada son buenos, MVO es imbatible: es, por construcción, la frontera eficiente.
El problema es que los datos de entrada nunca son buenos. Los retornos esperados se estiman a partir de un historial ruidoso, y MVO es exquisitamente sensible a ellos — un cambio diminuto en una estimación puede hacer que la asignación pase de 80% en un activo a 80% en otro. Los practicantes lo llaman "maximización del error": el optimizador vuelca alegremente capital en el activo cuyo retorno fue más sobreestimado. MVO es el punto de referencia con el que todos comparan y la advertencia que todos citan.
La familia jerárquica: HRP, HERC, GHRP, MHRP
En 2016 Marcos López de Prado propuso una idea diferente: no invertir en absoluto la matriz de covarianzas. Hierarchical Risk Parity (HRP) evita la inestabilidad de MVO al no resolver nunca directamente el problema de optimización. Funciona en tres etapas:
- Agrupamiento en árbol (tree clustering) — convertir la matriz de correlaciones en una métrica de distancia, , y construir una jerarquía de activos de modo que los activos similares queden en la misma rama.
- Cuasi-diagonalización — reordenar la matriz de covarianzas para que los activos correlacionados queden adyacentes, concentrando valores grandes a lo largo de la diagonal.
- Bisección recursiva — dividir el árbol de arriba hacia abajo, asignando capital entre las dos mitades en proporción inversa a su varianza.
El resultado es una cartera que respeta la estructura del mercado — los activos correlacionados compiten entre sí por el peso, no contra todo a la vez. HRP es dramáticamente más estable fuera de muestra que MVO precisamente porque nunca invierte una matriz mal condicionada.
El proyecto incluye cuatro miembros de esta familia:
- HRP — el algoritmo original de López de Prado.
- HERC (Hierarchical Equal Risk Contribution) — sustituye la división por varianza inversa por una regla de contribución de riesgo igual en cada nodo, de modo que cada clúster contribuye por igual al riesgo total.
- GHRP (Generalized HRP) — una generalización parametrizada que permite ajustar los pasos de agrupamiento y asignación.
- MHRP (Modified HRP) — una variante que ajusta la ponderación de la bisección para distribuciones de retorno con colas más pesadas.
Son primos cercanos, pero en datos reales divergen de forma significativa — precisamente por eso es útil tener los cuatro.
Inyectando una visión: Black-Litterman
El modelo Black-Litterman (Goldman Sachs, años 90) fue construido para corregir el defecto más práctico de MVO: obliga a suministrar retornos esperados para cada activo, incluso aquellos sobre los que no se tiene opinión alguna. Black-Litterman en cambio parte de un equilibrio implícito de mercado neutral y le permite mezclar sus propias visiones, ponderadas según cuánta confianza tenga en ellas.
Aquí es el retorno de equilibrio, y codifican sus visiones ("el activo A superará al activo B en un 2%"), y es la incertidumbre de esas visiones. Cuando no tiene visiones, colapsa de nuevo a la cartera de mercado; cuando está seguro, se inclina fuertemente hacia sus apuestas. Es el más consciente de las opiniones de los doce.
El híbrido: Nested Clustered Optimization (NCO)
NCO, también de López de Prado, es una hábil combinación de los dos mundos anteriores. Agrupa activos como HRP, y luego ejecuta una Mean-Variance Optimization pequeña y bien condicionada dentro de cada clúster y de nuevo entre clústeres. Al invertir siempre solo submatrices pequeñas y estables, NCO captura la optimalidad de MVO donde es seguro usarla, evitando a la vez la inestabilidad de invertir una única matriz de covarianzas gigante. A menudo es lo mejor de ambos comportamientos.
El resto de la alineación
- Entropy Pooling (Meucci) — un marco probabilístico que encuentra la distribución más cercana a su prior (por entropía relativa) mientras satisface un conjunto de visiones como restricciones. Elegante cuando se desea expresar incertidumbre en lugar de pronósticos puntuales.
- OLPS (Online Portfolio Selection) — una familia de estrategias secuenciales (carteras universales, follow-the-winner, reversión a la media) que rebalancean a medida que llegan nuevos precios, con cotas de arrepentimiento demostrables. El único método genuinamente en línea del conjunto.
- RBA (Robust Bayesian Allocation) — envuelve la asignación en una capa de shrinkage bayesiano, atrayendo las estimaciones ruidosas hacia un prior sensato de modo que un solo mes anómalo no pueda dominar los pesos.
- TIC (Theory-Implied Correlation) — sustituye la matriz de correlación muestral bruta por una desruidada frente a una estructura teórica (a menudo una taxonomía económica), lo que puede mejorar notablemente los métodos jerárquicos que se alimentan de correlaciones.
- Pipeline — nuestro algoritmo compuesto "de la casa": una columna vertebral HRP con una superposición opcional long/short y una restricción CVaR (riesgo de cola). A través del punto de entrada uniforme
optimize()solo-largo, se comporta como HRP; su maquinaria long/short y de riesgo de cola cobra vida cuando se le impulsa con señales explícitas. Lo desglosamos por completo en un análisis dedicado: Inside Our House Algorithm: HRP + Long/Short + CVaR with Hull-White.
Qué ocurre cuando se hacen competir los doce
Aquí viene la parte divertida. Apuntamos los doce a una cesta mixta deliberada — tres ganadores fuertes (ZEC, Tether Gold, 1000RATS) y tres perdedores importantes (FLOW, KAVA, LINEA) — durante la ventana de septiembre de 2025 a febrero de 2026, y dejamos que cada uno asignara.
| Algoritmo | Retorno anualizado | 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 advertencia clara antes de sacar conclusiones: estas cifras provienen de una sola cesta durante una sola ventana, y la cesta fue amañada a propósito para contener ganadores y perdedores extremos. Esto no es una afirmación de rendimiento y en absoluto un consejo — es una demostración de divergencia de comportamiento. Ejecútelo con sus propios activos y el ranking se reordenará por completo.
Pero la forma del resultado es la lección. Los métodos que buscan retorno — MVO, RBA, Entropy Pooling, NCO — concentraron capital en los ganadores e imprimieron retornos positivos fuertes. Los métodos puros de risk parity — HRP, TIC, MHRP, GHRP — repartieron el peso de manera uniforme por el bien de la diversificación, lo que significó también mantener a los perdedores, y se volvieron negativos. Ninguno de los dos comportamientos es "incorrecto". Risk parity está diseñado para sobrevivir cuando no se puede distinguir de antemano a los ganadores de los perdedores; en una cesta cuyo futuro fue amañado para ser conocible, paga el precio de su humildad. Esa tensión — concentración versus diversificación, convicción versus robustez — es todo el campo resumido en una sola tabla.
Código abierto y en vivo
Todo el conjunto es abierto: doce crates de algoritmos en Rust como submódulos de git, un backend HTTP en Axum que los despacha todos, y un frontend en Next.js con un gráfico interactivo de frontera eficiente y una tabla comparativa lado a lado. Puede:
- probarlo en vivo en portfolio-optimizer.marketmaker.cc — elegir activos, un rango de fechas y un algoritmo, y ver actualizarse los pesos y la frontera;
- abrir la pestaña Compare Methods para ejecutar los doce a la vez sobre precios idénticos;
- depender de cualquier crate individual (
portfolio-hrp,portfolio-nco, …) en su propio proyecto en Rust.
Conclusiones
- No existe un optimizador universalmente mejor. La elección correcta depende de cuánto confíe en sus estimaciones de retorno. Si confía en ellas → MVO/Black-Litterman. Si no → HRP y afines.
- MVO es óptimo y frágil. Define la frontera eficiente pero maximiza el error de estimación. Trate sus pesos con sospecha a menos que sus datos de entrada sean genuinamente confiables.
- Los métodos jerárquicos cambian rendimiento máximo por estabilidad. Rara vez encabezan un único backtest, pero rara vez explotan tampoco — que es lo que realmente importa cuando el futuro es desconocido.
- Una interfaz uniforme es un superpoder. Una vez que cada algoritmo es
prices -> weights, compararlos honestamente no cuesta nada, y cambiar entre ellos es gratis.
La mejor forma de entender doce algoritmos es verlos discutir. Vaya y ejecute la comparación con activos que realmente le importen.
Referencias
- 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
Cita
@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/en/blog/post/portfolio-optimization-algorithms-compared},
description = {A tour of twelve portfolio allocation algorithms — MVO, the hierarchical family (HRP, HERC, GHRP, MHRP), Black-Litterman, NCO, Entropy Pooling, OLPS, RBA, TIC and a composite pipeline — behind a single Rust interface, with an honest side-by-side comparison on a mixed crypto basket.}
}
Authors
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.