All Implemented Interfaces:
Function<Vector,Double>, RealScalarFunction

Transforms a black list (not to trade a new position) constraint into the compact SOCP form.

The black list constraint is: $x_{j}=0,$ for j in the black list. By letting $$y=x+w^{0}$$,$$\bar{y}=|x+w^{0}|$$ and $$\bar{x}=|x|$$, the black list constraints are changed to: $y_{j}=w^{0}_{j},\;\bar{y}_{j}=|w^{0}_{j}|,\;\bar{x}_{j}=0,$ for j in the black list. Denote the black list index set as $$BL$$, i.e. $$BL=\{j|x_{j}=0\}$$. As $$y_{j}=x_{j}+w_{j}^{0}$$, the set $$BL$$ can be written as $$BL=\{j|y_{j}=w_{j}^{0}\}$$. The black list constraints can be written in the following form: $||D_{BL}(y-w^{0})||_{2}\leq0,\;||D_{BL}(\bar{y}-|w^{0}|)||_{2}\leq0,\;||D_{BL}\bar{x}||_{2}\leq0,$ where $$D_{BL}$$ is a diagonal matrix. The $$k$$th diagonal entry of $$D_{BL}$$, $$D_{BL}(k,k)$$, is $$1$$ if $$k\in BL$$, otherwise it is $$0$$. These constraints can be transformed into the standard SOCP form: $||D_{BL}(y-w^{0})||_{2}\leq0\Longleftrightarrow ||A_{1}^{\top}z+C_{1}||_{2}\leq b^{\top}_{1}z+d_{1}\\ A_{1}^{\top}=D_{BL},\; C_{1}=-D_{BL}\times w^{0},\; b_{1}=0_{n\times 1},\; d_{1}=0,\; z=y.$ $||D_{BL}(\bar{y}-|w^{0}|)||_{2}\leq0\Longleftrightarrow ||A_{2}^{\top}z+C_{2}||_{2}\leq b^{\top}_{2}z+d_{2}\\ A_{2}^{\top}=D_{BL},\; C_{2}=-D_{BL}\times |w^{0}|,\; b_{2}=0_{n\times 1},\; d_{2}=0,\; z=\bar{y}.$ $||D_{BL}\bar{x}||_{2}\leq0\Longleftrightarrow ||A_{3}^{\top}z+C_{3}||_{2}\leq b^{\top}_{3}z+d_{3}\\ A_{3}^{\top}=D_{BL},\; C_{3}=0,\; b_{3}=0_{n\times 1},\; d_{3}=0,\; z=\bar{x}.$
• "Reformulate the Portfolio Optimization Problem as a Second Order Cone Programming Problem, Version 7."
• ## Constructor Details

public SOCPNoTradingList2(Vector w_0, Matrix D_BL0, double epsilon)
Constructs a black list constraint.
Parameters:
w_0 - the initial position
D_BL0 - the black list matrix
epsilon - a precision parameter: when a number |x| ≤ ε, it is considered 0

Constructs a black list constraint.
Parameters:
w_0 - the initial position
D_BL0 - the black list matrix
• ## Method Details

• ### areAllConstraintsSatisfied

public boolean areAllConstraintsSatisfied(Vector y) throws SOCPPortfolioConstraint.ConstraintViolationException
Description copied from class: SOCPPortfolioConstraint
Checks whether all SOCP constraints represented by this portfolio constraint are satisfied.
Specified by:
areAllConstraintsSatisfied in class SOCPPortfolioConstraint
Parameters:
y - a portfolio solution or allocation; the asset weights
Returns:
true if and only if all SOCP constraints are satisfied
Throws:
SOCPPortfolioConstraint.ConstraintViolationException
• ### evaluate

public Double evaluate(Vector x)
Note: x here is the trading size, not the position. Evaluate the function f at x, where x is from the domain.
Parameters:
Returns:
constraint value
• ### dimensionOfDomain

public int dimensionOfDomain()
Description copied from interface: Function
Get the number of variables the function has. For example, for a univariate function, the domain dimension is 1; for a bivariate function, the domain dimension is 2.
Returns:
the number of variables
• ### dimensionOfRange

public int dimensionOfRange()
Description copied from interface: Function
Get the dimension of the range space of the function. For example, for a Rn->Rm function, the dimension of the range is m.
Returns:
the dimension of the range