{ "cells": [ { "cell_type": "markdown", "id": "b1e8517f", "metadata": {}, "source": [ "# Minimizing Variance\n", "\n", "The *standard mean-variance (Markowitz) portfolio selection model* determines an optimal investment portfolio that balances risk and expected return. In this notebook, we minimize the variance (risk) of the portfolio, constraining the expected return to meet a prescribed minimum level. Please refer to the [annotated list of references](../literature.rst#portfolio-optimization) for more background information on portfolio optimization." ] }, { "cell_type": "code", "execution_count": 1, "id": "da1607cd", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:32.250744Z", "iopub.status.busy": "2025-01-31T10:03:32.250517Z", "iopub.status.idle": "2025-01-31T10:03:33.032834Z", "shell.execute_reply": "2025-01-31T10:03:33.032068Z" }, "nbsphinx": "hidden" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: numpy in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (2.2.2)\r\n", "Requirement already satisfied: scipy in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (1.15.1)\r\n", "Requirement already satisfied: gurobipy in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (11.0.3)\r\n", "Requirement already satisfied: pandas in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (2.2.3)\r\n", "Requirement already satisfied: matplotlib in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (3.10.0)\r\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from pandas) (2.9.0.post0)\r\n", "Requirement already satisfied: pytz>=2020.1 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from pandas) (2025.1)\r\n", "Requirement already satisfied: tzdata>=2022.7 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from pandas) (2025.1)\r\n", "Requirement already satisfied: contourpy>=1.0.1 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from matplotlib) (1.3.1)\r\n", "Requirement already satisfied: cycler>=0.10 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from matplotlib) (0.12.1)\r\n", "Requirement already satisfied: fonttools>=4.22.0 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from matplotlib) (4.55.8)\r\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from matplotlib) (1.4.8)\r\n", "Requirement already satisfied: packaging>=20.0 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from matplotlib) (24.2)\r\n", "Requirement already satisfied: pillow>=8 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from matplotlib) (11.1.0)\r\n", "Requirement already satisfied: pyparsing>=2.3.1 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from matplotlib) (3.2.1)\r\n", "Requirement already satisfied: six>=1.5 in /opt/hostedtoolcache/Python/3.11.11/x64/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "# Install dependencies\n", "%pip install numpy scipy gurobipy pandas matplotlib" ] }, { "cell_type": "code", "execution_count": 2, "id": "4766b44c", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:33.034974Z", "iopub.status.busy": "2025-01-31T10:03:33.034780Z", "iopub.status.idle": "2025-01-31T10:03:33.665962Z", "shell.execute_reply": "2025-01-31T10:03:33.665260Z" } }, "outputs": [], "source": [ "import gurobipy as gp\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 3, "id": "98c8e14f", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:33.668320Z", "iopub.status.busy": "2025-01-31T10:03:33.668034Z", "iopub.status.idle": "2025-01-31T10:03:33.676630Z", "shell.execute_reply": "2025-01-31T10:03:33.676048Z" }, "nbsphinx": "hidden" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set parameter WLSAccessID\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Set parameter WLSSecret\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Set parameter LicenseID to value 2443533\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "WLS license 2443533 - registered to Gurobi GmbH\n" ] } ], "source": [ "# Hidden cell to avoid licensing messages\n", "# when docs are generated.\n", "with gp.Model():\n", " pass" ] }, { "cell_type": "markdown", "id": "f17601ac", "metadata": {}, "source": [ "## Input Data\n", "\n", "The following input data is used within the model:\n", "\n", "- $S$: set of stocks\n", "- $\\mu$: vector of expected returns\n", "- $\\Sigma$: PSD variance-covariance matrix\n", " - $\\sigma_{ij}$ covariance between returns of assets $i$ and $j$\n", " - $\\sigma_{ii}$ variance of return of asset $i$" ] }, { "cell_type": "code", "execution_count": 4, "id": "45c1d58a", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:33.678532Z", "iopub.status.busy": "2025-01-31T10:03:33.678354Z", "iopub.status.idle": "2025-01-31T10:03:33.684395Z", "shell.execute_reply": "2025-01-31T10:03:33.683743Z" } }, "outputs": [], "source": [ "# Import example data\n", "Sigma = pd.read_pickle(\"sigma.pkl\")\n", "mu = pd.read_pickle(\"mu.pkl\")" ] }, { "cell_type": "markdown", "id": "edca0356", "metadata": {}, "source": [ "## Formulation\n", "The model minimizes the variance of the portfolio, given that a prescribed minimum level of expected return is attained. Mathematically, this results in a convex quadratic optimization problem.\n", "\n", "### Decision Variables and Variable Bounds\n", "The decision variables in the model are the proportions of capital invested among the considered stocks. The corresponding vector of positions is denoted by $x$ with its component $x_i$ denoting the proportion of capital invested in stock $i$.\n", "\n", "Each position must be between 0 and 1; this prevents leverage and short-selling:\n", "\n", "$$0\\leq x_i\\leq 1 \\; , \\; i \\in S$$\n", "\n", "### Constraints\n", "The budget constraint ensures that the entire capital is invested:\n", "\n", "$$\\sum_{i \\in S} x_i =1$$\n", "\n", "The expected return of the portfolio must be at least $\\bar\\mu$:\n", "\n", "$$\\mu^\\top x \\geq \\bar\\mu$$\n", "\n", "### Objective Function\n", "The objective is to minimize the risk of the portfolio, which is measured by its variance:\n", "\n", "$$\\min_x x^\\top \\Sigma x$$\n", "\n", "\n", "Using gurobipy, this can be expressed as follows:" ] }, { "cell_type": "code", "execution_count": 5, "id": "caac5492", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:33.686319Z", "iopub.status.busy": "2025-01-31T10:03:33.686117Z", "iopub.status.idle": "2025-01-31T10:03:33.806258Z", "shell.execute_reply": "2025-01-31T10:03:33.805660Z" } }, "outputs": [], "source": [ "mu_bar = 0.5 # Required return\n", "\n", "# Create an empty optimization model\n", "m = gp.Model()\n", "\n", "# Add variables: x[i] denotes the proportion of capital invested in stock i\n", "# 0 <= x[i] <= 1\n", "x = m.addMVar(len(mu), lb=0, ub=1, name=\"x\")\n", "\n", "# Budget constraint: all investments sum up to 1\n", "m.addConstr(x.sum() == 1, name=\"Budget_Constraint\")\n", "\n", "# Lower bound on expected return\n", "ret_constr = m.addConstr(mu.to_numpy() @ x >= mu_bar, name=\"Min_Return\")\n", "\n", "# Define objective function: Minimize overall risk\n", "m.setObjective(x @ Sigma.to_numpy() @ x, gp.GRB.MINIMIZE)" ] }, { "cell_type": "markdown", "id": "547b4546", "metadata": {}, "source": [ "We now solve the optimization problem:" ] }, { "cell_type": "code", "execution_count": 6, "id": "a429c269", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:33.809065Z", "iopub.status.busy": "2025-01-31T10:03:33.808742Z", "iopub.status.idle": "2025-01-31T10:03:34.091887Z", "shell.execute_reply": "2025-01-31T10:03:34.091240Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Gurobi Optimizer version 11.0.3 build v11.0.3rc0 (linux64 - \"Ubuntu 24.04.1 LTS\")\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CPU model: AMD EPYC 7763 64-Core Processor, instruction set [SSE2|AVX|AVX2]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Thread count: 1 physical cores, 2 logical processors, using up to 2 threads\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "WLS license 2443533 - registered to Gurobi GmbH\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Optimize a model with 2 rows, 462 columns and 924 nonzeros\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model fingerprint: 0x91dc4a17\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model has 106953 quadratic objective terms\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Coefficient statistics:\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Matrix range [7e-02, 1e+00]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Objective range [0e+00, 0e+00]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " QObjective range [6e-03, 2e+02]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Bounds range [1e+00, 1e+00]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " RHS range [5e-01, 1e+00]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Presolve time: 0.03s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Presolved: 2 rows, 462 columns, 924 nonzeros\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Presolved model has 106953 quadratic objective terms\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Ordering time: 0.01s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Barrier statistics:\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Free vars : 461\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " AA' NZ : 1.070e+05\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Factor NZ : 1.074e+05 (roughly 1 MB of memory)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Factor Ops : 3.319e+07 (less than 1 second per iteration)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Threads : 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Objective Residual\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Iter Primal Dual Primal Dual Compl Time\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 0 8.01646707e+05 -8.01646707e+05 4.62e+05 2.79e-04 2.51e+05 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 1 2.62320026e+04 -2.76760257e+04 3.64e+03 2.20e-06 1.99e+03 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 2 4.08317831e+02 -2.00650283e+03 1.98e+01 1.19e-08 1.15e+01 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 3 1.67175634e+01 -1.37940884e+03 4.78e-01 2.89e-10 6.30e-01 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 4 2.23958857e+01 -4.30707773e+02 4.78e-07 3.33e-16 1.22e-01 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 5 1.92443494e+01 5.94640841e+00 5.77e-09 1.11e-16 3.59e-03 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 6 1.67030106e+01 1.38408810e+01 4.55e-10 2.22e-16 7.74e-04 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 7 1.52179879e+01 1.45858210e+01 4.67e-14 3.55e-15 1.71e-04 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 8 1.46942705e+01 1.46770325e+01 2.30e-13 2.87e-15 4.66e-06 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 9 1.46790601e+01 1.46790425e+01 6.18e-13 1.78e-15 4.75e-09 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 10 1.46790446e+01 1.46790446e+01 2.62e-13 6.86e-15 4.75e-12 0s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Barrier solved model in 10 iterations and 0.27 seconds (0.63 work units)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Optimal objective 1.46790446e+01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "m.optimize()" ] }, { "cell_type": "markdown", "id": "09e90c9e", "metadata": {}, "source": [ "Display basic solution data:" ] }, { "cell_type": "code", "execution_count": 7, "id": "0eeca844", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:34.093883Z", "iopub.status.busy": "2025-01-31T10:03:34.093704Z", "iopub.status.idle": "2025-01-31T10:03:34.099967Z", "shell.execute_reply": "2025-01-31T10:03:34.099351Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Minimum risk: 14.679045\n", "Expected return: 0.500000\n", "Solution time: 0.27 seconds\n", "\n", "Number of trades: 8\n", "\n", "TSLA 0.128472\n", "AMD 0.017131\n", "AVGO 0.070706\n", "DXCM 0.035290\n", "NFLX 0.051834\n", "LLY 0.200962\n", "ENPH 0.080654\n", "NVDA 0.414950\n", "Name: Position, dtype: float64\n" ] } ], "source": [ "print(f\"Minimum risk: {m.ObjVal:.6f}\")\n", "print(f\"Expected return: {mu @ x.X:.6f}\")\n", "print(f\"Solution time: {m.Runtime:.2f} seconds\\n\")\n", "\n", "# Print investments (with non-negligible value, i.e., > 1e-5)\n", "positions = pd.Series(name=\"Position\", data=x.X, index=mu.index)\n", "print(f\"Number of trades: {positions[positions > 1e-5].count()}\\n\")\n", "print(positions[positions > 1e-5])" ] }, { "cell_type": "markdown", "id": "114a93dd", "metadata": {}, "source": [ "## Efficient Frontier\n", "\n", "The efficient frontier reveals the balance between risk and return in investment portfolios. It shows the best-expected risk level that can be achieved for a specified minimum return level.\n", "We compute this by solving the above optimization problem for a sample of admissible return levels." ] }, { "cell_type": "code", "execution_count": 8, "id": "468d1e1f", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:34.101753Z", "iopub.status.busy": "2025-01-31T10:03:34.101575Z", "iopub.status.idle": "2025-01-31T10:03:38.407588Z", "shell.execute_reply": "2025-01-31T10:03:38.406898Z" } }, "outputs": [], "source": [ "returns = np.linspace(0.21, 0.5, 20)\n", "risks = np.zeros(returns.shape)\n", "npos = np.zeros(returns.shape)\n", "\n", "# Hide Gurobi log output\n", "m.params.OutputFlag = 0\n", "\n", "# Solve the model for each risk level\n", "for i, ret in enumerate(returns):\n", " # Modify lower bound on expected return\n", " ret_constr.RHS = ret\n", " m.optimize()\n", " # Store data\n", " risks[i] = np.sqrt(x.X @ Sigma @ x.X)\n", " npos[i] = len(x.X[x.X > 1e-5])" ] }, { "cell_type": "markdown", "id": "d172bea5", "metadata": {}, "source": [ "We can display the efficient frontier to visualize the relationship between the expected return and the variance. We also display the relationship between the return and the number of positions in the optimal portfolio." ] }, { "cell_type": "code", "execution_count": 9, "id": "31b43e69", "metadata": { "execution": { "iopub.execute_input": "2025-01-31T10:03:38.409933Z", "iopub.status.busy": "2025-01-31T10:03:38.409605Z", "iopub.status.idle": "2025-01-31T10:03:38.594506Z", "shell.execute_reply": "2025-01-31T10:03:38.593797Z" } }, "outputs": [ { "data": { "image/png": "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YR/x8WogtW4dHDt2f7mHBzz5pBpM9egBuX2PhoSoKbPle82shQsX4uTkRN++fU0mCHZ4mzfDF1+oVy937oS0NPXz8eOPsGaNelVUCCEchSKyuX79ugIo169fz/bc7du3laNHjyq3b9/O+wt8952iVK+uKOr5YfVWvbq6/B6dTqdcvXpV0el0eX+dTL799lulSZMmipubm1KhQgWlS5cuSmpqqqIoivLbb78pXbt2VSpWrKiUK1dO6dChg7J//36T7QFl2bJlyuOPP664u7srDRo0UH799Vfln3/+UTp27Kh4eHgoQUFByokTJ4zbTJs2TWnWrJmybNkypXr16oq7u7vy7LPPKteuXTOuM2TIEKV3794m9X7//feVWrVqKW5ubkrjxo2VdevW5Vq3mjVrKjNmzFD69++veHh4KL6+vsrixYtN1vnvv/+Up556SildurRStmxZ5dlnn1WSkpKylTVruebOnav4+PgoFSpUUEaOHKmkp6criqIoHTt2VACTm6IoyunTp5UnnnhCKV++vOLh4aE0atRI2bRpkwXvkHk5fQ5s8jksJtLT05WNGzca274ksrgN7t5VlO3bFWXNGvX+7t2c1/33X0UJC1OUwEDT7yJXV0Xp00dR1q5VlHvfEYUpt+/fks5c2xTp/48bNxSlZk31czVunOlzCQmKotWqzx06ZHbzIl23fJK6FU+OXDdFcez65bdulv42lcyMAPZkmIE+y0Be4wz0kZE2f8nExEQGDBjAiy++yLFjx4iJiSEkJATl3oSNN27cYMiQIezevZu9e/dSr149evXqlS3F98yZMxk8eDBxcXE0aNCAgQMH8r///Y9Jkybxxx9/oCgKo0ePNtnmxIkTfPPNN/zwww9s3ryZgwcPMnLkyBzLGhYWxueff86yZcs4fPgwI0eOZPDgwezYsSPXOs6dO5dmzZpx8OBBJk6caMzQBerYvd69e3PlyhV27NhBVFQU//77L/369ct1n9u3b+fkyZNs376diIgIVq9ezerVqwGIjIykevXqzJgxg8TERBITEwF1Hpu0tDR27tzJ4cOH+eCDD+RKmCgckZFQqxZ07gwDB6r3tWqZfqecOwcLF0Lr1lC7NkyaBHFxahetXr0gIkIdQ7VhA/TrB6VL26kywiFMmQL//aeO0cs6zsrPT+1aCurYPSGEcADFKt16sWfNDPQ2TC+e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kZFBy5Ytsy1v0aIFd+/etUmhRD5FRkKtWtC5MwwcqN5XqKAGVc7O8M03pkGVEEKUQA8//LBxbFVmx44do1mzZnYokRCiyNJo0N/LEOi0fLk6z6cQWVgdWA0aNMg4UDezTz/9lOeff97qAixZsoRatWrh5uZG69at+e2333JcNzIykpYtW1K+fHlKly5NYGAgX3zxhck6iqIwdepUqlatiru7O127duWff/6xulzFVmQkPPNM9ol/09LU+0mT1OeFEKIEOnTokPH22muvMXbsWObNm8fu3bvZvXs38+bNY/z48YwfP97eRRVCFDFK585catwYTXo6zJpl7+KIIihPWQFXrFjB1q1bjWli9+3bR0JCAoMHDzaZJX7BggW57mfdunWEhoaybNkyWrduTXh4OMHBwcTHx1OlSpVs61eoUIF33nmHBg0a4OLiwo8//siwYcOoUqUKwcHBgDrh44cffkhERAT+/v5MmTKF4OBgjh49ipubW16qW3zodGrK0kwT7WWzahVMnSrjp4QQJVJgYCAajQYl0/fkm2++mW29gQMH0q9fv8IsmhCiqNNoODZwIO3feQdWroS33oLate1dKlGEWB1YHTlyhIcffhiAkydPAlCpUiUqVarEkSNHjOtZkoJ9wYIFjBgxgmHDhgGwbNkyNm3axMqVK5l4b3brzLKmsh07diwRERHs3r2b4OBgFEUhPDycyZMn07t3bwA+//xzvL292bhxI/3797e2usXLrl3Zr1RldeaMup6MpxJClECnHjR/nxBC5OJK48bou3XDKSpKTcO+erW9iySKEKsDq+3bt9vkhdPT09m/fz+TJk0yLnNycqJr167ExsY+cHtFUfjll1+Ij4/ngw8+ANQfzKSkJLp27Wpcz9PTk9atWxMbG5tjYJWWlkaaoasckJKSAqjjyTIyMvJUv/wyvK5Vr5+YCO7uoCiUSktDoygoGg13XVzUeRgyr2enelkjT23gYKQNpA2gZLVBQdexZs2aBbp/IYTj07/7rhpYffGFOsSifn17F0kUEVYHVhcvXqRy5cpmnzt8+DBNmza1aD+XLl1Cp9Ph7e1tstzb25vjx4/nuN3169epVq0aaWlpaLVaPv74Y7p16wZgnO3e3D4Nz5kTFhbG9OnTsy3funUrHh4eFtWnoERFRVm+socH2lWraDNtGhXi47nj5cWu2bO5laU9APjpJ9sVsoBZ1QYOStpA2gBKRhvcunWrUF/v/Pnz7N69mwsXLqDX602ee+211wq1LEKI4kF55BF48kn44Qd49134+mt7F0kUEVYHVk2bNmXFihU8/vjjJsvnzZvHlClTuH37ts0KZ07ZsmWJi4sjNTWV6OhoQkNDqV27drZugtaYNGmSydiwlJQU/Pz86N69O+XKlbNBqa2XkZFBVFQU3bp1w9nZ2bKNbt9G6+OD0+3bKID21i06jRt3/3mNBqpVg0OHisUYqzy1gYORNpA2gJLVBoYeA4Vh9erV/O9//8PFxYWKFSuadGHXaDQSWAkhcjZjhhpYrVsHb78NFl5YEI7N6sAqNDSUvn37MmzYMBYsWMCVK1cYPHgwhw8fZs2aNRbvp1KlSmi1WpKTk02WJycn5zobvZOTE3Xr1gXUQcjHjh0jLCyMTp06GbdLTk6matWqJvsMDAzMcZ+urq64urpmW+7s7Gz3gxiLy6DTqSnU7wW2GsA5U/dGDAcMs2dDMUviURTeB3uTNpA2gJLRBoVZvylTpjB16lQmTZqEk5PVSXKFECVZYKCaZXn9epg2Tc3KLEo8q39J3nzzTWJjY9m1axcBAQEEBATg6urKoUOHePrppy3ej4uLCy1atCA6Otq4TK/XEx0dTVBQkMX70ev1xvFR/v7++Pj4mOwzJSWFffv2WbXPYkdRYPRo9ayJszNMngzVq5uuU726+s8fEmKfMgohRBFz69Yt+vfvL0GVECJvpk9XT1xv2AD799u7NKIIyNOvSd26dWnSpAmnT58mJSWFfv365XqVKSehoaEsX76ciIgIjh07xquvvsrNmzeNWQIHDx5sktwiLCyMqKgo/v33X44dO8b8+fP54osveOGFFwC168a4ceOYNWsW//d//8fhw4cZPHgwvr6+9OnTJy9VLR6mTIFly9R/7i++gJkz4fRp2L4d1qxR70+dkqBKCCEyGT58ON9++629iyGEKK4aNYKBA9W/p061b1lEkWB1V8A9e/bwwgsvUKFCBQ4dOsSePXsYM2YMP/30E8uWLcPLy8viffXr14+LFy8ydepUkpKSCAwMZPPmzcbkEwkJCSZnEm/evMnIkSM5e/Ys7u7uNGjQgC+//NJkrpE333yTmzdv8vLLL3Pt2jXatWvH5s2bHWcOK51OTZeemAhVq6pnSN57T33u44/B0BZaraRUF0KIXISFhfHEE0+wefNmmjZtmq0b4oPmYhRCCKZNg7Vr1aRgsbHgyD2kxANZHVg99thjjB8/npkzZ+Ls7EzDhg3p3LkzL7zwAk2bNuXsg+ZRymL06NGMHj3a7HMxMTEmj2fNmsWsB8x0rdFomDFjBjNmzLCqHMVCZKQ6AbC5Np41C155pfDLJIQQxVRYWBhbtmyh/r1UyVmTVwghxAPVqwdDhqgTBk+ZAtu22btEwo6sDqy2bt1Kx44dTZbVqVOHPXv28J7hyomwvchIdZCkoph/vkGDwi2PEEIUc/Pnz2flypUMHTrU3kURQhRnU6aoQzGioyEmRnoMlWBWj7HKGlQZd+TkxJQpU/JdIGGGTqdeqcopqAIYP15dTwghhEVcXV1p27atvYshhCjuatWCl15S/548WR3b/vXXapAlx2YlisWBVa9evbh+/brx8ezZs7l27Zrx8eXLl2nUqJFNCyfu2bXLfPe/zM6cUdcTQghhkbFjx/LRRx/ZuxhCCEfwzjtqZuY9e+Cxx9SkFp07q0GXpGIvMSzuCrhlyxZjWnOA999/n+eee47y5csDcPfuXeLj421eQIGaqMKW6wkhhOC3337jl19+4ccff6Rx48bZkldEysGQEMJS+/ZBRkb25efO3Z/vSrIzOzyLAyslSze0rI9FAco02bFN1hNCCEH58uUJkQMdIUR+GYZsmKMo6nQ448ZB795q1mbhsKxOXiHsoH178PKCq1fNP6/RqBMAt29fuOUSQohibNWqVfYughDCETxoyIai3B+yIYktHJrFY6w0Gk229LOSjraQHD8Ot26Zf87wHoSHy1kQIYQQQojCJkM2xD1WdQUcOnQorq6uANy5c4dXXnmF0qVLA5iMvxI2lJoKzz4LaWnQrBlcuqT21zWoXl0NqqQ7ixBCWMXf3z/XE4T//vtvIZZGCFFsyZANcY/FgdWQIUNMHr/wwgvZ1hk8eHD+SyTuUxS0o0fDsWPg6wtbt0LFiuql5MRE9R+0fXu5UiWEEHkwbtw4k8cZGRkcPHiQzZs388Ybb1i1r507dzJ37lz2799PYmIiGzZsoE+fPsbnhw4dSkREhMk2wcHBbN68Oa/FF0IUFe3bqye6z53LeWqcUqXgXsI34bgsDqykL3oh0emMgVONPXtwWrNGDZzWroUqVdR1pH+uEELk29gcBpsvWbKEP/74w6p93bx5k2bNmvHiiy/mmBCjR48eJr+lhh4gQohiTquFRYvU7H8ajfng6u5daNsWli9XU7ELh2T1BMGiAEVGqvMddO4Mw4YR8Omn6vIBAyQxhRBCFJKePXvy3XffWb3NrFmzePrpp3Ncx9XVFR8fH+PNy8srv0UVQhQVISFqSvVq1UyX+/nBqlXQvbs6Xv755+G11yA93T7lFAVKsgIWFZGR6pmOe2c5SqWno1EU9E5OOH35JTz9tIyjEkKIQrB+/XoqVKhg8/3GxMRQpUoVvLy8eOyxx5g1axYVK1bMcf20tDST8cspKSmA2mUx4958OVnvHYnUrXgq0XV78kno1QtiYyEpCXx8IChIvaLVvz9OM2agDQuDjz5C//vv6L7+OnsgZkcl+r2zcPsHkcCqKDDMf5Dp0rFGUbhVqRLOqak4paXJ/AdCCGFjzZs3N0leoSgKSUlJXLx4kY8//timr9WjRw9CQkLw9/fn5MmTvP322/Ts2ZPY2Fi0OXyvh4WFMX369GzLt27dioeHh8myqKgom5a3KJG6FU8lvm4eHpCSAlu23F/WujXe77xDi4ULcd67l/TAQPZPmMClpk0LrrB5UOLfOzNu5ZSdOwsJrIoCM/MfKMAfb7xB0LvvyvwHQghRADInlwBwcnKicuXKdOrUiQYNGtj0tfr372/8u2nTpgQEBFCnTh1iYmLo0qWL2W0mTZpEaGio8XFKSgp+fn50796dcuXKAepZ1KioKLp164azs7NNy2xvUrfiSer2AL16wQsvoPTrh9uhQ7SZNg39rFnoX3/9/hQ6diLvXc4MPQYeRAKrosDMvAb6UqW4Wr/+A9cTQgiRN9OmTbPba9euXZtKlSpx4sSJHAMrV1dXswkunJ2dsx0YmFvmKKRuxZPULRcNGqjdBUeORBMRgfbtt9H+8Yc6FqtcOZNEZvbIAC3vnfntLCHJK4oCM/Ma6EuZiXll/gMhhHAIZ8+e5fLly1SV73UhSiYPDzWQWrYMXFzUsfaPPKLOTWpIZDZwoHpfq5b6vCjyJLAqCtq3B29v02WZLwdrNGpWGckMKIQQ+ebk5IRWq831Vsrcya1cpKamEhcXR1xcHACnTp0iLi6OhIQEUlNTeeONN9i7dy+nT58mOjqa3r17U7duXYKDgwughkKIYkGjgf/9T7065ecHf/8N48dnGx7CuXNqgjMJroo86QpYFDg5QaVKkJyc/TlDgBUeLokrhBDCBjZs2JDjc7GxsXz44Yfo9Xqr9vnHH3/QuXNn42PD2KghQ4awdOlSDh06REREBNeuXcPX15fu3bszc+ZMmctKCAGtWsFvv6lXpjJlAjVSFPV4UBKZFXkSWBUF330Hf/2lXgquUEFN0WlQrRrMni2p1oUQwkZ69+6dbVl8fDwTJ07khx9+4Pnnn2fGjBlW7bNTp04o5iYFvWdL5sxgQgiR1fHj5oMqA0lkVixIV0B7u3ULXn9d/XviRPXy7/btsGKFuuzQIQmqhBCigJw/f54RI0bQtGlT7t69S1xcHBEREdSsWdPeRRNClCSWJiiTRGZFmlyxsofM2V62boWEBLVv7VtvqZd3O3WCjAz46Se53CuEEAXg+vXrvP/++3z00UcEBgYSHR1NexnHKoSwF0sT2UjCmyJNAqvCFhmpTgacdWDic8+pGWKEEEIUqDlz5vDBBx/g4+PD119/bbZroBBCFKr27aF6dTVRRU7dit3dITCwUIslrCOBVWGKjFSzupj7h5k/H9q0kW5/QghRwCZOnIi7uzt169YlIiKCiIgIs+tFSgYuIURh0Wph0SL1OFGjMX+sePs2BAWpx5MNGxZ+GcUDyRirwqLTqVeqcjoLYcj2otMVarGEEKKkGTx4MM899xwVKlTA09Mzx5sQQhSqkBBYv15NXJaZnx+EhanLjx9X57v65hv7lFHkSq5YFZZdu7J3/8tMsr0IIUShWL16tb2LIIQQ5oWEqCnVDWPxq1ZVuwlqtfDiizBgAPzyC/TrB3v3wgcfgLOzvUst7rH7FaslS5ZQq1Yt3NzcaN26Nb/99luO6y5fvpz27dvj5eWFl5cXXbt2zbb+0KFD0Wg0JrcePXoUdDUeTLK9CCGEEEKIBzEkMhswQL03JDKrUgW2bFGzSAMsXAhdusixYxFi18Bq3bp1hIaGMm3aNA4cOECzZs0IDg7mwoULZtePiYlhwIABbN++ndjYWPz8/OjevTvnzp0zWa9Hjx4kJiYab19//XVhVCd3ku1FCCGEEELkR6lSarfADRugXDn1ytbDD6v3wu7sGlgtWLCAESNGMGzYMBo1asSyZcvw8PBg5cqVZtf/6quvGDlyJIGBgTRo0IDPPvsMvV5PdHS0yXqurq74+PgYb15eXoVRndwZsr3kRKNR+9BKul8hhBBCCJGbPn3g99+hSRNISoLOnSE8XB1aotNBTAx8/bV6L+P3C43dxlilp6ezf/9+Jk2aZFzm5ORE165diY2NtWgft27dIiMjgwoVKpgsj4mJoUqVKnh5efHYY48xa9YsKlasmON+0tLSSMs023VKSgoAGRkZZGRkWFOt3C1ahFO/fmjv3kXv5ITO1VVdrtGo9+HhoNeDXm98XZu+fjEjbSBtANIGULLaoCTUUQghbOKhh9RxVi+/DGvWwPjxavKLU6fg/Pn761WvrmYclMzTBc5ugdWlS5fQ6XR4e3ubLPf29ub48eMW7eOtt97C19eXrl27Gpf16NGDkJAQ/P39OXnyJG+//TY9e/YkNjYWbQ6T7YaFhTF9+vRsy7du3YqHDeeWctLr6Va6NNrr1/ljwgQS27TJvtJPP5k8jIqKstnrF1fSBtIGIG0AJaMNbt26Ze8iCCFE8VG6NHz5pZqGfdw42LMn+zrnzqlp3Nevl+CqgBXbrICzZ89m7dq1xMTE4ObmZlzev39/499NmzYlICCAOnXqEBMTQ5cuXczua9KkSYSGhhofp6SkGMdvlStXzmZl1nz9NaWuX0epWpXmXbvS/NIl8PFR/xmyBH0ZGRlERUXRrVs3nEtothdpA2kDkDaAktUGhh4DQgghLKTRwKuvwowZcPFi9ucV5f60Pr17ZzvmFLZjt8CqUqVKaLVakpOTTZYnJyfj4+OT67bz5s1j9uzZbNu2jYCAgFzXrV27NpUqVeLEiRM5Blaurq64GrrlZeLs7Jz/gxid7n7KzLlzAdC88grO3bpZtLlNylDMSRtIG4C0AZSMNnD0+gkhRIHYtct8UGUg0/oUCrslr3BxcaFFixYmiScMiSiCgoJy3G7OnDnMnDmTzZs307Jlywe+ztmzZ7l8+TJV7ZFtLzISatVSBxQOHAhHjqjLs078JoQQQgghRF5ZmnLdwjwGIm/smhUwNDSU5cuXExERwbFjx3j11Ve5efMmw4YNA2Dw4MEmyS0++OADpkyZwsqVK6lVqxZJSUkkJSWRmpoKQGpqKm+88QZ79+7l9OnTREdH07t3b+rWrUtwcHDhVi4yUu3Pam5S4BEj1OeFEEIIIYTIL0svILz9NrRoAUuXwrVrBVqkksiugVW/fv2YN28eU6dOJTAwkLi4ODZv3mxMaJGQkEBipgh86dKlpKen88wzz1C1alXjbd68eQBotVoOHTrEU089xUMPPcTw4cNp0aIFu3btMtvVr8DodDB2rHrZNSfjxkn6SyGEEEIIkX+GaX0MmabNcXcHFxc4cABGjgRfXxg8GHbuzH7MKinb88TuyStGjx7N6NGjzT4XExNj8vj06dO57svd3Z0tW7bYqGT5sGuX+StVBtLPVQghhBBC2IpWq6ZUf+YZNbjKHCgZgq0vv4SOHdX75cvhr7/giy/UW716OA0diquvL/zwg3qBIPOxrKRst4hdr1g5LEv7uVq6nhBCCCGEELkJCVFTqmcdy1+9+v1U6xUrqkHT4cPqHFgvvQRlysA//6B95x26Dx+O9rnnsl8gMKRsl6EsuZLAqiBY2s/VHgk1hBBCCCGEYwoJgdOnYft2ddLg7dvVCYOzXmnSaKB1a/XKVWIirFiBvnVrnPR6nMx1+zNcAZOhLLmye1dAh2To53runPlxVhqN+nz79oVfNiGEEEII4bi0WuuGmpQpAy++iM7fn5i//qLj+PFo797Nvp4MZXkguWJVEAz9XM0x9HMND5cJ2oQQQgghRNGQlMQNPz/0D5pPcPZs+PPPwilTMSOBVUEx9HMtleWiYOZ+rkIIIYQQQhQFPj6WrbdlCwQGwiOPwCefwPXr5tcrgZkFJbAqSC1bwt274OSk9mHNqZ+rEEKIYm3nzp08+eST+Pr6otFo2Lhxo8nziqIwdepUqlatiru7O127duWff/6xT2GFEMKcoCD1PreU7ZUqqUksnJ3hjz/glVfUnAFDh8Lu3feHwERGQq1a0LkzDByo3teq5fDJLySwKgiGCH3WLPVxq1Zq1pVOnaT7nxBCOKCbN2/SrFkzlixZYvb5OXPm8OGHH7Js2TL27dtH6dKlCQ4O5s6dO4VcUiGEyEHmY9SswZVGo94++QS+/VbNIzB/PjRsCLdvQ0SEmjugYUN1bqy+fUtkZkEJrGwtc4S+fLm67K+/HPpDJIQQJV3Pnj2ZNWsWTz/9dLbnFEUhPDycyZMn07t3bwICAvj88885f/58titbQghhd198kXvKdoDKlSE0VD3G/fVXePFFKF0a4uPV7c0pAZkFJSugLUVGqpF41kyAN26oy2VslRBClDinTp0iKSmJrl27Gpd5enrSunVrYmNj6d+/v9nt0tLSSEtLMz5OSUkBICMjg4yMDOPfme8didSteJK6FV/G+vXoAf/8A7GxkJSkjr0KClKvaJmre8uW6m3uXDTvv4/TggU4ZToWVjQadM7OKIYrYpcuwc6d0K5dYVQLyP97Z+l2EljZik6nTrhmLr26wbhx0Lu3dAcUQogSJCkpCQBvb2+T5d7e3sbnzAkLC2P69OnZlm/duhUPDw+TZVFRUTYoadEkdSuepG7Fl0n9PDwgJUVNWGGJ9u2hfXvK/vcfNbdtwy8mBpcbN3DS6zkyZAinevVSuxSmpMBPPxVMBXKR1/fu1q1bFq0ngZWt7NqVvS9pZpL7XwghhBUmTZpEaGio8XFKSgp+fn50796dcuXKAepZ1KioKLp164bzg1IkFzNSt+JJ6lZ82aR+u3fD44/ff6wo6LVanO7eJWD5cpqsXInO2VkNqgr5ilV+6mboMfAgEljZSmKibdcTQgjhEHzupTBOTk6matWqxuXJyckEBgbmuJ2rqyuurq7Zljs7O2c7MDC3zFFI3YonqVvxla/6degAFSuqiSrM9OJy0ulwcnJSMwnaoQ3zWjdLt5HkFbaS6cfSJusJIYRwCP7+/vj4+BAdHW1clpKSwr59+wgypDcWQghHoNXCokXq3zmlbc/IgNat4fvvC69chUQCK1tp317NmJLTh0ijAT8/dT0hhBAOJTU1lbi4OOLi4gA1YUVcXBwJCQloNBrGjRvHrFmz+L//+z8OHz7M4MGD8fX1pU+fPnYttxBC2FxIiJqwLWtmQT8/NWN227bqGKs+fWDSJHXOVwchgZWtZI7QszIEW+HhkrhCCCEc0B9//EHz5s1p3rw5AKGhoTRv3pypU6cC8OabbzJmzBhefvllHnnkEVJTU9m8eTNubm72LLYQQhSMkBA4fRq2b4c1a9T7U6fUeV23b1cTugHMng3BwXDhgj1LazMyxsqWDBH6K6/AxYv3l1evrgZVkmpdCCEcUqdOnVByyQqr0WiYMWMGM2bMKMRSCSGEHWm15hO2OTvDwoVqd8CXXoJffoEWLdRj6NatC72YtiRXrGwtJATmzlX/btTofoQuQZUQQgghhBCq/v1h3z6oX1/NrN2+PSxdmvvURUWcBFa2ptOpwRSAv7/6IZHuf0IIIYQQQphq3Bh++029AJGRASNHwpAhYJg3SqeDmBj4+mv1Xqez/jV0OjUNPKj3edmHhSSwsqXISKhVCyIi1MebNqmPIyPtWSohhBBCCCGKpnLl1G6Ac+eCkxN88QUEBcGSJepxdOfOMHCgem/tcbXh2Nwwt9bjjxfosbkEVrYSGQnPPJN9kuBz59TlElwJIYQQQgiRnUYDEyZAdDRUqQKHDsHo0fk7rrbDsbkEVrag08HYseb7hBqWjRtXoJcehRBCCCGEKNY6dYLffwcXF/PPW3pcbadjc8kKaAu7dmWPhjNTFDhzRl3PXHYUIYQQQgghBPz7L6Sn5/y84bj6oYegdGnz69y8aXJsXurOHdpNnJh9HzY+NpfAyhYSE227nhBCCCGEECWRpcfL//5r8S41ikLZM2fy/loWksDKFqpWte16QgghhBBClESWHi/PmwfNmpl/7s8/1TFb99x1ceG3iRNp/f77eXstC0lgZQvt26uTAJ87Z74vp0ajPt++feGXTQghhBBCiOLC0uPqceNyntKoc2cIDzfuQ9Fqudy0afZ92PjY3O7JK5YsWUKtWrVwc3OjdevW/Pbbbzmuu3z5ctq3b4+XlxdeXl507do12/qKojB16lSqVq2Ku7s7Xbt25Z9//inYSmi1sGiR+rdGY/qc4XF4uMxnJYQQQgghRG5scVxtp2NzuwZW69atIzQ0lGnTpnHgwAGaNWtGcHAwFy5cMLt+TEwMAwYMYPv27cTGxuLn50f37t05d+6ccZ05c+bw4YcfsmzZMvbt20fp0qUJDg7mzp07BVuZkBA1B3+1aqbLq1dXl4eEFOzrCyGEEEII4QhscVxth2NzuwZWCxYsYMSIEQwbNoxGjRqxbNkyPDw8WLlypdn1v/rqK0aOHElgYCANGjTgs88+Q6/XEx0dDahXq8LDw5k8eTK9e/cmICCAzz//nPPnz7Nx48aCr1BICJw+Ddu3w5o16v2pUxJUCSGEEEIIYQ1bHFcb9rFpk/p406YCPTa32xir9PR09u/fz6RJk4zLnJyc6Nq1K7GxsRbt49atW2RkZFChQgUATp06RVJSEl27djWu4+npSevWrYmNjaV///5m95OWlkZaWprxcUpKCgAZGRlkZGRYXTfatr3/t16v3qxkeN08vb6DkDaQNgBpAyhZbVAS6iiEEMJCWm3+06FrtdCuHfz0k3pfgENz7BZYXbp0CZ1Oh7e3t8lyb29vjh8/btE+3nrrLXx9fY2BVFJSknEfWfdpeM6csLAwpk+fnm351q1b8fDwsKgsBSUqKsqur18USBtIG4C0AZSMNrh165a9iyCEEELkSbHNCjh79mzWrl1LTEwMbm5u+drXpEmTCA0NNT5OSUkxjt8qV65cfouaJxkZGURFRdGtWzecnZ3tUgZ7kzaQNgBpAyhZbWDoMSCEEEIUN3YLrCpVqoRWqyU5OdlkeXJyMj4+PrluO2/ePGbPns22bdsICAgwLjdsl5ycTNVMeemTk5MJDAzMcX+urq64urpmW+7s7Gz3g5iiUAZ7kzaQNgBpAygZbeDo9RNCCOG47BZYubi40KJFC6Kjo+nTpw+AMRHF6NGjc9xuzpw5vPfee2zZsoWWLVuaPOfv74+Pjw/R0dHGQColJYV9+/bx6quvWlw25V7OfHueOc3IyODWrVukpKSU2AMNaQNpA5A2gJLVBobvXcXc3CUlnLnfJkf+bEjdiiepW/HlyPXLb90s/m1S7Gjt2rWKq6ursnr1auXo0aPKyy+/rJQvX15JSkpSFEVRBg0apEycONG4/uzZsxUXFxdl/fr1SmJiovF248YNk3XKly+vfP/998qhQ4eU3r17K/7+/srt27ctLteZM2cUQG5yk5vc5Gan25kzZ2z3Y+Mg5LdJbnKTm9zse3vQb5Ndx1j169ePixcvMnXqVJKSkggMDGTz5s3G5BMJCQk4Od3PCL906VLS09N55plnTPYzbdo03n33XQDefPNNbt68ycsvv8y1a9do164dmzdvtmoclq+vL2fOnKFs2bJosk4qVkgM47zOnDljt3Fe9iZtIG0A0gZQstpAURRu3LiBr6+vvYtS5Jj7bXLkz4bUrXiSuhVfjly//NbN0t8mjaJIf4uiKCUlBU9PT65fv+5wH25LSRtIG4C0AUgbiJw58mdD6lY8Sd2KL0euX2HVza4TBAshhBBCCCGEI5DASgghhBBCCCHySQKrIsrV1ZVp06aZTQNfUkgbSBuAtAFIG4icOfJnQ+pWPEndii9Hrl9h1U3GWAkhhBBCCCFEPskVKyGEEEIIIYTIJwmshBBCCCGEECKfJLASQgghhBBCiHySwEoIIYQQQggh8kkCKzvZuXMnTz75JL6+vmg0GjZu3Jjr+jExMWg0mmy3pKSkwimwjYWFhfHII49QtmxZqlSpQp8+fYiPj3/gdt9++y0NGjTAzc2Npk2b8tNPPxVCaQtGXtpg9erV2T4Dbm5uhVRi21u6dCkBAQGUK1eOcuXKERQUxM8//5zrNo70GQDr28DRPgPC1JIlS6hVqxZubm60bt2a3377Lcd1ly9fTvv27fHy8sLLy4uuXbtmW19RFKZOnUrVqlVxd3ena9eu/PPPPwVdDbNsXbehQ4dm+1/o0aNHQVcjR9bULzIykpYtW1K+fHlKly5NYGAgX3zxhck6xfW9s6RuRem9s6Zuma1duxaNRkOfPn1MlhfX9y2znOpWXN83S343bfa+KcIufvrpJ+Wdd95RIiMjFUDZsGFDrutv375dAZT4+HglMTHReNPpdIVTYBsLDg5WVq1apRw5ckSJi4tTevXqpdSoUUNJTU3NcZs9e/YoWq1WmTNnjnL06FFl8uTJirOzs3L48OFCLLnt5KUNVq1apZQrV87kM5CUlFSIpbat//u//1M2bdqk/P3330p8fLzy9ttvK87OzsqRI0fMru9onwFFsb4NHO0zIO5bu3at4uLioqxcuVL566+/lBEjRijly5dXkpOTza4/cOBAZcmSJcrBgweVY8eOKUOHDlU8PT2Vs2fPGteZPXu24unpqWzcuFH5888/laeeekrx9/dXbt++XVjVUhSlYOo2ZMgQpUePHib/C1euXCmsKpmwtn7bt29XIiMjlaNHjyonTpxQwsPDFa1Wq2zevNm4TnF97yypW1F576ytm8GpU6eUatWqKe3bt1d69+5t8lxxfd8McqtbcX3fLPndtNX7JoFVEWBNYHX16tVCKVNhu3DhggIoO3bsyHGd5557Tnn88cdNlrVu3Vr53//+V9DFKxSWtMGqVasUT0/PwiuUHXh5eSmfffaZ2ecc/TNgkFsblITPQEnVqlUrZdSoUcbHOp1O8fX1VcLCwiza/u7du0rZsmWViIgIRVEURa/XKz4+PsrcuXON61y7dk1xdXVVvv76a9sW/gFsXTdFUQ/ysh742Ut+66coitK8eXNl8uTJiqI41nunKKZ1U5Si897lpW53795V2rRpo3z22WfZ6lHc37fc6qYoxfd9e9Dvpi3fN+kKWMwEBgZStWpVunXrxp49e+xdHJu5fv06ABUqVMhxndjYWLp27WqyLDg4mNjY2AItW2GxpA0AUlNTqVmzJn5+fvTu3Zu//vqrMIpX4HQ6HWvXruXmzZsEBQWZXcfRPwOWtAE47megJEtPT2f//v0mn28nJye6du1q8ef71q1bZGRkGL9DTp06RVJSksk+PT09ad26daH+zxRE3QxiYmKoUqUK9evX59VXX+Xy5cs2Lbsl8ls/RVGIjo4mPj6eDh06AI7z3pmrm4G937u81m3GjBlUqVKF4cOHZ3uuuL9vudXNoLi+b7n9btryfStl1drCbqpWrcqyZcto2bIlaWlpfPbZZ3Tq1Il9+/bx8MMP27t4+aLX6xk3bhxt27alSZMmOa6XlJSEt7e3yTJvb+9iO84sM0vboH79+qxcuZKAgACuX7/OvHnzaNOmDX/99RfVq1cvxBLbzuHDhwkKCuLOnTuUKVOGDRs20KhRI7PrOupnwJo2cMTPgIBLly6h0+nMfr6PHz9u0T7eeustfH19jQcHhv8Le//PFETdAHr06EFISAj+/v6cPHmSt99+m549exIbG4tWq7VpHXKT1/pdv36datWqkZaWhlar5eOPP6Zbt25A8X/vcqsbFI33Li912717NytWrCAuLs7s88X5fXtQ3aD4vm8P+t205fsmgVUxUb9+ferXr2983KZNG06ePMnChQuzDQotbkaNGsWRI0fYvXu3vYtiN5a2QVBQkMmVjDZt2tCwYUM++eQTZs6cWdDFLBD169cnLi6O69evs379eoYMGcKOHTtyDCwckTVt4IifAZF/s2fPZu3atcTExDhcMpOc6ta/f3/j302bNiUgIIA6deoQExNDly5d7FFUq5QtW5a4uDhSU1OJjo4mNDSU2rVr06lTJ3sXLd8eVLfi+N7duHGDQYMGsXz5cipVqmTv4tiUpXUrju8bFO7vpgRWxVirVq2KfTAyevRofvzxR3bu3PnAs+0+Pj4kJyebLEtOTsbHx6cgi1jgrGmDrJydnWnevDknTpwooNIVPBcXF+rWrQtAixYt+P3331m0aBGffPJJtnUd9TNgTRtk5QifAQGVKlVCq9Xm6fM9b948Zs+ezbZt2wgICDAuN2yXnJxM1apVTfYZGBhou8I/QEHUzZzatWtTqVIlTpw4UagHeXmtn5OTk/H/PjAwkGPHjhEWFkanTp2K/XuXW93Mscd7Z23dTp48yenTp3nyySeNy/R6PQClSpUiPj6+2L5vltStTp062bYrDu+bOVl/N235vskYq2IsLi7O5ANQnCiKwujRo9mwYQO//PIL/v7+D9wmKCiI6Ohok2VRUVG5jkUpyvLSBlnpdDoOHz5cbD8H5uj1etLS0sw+52ifgZzk1gZZOeJnoCRycXGhRYsWJp9vvV5PdHR0rp/vOXPmMHPmTDZv3kzLli1NnvP398fHx8dknykpKezbt69Q/2cKom7mnD17lsuXLxf6/0Je65dV5v/74v7eZfWg7zR7vHfW1q1BgwYcPnyYuLg44+2pp56ic+fOxMXF4efnV2zfN0vqZk5xeN/Myfq7adP3zapUF8Jmbty4oRw8eFA5ePCgAigLFixQDh48qPz333+KoijKxIkTlUGDBhnXX7hwobJx40bln3/+UQ4fPqyMHTtWcXJyUrZt22avKuTLq6++qnh6eioxMTEm6S9v3bplXGfQoEHKxIkTjY/37NmjlCpVSpk3b55y7NgxZdq0acU61XZe2mD69OnKli1blJMnTyr79+9X+vfvr7i5uSl//fWXPaqQbxMnTlR27NihnDp1Sjl06JAyceJERaPRKFu3blUUxfE/A4pifRs42mdA3Ld27VrF1dVVWb16tXL06FHl5ZdfVsqXL29MC5z1szB79mzFxcVFWb9+vcl3yI0bN0zWKV++vPL9998rhw4dUnr37m231M+2rNuNGzeUCRMmKLGxscqpU6eUbdu2KQ8//LBSr1495c6dO4Vat7zU7/3331e2bt2qnDx5Ujl69Kgyb948pVSpUsry5cuN6xTX9+5BdStK7521dcvKXJa84vq+ZZW1bsX5fbPkd9NW75sEVnZiSJ+e9TZkyBBFUdQPdMeOHY3rf/DBB0qdOnUUNzc3pUKFCkqnTp2UX375xT6FtwFzdQeUVatWGdfp2LGjsT0MvvnmG+Whhx5SXFxclMaNGyubNm0q3ILbUF7aYNy4cUqNGjUUFxcXxdvbW+nVq5dy4MCBwi+8jbz44otKzZo1FRcXF6Vy5cpKly5djAGFojj+Z0BRrG8DR/sMCFMfffSR8f1t1aqVsnfvXuNzWT8LNWvWNPsdMm3aNOM6er1emTJliuLt7a24uroqXbp0UeLj4wuxRvfZsm63bt1SunfvrlSuXFlxdnZWatasqYwYMcKuc7pZU7933nlHqVu3ruLm5qZ4eXkpQUFBytq1a032V1zfuwfVrai9d9bULStzgVVxfd+yylq34vy+WfK7aav3TaMoimLdNS4hhBBCCCGEEJnJGCshhBBCCCGEyCcJrIQQQgghhBAinySwEkIIIYQQQoh8ksBKCCGEEEIIIfJJAishhBBCCCGEyCcJrIQQQgghhBAinySwEkIIIYQQQoh8ksBKiAJ2+vRpNBoNcXFxRWbftWrVIjw83GbliImJQaPRcO3atSKxHyGEEMVHp06dGDdunL2LIUS+SWAlHM7Fixd59dVXqVGjBq6urvj4+BAcHMyePXuM62g0GjZu3Gi/QjqYNm3akJiYiKenp8XbmPshzct+hBDCkQwdOhSNRpPt1qNHD3sXzURxCIbeffddAgMD7V0MUYKUsncBhLC1vn37kp6eTkREBLVr1yY5OZno6GguX75s76LlWXp6Oi4uLvYuRo5cXFzw8fEpMvsRQojirEePHqxatcpkmaurq51KU/QU9m+ioijodDpKlZLDZpE7uWIlHMq1a9fYtWsXH3zwAZ07d6ZmzZq0atWKSZMm8dRTTwFqNziAp59+Go1GY3x88uRJevfujbe3N2XKlOGRRx5h27ZtJvuvVasW77//Pi+++CJly5alRo0afPrppybr/PbbbzRv3hw3NzdatmzJwYMHTZ7X6XQMHz4cf39/3N3dqV+/PosWLTJZZ+jQofTp04f33nsPX19f6tevb9G+zblw4QJPPvkk7u7u+Pv789VXX5ltt5deeonKlStTrlw5HnvsMf78808A/v77bzQaDcePHzfZZuHChdSpUwfI3oXv8uXLDBgwgGrVquHh4UHTpk35+uuvTeq3Y8cOFi1aZDwbe/r0abNdAb/77jsaN26Mq6srtWrVYv78+SblsOQ9EUKI4sTQ2yLzzcvLC1C/b11cXNi1a5dx/Tlz5lClShWSk5MB9WrS6NGjGT16NJ6enlSqVIkpU6agKIpxm7S0NCZMmEC1atUoXbo0rVu3JiYmxqQce/bsoVOnTnh4eODl5UVwcDBXr17N8Tsc4MiRI/Ts2ZMyZcrg7e3NoEGDuHTpknGfN2/eZPDgwZQpU4aqVatm+043x3Dl6bPPPsPf3x83Nzcg99+u1atXM336dP78809jGVevXm22C/21a9fQaDTG+ht+i37++WdatGiBq6sru3fvplOnTrz22mu8+eabVKhQAR8fH959912L3lNRQihCOJCMjAylTJkyyrhx45Q7d+6YXefChQsKoKxatUpJTExULly4oCiKosTFxSnLli1TDh8+rPz999/K5MmTFTc3N+W///4zbluzZk2lQoUKypIlS5R//vlHCQsLU5ycnJTjx48riqIoN27cUCpX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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(1, 2, figsize=(10, 3))\n", "\n", "# Axis 0: The efficient frontier\n", "axs[0].scatter(x=risks, y=returns, marker=\"o\", label=\"sample points\", color=\"Red\")\n", "axs[0].plot(risks, returns, label=\"efficient frontier\", color=\"Red\")\n", "axs[0].set_xlabel(\"Standard deviation\")\n", "axs[0].set_ylabel(\"Expected return\")\n", "axs[0].legend()\n", "axs[0].grid()\n", "\n", "# Axis 1: The number of open positions\n", "axs[1].scatter(x=returns, y=npos, color=\"Red\")\n", "axs[1].plot(returns, npos, color=\"Red\")\n", "axs[1].set_xlabel(\"Expected return\")\n", "axs[1].set_ylabel(\"Number of positions\")\n", "axs[1].grid()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "0cc8cff3", "metadata": {}, "source": [ "As expected, the number of open positions decreases as we enforce higher returns; the optimization will progressively invest in fewer high-risk but high-yield assets." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.11" } }, "nbformat": 4, "nbformat_minor": 5 }