<div dir="ltr">Peter,<div><br></div><div>Thanks for the feedback, I really appreciate it.</div><div><br></div><div>see comments in line.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Sep 22, 2013 at 4:41 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've been working through your vignette to hopefully give you some more<br>
detailed feedback, including on your questions from a few days ago.  Sorry<br>
this has taken so long, but I wanted to spend some focused time on the<br>
package.<br>
<br>
I realize that you've got different plot methods for each type, and I<br>
appreciate what a hassle it is to keep such methods relatively consistent.<br>
 In <a href="http://chart.RiskReturn.DE" target="_blank">chart.RiskReturn.DE</a>, when the function doesn't find anything that fits<br>
its defaults:<br>
> plot(RiskBudget.DE)<br>
Error in plot.window(...) : need finite 'xlim' values<br>
In addition: Warning messages:<br>
1: In <a href="http://chart.Scatter.DE" target="_blank">chart.Scatter.DE</a>(object = DE, risk.col = risk.col, return.col =<br>
return.col,  :<br>
  mean or ES do  not match extractStats output of $objective_measures slot<br>
2: In min(x) : no non-missing arguments to min; returning Inf<br>
3: In max(x) : no non-missing arguments to max; returning -Inf<br>
<br>
It's a risk budget on ETL, so if I tell it that, it works:<br>
> plot(RiskBudget.DE, risk.col="ETL", return.col="mean")<br></blockquote><div><br></div><div style>The default is risk.col="ES". Because your objective name is "ETL", you need to explicitly do risk.col="ETL".</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
...but it doesn't recover well when I try to plot the results in variance<br>
space:<br>
> plot(RiskBudget.DE, risk.col="StdDev", return.col="mean")<br>
Error in plot.window(...) : need finite 'xlim' values<br>
In addition: Warning messages:<br>
1: In <a href="http://chart.Scatter.DE" target="_blank">chart.Scatter.DE</a>(object = DE, risk.col = risk.col, return.col =<br>
return.col,  :<br>
  mean or StdDev do  not match extractStats output of $objective_measures<br>
slot<br>
2: In min(x) : no non-missing arguments to min; returning Inf<br>
3: In max(x) : no non-missing arguments to max; returning -Inf<br>
<br>
<br>
I'm not exactly sure what the issue is here, but maybe it's related:<br>
> chart.RiskBudget(RiskBudget.DE, risk.type="percentage", neighbors=5)<br>
Error in subsetx[i, riskcols] : incorrect number of dimensions<br>
> traceback()<br>
3: points(subsetx[i, riskcols], type = "b", col = "lightblue")<br>
2: chart.RiskBudget.optimize.portfolio(RiskBudget.DE, risk.type =<br>
"percentage",<br>
       neighbors = 5)<br>
1: chart.RiskBudget(RiskBudget.DE, risk.type = "percentage", neighbors = 5)<br></blockquote><div><br></div><div style>Not sure either what the issue is, but I'll take a look.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

In chart.RiskReturnScatter.RP, it looks like 'rp' is being passed into<br>
plot through dots.<br>
> plot(EqmETL.RND, risk.col="StdDev", return.col="mean", rp=1000,<br>
chart.assets=TRUE)<br>
There were 13 warnings (use warnings() to see them)<br>
> warnings()<br>
Warning messages:<br>
1: "rp" is not a graphical parameter<br>
2: "rp" is not a graphical parameter<br>
3: "rp" is not a graphical parameter<br></blockquote><div><br></div><div style>The 'rp' argument is meant for optimize.portfolio.ROI and optimize.portfolio.GenSA objects. Since ROI and GenSA do not return trace information like DEoptim or random portfolios, I added this as an option to generate random portfolios to plot the feasible space. If you are already passing in an optimize.portfolio.random object, there is no need to pass in rp as an argument.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
> extractWeights(buoys)<br>
         Convertible Arbitrage Equity Market Neutral Fixed Income<br>
Arbitrage Event Driven CTA Global Global Macro Long/Short Equity<br>
MeanSD              0.05000000                 0.050<br>
0.050   0.30000000  0.0500000    0.2000000             0.300<br>
MeanmETL            0.05000000                 0.300<br>
0.050   0.05000000  0.2000000    0.3000000             0.050<br>
MinSD               0.06042904                 0.300<br>
0.300   0.05234676  0.1735858    0.0636384             0.050<br>
MinmETL             0.05000000                 0.300<br>
0.050   0.05000000  0.2000000    0.3000000             0.050<br>
EqSD                0.12500000                 0.240<br>
0.200   0.08500000  0.1050000    0.1700000             0.075<br>
EqmETL              0.06000000                 0.265<br>
0.165   0.09000000  0.2050000    0.1300000             0.080<br>
RB                  0.05200000                 0.410<br>
0.060   0.05200000  0.1438995    0.2220000             0.058<br>
<br>
...but this doesn't:<br>
> extractObjectiveMeasures(buoys)<br>
                mean     StdDev         ES StdDev.contribution1<br>
StdDev.contribution2 StdDev.contribution3<br>
StdDev.contribution4<br>
MeanSD   0.006782814 0.01546759         NA                   NA<br>
       NA                   NA                   NA<br>
MeanmETL 0.005897789         NA 0.01505626                   NA<br>
       NA                   NA                   NA<br>
MinSD             NA 0.01009001         NA                   NA<br>
       NA                   NA                   NA<br>
MinmETL           NA         NA 0.01505626                   NA<br>
       NA                   NA                   NA<br>
EqSD              NA 0.01113716         NA          0.001763096<br>
0.001565752          0.001886988          0.001258567<br>
EqmETL            NA         NA 0.01646509                   NA<br>
       NA                   NA                   NA<br>
RB       0.005812997         NA         NA                   NA<br>
       NA                   NA                   NA<br>
         StdDev.contribution5 StdDev.contribution6 StdDev.contribution7<br>
StdDev.pct_contrib_StdDev1 StdDev.pct_contrib_StdDev2<br>
MeanSD                     NA                   NA                   NA<br>
                     NA                         NA<br>
MeanmETL                   NA                   NA                   NA<br>
                     NA                         NA<br>
MinSD                      NA                   NA                   NA<br>
                     NA                         NA<br>
MinmETL                    NA                   NA                   NA<br>
                     NA                         NA<br>
EqSD              0.001039908          0.002296903          0.001325947<br>
              0.1583075                  0.1405881<br>
EqmETL                     NA                   NA                   NA<br>
                     NA                         NA<br>
RB                         NA                   NA                   NA<br>
                     NA                         NA<br>
...snip...<br>
<br></blockquote><div><br></div><div style>It is tough to tell with the formatting on the email, but I'll take a closer look at the script in the sandbox to see if I can tell what is going on. The idea is that extractObjectiveMeasures will return a matrix of the objective measures for all optimize.portfolio objects in the opt.list object. For example, the meanSD row should have NAs under the ETL and ETL component contribution columns. I am only stitching together the objective measures, I do not re-calculate StdDev or component StdDev for the portfolios with ETL as an objective. Basically, I just take whatever objectives are in the $objective_measures slot of each optimize.portfolio object. Should I be doing something such that all cells in the matrix have values? </div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
As a consequence, only one portfolio appears in the following plot (MeanSD):<br>
> chart.RiskReward(buoys)<br></blockquote><div><br></div><div style>This relates to my comment above about how I am not recalculating anything. Before the portfolios are plotted in risk-return space, I omit rows that have NA values. For example, if you wanted to plot all the portfolios in mean-ETL space, all portfolios should have mean and ETL as an objective. You could set the multiplier to 0 so it does not affect the optimization, but is returned in the $objective_measures slot.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
All in all, this is all looking good.  I've got some scripts checked in<br>
under sandbox/symposium2013 if you want to follow along.<br></blockquote><div><br></div><div style>I'll take a closer look and follow along, thanks!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<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></div>