Un optimizador es una función más reglas
scipy.optimize.minimize(fun, x0, method='SLSQP', bounds=..., constraints=...) halla el vector que hace mínima a fun. Se le dan tres tipos de información. El objetivo fun(w) devuelve un número a minimizar: para una cartera de varianza mínima es w @ cov @ w, y para maximizar algo se minimiza su opuesto. Los límites son una lista de pares (bajo, alto), uno por peso: (0, cap) significa sin ventas en corto y sin posición por encima del tope. Las restricciones son diccionarios: {'type': 'eq', 'fun': lambda w: w.sum() - 1} obliga a que los pesos sumen uno, porque una función eq debe valer cero, mientras que una función ineq debe ser mayor o igual que cero. El punto de partida x0 también importa: pesos iguales es un inicio razonable y factible.
Dos detalles deciden si la respuesta es correcta. Primero, la escala: las varianzas diarias son números como 0,0001, y SLSQP se detiene cuando el objetivo cambia menos que su tolerancia ftol (1e-6 por defecto), así que con cifras diarias crudas puede detenerse en el punto de partida sin moverse. Anualice las entradas (por 252) y pase options={'ftol': 1e-12, 'maxiter': 500}, y compruebe siempre result.success y que los pesos cumplen las reglas. Segundo, la formulación: maximizar el ratio de Sharpe es un cociente, así que minimice -(w @ mu) / sqrt(w @ cov @ w); la paridad de riesgo pide cuotas de riesgo iguales wᵢ(Σw)ᵢ/ wᵀΣw, así que minimice las brechas al cuadrado respecto a 1/n; y una frontera eficiente es un problema de varianza mínima por rendimiento objetivo, con una segunda restricción eq w @ mu - objetivo.
- Escala y tolerancia: anualice las entradas y ajuste
ftol, o SLSQP puede detenerse donde empezó. - Compruebe la respuesta: los pesos deben sumar uno y cumplir los límites; mire
result.success. - Una herramienta, cuatro problemas: varianza mínima, Sharpe negativo, cuotas de riesgo iguales y un problema por rendimiento objetivo son llamadas a
minimizecon distintos objetivos y restricciones.
Lab: qué se califica
- Entradas anuales8 pts
- Rendimiento y riesgo de una cartera8 pts
- Varianza mínima con tope18 pts
- Ratio de Sharpe máximo18 pts
- Contribuciones al riesgo10 pts
- Paridad de riesgo16 pts
- Una frontera punto a punto10 pts
- Tres carteras12 pts