<div dir="ltr">Peter,<div><br></div><div style>Thanks for sharing. I think it would be great to include the volatility weighted like we have the equal weight portfolio. I will work on adding that.</div><div style><br></div>
<div style>Thanks,</div><div style>Ross</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Oct 6, 2013 at 6:25 PM, Peter Carl <span dir="ltr"><<a href="mailto:peter@braverock.com" target="_blank">peter@braverock.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ross,<br>
<br>
I mimicked your equal-weight constructor to create an "inverse volatility"<br>
benchmark.  I see this used more frequently in managed futures trading,<br>
where the position is proportioned as one over the volatility of the<br>
asset.<br>
<br>
In effect, this gives an interesting metric relative to the equal standard<br>
deviation portfolio, and is a special case where the covariance matrix is<br>
homogeneous. When comparing the two, the inverse volatility benchmark<br>
allows you to ask the question of how much information about sizing is in<br>
the covariance assumptions, relative to that in the volatility<br>
assumptions.  I think it's useful for making that tradeoff between<br>
volatility and correlation much more explicit.<br>
<br>
There may be another, more formal name.  Usually we just refer to it as<br>
"volatility weighted" as being similar to "equal weighted".<br>
<br>
### Construct BUOY 8: Volatility Weighted Portfolio<br>
# There's only one, so create a portfolio object with all the objectives<br>
we want calculated.<br>
VolWgt.portf <- portfolio.spec(assets=colnames(R))<br>
VolWgt.portf <- add.constraint(portfolio=VolWgt.portf, type="leverage",<br>
min_sum=0.99, max_sum=1.01)<br>
VolWgt.portf <- add.objective(portfolio=VolWgt.portf, type="return",<br>
name="mean")<br>
VolWgt.portf <- add.objective(portfolio=VolWgt.portf, type="risk_budget",<br>
name="ES", arguments=list(p=p, clean=clean))<br>
VolWgt.portf <- add.objective(portfolio=VolWgt.portf, type="risk_budget",<br>
name="StdDev", arguments=list(clean=clean))<br>
<br>
### Evaluate BUOY 8: Inverse Volatility Portfolio<br>
inverse.volatility <- function (R, portfolio, ...)<br>
{<br>
  if (!is.portfolio(portfolio))<br>
      stop("portfolio object passed in must be of class 'portfolio'")<br>
  assets <- portfolio$assets<br>
  nassets <- length(assets)<br>
  weights <- as.vector((1/StdDev(R))/sum(1/StdDev(R)))<br>
  names(weights) <- names(assets)<br>
  if (ncol(R) != nassets) {<br>
      if (ncol(R) > nassets) {<br>
          R <- R[, 1:nassets]<br>
          warning("number of assets is less than number of columns in<br>
returns object, subsetting returns object.")<br>
      }<br>
      else {<br>
          stop("number of assets is greater than number of columns in<br>
returns object")<br>
      }<br>
  }<br>
  out <- constrained_objective(w = weights, R = R, portfolio = portfolio,<br>
      trace = TRUE, ...)$objective_measures<br>
  return(structure(list(R = R, weights = weights, objective_measures = out,<br>
      call = match.call(), portfolio = portfolio), class =<br>
c("optimize.portfolio.invol",<br>
      "optimize.portfolio")))<br>
}<br>
<br>
# Calculate the objective measures for the vol weight portfolio<br>
VolWgt.opt <- volatility.weight(R=R, portfolio=VolWgt.portf)<br>
<br>
At any rate, I think it probably makes sense to include alongside the<br>
equal weight function as another special case.  Let me know what you<br>
think.<br>
<br>
pcc<br>
<span class="HOEnZb"><font color="#888888">--<br>
Peter Carl<br>
<a href="http://www.braverock.com/peter" target="_blank">http://www.braverock.com/peter</a><br>
<br>
<br>
_______________________________________________<br>
GSoC-PortA mailing list<br>
<a href="mailto:GSoC-PortA@lists.r-forge.r-project.org">GSoC-PortA@lists.r-forge.r-project.org</a><br>
<a href="http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/gsoc-porta" target="_blank">http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/gsoc-porta</a><br>
</font></span></blockquote></div><br></div>