Skip to content

Optimization solver additions for PortfolioAnalytics

unanimous0 edited this page Apr 11, 2019 · 13 revisions

Background

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.

Related work

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.

Details

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.

More Optimization Solvers

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.

Expected impact

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.

Mentors

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.

Tests

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.

Solutions of tests

Students, please post a link to your test results here.

  • Students, please post a link to your test results here.

    Name: Ronnie Gandhi

    Email: gronnie@cs.iitr.ac.in

    Website: RonnieGandhi

    Github: github.io

    University: Indian Institute of Technology, Roorkee

    Course: Computer Science and Engineering (B.tech) (Sophomore)

    Solution to BASIC:Easy (Screenshots of git cloned repo and installed package with dependencies)

    Solution to EXPERT:


Clone this wiki locally