Class ExtremalGeneralizedEigenvalueBySDP
- java.lang.Object
-
- tech.nmfin.meanreversion.daspremont2008.ExtremalGeneralizedEigenvalueBySDP
-
- All Implemented Interfaces:
ExtremalGeneralizedEigenvalueSolver
public class ExtremalGeneralizedEigenvalueBySDP extends Object implements ExtremalGeneralizedEigenvalueSolver
Solves the problem described in Section 3.2, d'Aspremont (2008). Being different from the method in the paper, this implementation solves eq. (10) in reference [1] without relaxations on the cardinality constraint and rank constraint.- See Also:
- "d'Aspremont, Alexandre, "Identifying Small Mean Reverting Portfolios", 2008."
- Dattorro, Jon, "Chapter 4. Semidefinite programming", Convex Optimization and Euclidean Distance Geometry, 2010, Meboo Publishing.
- wiki
-
-
Constructor Summary
Constructors Constructor Description ExtremalGeneralizedEigenvalueBySDP(SymmetricMatrix A, SymmetricMatrix B)
Constructs the problem described in Section 3.2, d'Aspremont (2008), changed to a minimization problem.ExtremalGeneralizedEigenvalueBySDP(SymmetricMatrix A, SymmetricMatrix B, boolean isMinimizationProblem)
Constructs the problem described in Section 3.2, d'Aspremont (2008).ExtremalGeneralizedEigenvalueBySDP(SymmetricMatrix A, SymmetricMatrix B, int maxIterations, double weightRank, double weightCardinality, double tol, boolean isMinimizationProblem)
Constructs the problem described in Section 3.2, d'Aspremont (2008).
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Vector
computeOptimalPositions(int card)
Computes the solution to the problem described in Section 3.2 in reference.double
getLambda(Vector x)
Computes the value of the objective function in eq.
-
-
-
Constructor Detail
-
ExtremalGeneralizedEigenvalueBySDP
public ExtremalGeneralizedEigenvalueBySDP(SymmetricMatrix A, SymmetricMatrix B)
Constructs the problem described in Section 3.2, d'Aspremont (2008), changed to a minimization problem.- Parameters:
A
- the matrix A in eq. 10, reference [1]B
- the matrix B in eq. 10, reference [1]
-
ExtremalGeneralizedEigenvalueBySDP
public ExtremalGeneralizedEigenvalueBySDP(SymmetricMatrix A, SymmetricMatrix B, boolean isMinimizationProblem)
Constructs the problem described in Section 3.2, d'Aspremont (2008).- Parameters:
A
- the matrix A in eq. 10, reference [1]B
- the matrix B in eq. 10, reference [1]isMinimizationProblem
- iftrue
, eq. 10 in reference [1] is changed to a minimization problem
-
ExtremalGeneralizedEigenvalueBySDP
public ExtremalGeneralizedEigenvalueBySDP(SymmetricMatrix A, SymmetricMatrix B, int maxIterations, double weightRank, double weightCardinality, double tol, boolean isMinimizationProblem)
Constructs the problem described in Section 3.2, d'Aspremont (2008).- Parameters:
A
- the matrix A in eq. 10, reference [1]B
- the matrix B in eq. 10, reference [1]maxIterations
- the maximum number of iterationsweightRank
- the penalty weight for rank constraintsweightCardinality
- the penalty weight for cardinality constraintstol
- the tolerance for rank and cardinality constraintsisMinimizationProblem
- iftrue
, eq. 10 in reference [1] is changed to a minimization problem
-
-
Method Detail
-
computeOptimalPositions
public Vector computeOptimalPositions(int card)
Computes the solution to the problem described in Section 3.2 in reference.- Specified by:
computeOptimalPositions
in interfaceExtremalGeneralizedEigenvalueSolver
- Parameters:
card
- the cardinality constraint, the number of non-zero elements in x, the solution- Returns:
- vector x in eq. 10 in reference
- See Also:
- "Sections 4.4 and 4.5, reference [2]"
-
getLambda
public double getLambda(Vector x)
Computes the value of the objective function in eq. 10, reference [1].- Parameters:
x
- variable x in eq. 10, reference[1]- Returns:
- maximum value of lambda such that det(lambda*B-A)=0.
-
-