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.

1 |

`weights` |
vector of weights |

`portfolio` |
object of class |

`relax` |
TRUE/FALSE, default FALSE. Enable constraints to be relaxed. |

`verbose` |
print error messages for debuggin purposes |

`...` |
any other passthru parameters |

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.

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.

Ross Bennett

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.