Markowitz nos entregó una máquina preciosa. Aliméntala con rentabilidades esperadas y una matriz de covarianzas, dale a la manivela y sale la cartera con el menor riesgo para una rentabilidad objetivo. Para la versión continua de ese problema — “mantén cualquier fracción de cada activo” — la máquina está genuinamente resuelta: es un programa cuadrático convexo, y podemos descifrarlo en tiempo polinómico antes de comer.
Entonces entra un gestor de carteras y dice: “Encantador. Pero quiero mantener exactamente 8 nombres, nunca una posición menor del 2% y solo en lotes redondos de 100 acciones”. Y la preciosa máquina convexa se atasca. Esas peticiones de aspecto inocente convierten un problema de tiempo polinómico en uno combinatorio — del tipo que, en el peor caso, es NP-difícil.
Esta lección trata de ese cambio de fase, y de la apuesta que la computación cuántica hace sobre él. Reformularemos el problema discreto de cartera como un QUBO (Quadratic Unconstrained Binary Optimization, optimización binaria cuadrática sin restricciones), veremos cómo un recocedor cuántico (D-Wave) y QAOA (modelo de puertas) atacan un QUBO y — crucialmente — mantendremos la cabeza fría sobre si algo de esto bate hoy por hoy a un buen resolutor clásico. Adelanto desde el principio: las matemáticas son reales y elegantes; la ventaja es, a día de hoy, mayormente aspiracional.
Por qué las carteras continuas son fáciles y las discretas difíciles
Before you read — take a guess
La optimización media–varianza continua (mantener cualquier fracción de cada activo) es un programa cuadrático convexo. Añadir 'mantén exactamente k nombres' ¿qué le hace a su dificultad?
Analogía. El problema continuo es hacer rodar una canica hasta el fondo de un cuenco liso: empieces donde empieces, la gravedad te desliza hasta el único punto más bajo. El problema discreto es encontrar el valle más bajo de una vasta cordillera pero pudiendo solo pisar un conjunto finito de cumbres. No hay pendiente que seguir — debes, en principio, comprobar combinaciones.
Definición — media–varianza continua. Con pesos , rentabilidades esperadas , covarianza y aversión al riesgo , Markowitz minimiza
Como es semidefinida positiva, el objetivo es convexo y la restricción es lineal. Los programas cuadráticos convexos se resuelven en tiempo polinómico (métodos de punto interior). Este es el mundo “fácil”.
Donde se rompe. Los mandatos reales añaden restricciones que no son convexas:
- Cardinalidad: mantener exactamente (o como mucho) de los nombres.
- Tamaños mínimos de lote / posición: una posición es o al menos cierto suelo (p. ej. al menos un 2% o al menos 100 acciones) — una variable “semicontinua”.
- Umbrales de entrada / lotes redondos: los pesos deben caer en una rejilla discreta.
Cada una de estas introduce una decisión sí/no por activo. Con activos hay hasta combinaciones de encendido/apagado, y la región factible ya no es una única mancha convexa — es una dispersión de islas inconexas. La ramificación y poda puede podar, pero el peor caso es exponencial. Este núcleo combinatorio es exactamente lo que QAOA y el recocido cuántico afirman atacar.
Ejemplo resuelto — la explosión. Elige los 5 mejores nombres de entre 30 por fuerza bruta: carteras — trivial. Ahora los 15 mejores de entre 100: . A mil millones de evaluaciones por segundo eso son aproximadamente 8 años de cómputo para un único reajuste. La versión continua del mismo problema de 100 activos se resuelve en milisegundos. El enemigo es la discretitud, no el tamaño.
El precipicio de la convexidad
Es tentador “simplemente redondear” la solución continua para satisfacer un límite de cardinalidad — resuelve el problema liso y luego quédate con los 8 pesos mayores. Esto es rápido pero demostrablemente subóptimo: la mejor cartera de 8 nombres frecuentemente no son los 8 mayores pesos de la solución de 30 nombres, porque descartar nombres recoloca la mezcla óptima entre los que quedan. Redondear te da una respuesta, no la respuesta.
Cuándo usarlo
Quédate en el mundo continuo convexo siempre que legítimamente puedas — si la única restricción “discreta” es blanda (una preferencia, no una regla dura), codifícala como penalización en un resolutor convexo y sigue adelante. Recurre a la maquinaria combinatoria (y solo entonces considera lo cuántico) cuando la discretitud sea una restricción de negocio dura y vinculante: un recuento fijo de nombres, un tamaño de lote regulatorio, un ticket mínimo que no se puede fraccionar.
Enuncia el cambio de fase en una línea.
Pick the right option for each blank, then check.
La optimización media–varianza es un convexo en el caso continuo, pero una restricción de cardinalidad o de lote mínimo la vuelve combinatoria y NP-difícil.
QUBO: minimizar x-transpuesta Q x sobre x binario
Before you read — take a guess
Un QUBO minimiza x^T Q x sobre x en {0,1}^n. Como x_i es binario, x_i al cuadrado es igual a x_i. ¿Qué te permite eso plegar en la diagonal de Q?
Analogía. Un QUBO es un conjunto de interruptores de luz (uno por activo, cada uno encendido o apagado) cableados entre sí de modo que cada par de interruptores tiene una recompensa o penalización por estar encendidos a la vez, y cada interruptor tiene su propia recompensa en solitario por estar encendido. Buscas la configuración de interruptores con la menor “energía” total. Ese es el modelo entero — pares más individuales, nada más.
Definición. Un QUBO es
donde es una matriz y usamos para fundir los términos lineales en la diagonal. “Sin restricciones” significa que no hay restricciones de igualdad/desigualdad aparte — toda preferencia y regla debe hornearse dentro de , normalmente como una penalización cuadrática.
Mapeando media–varianza + cardinalidad sobre un QUBO. Sea si mantenemos el activo (ponderamos por igual los nombres elegidos por simplicidad). Queremos tres cosas:
- Premiar la rentabilidad esperada — un término lineal (negativo porque minimizamos). Pliégalo en la diagonal: baja .
- Penalizar el riesgo — un término cuadrático procedente de la covarianza. En la diagonal suma varianza; fuera de la diagonal suma covarianza.
- Imponer la cardinalidad “elige exactamente ” con una penalización para un peso grande . Esta es cero cuando hay exactamente interruptores encendidos y estrictamente positiva en caso contrario.
Expandir la penalización es el truco clave:
y usando esto aporta a cada diagonal y a cada par fuera de la diagonal (el es un desplazamiento constante que no cambia qué es el mejor).
Ejemplo resuelto — un QUBO de 3 activos. Tres activos, elige exactamente . Toma aversión al riesgo , penalización y estos números (de juguete):
| Activo | Rentabilidad esperada | Varianza |
|---|---|---|
| A | 0.10 | 0.04 |
| B | 0.08 | 0.02 |
| C | 0.06 | 0.01 |
Covarianzas por pares: .
Construye término a término. Diagonal . Con , :
Fuera de la diagonal . Con :
Ahora evalúa la energía para dos selecciones candidatas (la constante es la misma para todo , así que la descartamos y comparamos energías relativas). Energía = suma de las entradas diagonales de los activos elegidos + el término fuera de la diagonal de cada par elegido.
Candidata 1 — elige A y B (), que cumple la restricción (2 nombres):
Candidata 2 — elige solo A (), que viola la restricción (1 nombre):
La cartera válida de dos nombres tiene la energía más baja (mejor), — la penalización hizo su trabajo: quedarse corto deja sin reclamar un buen trozo de las recompensas diagonales de . Para completar, los tres pares válidos:
| Selección | Energía (desplazamiento descartado) | Restricción |
|---|---|---|
| A, B | cumplida (k = 2) | |
| A, C | cumplida (k = 2) | |
| B, C | cumplida (k = 2) | |
| solo A | violada |
El óptimo aquí es A + C con — agarra las dos mejores diagonales de rentabilidad/riesgo pagando la penalización por pares más baja (su covarianza es cero). Fíjate en lo cerca que están las energías válidas: los QUBO reales tienen un paisaje escarpado donde el mejor y el segundo mejor difieren en un pelo, que es exactamente lo que hace difícil la búsqueda.
Ajustar lambda lo es todo
El peso de penalización debe ser lo bastante grande como para que violar la restricción siempre cueste más que cualquier rentabilidad que pudieras ganar haciendo trampas — pero no tan grande como para ahogar la señal de rentabilidad/riesgo en el ruido de coma flotante y aplanar el paisaje. Demasiado pequeño y el “óptimo” rompe silenciosamente tu regla de cardinalidad; demasiado grande y el resolutor no distingue entre buenas carteras válidas. Fijar es una verdadera tarea de ingeniería, no una nota al pie.
Cuándo usarlo
Recurre a una formulación QUBO cuando tu problema trate nativamente de decisiones de encendido/apagado con interacciones por pares — activo dentro o fuera, arista dentro o fuera, bit puesto o no — y cuando tus restricciones puedan escribirse como penalizaciones cuadráticas. Si tus variables son genuinamente continuas (pesos fraccionarios), forzarlas a QUBO mediante expansión binaria (un bit por cada 0.1% de peso) infla el número de variables y suele ser un paso atrás.
Pick a term, then click its definition.
La equivalencia de Ising
Before you read — take a guess
Los recocedores cuánticos minimizan nativamente una energía de Ising con espines s_i en {-1, +1}, no x_i binario en {0, 1}. ¿Qué convierte uno en otro?
Un QUBO sobre y un modelo de Ising sobre espines son la misma optimización con ropajes distintos. Sustituye y cualquier QUBO se convierte en un hamiltoniano de Ising
donde son las intensidades de acoplamiento y son los campos locales, ambos funciones lineales del original. Esta única línea importa porque los recocedores cuánticos minimizan energías de Ising nativamente — el hardware es un vidrio de espín programable. Así que “resuelve mi QUBO de cartera” se convierte en “fija estos acopladores y campos, y deja que la física se relaje hasta el estado fundamental”. Guárdate la equivalencia en el bolsillo; el resto de la lección usa QUBO e Ising indistintamente.
Nombra el puente entre las dos formulaciones.
Pick the right option for each blank, then check.
La sustitución x_i = (1 + s_i) / 2 convierte un QUBO (binario 0/1) en un modelo de (espines menos-uno/más-uno), que es lo que minimiza el hardware de recocido.
Recocido cuántico: el descenso adiabático
Before you read — take a guess
¿Cuál es la promesa central del teorema adiabático en la que se apoya el recocido cuántico?
Analogía. El recocido (annealing) toma su nombre de la metalurgia por una razón. Calienta un metal hasta que sus átomos vibran libremente, luego enfríalo despacio: los átomos se asientan en un cristal ordenado de baja energía. Enfríalo rápido (témplalo) y se congelan en un vidrio desordenado de alta energía. El recocido cuántico hace el mismo truco sobre el paisaje de energía de un problema — “enfría” un sistema cuántico con la lentitud suficiente para que se deslice hasta el valle más bajo (el óptimo) en vez de quedarse atascado en una abolladura local.
Definición — recocido adiabático / cuántico. La máquina prepara el estado fundamental de un hamiltoniano impulsor sencillo (uno cuyo estado de menor energía es fácil y conocido — una superposición uniforme de todas las configuraciones). Luego interpola lentamente hasta el hamiltoniano del problema que codifica tu modelo de Ising:
Por el teorema adiabático, si el tiempo total es largo comparado con — donde es el menor hueco de energía entre el estado fundamental y el primer estado excitado a lo largo del camino — el sistema se mantiene en el estado fundamental, y en una medición devuelve el óptimo de . Ese hueco es la trampa: para problemas difíciles puede encogerse exponencialmente, exigiendo un recocido exponencialmente largo.
- Energía actual
- 0.68
- Mejor energía hallada
- 0.68
- Temperatura
- 0.02
Un descenso QUBO en vivo. Cada activo es una variable binaria (un cúbit): alterna nombres dentro o fuera, fija la cardinalidad K y luego pulsa Ejecutar recocido. Observa cómo la energía zigzaguea hacia abajo — los saltos cuesta arriba calientes del principio son la 'temperatura' permitiendo que la búsqueda escape de mínimos locales, exactamente como el enfriamiento lento. Los indicadores siguen la energía actual, la mejor energía hallada, la temperatura decreciente y si se cumple la restricción de K nombres.
Juega con la isla de arriba antes de seguir leyendo. Fíjate en tres cosas que te compra la física: la búsqueda acepta movimientos cuesta arriba ocasionales mientras está caliente (para no quedar atrapada en el primer hoyo), esos saltos cuesta arriba se encogen según cae la temperatura (de modo que al final se compromete), y el indicador de restricción puede parpadear en rojo a mitad de búsqueda — un QUBO no prohíbe los estados inválidos, simplemente los hace caros, así que el recocedor deambula por ellos camino abajo.
Ejemplo resuelto — por qué “con suficiente lentitud” puede ser ruinoso. Supón que el hueco mínimo en un problema concreto es (unidades de energía). La condición adiabática exige aproximadamente unidades de tiempo. Reduce a la mitad el hueco a y el tiempo requerido se cuadruplica a . Para instancias genuinamente difíciles el hueco se cierra exponencialmente con el tamaño del problema, así que el tiempo de recocido “garantizado” se dispara exponencialmente — que es precisamente por qué los recocidos reales de D-Wave son cortos y repetidos y se tratan como una heurística, no como una garantía.
El hardware es disperso, tu problema es denso
Una máquina D-Wave tiene miles de cúbits, pero cada cúbit se acopla solo a un puñado de vecinos (su grafo de conectividad, p. ej. Pegasus). Un QUBO de cartera es típicamente denso — cada par de activos tiene una covarianza, así que cada variable se acopla a todas las demás. Para ejecutar un problema denso debes embeber cada variable lógica a lo largo de una cadena de cúbits físicos para fingir las conexiones que faltan. Las cadenas devoran cúbits deprisa (un problema totalmente conectado de variables puede necesitar cúbits físicos) y pueden romperse a mitad de recocido, corrompiendo la respuesta. El número de cúbits del titular no es el tamaño de problema que realmente puedes resolver.
Cuándo usarlo
El recocido cuántico merece un piloto cuando tu problema tiene forma de Ising nativamente, es disperso (para que la sobrecarga de embebido siga siendo manejable) y te conformas con una buena respuesta heurística en vez de un óptimo certificado. Trátalo como tratarías el recocido simulado o la búsqueda tabú: ejecútalo muchas veces, quédate con la mejor muestra y siempre compáralo con un resolutor clásico fuerte sobre la misma instancia antes de reclamar beneficio alguno.
Think first
Un QUBO de cartera sobre 200 activos es totalmente denso (cada par tiene covarianza). Tu recocedor tiene 5.000 cúbits, cada uno conectando a ~15 vecinos. ¿Por qué podrías aun así no poder ejecutarlo?
QAOA: el primo variacional del modelo de puertas
Before you read — take a guess
QAOA es un algoritmo variacional con p capas alternantes. A medida que la profundidad p crece hacia infinito, ¿cuál es la garantía teórica?
Analogía. Si el recocido es una canica enfriándose hasta un valle, QAOA es una carrera de relevos entre dos entrenadores. Un entrenador (el hamiltoniano del problema) empuja al equipo hacia configuraciones de bajo coste; el otro (el mezclador) sacude las cosas para que el equipo explore. Se alternan durante rondas, y un optimizador clásico fuera de la carrera ajusta cuánto tiempo tiene cada entrenador el testigo (los ángulos) para hacer la alineación final lo más barata posible.
Definición — QAOA. El Algoritmo de Optimización Aproximada Cuántica (Quantum Approximate Optimization Algorithm) prepara un estado alternando capas de un unitario del problema (que codifica tu coste de Ising) y un unitario mezclador (típicamente volteos de espín de campo transversal):
Un optimizador clásico ajusta los ángulos para minimizar la energía esperada medida . Es un bucle cuántico-clásico: el chip cuántico evalúa el coste de una configuración de parámetros, el optimizador clásico propone la siguiente configuración. Cuando las capas pueden imitar el barrido adiabático lento, así que QAOA puede en principio alcanzar el óptimo.
Ejemplo resuelto — el coste de la profundidad. A profundidad debes optimizar ángulos. Para un modesto eso son 10 parámetros — y cada evaluación significa ejecutar el circuito y muestrearlo miles de veces para estimar con precisión aceptable. Digamos 5.000 disparos por evaluación y 200 pasos del optimizador: eso son ejecuciones de circuito para un problema, en hardware donde cada puerta multicúbit inyecta ruido. Una más profunda significa circuitos más profundos, más acumulación de ruido y un paisaje de ángulos de mayor dimensión que buscar.
Mesetas yermas y gradientes ruidosos
La optimización clásica de QAOA no es un mero trámite. Para muchas clases de problemas e inicializaciones aleatorias, el paisaje de coste presenta mesetas yermas (barren plateaus) — regiones donde el gradiente es exponencialmente pequeño en el número de cúbits, así que el optimizador deambula por un terreno casi plano sin señal que apunte cuesta abajo. Añade ruido de hardware encima (los dispositivos de puertas actuales son ruidosos, sin corrección de errores a escala) y la energía medida es una estimación borrosa y sesgada. “Simplemente sube ” hace el circuito más profundo y ruidoso, a menudo perjudicando más que ayudando. Por eso el QAOA poco profundo, hasta ahora, no ha demostrado una victoria clara sobre buenas heurísticas clásicas.
Cuándo usarlo
Hoy, QAOA es principalmente una herramienta de investigación y aprendizaje, no un optimizador de carteras de producción. Úsalo para entender los algoritmos cuánticos variacionales, para comparar instancias pequeñas y para seguir el campo — pero no apuestes un reajuste a él esperando que bata a la ramificación y poda o al recocido simulado. Si estás ejecutando QAOA en serio, mantén baja, arranca en caliente los ángulos desde valores buenos conocidos o el calendario adiabático y (de nuevo) compara siempre clásicamente sobre la instancia idéntica.
Clasifica cada afirmación bajo el método que describe con mayor precisión.
Place each item in the right group.
- Alterna capas de problema y mezclador durante una profundidad p
- Se apoya directamente en el teorema adiabático y el hueco espectral mínimo
- Necesita embebido en cadenas para problemas densos todos-con-todos
- Puede atascarse en mesetas yermas durante la optimización de ángulos
- Transforma lentamente un hamiltoniano fácil en el hamiltoniano del problema
- Un optimizador clásico ajusta 2p ángulos en un bucle cuántico-clásico
El veredicto sobrio
Before you read — take a guess
¿Qué afirmaciones reflejan honestamente el estado de la optimización cuántica de carteras hoy? (Marca todas las que apliquen.)
Hora de la verdad poco glamurosa. La optimización combinatoria clásica es muy buena. Los resolutores comerciales de programación entera mixta (MIP) que usan ramificación y poda y planos de corte descifran rutinariamente carteras con restricción de cardinalidad de cientos de activos hasta la optimalidad certificada, y las metaheurísticas como el recocido simulado y la búsqueda tabú entregan excelentes soluciones casi óptimas rápido cuando no se requiere exactitud. El recocido cuántico y QAOA son científicamente fascinantes y pueden algún día ayudar en instancias con estructura discreta especialmente desagradable — pero a día de hoy no se ha demostrado ninguna ventaja clara y reproducible sobre estos métodos clásicos en problemas realistas de cartera.
| Método | Qué resuelve | Garantía vs heurística | Madurez | Relevancia en finanzas hoy |
|---|---|---|---|---|
| MIP de ramificación y poda | Programas enteros/de cardinalidad exactos | Óptimo certificado (con hueco de optimalidad) | Maduro, comercial (Gurobi, CPLEX) | Alta — la opción por defecto para carteras discretas difíciles hasta cientos de nombres |
| Recocido simulado | Cualquier QUBO/Ising, instancias grandes | Heurística (buenas muestras casi óptimas) | Maduro, trivial de ejecutar en un portátil | Alta — base sólida y lo que lo cuántico debe batir |
| Recocido cuántico (D-Wave) | Ising/QUBO disperso tras embebido | Heurística, sin garantía de hueco | Hardware real, conectividad dispersa, sobrecarga de embebido | Baja–emergente — solo pilotos; las carteras densas encajan mal |
| QAOA (modelo de puertas) | QUBO/Ising pequeño a profundidad baja p | Heurística; óptimo solo cuando p → ∞ | Temprana, hardware ruidoso, mesetas yermas | Baja — investigación y comparativas, no producción |
La postura disciplinada es la misma que toda esta asignatura predica sobre el aprendizaje automático: compara honestamente, desconfía del bombo y deja que la base clásica tenga la primera y la última palabra. Si un proveedor demuestra una victoria cuántica de cartera, pregunta si pasó la misma instancia por un resolutor clásico afinado — la respuesta suele ser que no lo hizo, o que el resolutor clásico también ganó.
Dónde vive realmente la apuesta cuántica
El caso interesante no es “lo cuántico es más rápido en Markowitz”. Es estrecho: problemas cuya estructura discreta es tan escarpada que incluso buenas heurísticas clásicas batallan, que son naturalmente dispersos (para que se embeban limpiamente) y donde una muestra heurística ligeramente mejor tiene valor económico real. Eso es un nicho pequeño y específico — no “toda la optimización de carteras”. Saber exactamente cómo de pequeño es ese nicho, hoy, es la ventaja del experto.
Cuándo usarlo
Por defecto, ve a lo clásico: un resolutor MIP cuando necesites un óptimo certificado y la instancia sea tratable, recocido simulado o tabú cuando necesites respuestas rápidas y suficientemente buenas en QUBO grandes. Considera el recocido cuántico solo para instancias discretas dispersas y genuinamente difíciles y solo como un piloto comparado. Trata QAOA como un instrumento de investigación. En todos los casos, la regla es idéntica: ejecuta la base clásica sobre la misma instancia y cree a los números por encima de la narrativa.
Si los resolutores clásicos ya ganan, ¿por qué estudiar QUBO siquiera?
Respuesta. Tres razones. Primera, la formulación QUBO en sí es portátil: escribir tu cartera con restricción de cardinalidad como un QUBO te permite lanzarla a cualquiera de estos backends — incluidos los muy buenos resolutores clásicos de recocido simulado y tabú — así que la habilidad de modelado rinde de inmediato, sea cuántico o no. Segunda, el hardware y los algoritmos están mejorando; el profesional que ya habla QUBO/Ising con fluidez está posicionado para evaluar (y desmontar) las afirmaciones de ventaja el día que lleguen. Tercera, la disciplina de codificar restricciones de negocio enrevesadas como penalizaciones cuadráticas afina cómo piensas sobre el problema, sin importar qué minimice la energía. Aprendes QUBO para estar listo y para mantenerte honesto — no porque el hardware cuántico esté ganando hoy.
Resumen
Viste una preciosa máquina convexa atascarse en el momento en que un gestor de carteras pidió un recuento fijo de nombres, un lote mínimo o una rejilla de acciones redondas — el precipicio de la convexidad que convierte la media–varianza de tiempo polinómico en una búsqueda combinatoria y NP-difícil. Reformulaste esa búsqueda como un QUBO (minimizar sobre binario), plegando la rentabilidad en la diagonal, el riesgo en el término cuadrático y la regla de cardinalidad en una penalización . Viste la equivalencia de Ising de una línea que permite al hardware de recocido minimizarlo nativamente, el descenso adiabático del recocido cuántico (y sus salvedades de hueco y embebido) y el bucle variacional de QAOA (y sus mesetas yermas). Y terminaste donde un experto debería: los resolutores clásicos son fuertes, la ventaja cuántica en carteras reales no está aún demostrada, y la jugada honesta es siempre comparar.
Big picture
QUBO y optimización de carteras
- Optimización de carteras con QUBO
- Por qué se vuelve difícil
- Media–varianza continua = QP convexo (fácil)
- Cardinalidad / lote mínimo = no convexo
- Combinatorio, NP-difícil en el peor caso
- Reformulación QUBO
- min x^T Q x sobre x binario
- Rentabilidad → diagonal (x^2 = x)
- Riesgo → término cuadrático de covarianza
- Cardinalidad → penalización lambda(sum x − k)^2
- Equivalencia de Ising
- x_i = (1 + s_i)/2
- Lo que los recocedores minimizan nativamente
- Recocido cuántico (D-Wave)
- Adiabático: H fácil → H del problema
- Analogía del enfriamiento lento
- Limitado por hueco, disperso, cadenas de embebido
- Heurística, no garantía
- QAOA (modelo de puertas)
- Capas de problema + mezclador, profundidad p
- El optimizador clásico ajusta 2p ángulos
- p → ∞ se aproxima al óptimo
- Mesetas yermas, ruido, sin victoria clara aún
- Veredicto sobrio
- MIP / RS / tabú clásicos son fuertes
- Sin ventaja cuántica reproducible hoy
- Nicho: estructura dispersa y genuinamente difícil
- Por qué se vuelve difícil
Repaso mixto: ¿sabes reformular y mantenerte honesto?
¿Por qué añadir una regla de 'mantén exactamente k nombres' vuelve difícil la media–varianza?
Check your answer to continue.