{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "***\n", "# $\\quad$ Lecture 14 - Portfolio optimization\n", "***\n", "$\\newcommand{\\vct}[1]{\\mathbf{#1}}$\n", "$\\newcommand{\\mtx}[1]{\\mathbf{#1}}$\n", "$\\newcommand{\\e}{\\varepsilon}$\n", "$\\newcommand{\\norm}[1]{\\|#1\\|}$\n", "$\\newcommand{\\minimize}{\\text{minimize}\\quad}$\n", "$\\newcommand{\\maximize}{\\text{maximize}\\quad}$\n", "$\\newcommand{\\subjto}{\\quad\\text{subject to}\\quad}$\n", "$\\newcommand{\\R}{\\mathbb{R}}$\n", "$\\newcommand{\\trans}{T}$\n", "$\\newcommand{\\ip}[2]{\\langle {#1}, {#2} \\rangle}$\n", "$\\newcommand{\\zerovct}{\\vct{0}}$\n", "$\\newcommand{\\diff}[1]{\\mathrm{d}{#1}}$\n", "$\\newcommand{\\conv}{\\operatorname{conv}}$\n", "$\\newcommand{\\inter}{{\\operatorname{int}}}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So far we have only dealt with constrained optimization problems where the objective and the constraints are linear. We now turn attention to general problems of the form\n", "\n", "\\begin{align*}\\tag{1}\n", "\\begin{split}\n", " \\minimize & f(\\vct{x})\\\\\n", " \\subjto & \\vct{g}(\\vct{x})\\leq \\zerovct\\\\\n", " & \\vct{h}(\\vct{x})= \\zerovct,\n", "\\end{split}\n", "\\end{align*}\n", "\n", "where $\\vct{x}\\in \\R^n$, $\\vct{g}=(g_1,\\dots,g_m)^{\\trans}$, $\\vct{g}=(g_1,\\dots,g_{\\ell})$, and the inequalities are componentwise. \n", "The problem above is *convex*, if $f$ and the $g_i$ are convex, and the $h_j$ are linear. We also denote by $\\mathrm{dom}(f)$ the *domain* of $f$, which is the set of points $\\vct{x}$ where $f$ takes a finite value. The feasible set\n", "\n", "\\begin{equation*}\n", " \\mathcal{F} = \\{\\vct{x} \\mid g_i(\\vct{x})\\leq 0, \\ h_j(\\vct{x})=0, \\ 1\\leq i\\leq m, \\ 1\\leq j\\leq \\ell\\}\n", "\\end{equation*}\n", "\n", "for a convex constrained problem is a convex set." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "### 14.1 Quadratic programming and portfolio optimization\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simplest case of non-linear, constrained convex optimization is **quadratic programming**. Quadratic programming problems are of the form\n", "\n", "\\begin{align*}\n", " \\minimize & \\frac{1}{2}\\vct{x}^{\\trans}\\mtx{Q}\\vct{x}+\\vct{c}^{\\trans}\\vct{x}\\\\\n", " \\subjto & \\mtx{A}\\vct{x}\\leq \\vct{b},\n", "\\end{align*}\n", "\n", "with $\\mtx{Q}$ symmetric and positive semidefinite.\n", "Note that this problem combines two problems we studied in some detail before: minimizing a quadratic function, and linear constraints. Just as we did for unconstrained minimization and for linear programming, we will derive optimality conditions for such problems. Before studying the theory, we first present an important application: portfolio optimization.\n", "\n", "If we invest an amount $x^0$ into a product at period $0$, and at period $1$ (for example, one day) the value is $x^1$, then the \\textbf{relative return} is defined as\n", "\n", "\\begin{equation*}\n", " r = \\frac{x^{1}-x^{0}}{x^{0}}.\n", "\\end{equation*}\n", "\n", "As we can't predict the future, we usually work with the **expected return** $\\mtx{E}[r]=\\mu$, which is a statistical estimate of the future return. One naive method of estimating the future return is by taking the average of past returns, but other more sophisticated methods are possible.\n", "\n", "In **portfolio optimization**, we have a proportion $x_i$ of our available funds that we want to invest in a stock $i$ (in particular, as $x_i$ measures a proportion, we have $\\sum_{i=1}^n x_i = 1$). We may or may not allow $x_i<0$, which would correspond to short-selling or borrowing. Given this allocation, the overall return is $\\vct{x}^{\\trans}\\vct{r}$, where $\\vct{x}=(x_1,\\dots,x_n)^{\\trans}$ and $\\vct{r}=(r_1,\\dots,r_n)^{\\trans}$ is the vector of (relative) returns.\n", "If $\\vct{\\mu}=\\mtx{E}[\\vct{r}]$ denotes the vector of expected returns, then the total expected return is \n", "\n", "\\begin{equation*}\n", "\\mu = \\vct{x}^{\\trans}\\vct{\\mu}=\\sum_{i=1}^n x_i\\mu_i.\n", "\\end{equation*} \n", "\n", "The **risk** is an investment is measured in terms of the **variance** of the returns $r=\\vct{x}^{\\trans}\\vct{r}$. Let $\\mtx{\\Sigma}$ denote the \\textbf{covariance matrix}, where the $(i,j)$-th entry is $\\mathrm{Cov}(r_i,r_j) = \\mtx{E}[(r_i-\\mu_i)(r_j-\\mu_j)]$. The $(i,j)$-th entry measures how much products $i$ and $j$ are correlated. The \\textbf{variance} of the returns $r$ is then the quadratic function\n", "\n", " \\begin{equation*}\n", " \\vct{x}^{\\trans}\\Sigma\\vct{x}.\n", " \\end{equation*} \n", " \n", "A portfolio optimization problem either seeks to maximize the return while bounding the risk,\n", "\n", "\\begin{align*}\n", " \\maximize & \\vct{x}^{\\trans}\\vct{\\mu}\\\\\n", " \\subjto & \\vct{x}^{\\trans}\\mtx{\\Sigma}\\vct{x}\\leq \\sigma,\\\\\n", " & \\sum_{i=1}^n x_i=1\\\\\n", " & x_i\\geq 0,\n", " \\end{align*}\n", "\n", "or minimize the risk given a certain target return $\\mu$,\n", "\n", "\\begin{align*}\n", " \\minimize & \\vct{x}^{\\trans}\\mtx{\\Sigma}\\vct{x}\\\\\n", " \\subjto & \\vct{x}^{\\trans}\\vct{\\mu} = \\mu\\\\\n", " & \\sum_{i=1}^n x_i = 1\\\\\n", " & x_i\\geq 0.\n", "\\end{align*}\n", "\n", "Both of these problems are convex optimization problems. The constraints $x_i\\geq 0$ mean that we are not allowed to short-sell; when dealing with futures or options, or if we are a large institutional investor, we may drop these constraints. As we will see later, dropping the inequality constraints from the second formulation allows the problem to be solved in closed form.\n", "\n", "A third form of the portfolio optimization problem is to combine the expected return and the risk into a single objective function, as follows:\n", "\n", "\\begin{align*}\n", " \\maximize & \\vct{\\mu}^{\\trans}\\vct{x} - \\gamma \\vct{x}^{\\trans}\\mtx{\\Sigma}\\vct{x}\\\\\n", " \\subjto & \\sum_{i=1}^n x_i = 1\\\\\n", " & x_i\\geq 0.\n", "\\end{align*}\n", "\n", "Note that this is a convex quadratic problem: we can transform it into a minimization problem with the matrix $\\mtx{\\Sigma}$ by changing the sign.\n", "The parameter $\\gamma$ is called a **risk aversion parameter**; it adjusts the level of risk we are willing to take. If $\\gamma=0$, then the quadratic term does not feature in the objective and we just aim to maximize the expected return. If $\\gamma$ is big, then the risk term weighs heavily on the objective function, and the optimal value will like be one where $\\vct{x}^{\\trans}\\mtx{\\Sigma}\\vct{x}$ is small. By varying the value of $\\gamma$, we get different expected return / risk (variance) trade-offs. The following code computes this trade-off curve for a portfolio of $10$ stock from the FT100 index. The mean and covariance where computing by averaging over the past 60 trading days (3 months). The $x$-axis is the \\textbf{standard deviation}, which is given as the square root of the variance (risk). " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from datetime import datetime, date\n", "import pandas as pd\n", "from pandas_datareader import data, wb\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from cvxpy import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Set date range\n", "START = datetime(2016,1,1)\n", "END = date.today()\n", "TICKER = ['ADN', 'AZN', 'EZJ', 'GSK', 'ITV', 'LSE', 'TSCO', 'PSON', 'PRU', 'DGE']" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ADNAZNEZJGSKITVLSETSCOPSONPRUDGE
Date
2016-01-042.4119731.92670684.90000237.8131870.40.00282.8005930.01677.0205341036.770020
2016-01-052.4119732.40465086.62000338.0281940.40.00182.7412750.01476.7600721044.900024
2016-01-062.4119731.86935183.20999937.6168780.40.00281.6043100.01474.2036531031.810059
\n", "
" ], "text/plain": [ " ADN AZN EZJ GSK ITV LSE TSCO \\\n", "Date \n", "2016-01-04 2.41197 31.926706 84.900002 37.813187 0.4 0.002 82.800593 \n", "2016-01-05 2.41197 32.404650 86.620003 38.028194 0.4 0.001 82.741275 \n", "2016-01-06 2.41197 31.869351 83.209999 37.616878 0.4 0.002 81.604310 \n", "\n", " PSON PRU DGE \n", "Date \n", "2016-01-04 0.016 77.020534 1036.770020 \n", "2016-01-05 0.014 76.760072 1044.900024 \n", "2016-01-06 0.014 74.203653 1031.810059 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load daily adjusted close prices into dataframe\n", "mydata = data.DataReader('TSCO', \"yahoo\", START, END)\n", "dates = mydata.index\n", "df = pd.DataFrame(index=dates, columns=TICKER)\n", "for x in TICKER:\n", " mydata = data.DataReader(x, \"yahoo\", START, END)\n", " df.loc[:,x] = mydata['Adj Close']\n", "df = df.dropna()\n", "df.head(3)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Compute returns\n", "price_matrix = df.values\n", "returns = (price_matrix[1:]-price_matrix[0:-1])/price_matrix[0:-1]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot some stock prices and returns\n", "% matplotlib inline\n", "fig, ax = plt.subplots(1,2)\n", "ax[0].plot(price_matrix[:,-1])\n", "ax[1].plot(returns[:,-1])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Estimate mean vector and covariance matrix based on last 20 prices\n", "mu = np.mean(returns[-60:,:], axis=0)\n", "Sigma = np.cov(returns[-60:,:].T)\n", "n = 10" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Long only portfolio optimization in Lagrangian form\n", "x = Variable(n)\n", "gamma = Parameter(sign='positive')\n", "ret = mu.T*x\n", "risk = quad_form(x, Sigma)\n", "prob = Problem(Maximize(ret - gamma*risk), \n", " [sum_entries(x) == 1, \n", " x >= 0])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Compute trade-off curve.\n", "SAMPLES = 1000\n", "risk_data = np.zeros(SAMPLES)\n", "ret_data = np.zeros(SAMPLES)\n", "gamma_vals = np.logspace(-2, 3, num=SAMPLES)\n", "for i in range(SAMPLES):\n", " gamma.value = gamma_vals[i]\n", " prob.solve()\n", " risk_data[i] = sqrt(risk).value\n", " ret_data[i] = ret.value" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot long only trade-off curve.\n", "markers_on = [290, 400]\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "plt.plot(risk_data, ret_data, 'g-')\n", "for marker in markers_on:\n", " plt.plot(risk_data[marker], ret_data[marker], 'bs')\n", " ax.annotate(r\"$\\gamma = %.2f$\" % gamma_vals[marker], xy=(risk_data[marker]+0.01, ret_data[marker]-0.01))\n", "for i in range(n):\n", " plt.plot(sqrt(Sigma[i,i]).value, mu[i], 'ro')\n", "plt.xlabel('Standard deviation')\n", "plt.ylabel('Return')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The red dots represent the standard deviation and expected return of the individual stocks. The two blue dots indicate the standard deviation and expected return of the portfolio for two values of $\\gamma$. Which value of $\\gamma$ we go for depends on how much risk we are willing to take: if we are risk-averse, we may prefer the $\\gamma=1$ value to the $\\gamma=0.028$ value, at the expense of smaller expected returns.\n", "\n", "In practical applications there are a lot of other factors to be considered, such as whether the estimation procedure for the mean and covariance makes sense. In addition, it is often common to add terms that account for **transaction costs** into the objective funtion." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 1 }