Completed
| Type: | Desktop application |
| Date: | 2009/03-05 |
| Technology: | C++, Qt 4.5, Doxygen |
| License: | Closed GPL (see description for details) |
| Developers: |
|
| Area of responsibility: | Complete project |
A desktop application I wrote to support automatic portfolio testing in my BA thesis.
The application consists of two main parts:
- Estimation module
Using historical quotes (Metastock like format) estimates for a given date the covariance matrix (no shrinkage applied) and expected returns of provided financial instruments using a naive method (past average returns). Supports minimal liquidity and universe size constraints. Used as a mean to obtain basic input to the portfolio optimizer (simple Markowitz's case).
- Portfolio optimizer
Given the data from the estimation module or some arbitrary input, constructs a preselected number of random portfolios, draws the efficient frontier and selects the optimum market portfolio based on the condition of Sharpe's ratio maximization (Capital Market Line tangency point). The output (asset allocation) is used to construct the tested portfolio.
The optimization problem is solved using Goldfarb-Idnani's dual active-set method and the pseudorandom generator derives from Mersenne Twister algorithm.
Additionally the pre-final branch of Portfolio Analytics had a portfolio performance measurement module and a batch-processing functionality. Both were used for automatic evaluation of constructed portfolios, but due to their crude state were dropped in the final version.
Licensing
The licensing issue of this project is a bit problematic. Portfolio Analytics uses Qt framework version 4.5 (LGPL), Luca di Gaspero's QuadProg++ library (LGPL) and Mersenne Twister implementation by Rick Wagner (BSD). At the time of writing QuadProg++ was GPL-ed, so technically Portfolio Analytics is GPL 3+ too. But it will not be distributed at all (see here) owing to unclear legal situation (non-academic use vs financial advisory regulations).















