[R-SIG-Finance] PortfolioAnalytics group constraints

Peter peter.michaels at gmail.com
Thu Jun 11 17:53:17 CEST 2015


Hi,

I am trying to set-up a group constraint within PortfolioAnalytics, but I
run into a problem if the current portfolio doesn't have weights in each of
the groups. As an example, if I set a +/- 5% sector constraint on all 10
sectors, but my current portfolio is only in 7 of the 10 sectors, the
optimization step fails.

The groups within the constraint is a list and the empty groups have an
index of 0, since an empty list can't be accepted.

ex.

sectiors <- c('s1','s2','s3','s4')
sector.weights.max <- list(s1 = 0.3, s2 = 0.25, s3 = 0.40, s4=0.25)
sector.weights.min <- list(s1 = 0.2, s2 = 0.15, s3 = 0.30, s4=0.15)
sector.groups <- list(s1 = list(1,2,5), s2=list(3,4), s3=list(0),
s4=list(6))

pspec <- add.constraint(portfolio = pspec,
                        type = 'group',
                        groups = sector.groups,
                        group_labels = sectors,
                        group_min = sector.weights.min,
                        group_max = sector.weights.max)

Depending on the optimization algorithm I try, a different problem arises.

When I try to generate a sequence of random portfolios, this is the error:
rp = random_portfolios(pspec, permutations = 2000, rp_method = 'sample',
eliminate = TRUE)
Error in seq.default(from = round(min, rounding), to = round(max,
rounding),  :
  'from' cannot be NA, NaN or infinite
In addition: Warning messages:
1: In min(min_box) : no non-missing arguments to min; returning Inf
2: In max(max_box) : no non-missing arguments to max; returning -Inf

How can I specify an empty group in the constraint, but still define a
min/max constraint since a rebalance may include a position within that
group.  Is that possible?

Thank you,
Peter

	[[alternative HTML version deleted]]



More information about the R-SIG-Finance mailing list