[GSoC-PortA] structure of the specification objects

Brian G. Peterson brian at braverock.com
Tue Jun 18 11:28:34 CEST 2013


On 06/18/2013 03:34 AM, Kris Boudt wrote:
> Intrinsically, it means that what we used to call "soft constraints"
> (the constraints that can be violated) are classified as
> "objectives". Seems good to me, but we need to make sure that each
> objective has then its multiplier/scaling factor, which by default is
> 1, but for soft constraints will typically be higher.

I've never liked the 'soft constraints' construct, as it's not very
clear.  My distinction was between things we can do *before* calling the
objective function, only on the weights vector, which we'll call
'constraints' and things that we can do only by acting on the set of all
possible weights vectors which satisfy the constraints (the objectives).

We've always supported both multipliers and penalties for the individual 
objectives, from the very first version of the code.  In practice, two 
things go into selecting a multiplier:

a. the objectives must inherently be of similar scale, e.g. both 
returning a return number of roughly equal magnitude.  if they are not 
of roughly equal magnitude, then the user needs to use the multiplier to 
adjust.

b. the user must understand that to over/under weight a specific 
objective with respect to other objectives, they need to adjust either 
the multiplier or the penalty, or both.

> 1. I would also include a turnover objective, whereby there seem to
> be two possibilities:
>
> - provide directly the weights at the time of rebalancing - provide
> the weights at the previous rebalancing data and include a function
> that, uses the return data to calculate the weights at the time of
> rebalancing.

We demonstrated how to use a turnover objective function in our 2012
R/Finance seminar:

http://www.rinfinance.com/agenda/2010/Carl+Peterson+Boudt_Tutorial.pdf

see page 36

with code here:
https://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/PortfolioAnalytics/sandbox/script.workshop2010.R?root=returnanalytics

It would be nice to get the chart from page 36 into the package if we 
have time later in the summer.

In practice, turnover can be dealt with either as a constraint (in some 
solvers) or as an objective.  Doug would need to comment on using it as 
a constraint, I know there's a brief discussion of that in MPO(v1) or 
perhaps Bernd's book, both of which I have at the office right now.

I've always done it as an objective, which works fine in current code.

It would probably be nice to include the turnover function in the 
package directly and document it.

> 2. In practical work,  I work with a price data file that has all
> possible constituents and for each selection date a list of allowed
> constituents. Typically an xts with in row the selection dates and
> columns the assets with 1 if included and 0 otherwise. Such a
> constituents check could be in the constraints object.

It seems to me that this belongs in the portfolio specification.  That 
is to say that the constituents of the portfolio are defined in the 
portfolio specification as a time series.

Another way to think of this, of course, is to say that an equality 
constraint (weight=0) is imposed on some of the overall universe of 
constituents at certain times.  You can also do it with box constraints 
that vary through time.

I think I prefer the first approach as more intuitive for the user, and 
dealing with subsetting the input data to match the allowed constituents 
within optimize.portfolio.  We're better off never giving data to the 
solvers that they don't need, and if the constituent is out of the 
portfolio, then the subset can happen before the optimization step. 
That's just an initial feeling though.

I think we need to think more about what it does to the code to support 
time-varying constraints and portfolio specifications, and then put it 
wherever it makes the most sense.  I don't see any reason to work on 
that this week though, as the overall structure seems more important to 
me at this point, and I think we can cover this when we have a more 
coherent framework to work from.

Regards,

Brian

-- 
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock


More information about the GSoC-PortA mailing list