-
Notifications
You must be signed in to change notification settings - Fork 8
Optimization solver additions for PortfolioAnalytics
PortfolioAnalytics provides an R package for optimization of complex multi-objective portfolios. PortfolioAnalytics
supports multiple optimization solvers, to give the user multiple choices as to how to attempt to construct an optimal portfolio.
This project should add additional optimization solvers to PortfolioAnalytics to give user additional options for efficient convergence of their portfolio objectives.
PortfolioAnalytics uses xts and R base plotting to construct many charts of the analytical output.
PortfolioAnalytics is considered a 'core' project for financial analysis in R. This project seeks to extend the functionality and make it more useful to more people and for more solver targets.
PortfolioAnalytics
provides support for optimization solvers "DEoptim", "random", "ROI", "pso",
and "GenSA". Through ROI, PortfolioAnalytics supports additional solvers. The ROI integration,
while useful, has proven to be a somewhat fragile dependency as ROI and the underlying solvers change.
This project seeks to support additional solvers. Specifically, this project should add direct support for quadprog, Rglpk, parma, nloptr, mco (for NGSA-II support), soma and perhaps additional solvers as well, if time allows.
Then if you choose an engine, which would default as now to the 'random' solver, we would pass to a sub-function that had an extension which matched the engine someone wanted.
Basically, a proposed project plan should rely on first getting the structure correct, with a core implementation that organizes the data to be optimized and calls out to an appropriate sub-function to actually perform the optimization. Each of the currently supported solvers implements a core optimization routine, as well as various plot functions to support the charts. This model works well for the existing solvers, abstracting the particulars of any individual solver from the interface called by a user.
Much of the complexity in planning for this project will come from understanding how the existing solvers use the infrastructure, or implement things independently. Detailed outlines and a plan for tackling the structural issue inherent in the project will be key to a successful application and project.
Today, PortfolioAnalytics is used to optimize real-money portfolios at some of the top asset managers in the world. This additional functionality will give portfolio analysts additional tools to handle increasingly complicated portfolio objectives as efficiently as possible without having to understand the underlying idiosyncrasies of each individual solver.
- Brian Peterson https://github.com/braverock/
- Peter Carl https://github.com/peterccarl
- Ross Bennett https://github.com/rossb34
The mentors for this project are the primary authors of PortfolioAnalytics
as well as many other packages for using R in finance. They have over a decade of GSoC experience, and Ross Bennett started contributing to open source through participation in an earlier PortfolioAnalytics
GSoC project.
Students, please do one or more of the following tests before contacting the mentors above.
-
"basic": clone the repository and install the PortfolioAnalytics package and its dependencies locally
-
"intermediate": propose a patch via a pull request for any open issue on the PortfolioAnalytics package, or for a new feature you think would be useful to have in PortfolioAnalytics .
-
"expert": implement one of the models described in the scope of the GSoC project idea here. Most of these models are expected to take a few hours each to code the function, so a prototype should be achievable.
Students, please post a link to your test results here.
-
Students, please post a link to your test results here.
Name: Ronnie Gandhi
Email: [email protected]
Website: RonnieGandhi
Github: github.io
University: Indian Institute of Technology, Roorkee
Course: Computer Science and Engineering (B.tech) (Sophomore)
Solution to Easy Test:Easy (Screenshots of git cloned repo and installed package with dependencies)
Solution to Medium Test: