Open AveryLevin opened 1 year ago
Resolves an issue where ArpackNoConvergence errors were being raised by CVXPY when trying to optimize large portfolios. This error is raised when CVXPY checks if the given matrix is Positive Semi-Definite, calling scipy.sparse.linalg.eigsh to determine if the min eigenvalue is negative, which uses Arnoldi Iteration. However, CVXPY relies on SciPy's default maxiter argument for eigsh which is simply the matrix's dimension multiplied by 10 which can fail to converge when checking larger matrices.
ArpackNoConvergence
scipy.sparse.linalg.eigsh
maxiter
eigsh
Since the covariance matrices being sent to CVXPY are already checked/corrected for PSD in fix_nonpositive_semidefinite, we can use the assume_PSD flag when calling cp.quad_form to prevent these errors from being raised.
fix_nonpositive_semidefinite
assume_PSD
cp.quad_form
Resolves an issue where
ArpackNoConvergence
errors were being raised by CVXPY when trying to optimize large portfolios. This error is raised when CVXPY checks if the given matrix is Positive Semi-Definite, callingscipy.sparse.linalg.eigsh
to determine if the min eigenvalue is negative, which uses Arnoldi Iteration. However, CVXPY relies on SciPy's defaultmaxiter
argument foreigsh
which is simply the matrix's dimension multiplied by 10 which can fail to converge when checking larger matrices.Since the covariance matrices being sent to CVXPY are already checked/corrected for PSD in
fix_nonpositive_semidefinite
, we can use theassume_PSD
flag when callingcp.quad_form
to prevent these errors from being raised.