He leído que como los precios de las acciones no son estacionarios no tiene sentido tomar su covarianza. Así que tomé los retornos logarítmicos de las acciones, calculé la matriz de covarianza, tomé los vectores propios superiores que explican la máxima varianza y en lugar de proyectar los retornos proyecté los precios logarítmicos en estos vectores. ¿Hay algún problema con este enfoque? código de python a continuación:
logprices = numpy.log(precios)
logreturns = numpy.diff(logprices, axis=0)
cov = EmpiricalCovariance().fit(logreturns).covariance_
valores propios, vectores propios = numpy.linalg.eigh(cov)
components = eigenvectors[:, :5] # top 5 vectores propios
fuentes = numpy.dot(logprices, components)