Back to main page

The following zip file contains an implementation of retirement portfolio selection problem from working paper “G. Pertaia, M. Lane, M. Murphy and S. Uryasev. Optimal Allocation of Retirement Portfolios. Research Report 2019-1, ISE Dept., University of Florida, January 2019” (download PDF file).

The zip file contains 2 main scripts “KernelPortfolio.py” and “KernelPortfolio_stress.py”, that solve the portfolio selection problem for optimistic and pessimistic datasets respectively. Additionally, there are 2 more scripts that take care of processing the output from the main scripts. The script “output_analysis.py” constructs a retirement portfolio on an out-of-sample data for both optimistic and pessimistic cases. The script “efficient_frontier.py” constructs ETS functions for both optimistic and pessimistic cases.
These scripts run on Python 3.7 with following libraries installed:
  • “numpy==1.16.2”,
  • “matplotlib==3.0.3”,
  • “pyomo==5.6.6”,
  • “openpyxl==2.6.1”,
  • “dill==0.2.9”.

The portfolio selection problem was solved for minimum cash outflow requirements of L =  $10,000; 15,000; … ; 100,000.

The following graph shows the average portfolio value over years for optimistic case, for some cash outflow requirements:

 

The Expected Shortage Time (ETS) functions for optimistic and pessimistic cases are given below

Optimistic case:

Pessimistic case:

CASE STUDY SUMMARY
This case study solves the retirement portfolio selection problem. The objective is to maximize discounted terminal wealth of the investor, while maintaining constant cash outflows from the portfolio by selling some portion of assets, over an entire investment horizon. The cash outflow shortage is penalized in the objective function.