{
 "metadata": {
  "name": ""
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "### CVXBOOK extra exercise 13.3\n",
      "*Simple portfolio optimization*. Solution by Chris Dembia."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from cvxpy import *\n",
      "from simple_portfolio_data import *\n",
      "one = np.matrix(np.ones((n, 1)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Part a"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "r_min = pbar.T * x_unif\n",
      "risk_unif = quad_form(x_unif, S).value\n",
      "print('Minimum return: {}'.format(r_min))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Minimum return: [[ 0.08399391]]\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x = Variable(n)\n",
      "objective_a = Minimize( quad_form(x, S) )"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 4,
     "metadata": {},
     "source": [
      "No (additional) constraints"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "constraints_i = [pbar.T * x == r_min, sum(x) == 1]\n",
      "problem_ai = Problem(objective_a, constraints_i)\n",
      "risk_ai = problem_ai.solve()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 4,
     "metadata": {},
     "source": [
      "Long-only"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "constraints_ii = [pbar.T * x == r_min, sum(x) == 1, x >= 0]\n",
      "problem_aii = Problem(objective_a, constraints_ii)\n",
      "risk_aii = problem_aii.solve()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "heading",
     "level": 4,
     "metadata": {},
     "source": [
      "Total short"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "constraints_iii = [pbar.T * x == r_min, sum(x) == 1,\n",
      "                   one.T * max(-x, 0) <= 0.5]\n",
      "problem_aiii = Problem(objective_a, constraints_iii)\n",
      "risk_aiii = problem_aiii.solve()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print('Uniform portfolio risk: {}'.format(risk_unif))\n",
      "print('No additional constraints risk: {}'.format(risk_ai))\n",
      "print('Long-only risk: {}'.format(risk_aii))\n",
      "print('Total short: {}'.format(risk_aiii))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Uniform portfolio risk: 0.00500978688334\n",
        "No additional constraints risk: 6.56715701762e-05\n",
        "Long-only risk: 0.00101937807592\n",
        "Total short: 6.56717792366e-05\n"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Part b"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "N = 20\n",
      "mus = np.logspace(0, 5, N)\n",
      "mean_longonly = np.zeros(N)\n",
      "std_longonly = np.zeros(N)\n",
      "mean_totalshort = np.zeros(N)\n",
      "std_totalshort = np.zeros(N)\n",
      "constraints_longonly = [sum(x) == 1, x >= 0]\n",
      "constraints_totalshort = [sum(x) == 1, one.T * max(-x, 0) <= 0.5]\n",
      "for i, mu in enumerate(mus):\n",
      "    print('mu = {}'.format(mu))\n",
      "    \n",
      "    ret = pbar.T * x\n",
      "    risk = quad_form(x, S)\n",
      "    \n",
      "    objective = Minimize( -ret + mu * risk )\n",
      "    \n",
      "    # Long-only.\n",
      "    Problem(objective, constraints_longonly).solve()\n",
      "    mean_longonly[i] = ret.value\n",
      "    std_longonly[i] = np.sqrt(risk.value)\n",
      "    \n",
      "    # Total short.\n",
      "    Problem(objective, constraints_totalshort).solve()\n",
      "    mean_totalshort[i] = ret.value\n",
      "    std_totalshort[i] = np.sqrt(risk.value)    "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "mu = 1.0\n",
        "mu = 1.83298071083\n",
        "mu = 3.35981828628\n",
        "mu = 6.15848211066"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "mu = 11.2883789168\n",
        "mu = 20.6913808111\n",
        "mu = 37.9269019073\n",
        "mu = 69.5192796178"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "mu = 127.42749857\n",
        "mu = 233.572146909\n",
        "mu = 428.133239872\n",
        "mu = 784.759970351"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "mu = 1438.44988829\n",
        "mu = 2636.65089873\n",
        "mu = 4832.93023857\n",
        "mu = 8858.6679041\n",
        "mu = 16237.7673919"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "mu = 29763.5144163\n",
        "mu = 54555.9478117\n",
        "mu = 100000.0\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "pl.plot(std_longonly, mean_longonly, label='long-only')\n",
      "pl.plot(std_totalshort, mean_totalshort, label='total short')\n",
      "pl.xlabel('standard deviation of return')\n",
      "pl.ylabel('mean return')\n",
      "pl.legend(loc='lower right', frameon=False);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x4947c90>"
       ]
      }
     ],
     "prompt_number": 9
    }
   ],
   "metadata": {}
  }
 ]
}