mapping function to transform or penalize weights that violate constraints

Description

The purpose of the mapping function is to transform a weights vector that does not meet all the constraints into a weights vector that does meet the constraints, if one exists, hopefully with a minimum of transformation.

Usage

1
fn_map(weights, portfolio, relax = FALSE, verbose = FALSE, ...)

Arguments

weights

vector of weights

portfolio

object of class portfolio

relax

TRUE/FALSE, default FALSE. Enable constraints to be relaxed.

verbose

print error messages for debuggin purposes

...

any other passthru parameters

Details

The first step is to test for violation of the constraint. If the constraint is violated, we will apply a transformation such that the weights vector satisfies the constraints. The following constraint types are tested in the mapping function: leverage, box, group, and position limit. The transformation logic is based on code from the random portfolio sample method.

If relax=TRUE, we will attempt to relax the constraints if a feasible portfolio could not be formed with an initial call to rp_transform. We will attempt to relax the constraints up to 5 times. If we do not have a feasible portfolio after attempting to relax the constraints, then we will default to returning the weights vector that violates the constraints.

Value

  • weights: vector of transformed weights meeting constraints.

  • min: vector of min box constraints that may have been modified if relax=TRUE.

  • max: vector of max box constraints that may have been modified if relax=TRUE.

  • cLO: vector of lower bound group constraints that may have been modified if relax=TRUE.

  • cUP: vector of upper bound group constraints that may have been modified if relax=TRUE.

Author(s)

Ross Bennett

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.