braverock / PortfolioAnalytics

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A primary addition to PortfolioAnalytics in this 2.0 release is the integration 
of the CVXR solver R package for convex optimization. CVXR supports eleven 
solvers, each of which supports solvers for one or more of the following 
optimization problems: LP, QP, SOCP, SDP, EXP, MIP. See the Table near the 
beginning of the  document "Convex Optimization in R" at https://cvxr.rbind.io/ . 
Thus, with PortfolioAnalytics 2.0, users are able to use any one of a large 
variety of solvers available in CVXR for their portfolio optimization problems.

A particular use of CVXR in PortfolioAnalytics 2.0 is for computing 
Minimum Expected Quadratic Shortfall (MinEQS) portfolios, which is a second-order 
cone programming (SOCP) optimization problem. This is quite a new capability not 
available in other portfolio optimization software products. Details are provided 
in the Vignette "cvxrPortfolioAnalytics".

Another important feature of PortfolioAnalytics 2.0, is that it contains 
functionality for computing robust mean variance optimal (MVO) portfolios, using 
any one of several robust covariance matrix estimators that are not much influenced 
by outliers  Details are provided in the Vignette "robustCovMatForPA".

New PortfolioAnalytics Functions:

1. meaneqs.efficient.frontier (create Mean-EQS efficient frontier) utility function
2. meanrisk.efficient.frontier (generate multiple efficient frontiers for portfolios with the same constraint object.
3. extract_risk (extract the risk value, e.g., StdDev or ES or EQS, based on the weights of a portfolio)
4. chart.EfficientFrontierCompare (Overlay the efficient frontiers of different minRisk portfolio objects on a single plot)
5. backtest.plot (based on Peter Carl's code, generate plots of the cumulative returns and/or drawdown for back-testing)
6. opt.outputMvo (converts output of `optimize.portfolio` to a list of the portfolio weights, mean, volatility and Sharpe Ratio)
7. plotFrontiers (plot frontiers based on the result of `meanvar.efficient.frontier`, `meanetl.efficient.frontier` or `meaneqs.efficient.frontier`)


Enhanced PortfolioAnalytics Functions:

1. optimize.portfolio (enhanced with CVXR solvers and EQS objective)
2. optimize.portfolio.rebalancing (enhanced with CVXR solvers and EQS objective)
3. create.EfficientFrontier (enhanced with mean-EQS and mean-risk)


Support S3 Methods for CVXR:

1. print.optimize.portfolio.CVXR
2. extractStats.optimize.portfolio.CVXR


Custom Moment Functions for Robust Covariance Matrices:

1. custom.covRob.MM
2. custom.covRob.Rocke
3. custom.covRob.Mcd
4. custom.covRob.TSGS
5. MycovRobMcd
6. MycovRobTSGS
 

New Vignettes and their Code Functions in the demo Folder:

1. cvxrPortfolioAnalytics: CRAN title = "CVXR for PortfolioAnalytics".
2. demo_cvxrPortfolioAnalytics.R
3. robustCovMatForPA: CRAN title = "Robust Covariance Matrices for PortfolioAnalytics"
4. demo_robustCovMatForPA.R   

Please contribute with bug fixes, comments, and testing scripts! 

Please take your data and disguise it when submitting, or use data sets like 
'edhec' like we do in the demos or or like 'stocksCRSP'  and 'factorsSPGMI' in 
the PCRA package or with your constraints and other objectives modified to 
demonstrate your problem on public data.

Please report any bugs or issues on the PortfolioAnalytics GitHub page at
https://github.com/braverock/PortfolioAnalytics/issues

Acknowledgements

The bulk of the work in creating PortfolioAnalytics 2.0 was done by Xinran Zhao, 
along with contributions from Yifu Kang, under the support of a 2022 Google 
Summer of Code (GSOC 2022). Xinran and Yifu were mentored in GSOC 2022 by 
Professor Doug Martin and Professor Steve Murray in the Applied Mathematics 
Department at the University of Washington.

About


Languages

Language:PostScript 85.5%Language:R 7.9%Language:JavaScript 3.1%Language:HTML 2.4%Language:TeX 0.8%Language:CSS 0.4%Language:C 0.1%Language:Makefile 0.0%Language:Shell 0.0%