diff --git a/cookbook/1-RiskReturnModels.ipynb b/cookbook/1-RiskReturnModels.ipynb index 3da6e9e0..a5760760 100644 --- a/cookbook/1-RiskReturnModels.ipynb +++ b/cookbook/1-RiskReturnModels.ipynb @@ -22,26 +22,6 @@ "## Risk models" ] }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "ajpb4cfuzzCd", - "outputId": "c075b649-0764-4b2d-cd48-65d6a85e7003" - }, - "outputs": [], - "source": [ - "!pip install pandas numpy matplotlib PyPortfolioOpt\n", - "import os\n", - "\n", - "if not os.path.isdir(\"data\"):\n", - " os.system(\"git clone https://github.com/pyportfolio/pyportfolioopt.git\")\n", - " os.chdir(\"PyPortfolioOpt/cookbook\")" - ] - }, { "cell_type": "code", "execution_count": 2, diff --git a/cookbook/2-Mean-Variance-Optimisation.ipynb b/cookbook/2-Mean-Variance-Optimisation.ipynb index 7aba6f28..54aac4de 100644 --- a/cookbook/2-Mean-Variance-Optimisation.ipynb +++ b/cookbook/2-Mean-Variance-Optimisation.ipynb @@ -42,83 +42,6 @@ "[![Open In SageMaker Studio Lab](https://studiolab.sagemaker.aws/studiolab.svg)](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)" ] }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "69vaYVwZ-Cxz", - "outputId": "dee1bf4a-82ee-4909-e26b-217899258cf2", - "ExecuteTime": { - "end_time": "2025-11-12T08:10:54.267009Z", - "start_time": "2025-11-12T08:10:53.573242Z" - } - }, - "source": [ - "!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n", - "import os\n", - "if not os.path.isdir('data'):\n", - " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n", - " os.chdir('PyPortfolioOpt/cookbook')" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: pandas in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.3)\r\n", - "Requirement already satisfied: numpy in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.4)\r\n", - "Requirement already satisfied: matplotlib in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (3.10.7)\r\n", - "Requirement already satisfied: yfinance in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (0.2.66)\r\n", - "Requirement already satisfied: PyPortfolioOpt in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (1.5.6)\r\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2.9.0.post0)\r\n", - "Requirement already satisfied: pytz>=2020.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: tzdata>=2022.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.3.3)\r\n", - "Requirement already satisfied: cycler>=0.10 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (0.12.1)\r\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (4.60.1)\r\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.4.9)\r\n", - "Requirement already satisfied: packaging>=20.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (25.0)\r\n", - "Requirement already satisfied: pillow>=8 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (12.0.0)\r\n", - "Requirement already satisfied: pyparsing>=3 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (3.2.5)\r\n", - "Requirement already satisfied: requests>=2.31 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.32.5)\r\n", - "Requirement already satisfied: multitasking>=0.0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.0.12)\r\n", - "Requirement already satisfied: platformdirs>=2.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.5.0)\r\n", - "Requirement already satisfied: frozendict>=2.3.4 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.4.7)\r\n", - "Requirement already satisfied: peewee>=3.16.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (3.18.3)\r\n", - "Requirement already satisfied: beautifulsoup4>=4.11.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.14.2)\r\n", - "Requirement already satisfied: curl_cffi>=0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.13.0)\r\n", - "Requirement already satisfied: protobuf>=3.19.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (6.33.0)\r\n", - "Requirement already satisfied: websockets>=13.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (15.0.1)\r\n", - "Requirement already satisfied: cvxpy>=1.1.19 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.3)\r\n", - "Requirement already satisfied: scikit-learn>=0.24.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.2)\r\n", - "Requirement already satisfied: scipy>=1.3.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.16.3)\r\n", - "Requirement already satisfied: soupsieve>1.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.8)\r\n", - "Requirement already satisfied: typing-extensions>=4.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (4.15.0)\r\n", - "Requirement already satisfied: cffi>=1.12.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2.0.0)\r\n", - "Requirement already satisfied: certifi>=2024.2.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2025.11.12)\r\n", - "Requirement already satisfied: osqp>=1.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (1.0.5)\r\n", - "Requirement already satisfied: clarabel>=0.5.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (0.11.1)\r\n", - "Requirement already satisfied: scs>=3.2.4.post1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (3.2.9)\r\n", - "Requirement already satisfied: six>=1.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\r\n", - "Requirement already satisfied: charset_normalizer<4,>=2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.4.4)\r\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.11)\r\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (2.5.0)\r\n", - "Requirement already satisfied: joblib>=1.2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (1.5.2)\r\n", - "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (3.6.0)\r\n", - "Requirement already satisfied: pycparser in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cffi>=1.12.0->curl_cffi>=0.7->yfinance) (2.23)\r\n", - "Requirement already satisfied: jinja2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.1.6)\r\n", - "Requirement already satisfied: setuptools in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (80.9.0)\r\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from jinja2->osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.0.3)\r\n", - "\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m24.3.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n" - ] - } - ], - "execution_count": 7 - }, { "cell_type": "code", "metadata": { diff --git a/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb b/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb index d15ccf97..5eeb9756 100644 --- a/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb +++ b/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb @@ -29,83 +29,6 @@ "[![Open In SageMaker Studio Lab](https://studiolab.sagemaker.aws/studiolab.svg)](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)" ] }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "kWJJAvG4_iEz", - "outputId": "26b7d743-eb20-4fb5-a99d-f4a5098ee8ad", - "ExecuteTime": { - "end_time": "2025-11-12T08:11:09.802872Z", - "start_time": "2025-11-12T08:11:09.179468Z" - } - }, - "source": [ - "!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n", - "import os\n", - "if not os.path.isdir('data'):\n", - " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n", - " os.chdir('PyPortfolioOpt/cookbook')" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: pandas in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.3)\r\n", - "Requirement already satisfied: numpy in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.4)\r\n", - "Requirement already satisfied: matplotlib in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (3.10.7)\r\n", - "Requirement already satisfied: yfinance in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (0.2.66)\r\n", - "Requirement already satisfied: PyPortfolioOpt in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (1.5.6)\r\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2.9.0.post0)\r\n", - "Requirement already satisfied: pytz>=2020.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: tzdata>=2022.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.3.3)\r\n", - "Requirement already satisfied: cycler>=0.10 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (0.12.1)\r\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (4.60.1)\r\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.4.9)\r\n", - "Requirement already satisfied: packaging>=20.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (25.0)\r\n", - "Requirement already satisfied: pillow>=8 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (12.0.0)\r\n", - "Requirement already satisfied: pyparsing>=3 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (3.2.5)\r\n", - "Requirement already satisfied: requests>=2.31 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.32.5)\r\n", - "Requirement already satisfied: multitasking>=0.0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.0.12)\r\n", - "Requirement already satisfied: platformdirs>=2.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.5.0)\r\n", - "Requirement already satisfied: frozendict>=2.3.4 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.4.7)\r\n", - "Requirement already satisfied: peewee>=3.16.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (3.18.3)\r\n", - "Requirement already satisfied: beautifulsoup4>=4.11.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.14.2)\r\n", - "Requirement already satisfied: curl_cffi>=0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.13.0)\r\n", - "Requirement already satisfied: protobuf>=3.19.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (6.33.0)\r\n", - "Requirement already satisfied: websockets>=13.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (15.0.1)\r\n", - "Requirement already satisfied: cvxpy>=1.1.19 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.3)\r\n", - "Requirement already satisfied: scikit-learn>=0.24.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.2)\r\n", - "Requirement already satisfied: scipy>=1.3.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.16.3)\r\n", - "Requirement already satisfied: soupsieve>1.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.8)\r\n", - "Requirement already satisfied: typing-extensions>=4.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (4.15.0)\r\n", - "Requirement already satisfied: cffi>=1.12.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2.0.0)\r\n", - "Requirement already satisfied: certifi>=2024.2.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2025.11.12)\r\n", - "Requirement already satisfied: osqp>=1.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (1.0.5)\r\n", - "Requirement already satisfied: clarabel>=0.5.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (0.11.1)\r\n", - "Requirement already satisfied: scs>=3.2.4.post1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (3.2.9)\r\n", - "Requirement already satisfied: six>=1.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\r\n", - "Requirement already satisfied: charset_normalizer<4,>=2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.4.4)\r\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.11)\r\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (2.5.0)\r\n", - "Requirement already satisfied: joblib>=1.2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (1.5.2)\r\n", - "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (3.6.0)\r\n", - "Requirement already satisfied: pycparser in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cffi>=1.12.0->curl_cffi>=0.7->yfinance) (2.23)\r\n", - "Requirement already satisfied: jinja2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.1.6)\r\n", - "Requirement already satisfied: setuptools in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (80.9.0)\r\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from jinja2->osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.0.3)\r\n", - "\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m24.3.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n" - ] - } - ], - "execution_count": 1 - }, { "cell_type": "code", "metadata": { diff --git a/cookbook/4-Black-Litterman-Allocation.ipynb b/cookbook/4-Black-Litterman-Allocation.ipynb index 46c1a0b8..40c28bea 100644 --- a/cookbook/4-Black-Litterman-Allocation.ipynb +++ b/cookbook/4-Black-Litterman-Allocation.ipynb @@ -33,83 +33,6 @@ "[![Open In SageMaker Studio Lab](https://studiolab.sagemaker.aws/studiolab.svg)](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)" ] }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "sXdbiHc0AnfS", - "outputId": "5ced30c2-5248-4827-a15d-955380574b51", - "ExecuteTime": { - "end_time": "2025-11-12T08:11:48.286018Z", - "start_time": "2025-11-12T08:11:47.649567Z" - } - }, - "source": [ - "!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n", - "import os\n", - "if not os.path.isdir('data'):\n", - " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n", - " os.chdir('PyPortfolioOpt/cookbook')" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: pandas in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.3)\r\n", - "Requirement already satisfied: numpy in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.4)\r\n", - "Requirement already satisfied: matplotlib in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (3.10.7)\r\n", - "Requirement already satisfied: yfinance in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (0.2.66)\r\n", - "Requirement already satisfied: PyPortfolioOpt in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (1.5.6)\r\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2.9.0.post0)\r\n", - "Requirement already satisfied: pytz>=2020.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: tzdata>=2022.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.3.3)\r\n", - "Requirement already satisfied: cycler>=0.10 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (0.12.1)\r\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (4.60.1)\r\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.4.9)\r\n", - "Requirement already satisfied: packaging>=20.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (25.0)\r\n", - "Requirement already satisfied: pillow>=8 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (12.0.0)\r\n", - "Requirement already satisfied: pyparsing>=3 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (3.2.5)\r\n", - "Requirement already satisfied: requests>=2.31 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.32.5)\r\n", - "Requirement already satisfied: multitasking>=0.0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.0.12)\r\n", - "Requirement already satisfied: platformdirs>=2.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.5.0)\r\n", - "Requirement already satisfied: frozendict>=2.3.4 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.4.7)\r\n", - "Requirement already satisfied: peewee>=3.16.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (3.18.3)\r\n", - "Requirement already satisfied: beautifulsoup4>=4.11.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.14.2)\r\n", - "Requirement already satisfied: curl_cffi>=0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.13.0)\r\n", - "Requirement already satisfied: protobuf>=3.19.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (6.33.0)\r\n", - "Requirement already satisfied: websockets>=13.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (15.0.1)\r\n", - "Requirement already satisfied: cvxpy>=1.1.19 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.3)\r\n", - "Requirement already satisfied: scikit-learn>=0.24.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.2)\r\n", - "Requirement already satisfied: scipy>=1.3.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.16.3)\r\n", - "Requirement already satisfied: soupsieve>1.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.8)\r\n", - "Requirement already satisfied: typing-extensions>=4.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (4.15.0)\r\n", - "Requirement already satisfied: cffi>=1.12.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2.0.0)\r\n", - "Requirement already satisfied: certifi>=2024.2.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2025.11.12)\r\n", - "Requirement already satisfied: osqp>=1.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (1.0.5)\r\n", - "Requirement already satisfied: clarabel>=0.5.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (0.11.1)\r\n", - "Requirement already satisfied: scs>=3.2.4.post1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (3.2.9)\r\n", - "Requirement already satisfied: six>=1.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\r\n", - "Requirement already satisfied: charset_normalizer<4,>=2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.4.4)\r\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.11)\r\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (2.5.0)\r\n", - "Requirement already satisfied: joblib>=1.2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (1.5.2)\r\n", - "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (3.6.0)\r\n", - "Requirement already satisfied: pycparser in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cffi>=1.12.0->curl_cffi>=0.7->yfinance) (2.23)\r\n", - "Requirement already satisfied: jinja2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.1.6)\r\n", - "Requirement already satisfied: setuptools in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (80.9.0)\r\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from jinja2->osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.0.3)\r\n", - "\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m24.3.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n" - ] - } - ], - "execution_count": 6 - }, { "cell_type": "code", "metadata": { diff --git a/cookbook/5-Hierarchical-Risk-Parity.ipynb b/cookbook/5-Hierarchical-Risk-Parity.ipynb index 694701bd..545565ed 100644 --- a/cookbook/5-Hierarchical-Risk-Parity.ipynb +++ b/cookbook/5-Hierarchical-Risk-Parity.ipynb @@ -40,84 +40,6 @@ "HRP only requires historical returns" ] }, - { - "cell_type": "code", - "id": "kvgN-hAEBYHZ", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "kvgN-hAEBYHZ", - "outputId": "2cd60bf1-d484-405c-8d92-a8101f6e6750", - "ExecuteTime": { - "end_time": "2025-11-12T08:12:02.268679Z", - "start_time": "2025-11-12T08:12:01.796130Z" - } - }, - "source": [ - "!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n", - "import os\n", - "if not os.path.isdir('data'):\n", - " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n", - " os.chdir('PyPortfolioOpt/cookbook')" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: pandas in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.3)\r\n", - "Requirement already satisfied: numpy in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (2.3.4)\r\n", - "Requirement already satisfied: matplotlib in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (3.10.7)\r\n", - "Requirement already satisfied: yfinance in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (0.2.66)\r\n", - "Requirement already satisfied: PyPortfolioOpt in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (1.5.6)\r\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2.9.0.post0)\r\n", - "Requirement already satisfied: pytz>=2020.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: tzdata>=2022.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from pandas) (2025.2)\r\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.3.3)\r\n", - "Requirement already satisfied: cycler>=0.10 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (0.12.1)\r\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (4.60.1)\r\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (1.4.9)\r\n", - "Requirement already satisfied: packaging>=20.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (25.0)\r\n", - "Requirement already satisfied: pillow>=8 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (12.0.0)\r\n", - "Requirement already satisfied: pyparsing>=3 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from matplotlib) (3.2.5)\r\n", - "Requirement already satisfied: requests>=2.31 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.32.5)\r\n", - "Requirement already satisfied: multitasking>=0.0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.0.12)\r\n", - "Requirement already satisfied: platformdirs>=2.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.5.0)\r\n", - "Requirement already satisfied: frozendict>=2.3.4 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (2.4.7)\r\n", - "Requirement already satisfied: peewee>=3.16.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (3.18.3)\r\n", - "Requirement already satisfied: beautifulsoup4>=4.11.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (4.14.2)\r\n", - "Requirement already satisfied: curl_cffi>=0.7 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (0.13.0)\r\n", - "Requirement already satisfied: protobuf>=3.19.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (6.33.0)\r\n", - "Requirement already satisfied: websockets>=13.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from yfinance) (15.0.1)\r\n", - "Requirement already satisfied: cvxpy>=1.1.19 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.3)\r\n", - "Requirement already satisfied: scikit-learn>=0.24.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.7.2)\r\n", - "Requirement already satisfied: scipy>=1.3.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from PyPortfolioOpt) (1.16.3)\r\n", - "Requirement already satisfied: soupsieve>1.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.8)\r\n", - "Requirement already satisfied: typing-extensions>=4.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from beautifulsoup4>=4.11.1->yfinance) (4.15.0)\r\n", - "Requirement already satisfied: cffi>=1.12.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2.0.0)\r\n", - "Requirement already satisfied: certifi>=2024.2.2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from curl_cffi>=0.7->yfinance) (2025.11.12)\r\n", - "Requirement already satisfied: osqp>=1.0.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (1.0.5)\r\n", - "Requirement already satisfied: clarabel>=0.5.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (0.11.1)\r\n", - "Requirement already satisfied: scs>=3.2.4.post1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cvxpy>=1.1.19->PyPortfolioOpt) (3.2.9)\r\n", - "Requirement already satisfied: six>=1.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\r\n", - "Requirement already satisfied: charset_normalizer<4,>=2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.4.4)\r\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (3.11)\r\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from requests>=2.31->yfinance) (2.5.0)\r\n", - "Requirement already satisfied: joblib>=1.2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (1.5.2)\r\n", - "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from scikit-learn>=0.24.1->PyPortfolioOpt) (3.6.0)\r\n", - "Requirement already satisfied: pycparser in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from cffi>=1.12.0->curl_cffi>=0.7->yfinance) (2.23)\r\n", - "Requirement already satisfied: jinja2 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.1.6)\r\n", - "Requirement already satisfied: setuptools in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (80.9.0)\r\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/thomasschmelzer/projects/PyPortfolioOpt/.venv/lib/python3.12/site-packages (from jinja2->osqp>=1.0.0->cvxpy>=1.1.19->PyPortfolioOpt) (3.0.3)\r\n", - "\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m24.3.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n", - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n" - ] - } - ], - "execution_count": 1 - }, { "metadata": { "ExecuteTime": {