[GSoC-PortA] Error in plot method

Ross Bennett rossbennett34 at gmail.com
Wed Sep 18 04:01:26 CEST 2013


Peter,

Thanks for the note. The error is because you ran optimize.portfolio
without trace=TRUE so the returns object, R, is not available. I'll add a
check to the function that will throw an error with a more informative
message if the R object is missing.

Thanks,
Ross


On Tue, Sep 17, 2013 at 6:53 PM, Peter Carl <peter at braverock.com> wrote:

> Ross,
>
> You might already know about this, given that I'm a day behind on svn.
> Sorry for the lack of detail, I can do more debugging if you need.
>
> > R = edhec[,c("Convertible Arbitrage", "Equity Market Neutral","Fixed
> Income Arbitrage", "Event Driven", "CTA Global", "Global Macro",
> "Long/Short Equity")]
> > init.portf <- portfolio.spec(assets=colnames(R))
> > init.portf <- add.constraint(portfolio=init.portf,
> +                              type="leverage",
> +                              min_sum=1,
> +                              max_sum=1)
> > # Add box constraint
> > init.portf <- add.constraint(portfolio=init.portf,
> +                              type="box",
> +                              min=0.05,
> +                              max=0.3)
> >
> > # Add group constraint
> > init.portf <- add.constraint(portfolio=init.portf, type="group",
> +                   groups=list(c(1:4),
> +                               c(5:7)),
> +                   group_min=c(0.1,.05),
> +                   group_max=c(0.85,0.75)
> + )
> > #Add measure 1, annualized return
> > init.portf <- add.objective(portfolio=init.portf,
> +                             type="return", # the kind of objective this
> is
> +                             name="mean", # name of the function
> +                             enabled=TRUE, # enable or disable the
> objective
> +                             multiplier=0 # calculate it but don't use it
> in the objective
> + )
> >
> > # Add measure 2, annualized standard deviation
> > init.portf <- add.objective(portfolio=init.portf,
> +                             type="risk", # the kind of objective this is
> +                             name="var", # to minimize from the sample
> +                             enabled=TRUE, # enable or disable the
> objective
> +                             multiplier=0 # calculate it but don't use it
> in the objective
> + )
> >
> > # Add measure 3, ES
> > init.portf <- add.objective(portfolio=init.portf,
> +                             type="risk", # the kind of objective this is
> +                             name="ES", # the function to minimize
> +                             enabled=FALSE, # enable or disable the
> objective
> +                             multiplier=0, # calculate it but don't use
> it in the objective
> +                             arguments=list(p=p)
> + )
> > MeanVar.portf <- init.portf
> # Turn back on the return and sd objectives
> > MeanVar.portf$objectives[[1]]$multiplier = -1 # mean
> > MeanVar.portf$objectives[[2]]$multiplier = 1 # var
> > MeanVar.ROI<-optimize.portfolio(R=R,
> +   portfolio=MeanVar.portf,
> +   optimize_method='ROI'
> + )
> > summary(MeanVar.ROI)
> **************************************************
> PortfolioAnalytics Optimization Summary
> **************************************************
>
> Call:
> optimize.portfolio(R = R, portfolio = MeanVar.portf, optimize_method =
> "ROI")
>
> Optimal Weights:
>  Convertible Arbitrage  Equity Market Neutral Fixed Income Arbitrage
>     Event Driven             CTA Global           Global Macro
>                 0.0500                 0.0500                 0.0500
>           0.2134                 0.0500
> 0.3000
>      Long/Short Equity
>                 0.2866
>
> Objective Measures:
>     mean
> 0.007309
>
>
>  StdDev
> 0.01561
>
>
>
> Portfolio Assets and Initial Weights:
>  Convertible Arbitrage  Equity Market Neutral Fixed Income Arbitrage
>     Event Driven             CTA Global           Global Macro
>              0.1428571              0.1428571              0.1428571
>        0.1428571              0.1428571
> 0.1428571
>      Long/Short Equity
>              0.1428571
>
> **************************************************
> PortfolioAnalytics Portfolio Specification
> **************************************************
>
> Call:
> portfolio.spec(assets = colnames(R))
>
> Assets
> Number of assets: 7
>
> Asset Names
> [1] "Convertible Arbitrage"  "Equity Market Neutral"  "Fixed Income
> Arbitrage" "Event Driven"           "CTA Global"
> [6] "Global Macro"           "Long/Short Equity"
>
> Constraints
> Number of constraints: 3
> Number of enabled constraints: 3
> Enabled constraint types
>                 - leverage
>                 - box
>                 - group
> Number of disabled constraints: 0
>
> Objectives
> Number of objectives: 3
> Number of enabled objectives: 2
> Enabled objective names
>                 - mean
>                 - var
> Number of disabled objectives: 1
> Disabled objective types
>                 - ES
>
> ****************************************
> Constraints
> ****************************************
> Leverage Constraint:
> min_sum = 1
> max_sum = 1
>
> Box Constraints:
> min:
>  Convertible Arbitrage  Equity Market Neutral Fixed Income Arbitrage
>     Event Driven             CTA Global           Global Macro
>                   0.05                   0.05                   0.05
>             0.05                   0.05
>  0.05
>      Long/Short Equity
>                   0.05
> max:
>  Convertible Arbitrage  Equity Market Neutral Fixed Income Arbitrage
>     Event Driven             CTA Global           Global Macro
>                    0.3                    0.3                    0.3
>              0.3                    0.3
>    0.3
>      Long/Short Equity
>                    0.3
>
> Group Constraints:
> Groups:
> $group1
> [1] 1 2 3 4
>
> $group2
> [1] 5 6 7
>
>
> Lower bound on group weights, group_min:
> group1 group2
>   0.10   0.05
>
> Upper bound on group weights, group_max:
> group1 group2
>   0.85   0.75
>
> Group position limits, group_pos:
> NULL
>
> Group Weights:
>    group1    group2
> 0.3633993 0.6366007
>
> Position Limit Constraints:
> Maximum number of non-zero weights, max_pos:
> NULL
> Realized number of non-zero weights (i.e. positions):
> [1] 7
>
> Maximum number of long positions, max_pos_long:
> NULL
> Realized number of long positions:
> [1] 7
>
> Maximum number of short positions, max_pos_short:
> NULL
> Realized number of short positions:
> [1] 0
>
>
> Diversification Target Constraint:
> NULL
>
> Realized diversification:
> [1] 0.7723208
>
> Turnover Target Constraint:
> NULL
>
> Realized turnover from initial weights:
> [1] 0.1061224
>
> ****************************************
> Objectives
> ****************************************
>
> Objective: return_objective
> $name
> [1] "mean"
>
> $target
> NULL
>
> $arguments
> list()
>
> $enabled
> [1] TRUE
>
> $multiplier
> [1] -1
>
> $call
> add.objective(portfolio = init.portf, type = "return", name = "mean",
>     enabled = TRUE, multiplier = 0)
>
> attr(,"class")
> [1] "return_objective" "objective"
>
> ****************************************
> Objective: portfolio_risk_objective
> $name
> [1] "var"
>
> $target
> NULL
>
> $arguments
> $arguments$portfolio_method
> [1] "single"
>
>
> $enabled
> [1] TRUE
>
> $multiplier
> [1] 1
>
> $call
> add.objective(portfolio = init.portf, type = "risk", name = "var",
>     enabled = TRUE, multiplier = 0)
>
> attr(,"class")
> [1] "portfolio_risk_objective" "objective"
>
> ****************************************
> Objective: portfolio_risk_objective
> $name
> [1] "ES"
>
> $target
> NULL
>
> $arguments
> $arguments$p
> [1] 0.9166667
>
> $arguments$portfolio_method
> [1] "single"
>
>
> $enabled
> [1] FALSE
>
> $multiplier
> [1] 0
>
> $call
> add.objective(portfolio = init.portf, type = "risk", name = "ES",
>     arguments = list(p = p), enabled = FALSE, multiplier = 0)
>
> attr(,"class")
> [1] "portfolio_risk_objective" "objective"
>
> ****************************************
>
> Elapsed Time:
> Time difference of 0.5688059 secs
>
> > plot(MeanVar.ROI)
> Error in apply(R, 2, "mean") : dim(X) must have a positive length
> > traceback()
> 10: stop("dim(X) must have a positive length")
> 9: apply(R, 2, "mean")
> 8: as.vector(apply(R, 2, "mean"))
> 7: matrix(as.vector(apply(R, 2, "mean")), ncol = 1)
> 6: moments(R)
> 5: applyFUN(R = R, weights = rp, FUN = return.col, ... = ...)
> 4: chart.Scatter.ROI(object = ROI, rp = rp, return.col = return.col,
>        risk.col = risk.col, ..., chart.assets = chart.assets,
> element.color = element.color,
>        cex.axis = cex.axis, main = main, xlim = xlim, ylim = ylim)
> 3: charts.ROI(ROI = x, rp = rp, risk.col = risk.col, return.col =
> return.col,
>        chart.assets = chart.assets, main = main, xlim = xlim, ylim = ylim,
>        ...)
> 2: plot.optimize.portfolio.ROI(MeanVar.ROI)
> 1: plot(MeanVar.ROI)
>
> pcc
> --
> Peter Carl
> http://www.braverock.com/peter
>
>
> _______________________________________________
> GSoC-PortA mailing list
> GSoC-PortA at lists.r-forge.r-project.org
> http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/gsoc-porta
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/gsoc-porta/attachments/20130917/4f75e501/attachment-0001.html>


More information about the GSoC-PortA mailing list