Class Corvalan2005
- java.lang.Object
-
- tech.nmfin.portfoliooptimization.corvalan2005.Corvalan2005
-
public class Corvalan2005 extends Object
This paper tackles the corner solution problem of many portfolio optimizers, by optimizing the portfolio diversification with some relaxation on the volatility σ and the expected return R of a given optimized (but non-diversified) portfolio. This implementation generalizes this framework as the following optimization problem: \[ \max_{w} D(w) \quad \text{s.t.} \\ \begin{aligned} \sqrt{w' \Sigma w} & \le \sigma^* (1 + \Delta \sigma) \\ R^* (1 - \Delta R) & \le w'r \\ w' 1 & = 1 \\ ... & \text{some extra constraints} \end{aligned} \] where \( ( \sigma^* , R^* ) = ( \sqrt{w^{*'} \Sigma w^*} , w^{*'} r ) \), \(w^*\) is the original optimal weights, \(\Delta \sigma, \Delta R\) are the relaxation tolerance parameters, and \(D(w)\) is a defined measure for portfolio diversification (DiversificationMeasure
).- See Also:
- Well Diversified Efficient Portfolios
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
Corvalan2005.WeightsConstraint
Constraints on weights which are defined by a set of less-than constraints.
-
Constructor Summary
Constructors Constructor Description Corvalan2005(double deltaSigma, double deltaR)
Constructs an instance of the Corvalan model.Corvalan2005(Minimizer<? super ConstrainedOptimProblem,IterativeSolution<Vector>> minimizer, DiversificationMeasure diversificationMeasure, double deltaSigma, double deltaR)
Constructs an instance of the Corvalan model.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Vector
getDiversifiedWeights(Corvalan2005.WeightsConstraint constraint, Vector weights0, Matrix sigma, Vector r)
Finds the optimal weights for a diversified portfolio.Vector
getDiversifiedWeights(Corvalan2005.WeightsConstraint constraint, Vector weights0, Matrix sigma, Vector r, EqualityConstraints extraEqualityConstraints, LessThanConstraints extraLessThanConstraints)
Finds the optimal weights for a diversified portfolio.
-
-
-
Constructor Detail
-
Corvalan2005
public Corvalan2005(double deltaSigma, double deltaR)
Constructs an instance of the Corvalan model.- Parameters:
deltaSigma
- the relaxation of portfolio volatilitydeltaR
- the relaxation of portfolio return
-
Corvalan2005
public Corvalan2005(Minimizer<? super ConstrainedOptimProblem,IterativeSolution<Vector>> minimizer, DiversificationMeasure diversificationMeasure, double deltaSigma, double deltaR)
Constructs an instance of the Corvalan model.- Parameters:
minimizer
- the optimizerdiversificationMeasure
- the diversification measuredeltaSigma
- the relaxation of portfolio volatilitydeltaR
- the relaxation of portfolio return
-
-
Method Detail
-
getDiversifiedWeights
public Vector getDiversifiedWeights(Corvalan2005.WeightsConstraint constraint, Vector weights0, Matrix sigma, Vector r) throws Exception
Finds the optimal weights for a diversified portfolio.- Parameters:
constraint
- the weight constraintsweights0
- the original optimal weightssigma
- the covariance matrix of asset returnsr
- the expected asset returns- Returns:
- the diversified weights
- Throws:
Exception
- when the optimizer fails to find a solution
-
getDiversifiedWeights
public Vector getDiversifiedWeights(Corvalan2005.WeightsConstraint constraint, Vector weights0, Matrix sigma, Vector r, EqualityConstraints extraEqualityConstraints, LessThanConstraints extraLessThanConstraints) throws Exception
Finds the optimal weights for a diversified portfolio.- Parameters:
constraint
- the weight constraintsweights0
- the original optimal weightssigma
- the covariance matrix of asset returnsr
- the expected asset returnsextraEqualityConstraints
- the additional equality constraintsextraLessThanConstraints
- the additional less-than constraints- Returns:
- the diversified weights
- Throws:
Exception
- when the optimizer fails to find a solution
-
-