Skip to main content

Efficient frontier based on Monte Carlo simulated returns

Project description

Python Monte Carlo Efficient Frontier (PyMCEF) package


PyMCEF is a python package that can generate efficient frontier based on Monte Carlo simulated returns.

PyMCEF is based on Post-modern portfolio theory (PMPT).

Absolute SemiDeviation and Fixed-target expected under performance are used as the risk measure for this stochastic programming problem.

A Quickstart tutorial

User input

The Monte Carlo simulated returns for all the assets in the investment universe is the input and will be to used to train the efficient frontier.

(Optional) The returns as a validation set to measure the performance of the efficient frontier.

Computation results

The complete efficient frontier stored as a vector of efficient portfolios, each of which containing the following:

  1. A python dictionary, storing the asset index and weight in the portfolio
  2. In sample performance (Sharpe ratio etc.)
  3. The lower and upper bound for the lagrangian multiplier producing this particular portfolio
  4. Validation performance, if validation Monte Carlo simulated returns are provided.


This package implements the algorithm developed by Prof. Robert J. Vanderbei in his Book: Linear Programming: Foundations and Extensions and paper Frontiers of Stochastically Nondominated Portfolios

This algorithm is very efficient, starting with lagrangian multiplier being infinite and the optimal portfolio being 100% in the asset with the largest average return, only portfolios on the efficient frontier will be visited. With the product of number of assets and number of simulated return less than 10 million, the time needed to construct the full efficient frontier is less than 1 minute.

This algorithm is based on simulated returns so it is model agnostic. This introduce huge flexibility to the user as no assumption is made on the type of return distribution (e.g. Gaussian).

Works remain to be done

At least two desirable functionalities are not implemented yet:
  1. Support for short position
  2. Support user specified upper and lower bound of the weights of each asset.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pymcef, version 0.2.4
Filename, size File type Python version Upload date Hashes
Filename, size pymcef-0.2.4-py2.7-macosx-10.7-x86_64.egg (103.0 kB) File type Egg Python version 2.7 Upload date Hashes View
Filename, size pymcef-0.2.4-py3.5-macosx-10.6-x86_64.egg (105.2 kB) File type Egg Python version 3.5 Upload date Hashes View
Filename, size pymcef-0.2.4-py3.5-win-amd64.egg (88.2 kB) File type Egg Python version 3.5 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page