[R-SIG-Finance] PortfolioAnalytics Package Questions on Initial Weights & Group Constraints

Ed Herranz ed.herranz at gmail.com
Fri Jan 26 22:05:16 CET 2018


Dear R-sig-finance Group,

I have 3 of questions about the PortfolioAnalytics package:

1) I'm using DEOptim optimization.  And I use the following initialization:

  i.portf <- portfolio.spec(assets=allInstruments,
                            weight_seq=generatesequence(min = 0.001,
                                                        max = 0.06,
                                                        by = 0.002))
I believe that the initial portfolios are generated randomly using
random_portfolios.   However, if I wanted to specifically pre-set one of
the portfolios to a given set of predefined weights, would that be possible
with DEOPtim?

2) I'm using group constraints to specify the sum of weights by group.  For
example on Sectors:

  for( jj in 1:length(uniqueSectors)){
    group_indices <- which(sectors == uniqueSectors[jj])
    groupsum <- sum(benchmark_weights[group_indices])
    groupmax <- 0.1 + groupsum
    groupmin <- -0.1 + groupsum

    groupmins[jj]   <- groupmin
    groupmaxs[jj]   <- groupmax
    grouplist[[jj]] <- group_indices
  }

    i.portf <- add.constraint(portfolio=i.portf,
                              type="group",
                              groups=grouplis,
                              group_min=groupmins,
                              group_max=groupmaxs,
                              group_labels=groupnames)

  There is nothing stopping me from making two separate add.constraint()
group calls by splitting the initial groups' constraints into 2

    i.portf <- add.constraint(portfolio=i.portf,
                              type="group",
                              groups=grouplist[1:5],
                              group_min=groupmins[1:5],
                              group_max=groupmaxs[1:5],
                              group_labels=groupnames[1:5])
    i.portf <- add.constraint(portfolio=i.portf,
                              type="group",
                              groups=grouplist[5:10],
                              group_min=groupmins[5:10],
                              group_max=groupmaxs[5:10],
                              group_labels=groupnames[5:10])

What is the difference when I split the group constraints into two instead
of 1?  Based on my tests these two are not the same; it seems that
splitting the group constraints into 2 is less restrictive(?) than if I
just have one group add.constraint()

3) There is a maximum position constraint--for example

pspec <- add.constraint(portfolio=pspec, type="position_limit", max_pos=3)

Is there a reason that a minimum position constraint was not/cannot be
implemented?

Thanks & Regards,
-Ed

	[[alternative HTML version deleted]]



More information about the R-SIG-Finance mailing list