<div dir="ltr">Very cool! Interesting to view the portfolios in mean-ETL and mean-HHI space.<div><br></div><div>Thanks for sharing!<br></div><div><br></div><div>Ross</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Wed, Oct 2, 2013 at 11:22 AM, 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">
Proof that the prior plot does what I said it would...<br>
<div class="HOEnZb"><div class="h5">--<br>
Peter Carl<br>
<a href="http://www.braverock.com/peter" target="_blank">http://www.braverock.com/peter</a><br>
<br>
> Changed the subject line, since I changed the subject.<br>
><br>
> Here's a graph of the random portfolios colored by degree of concentration<br>
> in contribution of risk.  I used the HHI to measure it for each individual<br>
> portfolio, then normalized it and added a multiplier to match to a skewed<br>
> color space.<br>
><br>
> Cool, eh?  I skewed the color space mainly to emphasize those that are the<br>
> closest to the equal weight contribution ideal, but in truth the position<br>
> limits keep the HHI between .143 (1/7) and about 0.35; so the range is<br>
> pretty small.  Keep in mind that if risk and weights were equivalent, the<br>
> maximum HHI measure based on weights would be 0.23...<br>
><br>
> I think this gets to the heart of the matter, and might suggest a method<br>
> for measuring and showing the efficient frontier.  It's not entirely<br>
> straight forward from looking at this plot - probably better done in HHI<br>
> space to see how pointed that space really is.  BTW, this plots as a cone<br>
> in mean-HHI space.<br>
><br>
> pcc<br>
> --<br>
> Peter Carl<br>
> <a href="http://www.braverock.com/peter" target="_blank">http://www.braverock.com/peter</a><br>
><br>
>> Peter,<br>
>><br>
>> I think you bring up a really interesting point about the properties or<br>
>> behavior of equal risk contribution portfolios. In a different email<br>
>> thread<br>
>> on this list (I think the subject line was "Portfolio Vignette") Brian<br>
>> mentioned that a portfolio with a risk budget objective will likely<br>
>> place<br>
>> the portfolio on the interior of the space, depending on the objectives.<br>
>> I<br>
>> believe this is just an example where that is the case. I'm just<br>
>> piggybacking off of what Brian said and haven't spent much time thinking<br>
>> about this - it would be an interesting research project and this is a<br>
>> nice<br>
>> example.<br>
>><br>
>> The chart.EfficientFrontier function traces the edge of the feasible<br>
>> portfolios in risk-return space. Where "feasible" means that the weights<br>
>> satisfy the constraints - so the points along the efficient frontier are<br>
>> not necessarily equal risk contribution portfolios. It might also be<br>
>> interesting looking at the neighbor portfolios because the neighbor<br>
>> portfolios will be near equal risk contribution. You should be able to<br>
>> see<br>
>> how close to equal contribution the neighbor portfolios are with the<br>
>> chart.RiskBudget function. Comparing the optimal portfolio to the space<br>
>> of<br>
>> neighbor portfolios might give more detail.<br>
>><br>
>> Another thing to note is that the neighbor portfolios may not be the<br>
>> portfolios closest to equal risk contribution. The neighbor portfolios,<br>
>> as<br>
>> extracted by specifying neighbors=N, are the N nearest portfolios based<br>
>> on<br>
>> the "out" column. There could be many equal risk contribution portfolios<br>
>> (which is why you specify a sub-objective) and you could extract the<br>
>> nearest equal risk contribution portfolios to plot as neighbors.<br>
>><br>
>> Thanks for the kind words! I'm grateful for the opportunity to<br>
>> contribute<br>
>> to the package and glad that you are happy with what I have done.<br>
>><br>
>> Thanks,<br>
>> Ross<br>
>><br>
>><br>
>><br>
>> On Tue, Oct 1, 2013 at 5:51 PM, Peter Carl <<a href="mailto:peter@braverock.com">peter@braverock.com</a>> wrote:<br>
>><br>
>>> Ross,<br>
>>><br>
>>> Thanks very much for taking the time to look into that - I really<br>
>>> appreciate it.<br>
>>><br>
>>> I hope you don't mind another question, this related to the attached<br>
>>> graph.  I note that the efficient frontier is identifying a<br>
>>> higher-return<br>
>>> lower-risk portfolio than the identified optimal, if I'm interpreting<br>
>>> it<br>
>>> correctly.<br>
>>><br>
>>> Generated with:<br>
>>> > chart.EfficientFrontier(EqmETL.RND)<br>
>>><br>
>>> Is there something I'm missing?<br>
>>><br>
>>> Btw, I think it's ok with the Google overlords to tell you that you had<br>
>>> a<br>
>>> great summer, and that I really appreciate what you've done.  I'm<br>
>>> looking<br>
>>> forward to your continued contribution!<br>
>>><br>
>>> pcc<br>
>>> --<br>
>>> Peter Carl<br>
>>> <a href="http://www.braverock.com/peter" target="_blank">http://www.braverock.com/peter</a><br>
>>><br>
>>> > Peter,<br>
>>> ><br>
>>> > I suspected this might be the case and did confirm it for the results<br>
>>> in<br>
>>> > the mean-StdDev space. The plot is using the objective measures from<br>
>>> the<br>
>>> > extractStats output of the EqmETL.RND object and these are calculated<br>
>>> with<br>
>>> > clean="boudt" whereas the buoys.portfmeas as well as MinSD.ROI are<br>
>>> > calculated with clean="none".<br>
>>> ><br>
>>> > From the graph, it looks like the minimum StdDev for the random<br>
>>> portfolios<br>
>>> > is 0.0095. This is close to the result I get with the following test:<br>
>>> ><br>
>>> >> R.clean <- Return.clean(R=R, method="boudt")<br>
>>> >><br>
>>> >> tmpSD <- vector("numeric", length=nrow(rp))<br>
>>> >> tmpSDcleanR <- vector("numeric", length=nrow(rp))<br>
>>> >> for(i in 1:nrow(rp)){<br>
>>> > +   tmpSD[i] <- StdDev(R=R, weights=rp[i,])<br>
>>> > +   tmpSDcleanR[i] <- StdDev(R=R.clean, weights=rp[i,])<br>
>>> > + }<br>
>>> >><br>
>>> >> min(tmpSD)<br>
>>> > [1] 0.01020511<br>
>>> >> min(tmpSDcleanR)<br>
>>> > [1] 0.009514874<br>
>>> >> as.numeric(MinSD.ROI$objective_measures)<br>
>>> > [1] 0.01009001<br>
>>> ><br>
>>> > Ross<br>
>>> ><br>
>>> > On Sat, Sep 28, 2013 at 1:04 PM, Peter Carl <<a href="mailto:peter@braverock.com">peter@braverock.com</a>><br>
>>> wrote:<br>
>>> ><br>
>>> >> I think I might have found the issue.  In the RP solvers, I was<br>
>>> using<br>
>>> >> clean="boudt", but wasn't passing in anything into the ROI solvers.<br>
>>> >> That<br>
>>> >> would be a big difference...<br>
>>> >><br>
>>> >> I'll confirm that is the issue later, and come back if it wasn't.<br>
>>> >><br>
>>> >> Thanks for listening.<br>
>>> >><br>
>>> >> pcc<br>
>>> >> --<br>
>>> >> Peter Carl<br>
>>> >> <a href="http://www.braverock.com/peter" target="_blank">http://www.braverock.com/peter</a><br>
>>> >><br>
>>> >> > Whoops, I hit "send" too early.<br>
>>> >> ><br>
>>> >> > That's the gist of the message, though.  I'll check in all my<br>
>>> recent<br>
>>> >> > changes and the RP result so that you can reproduce these results.<br>
>>> >> Let<br>
>>> >> me<br>
>>> >> > know if you have any other ideas or see issues in how I've laid<br>
>>> out<br>
>>> >> the<br>
>>> >> > constraint objects.<br>
>>> >> ><br>
>>> >> > Thanks in advance,<br>
>>> >> ><br>
>>> >> > pcc<br>
>>> >> > --<br>
>>> >> > Peter Carl<br>
>>> >> > <a href="http://www.braverock.com/peter" target="_blank">http://www.braverock.com/peter</a><br>
>>> >> ><br>
>>> >> > I hit a bump in the road a couple of days ago when I looked at the<br>
>>> two<br>
>>> >> > attached charts.  One shows the mean-ETL of a set of different<br>
>>> >> objectives<br>
>>> >> > against a cloud of random portfolios.  The objectives that can be<br>
>>> are<br>
>>> >> > calculated through ROI; I used RP for most of the others and DE<br>
>>> for<br>
>>> >> the<br>
>>> >> > risk budget objective.<br>
>>> >> ><br>
>>> >> > Note that the cloud of RP portfolios shows portfolios with lower<br>
>>> mETL<br>
>>> >> than<br>
>>> >> > the indicated MinmETL portfolio.  Well, maybe the mETL space isn't<br>
>>> >> convex?<br>
>>> >> >  Turns out, you can see the same issue in the attached mean-SD<br>
>>> space<br>
>>> >> with<br>
>>> >> > the minSD portfolio.<br>
>>> >> ><br>
>>> >> > I went back and re-calculated the RP portfolios to eliminate the<br>
>>> >> wiggle<br>
>>> >> we<br>
>>> >> > usually give the boundaries (a two percent leeway to speed up<br>
>>> >> portfolio<br>
>>> >> > generation) reasoning that those might be the issue.  I generated<br>
>>> 10K<br>
>>> >> > RP's, of which about 3K summed exactly to 1.0 (which is plenty).<br>
>>> So I<br>
>>> >> > know that it isn't that those portfolios are out of bounds<br>
>>> relative<br>
>>> to<br>
>>> >> the<br>
>>> >> > constraints objects.<br>
>>> >> ><br>
>>> >> > I've tried to make sure that every objective is using the same<br>
>>> >> > constraints, and I've double-checked my post processing to make<br>
>>> sure I<br>
>>> >> > wasn't damaging the output from the optimization runs to get<br>
>>> things<br>
>>> >> into<br>
>>> >> > charts.<br>
>>> >> ><br>
>>> >> > This suggests to me that it's a deeper problem, although there<br>
>>> still<br>
>>> >> just<br>
>>> >> > might be an issue in my code somewhere.<br>
>>> >> > --<br>
>>> >> > Peter Carl<br>
>>> >> > <a href="http://www.braverock.com/peter" target="_blank">http://www.braverock.com/peter</a><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>
>>> >> ><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>
>>> >> ><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>
>>> >><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>
>>> ><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>
>>><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>
>><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>
><br>
</div></div><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>
<br></blockquote></div><br></div>