From 2cfafadc9cad6f610ace949a9e73629b08227f3b Mon Sep 17 00:00:00 2001 From: Ambrose Ikpele <68953964+ambroseikpele@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:26:46 +0100 Subject: [PATCH 1/2] Added file : Created Notebook for Portfolio Optimization Using Modern Portfolio Theory --- ...timizationUsingModernPortfolioTheory.ipynb | 2248 +++++++++++++++++ 1 file changed, 2248 insertions(+) create mode 100644 examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb diff --git a/examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb b/examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb new file mode 100644 index 000000000000..08732cb16501 --- /dev/null +++ b/examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb @@ -0,0 +1,2248 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "HRMC-0N0sSjJ" + }, + "source": [ + "## Portfolio Optimization Using Modern Portfolio Theory\n", + "\n", + "#### Description\n", + "This notebook utilizes OpenBB’s data for portfolio optimization based on MPT principles. We would be optimizing a portfolio of top 10 crypto assets, using the daily close data from 1st october 2023 to 1st october 2024.\n", + "\n", + "The portfolio optimization would be done using the mean-variance approach. The mean-variance approach helps determine the optimal allocation of assets in a portfolio to minimize overall risk while maximizing expected returns.\n", + "\n", + "#### Author\n", + "[Ambrose Ikpele](https://github.com/ambroseikpele)\n", + "\n", + "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/OpenBB-Finance/OpenBB/blob/develop/examples/[Notebook_Name].ipynb)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Install external packages" + ], + "metadata": { + "id": "_rMPfEH2KJjA" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install openbb\n", + "!pip install PyPortfolioOpt" + ], + "metadata": { + "id": "iexQsZ1XvYa8" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Import necessary packages" + ], + "metadata": { + "id": "CH4i_WQGRmG-" + } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "B8m_9BassSjK" + }, + "outputs": [], + "source": [ + "from openbb import obb\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from pypfopt import EfficientFrontier\n", + "from pypfopt import CovarianceShrinkage, CLA, expected_returns" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Fetch the daily data of the top crypto currencies for a period of one year using openbb" + ], + "metadata": { + "id": "w3XB7egmzlmI" + } + }, + { + "cell_type": "code", + "source": [ + "top_crypto= ['ADA-USD', 'BNB-USD', 'BTC-USD', 'DOT-USD', 'ETH-USD', 'LTC-USD','MATIC-USD', 'SOL-USD', 'TRX-USD', 'XRP-USD']\n", + "\n", + "ohlc_data= obb.crypto.price.historical(top_crypto, provider=\"yfinance\", interval='1d', start_date='2023-10-01', end_date='2024-10-01').to_df()\n", + "ohlc_data" + ], + "metadata": { + "id": "C3UwCtY8vDaQ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 455 + }, + "outputId": "8ab3c023-43e8-4d81-f5ef-22451d3604bb" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " open high low close \\\n", + "date \n", + "2023-10-01 0.254043 0.267471 0.254019 0.265895 \n", + "2023-10-01 214.800323 219.133835 213.506516 218.047134 \n", + "2023-10-01 26967.396484 28047.238281 26965.093750 27983.750000 \n", + "2023-10-01 4.105477 4.279937 4.103880 4.261009 \n", + "2023-10-01 1671.161499 1750.595703 1670.082153 1733.810425 \n", + "... ... ... ... ... \n", + "2024-10-01 66.820854 68.483223 66.786285 67.686295 \n", + "2024-10-01 0.395941 0.404462 0.394638 0.399719 \n", + "2024-10-01 152.604584 157.199478 151.796982 155.045334 \n", + "2024-10-01 0.155929 0.156981 0.155710 0.156684 \n", + "2024-10-01 0.611519 0.633387 0.611519 0.627602 \n", + "\n", + " volume symbol \n", + "date \n", + "2023-10-01 1.650882e+08 ADA-USD \n", + "2023-10-01 3.874081e+08 BNB-USD \n", + "2023-10-01 9.503917e+09 BTC-USD \n", + "2023-10-01 8.294334e+07 DOT-USD \n", + "2023-10-01 5.054880e+09 ETH-USD \n", + "... ... ... \n", + "2024-10-01 2.475363e+08 LTC-USD \n", + "2024-10-01 3.507427e+07 MATIC-USD \n", + "2024-10-01 1.949461e+09 SOL-USD \n", + "2024-10-01 3.093434e+08 TRX-USD \n", + "2024-10-01 1.424177e+09 XRP-USD \n", + "\n", + "[3670 rows x 6 columns]" + ], + "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", + " \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", + "
openhighlowclosevolumesymbol
date
2023-10-010.2540430.2674710.2540190.2658951.650882e+08ADA-USD
2023-10-01214.800323219.133835213.506516218.0471343.874081e+08BNB-USD
2023-10-0126967.39648428047.23828126965.09375027983.7500009.503917e+09BTC-USD
2023-10-014.1054774.2799374.1038804.2610098.294334e+07DOT-USD
2023-10-011671.1614991750.5957031670.0821531733.8104255.054880e+09ETH-USD
.....................
2024-10-0166.82085468.48322366.78628567.6862952.475363e+08LTC-USD
2024-10-010.3959410.4044620.3946380.3997193.507427e+07MATIC-USD
2024-10-01152.604584157.199478151.796982155.0453341.949461e+09SOL-USD
2024-10-010.1559290.1569810.1557100.1566843.093434e+08TRX-USD
2024-10-010.6115190.6333870.6115190.6276021.424177e+09XRP-USD
\n", + "

3670 rows × 6 columns

\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "ohlc_data", + "summary": "{\n \"name\": \"ohlc_data\",\n \"rows\": 3670,\n \"fields\": [\n {\n \"column\": \"date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2023-10-01\",\n \"max\": \"2024-10-01\",\n \"num_unique_values\": 367,\n \"samples\": [\n \"2024-04-11\",\n \"2023-11-03\",\n \"2023-10-16\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 16646.479249400243,\n \"min\": 0.08486499637365341,\n \"max\": 73079.375,\n \"num_unique_values\": 3669,\n \"samples\": [\n 0.49170398712158203,\n 0.4794990122318268,\n 2683.719970703125\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"high\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 16979.65920014512,\n \"min\": 0.08571500331163406,\n \"max\": 73750.0703125,\n \"num_unique_values\": 3670,\n \"samples\": [\n 0.4922049939632416,\n 0.4812979996204376,\n 63872.44140625\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 16307.879682680239,\n \"min\": 0.0847959965467453,\n \"max\": 71334.09375,\n \"num_unique_values\": 3665,\n \"samples\": [\n 6.224710941314697,\n 0.3214839994907379,\n 0.4614889919757843\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 16670.124390346416,\n \"min\": 0.08486700057983398,\n \"max\": 73083.5,\n \"num_unique_values\": 3665,\n \"samples\": [\n 65738.7265625,\n 519.870361328125,\n 139.4636993408203\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 10083345827.063368,\n \"min\": 33682820.0,\n \"max\": 108991085584.0,\n \"num_unique_values\": 3670,\n \"samples\": [\n 734621817.0,\n 1322556294.0,\n 42710252573.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"symbol\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 10,\n \"samples\": [\n \"TRX-USD\",\n \"BNB-USD\",\n \"LTC-USD\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 2 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Select the close data from ohlc_data for each crypto currency" + ], + "metadata": { + "id": "diAUqkPi5BYe" + } + }, + { + "cell_type": "code", + "source": [ + "close_symbol= ohlc_data[['close', 'symbol']]\n", + "\n", + "# Setting the symbol as the second index level\n", + "close_symbol = close_symbol.set_index('symbol', append= True)\n", + "\n", + "# Unstack 'symbol' to make each unique symbol a separate column\n", + "close_symbol_unstacked= close_symbol.unstack(level='symbol')\n", + "\n", + "# Flatten the column headers\n", + "close_symbol_unstacked.columns = close_symbol_unstacked.columns.get_level_values(1)\n", + "\n", + "prices= close_symbol_unstacked\n", + "\n", + "prices" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 455 + }, + "id": "PXNs59lSzMqv", + "outputId": "265b039d-f797-40be-8817-6c96a7aaf431" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "symbol ADA-USD BNB-USD BTC-USD DOT-USD ETH-USD \\\n", + "date \n", + "2023-10-01 0.265895 218.047134 27983.750000 4.261009 1733.810425 \n", + "2023-10-02 0.259513 214.757935 27530.785156 4.123762 1663.627563 \n", + "2023-10-03 0.261028 213.435944 27429.978516 4.074247 1656.685669 \n", + "2023-10-04 0.259315 213.413086 27799.394531 4.047316 1647.838135 \n", + "2023-10-05 0.260149 210.679672 27415.912109 4.022738 1611.476440 \n", + "... ... ... ... ... ... \n", + "2024-09-27 0.402328 607.867004 65790.664062 4.892055 2695.900635 \n", + "2024-09-28 0.401052 601.567200 65887.648438 4.805896 2677.539062 \n", + "2024-09-29 0.397597 596.411194 65635.304688 4.768428 2659.346924 \n", + "2024-09-30 0.373214 567.260071 63329.500000 4.437086 2603.062744 \n", + "2024-10-01 0.380300 574.313965 63394.039062 4.461926 2610.701416 \n", + "\n", + "symbol LTC-USD MATIC-USD SOL-USD TRX-USD XRP-USD \n", + "date \n", + "2023-10-01 68.233315 0.568532 23.836487 0.090118 0.524204 \n", + "2023-10-02 66.011124 0.547513 23.371700 0.087566 0.512832 \n", + "2023-10-03 65.493515 0.566308 23.552694 0.090858 0.538387 \n", + "2023-10-04 64.452065 0.563369 23.144787 0.088999 0.532931 \n", + "2023-10-05 64.858765 0.546018 22.694141 0.088276 0.523366 \n", + "... ... ... ... ... ... \n", + "2024-09-27 71.188202 0.433774 157.749939 0.155170 0.588927 \n", + "2024-09-28 70.003967 0.423559 156.912430 0.155068 0.614801 \n", + "2024-09-29 69.314423 0.421419 158.629166 0.156474 0.641947 \n", + "2024-09-30 66.820450 0.395917 152.618469 0.155915 0.611492 \n", + "2024-10-01 67.686295 0.399719 155.045334 0.156684 0.627602 \n", + "\n", + "[367 rows x 10 columns]" + ], + "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", + " \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", + " \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", + "
symbolADA-USDBNB-USDBTC-USDDOT-USDETH-USDLTC-USDMATIC-USDSOL-USDTRX-USDXRP-USD
date
2023-10-010.265895218.04713427983.7500004.2610091733.81042568.2333150.56853223.8364870.0901180.524204
2023-10-020.259513214.75793527530.7851564.1237621663.62756366.0111240.54751323.3717000.0875660.512832
2023-10-030.261028213.43594427429.9785164.0742471656.68566965.4935150.56630823.5526940.0908580.538387
2023-10-040.259315213.41308627799.3945314.0473161647.83813564.4520650.56336923.1447870.0889990.532931
2023-10-050.260149210.67967227415.9121094.0227381611.47644064.8587650.54601822.6941410.0882760.523366
.................................
2024-09-270.402328607.86700465790.6640624.8920552695.90063571.1882020.433774157.7499390.1551700.588927
2024-09-280.401052601.56720065887.6484384.8058962677.53906270.0039670.423559156.9124300.1550680.614801
2024-09-290.397597596.41119465635.3046884.7684282659.34692469.3144230.421419158.6291660.1564740.641947
2024-09-300.373214567.26007163329.5000004.4370862603.06274466.8204500.395917152.6184690.1559150.611492
2024-10-010.380300574.31396563394.0390624.4619262610.70141667.6862950.399719155.0453340.1566840.627602
\n", + "

367 rows × 10 columns

\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "close_symbol_unstacked", + "summary": "{\n \"name\": \"close_symbol_unstacked\",\n \"rows\": 367,\n \"fields\": [\n {\n \"column\": \"date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2023-10-01\",\n \"max\": \"2024-10-01\",\n \"num_unique_values\": 367,\n \"samples\": [\n \"2024-04-11\",\n \"2023-11-03\",\n \"2023-10-16\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ADA-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.12231550584081373,\n \"min\": 0.2434529960155487,\n \"max\": 0.7741900086402893,\n \"num_unique_values\": 366,\n \"samples\": [\n 0.5035750269889832,\n 0.32902100682258606,\n 0.25156301259994507\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"BNB-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 152.46468320666116,\n \"min\": 205.2294158935547,\n \"max\": 710.4640502929688,\n \"num_unique_values\": 367,\n \"samples\": [\n 604.893798828125,\n 230.60597229003906,\n 214.82395935058594\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"BTC-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 13044.480615583347,\n \"min\": 26756.798828125,\n \"max\": 73083.5,\n \"num_unique_values\": 367,\n \"samples\": [\n 70060.609375,\n 34732.32421875,\n 28519.466796875\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"DOT-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.7193378737799296,\n \"min\": 3.6488780975341797,\n \"max\": 11.542901992797852,\n \"num_unique_values\": 367,\n \"samples\": [\n 8.379441261291504,\n 4.6154937744140625,\n 3.7862110137939453\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ETH-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 644.9463072659804,\n \"min\": 1539.6124267578125,\n \"max\": 4066.445068359375,\n \"num_unique_values\": 367,\n \"samples\": [\n 3505.247802734375,\n 1832.795166015625,\n 1600.5343017578125\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"LTC-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 9.815022518838514,\n \"min\": 55.983909606933594,\n \"max\": 109.25897216796875,\n \"num_unique_values\": 367,\n \"samples\": [\n 98.68910217285156,\n 69.49114227294922,\n 63.337162017822266\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"MATIC-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.20676285473019815,\n \"min\": 0.3659299910068512,\n \"max\": 1.2714049816131592,\n \"num_unique_values\": 367,\n \"samples\": [\n 0.8783450126647949,\n 0.6719430088996887,\n 0.5341209769248962\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SOL-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 46.954204670567634,\n \"min\": 21.300268173217773,\n \"max\": 202.87413024902344,\n \"num_unique_values\": 367,\n \"samples\": [\n 172.5763702392578,\n 39.51976013183594,\n 23.98295783996582\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"TRX-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.018127298632971522,\n \"min\": 0.08486700057983398,\n \"max\": 0.16655699908733368,\n \"num_unique_values\": 363,\n \"samples\": [\n 0.13199299573898315,\n 0.09731300175189972,\n 0.08891399949789047\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"XRP-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.056190198963527865,\n \"min\": 0.4198229908943176,\n \"max\": 0.7180359959602356,\n \"num_unique_values\": 367,\n \"samples\": [\n 0.6088799834251404,\n 0.6130020022392273,\n 0.49797698855400085\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "calculate the expected returns of each asset and covariance matrix of crypto assets" + ], + "metadata": { + "id": "pFLyyT7v4E5J" + } + }, + { + "cell_type": "code", + "source": [ + "# Expected returns of crypto assets using the mean historical return.\n", + "portfolio_expected_returns = expected_returns.mean_historical_return(prices, frequency=365, compounding=False)\n", + "\n", + "# Covariance matrix of crypto assets using the Ledoit-Wolf shrinkage method.\n", + "covariance = CovarianceShrinkage(prices).ledoit_wolf()" + ], + "metadata": { + "id": "S_sH-1sq6bnI" + }, + "execution_count": 4, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "portfolio_expected_returns" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 429 + }, + "id": "8q1RvkuV7ouF", + "outputId": "7cdc9e09-c38c-4443-8d66-2de154614d74" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "symbol\n", + "ADA-USD 0.621306\n", + "BNB-USD 1.130899\n", + "BTC-USD 0.950751\n", + "DOT-USD 0.324462\n", + "ETH-USD 0.592597\n", + "LTC-USD 0.186095\n", + "MATIC-USD -0.048860\n", + "SOL-USD 2.297820\n", + "TRX-USD 0.619805\n", + "XRP-USD 0.370310\n", + "dtype: float64" + ], + "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", + "
0
symbol
ADA-USD0.621306
BNB-USD1.130899
BTC-USD0.950751
DOT-USD0.324462
ETH-USD0.592597
LTC-USD0.186095
MATIC-USD-0.048860
SOL-USD2.297820
TRX-USD0.619805
XRP-USD0.370310
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ] + }, + { + "cell_type": "code", + "source": [ + "covariance" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 394 + }, + "id": "OGZqN0i47sBC", + "outputId": "f4e4ac0a-f2c0-4f58-b999-e7d056d59b18" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "symbol ADA-USD BNB-USD BTC-USD DOT-USD ETH-USD LTC-USD \\\n", + "symbol \n", + "ADA-USD 0.365908 0.149985 0.179671 0.303813 0.203350 0.204707 \n", + "BNB-USD 0.149985 0.230834 0.122378 0.150464 0.138874 0.108916 \n", + "BTC-USD 0.179671 0.122378 0.189577 0.175989 0.172308 0.127100 \n", + "DOT-USD 0.303813 0.150464 0.175989 0.385419 0.206734 0.192864 \n", + "ETH-USD 0.203350 0.138874 0.172308 0.206734 0.259265 0.160001 \n", + "LTC-USD 0.204707 0.108916 0.127100 0.192864 0.160001 0.270176 \n", + "MATIC-USD 0.278248 0.173514 0.170163 0.287835 0.224481 0.190943 \n", + "SOL-USD 0.296429 0.171700 0.221531 0.333077 0.232270 0.191517 \n", + "TRX-USD 0.083626 0.046899 0.054940 0.085921 0.063282 0.055659 \n", + "XRP-USD 0.194114 0.093489 0.120379 0.192047 0.133110 0.158148 \n", + "\n", + "symbol MATIC-USD SOL-USD TRX-USD XRP-USD \n", + "symbol \n", + "ADA-USD 0.278248 0.296429 0.083626 0.194114 \n", + "BNB-USD 0.173514 0.171700 0.046899 0.093489 \n", + "BTC-USD 0.170163 0.221531 0.054940 0.120379 \n", + "DOT-USD 0.287835 0.333077 0.085921 0.192047 \n", + "ETH-USD 0.224481 0.232270 0.063282 0.133110 \n", + "LTC-USD 0.190943 0.191517 0.055659 0.158148 \n", + "MATIC-USD 0.414685 0.290214 0.075435 0.180736 \n", + "SOL-USD 0.290214 0.593740 0.095372 0.184846 \n", + "TRX-USD 0.075435 0.095372 0.098433 0.057513 \n", + "XRP-USD 0.180736 0.184846 0.057513 0.267617 " + ], + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
symbolADA-USDBNB-USDBTC-USDDOT-USDETH-USDLTC-USDMATIC-USDSOL-USDTRX-USDXRP-USD
symbol
ADA-USD0.3659080.1499850.1796710.3038130.2033500.2047070.2782480.2964290.0836260.194114
BNB-USD0.1499850.2308340.1223780.1504640.1388740.1089160.1735140.1717000.0468990.093489
BTC-USD0.1796710.1223780.1895770.1759890.1723080.1271000.1701630.2215310.0549400.120379
DOT-USD0.3038130.1504640.1759890.3854190.2067340.1928640.2878350.3330770.0859210.192047
ETH-USD0.2033500.1388740.1723080.2067340.2592650.1600010.2244810.2322700.0632820.133110
LTC-USD0.2047070.1089160.1271000.1928640.1600010.2701760.1909430.1915170.0556590.158148
MATIC-USD0.2782480.1735140.1701630.2878350.2244810.1909430.4146850.2902140.0754350.180736
SOL-USD0.2964290.1717000.2215310.3330770.2322700.1915170.2902140.5937400.0953720.184846
TRX-USD0.0836260.0468990.0549400.0859210.0632820.0556590.0754350.0953720.0984330.057513
XRP-USD0.1941140.0934890.1203790.1920470.1331100.1581480.1807360.1848460.0575130.267617
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "covariance", + "summary": "{\n \"name\": \"covariance\",\n \"rows\": 10,\n \"fields\": [\n {\n \"column\": \"symbol\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 10,\n \"samples\": [\n \"TRX-USD\",\n \"BNB-USD\",\n \"LTC-USD\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ADA-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.08399565915696695,\n \"min\": 0.08362553819611086,\n \"max\": 0.3659083337012825,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.08362553819611086,\n 0.14998516163196035,\n 0.2047069631024427\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"BNB-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.05020004647894999,\n \"min\": 0.046898875545741514,\n \"max\": 0.2308336523892049,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.046898875545741514,\n 0.2308336523892049,\n 0.10891574953326724\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"BTC-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.04740882944655909,\n \"min\": 0.05494028218787688,\n \"max\": 0.2215314271485503,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.05494028218787688,\n 0.122377933753199,\n 0.1271004200389094\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"DOT-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.09244576902400627,\n \"min\": 0.08592093186029039,\n \"max\": 0.38541925039220976,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.08592093186029039,\n 0.15046379153531964,\n 0.1928641592350875\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ETH-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.05794804124952129,\n \"min\": 0.06328236381571051,\n \"max\": 0.2592647482722747,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.06328236381571051,\n 0.13887388492595099,\n 0.16000095558799182\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"LTC-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.05905788884342094,\n \"min\": 0.055658596533961685,\n \"max\": 0.2701762101903239,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.055658596533961685,\n 0.10891574953326724,\n 0.2701762101903239\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"MATIC-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0931143715716287,\n \"min\": 0.07543475955857806,\n \"max\": 0.41468483972877146,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.07543475955857806,\n 0.17351366843631816,\n 0.19094304224077283\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SOL-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.13598906639151898,\n \"min\": 0.09537234646176183,\n \"max\": 0.5937402669570883,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.09537234646176183,\n 0.1717001397491843,\n 0.1915168174066942\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"TRX-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.018435705985375535,\n \"min\": 0.046898875545741514,\n \"max\": 0.09843309328469316,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.09843309328469316,\n 0.046898875545741514,\n 0.055658596533961685\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"XRP-USD\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.05963845253060871,\n \"min\": 0.05751300817149977,\n \"max\": 0.2676166222951364,\n \"num_unique_values\": 10,\n \"samples\": [\n 0.05751300817149977,\n 0.09348869771452553,\n 0.1581484240854997\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Calculate the efficient frontier using the Critical Line Algorithm" + ], + "metadata": { + "id": "3IsFJL2x9qHV" + } + }, + { + "cell_type": "code", + "source": [ + "# Create a Critical Line Algorithm (CLA) object using the calculated expected returns and covariance matrix.\n", + "cla = CLA(portfolio_expected_returns, covariance)\n", + "\n", + "# Calculate the efficient frontier, obtaining the returns, volatility, and weights for various portfolios.\n", + "(returns, volatility, weights) = cla.efficient_frontier()" + ], + "metadata": { + "id": "NarHAjA25b61" + }, + "execution_count": 7, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Visualize the efficient frontier" + ], + "metadata": { + "id": "AaQTTEhZ70e7" + } + }, + { + "cell_type": "code", + "source": [ + "plt.figure(figsize=(10,5))\n", + "plt.scatter(volatility, returns, label='Portfolios on efficient frontier')\n", + "plt.legend()\n", + "plt.ylabel('Expected Reward')\n", + "plt.xlabel('Volatiity')\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 465 + }, + "id": "Kt1n-3HQ1gj7", + "outputId": "cea126b2-e715-4995-bbdf-e201a35d0cfd" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAHACAYAAACVhTgAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPGklEQVR4nO3de1yUdd7/8fcFykGFUUwEFFfTLAnP3hbaydQ8tNx616528Gy1mh2t3XK3JMw03fKufpWt5qFSsyyzLBc1FQ+kWSkmWpqGYTZ4okAwUGfm9wfL3CLgzOAc4fV8PObxcC6+18xn8Mp48/1e349hs9lsAgAAAABUKcjXBQAAAACAvyM4AQAAAIADBCcAAAAAcIDgBAAAAAAOEJwAAAAAwAGCEwAAAAA4QHACAAAAAAcITgAAAADgQB1fF+BtVqtVv/zyiyIiImQYhq/LAQAAAOAjNptNp06dUlxcnIKCLj6nVOuC0y+//KL4+HhflwEAAADATxw+fFjNmze/6JhaF5wiIiIklX5zIiMjfVwNAAAAAF8pKChQfHy8PSNcTK0LTmXL8yIjIwlOAAAAAJy6hYfNIQAAAADAAYITAAAAADhAcAIAAAAAB2rdPU7OsNlsOnfunCwWi69LAeAhwcHBqlOnDm0JAACAUwhOFzhz5ozMZrNOnz7t61IAeFi9evUUGxurkJAQX5cCAAD8HMHpPFarVdnZ2QoODlZcXJxCQkL4bTRQA9lsNp05c0bHjx9Xdna2rrjiCodN7wAAQO1GcDrPmTNnZLVaFR8fr3r16vm6HAAeFB4errp16+qnn37SmTNnFBYW5uuSAACAH+NXrJXgN89A7cB/6wAAwFn81AAAAAAADrBUDwAAAIBXZB8rUv+XN6rEYlNosKG0h29Uq+j6vi7LKcw4oVq+//57XXvttQoLC1OnTp2cOmfUqFEaPHiw/flNN92kRx55xCP1+ZLNZtN9992nqKgoGYahzMzMSo+58vnT09NlGIZ+++03j9ZelYyMDLVv315169Yt93foTYZhaMWKFT55bwAAcOkun/SZes1KV4nFJkkqsdjUa1a6Lp/0mY8rcw4zTjXEqFGj9NZbb0mS6tatqxYtWmjEiBH6+9//rjp1qv/XPGrUKP32228VfmBNSUlR/fr1tW/fPjVo0KBar718+XLVrVu32rX5q7S0NC1cuFDp6em6/PLLddlll1V6zJXP36NHD5nNZplMJrfVeejQIbVq1Uo7d+50GH4nTpyoTp066d///ne1/76d9cwzz2jFihXKzMwsd9xsNqtRo0YefW8AAOAZl0/6TFZb5V+z2kq//uP0W71blIsITh5isdq0PTtPx04VKzoiTN1bRSk4yLNbm/fv318LFixQSUmJVq1apQkTJqhu3bqaNGmSy69lsVguuhX7wYMHdeutt+oPf/hDteuNioqq9rn+7ODBg4qNjVWPHj0uesyVzx8SEqKYmBi31umKgwcPaty4cWrevHmlX7fZbLJYLJcU0h251M9/5swZ+jUBAOAD2ceKqgxNZay20nH+vGyPpXoekJZl1nUz1uvOudv08NJM3Tl3m66bsV5pWWaPvm9oaKhiYmL0hz/8QePHj1efPn30ySefSJJ+/fVXjRgxQo0aNVK9evU0YMAA/fDDD/ZzFy5cqIYNG+qTTz5RQkKCQkNDNWbMGL311lv6+OOPZRiGDMOwLxn75ptvNGXKFBmGoWeeeUaStHv3bt18880KDw9X48aNdd9996mwsLDKei9cquaoxp9++knJyclq1KiR6tevr6uvvlqrVq2q8vWd/cyrV69Wu3bt1KBBA/Xv319m88X/nrKysjRgwAA1aNBATZs21fDhw3XixAlJpTN0Dz74oHJycmQYhlq2bFnpsco+f0lJiZ544gnFx8crNDRUbdq00bx58yRVvlRvy5Ytuv766xUeHq74+Hg99NBDKioqsn+9ZcuWmjZtmsaMGaOIiAi1aNFCc+bMsX+9VatWkqTOnTvLMAzddNNNFT7roUOHZBiGTp48qTFjxsgwDPvMmWEY+ve//62uXbsqNDRUW7ZsUUlJiR566CFFR0crLCxM1113nb766iv765Wdt27dOnXr1k316tVTjx49tG/fPvvfSWpqqnbt2mW/5hYuXCip4lK9w4cPa8iQIWrYsKGioqI0aNAgHTp0yP71sqWhzz33nOLi4nTllVde9O8VAAB4Rv+XN7p1nK8QnNwsLcus8Yt2yJxfXO54bn6xxi/a4fHwdL7w8HCdOXNGUukPkV9//bU++eQTbd26VTabTQMHDtTZs2ft40+fPq0ZM2bozTff1J49e/TKK69oyJAh9jBhNpvtS8auvvpqPfbYYzKbzXr88cdVVFSkfv36qVGjRvrqq6+0bNkyff7553rggQecrtdRjRMmTFBJSYk2bdqk3bt3a8aMGRddNubsZ37hhRf0zjvvaNOmTcrJydHjjz9e5Wv+9ttvuvnmm9W5c2d9/fXXSktL09GjRzVkyBBJ0ssvv6wpU6aoefPmMpvN+uqrryo9VpkRI0bo3Xff1SuvvKLvvvtO//rXv6r8fAcPHlT//v11++2369tvv9V7772nLVu2VPh+v/jii+rWrZt27typ+++/X+PHj7eHlO3bt0uSPv/8c5nNZi1fvrzC+8THx8tsNisyMlIvvfSSzGazhg4dav/6k08+qeeff17fffedOnTooL/97W/68MMP9dZbb2nHjh1q06aN+vXrp7y8vHKv+49//EMvvviivv76a9WpU0djxoyRJA0dOlSPPfaYrr76avs1d/77lTl79qz69euniIgIbd68WRkZGfbgW3bNS9K6deu0b98+rV27Vp9++mml30sAAOBZZfc0uWucr7BUz40sVptSV+5VZX/lNkmGpNSVe9U3Icajy/ZsNpvWrVun1atX68EHH9QPP/ygTz75RBkZGfalYosXL1Z8fLxWrFihP//5z5JKfxh9/fXX1bFjR/trhYeHq6SkpNwyqZiYGNWpU0cNGjSwH587d66Ki4v19ttvq3790inWV199VcnJyZoxY4aaNm160ZqdqTEnJ0e333672rdvL0m6/PLLL+n1yj7zG2+8odatW0uSHnjgAU2ZMqXK13311VfVuXNnTZs2zX5s/vz5io+P1/79+9W2bVtFREQoODi43PessmPn279/v95//32tXbtWffr0cfj5pk+frrvvvts+Y3XFFVfolVde0Y033qjZs2fbm7kOHDhQ999/vyTpiSee0P/+7/9qw4YNuvLKK9WkSRNJUuPGjausq6xmwzBkMpkqjJsyZYr69u0rSSoqKtLs2bO1cOFCDRgwQFLpdbF27VrNmzdPf/3rX+3nPffcc7rxxhsllYavW2+9VcXFxQoPD1eDBg1Up06diy7Ne++992S1WvXmm2/al5QuWLBADRs2VHp6um655RZJUv369fXmm2+yRA8AAB8KDTacCkWhwZ69reVSMePkRtuz8yrMNJ3PJsmcX6zt2XlVjrkUn376qRo0aKCwsDANGDBAQ4cO1TPPPKPvvvtOderU0TXXXGMf27hxY1155ZX67rvv7MdCQkLUoUOHar33d999p44dO9pD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x6pzLX3yySdKSkrShAkT1LRpUyUmJmratGmyWCzeKht+5lJ/RpKkefPm6Y477lD9+vU9VSZqmDq+LgBVO3HihCwWi5o2bVrueNOmTfX9999XeV5+fr6aNWumkpISBQcH6/XXX1ffvn09XS78VHWuoy1btmjevHnKzMz0QoUIBNW5jq688krNnz9fHTp0UH5+vl544QX16NFDe/bsUfPmzb1RNvxQda6lH3/8UevXr9fdd9+tVatW6cCBA7r//vt19uxZpaSkeKNs+Jnq/oxUZvv27crKytK8efM8VSJqIIJTDRQREaHMzEwVFhZq3bp1mjhxoi6//HLddNNNvi4NAeDUqVMaPny45s6dq8suu8zX5SCAJSUlKSkpyf68R48eateunf71r3/p2Wef9WFlCDRWq1XR0dGaM2eOgoOD1bVrVx05ckT//Oc/CU6olnnz5ql9+/bq3r27r0tBACE4+bHLLrtMwcHBOnr0aLnjR48eVUxMTJXnBQUFqU2bNpKkTp066bvvvtP06dMJTrWUq9fRwYMHdejQISUnJ9uPWa1WSVKdOnW0b98+tW7d2rNFw+9U99+j89WtW1edO3fWgQMHPFEiAkR1rqXY2FjVrVtXwcHB9mPt2rVTbm6uzpw5o5CQEI/WDP9zKf8mFRUVaenSpZoyZYonS0QNxD1OfiwkJERdu3bVunXr7MesVqvWrVtX7re4jlitVpWUlHiiRAQAV6+jq666Srt371ZmZqb98d///d/q1auXMjMzFR8f783y4Sfc8e+RxWLR7t27FRsb66kyEQCqcy317NlTBw4csP8SR5L279+v2NhYQlMtdSn/Ji1btkwlJSUaNmyYp8tETePr3SlwcUuXLrWFhobaFi5caNu7d6/tvvvuszVs2NCWm5trs9lstuHDh9uefPJJ+/hp06bZ1qxZYzt48KBt7969thdeeMFWp04d29y5c331EeAHXL2OLsSuerDZXL+OUlNTbatXr7YdPHjQ9s0339juuOMOW1hYmG3Pnj2++gjwE65eSzk5ObaIiAjbAw88YNu3b5/t008/tUVHR9umTp3qq48AP1Dd/7ddd911tqFDh3q7XNQALNXzc0OHDtXx48c1efJk5ebmqlOnTkpLS7PfDJmTk6OgoP+bOCwqKtL999+vn3/+WeHh4brqqqu0aNEiDR061FcfAX7A1esIqIyr19Gvv/6qe++9V7m5uWrUqJG6du2qL774QgkJCb76CPATrl5L8fHxWr16tR599FF16NBBzZo108MPP6wnnnjCVx8BfqA6/2/bt2+ftmzZojVr1viiZAQ4w2az2XxdBAAAAAD4M37FDAAAAAAOEJwAAAAAwAGCEwAAAAA4QHACAAAAAAcITgAAAADgAMEJAAAAABwgOAEAAACAAwQnAECN0rJlS7300ktufx3DMLRixYpLfl0AQGAiOAEA/EZycrL69+9f6dc2b94swzD07bffuvU9Fy5cqIYNG1Y4/tVXX+m+++6zPzebzRowYIAk6dChQzIMQ5mZmW6tBQDgvwhOAAC/MXbsWK1du1Y///xzha8tWLBA3bp1U4cOHbxSS5MmTVSvXj3785iYGIWGhnrlvQEA/ofgBADwG3/84x/VpEkTLVy4sNzxwsJCLVu2TGPHjtWHH36oq6++WqGhoWrZsqVefPHFi77mrFmz1L59e9WvX1/x8fG6//77VVhYKElKT0/X6NGjlZ+fL8MwZBiGnnnmGUkXX6rXqlUrSVLnzp1lGIZuuukmbdq0SXXr1lVubm6593/kkUd0/fXXV/+bAgDwCwQnAIDfqFOnjkaMGKGFCxfKZrPZjy9btkwWi0Xt2rXTkCFDdMcdd2j37t165pln9PTTT1cIWucLCgrSK6+8oj179uitt97S+vXr9be//U2S1KNHD7300kuKjIyU2WyW2WzW448/7rDO7du3S5I+//xzmc1mLV++XDfccIMuv/xyvfPOO/ZxZ8+e1eLFizVmzJhqfkcAAP6C4AQA8CtjxozRwYMHtXHjRvuxBQsW6Pbbb9ecOXPUu3dvPf3002rbtq1GjRqlBx54QP/85z+rfL1HHnlEvXr1UsuWLXXzzTdr6tSpev/99yVJISEhMplMMgxDMTExiomJUYMGDRzW2KRJE0lS48aNFRMTo6ioKEmlSw0XLFhgH7dy5UoVFxdryJAh1fpeAAD8B8EJAOBXrrrqKvXo0UPz58+XJB04cECbN2/W2LFj9d1336lnz57lxvfs2VM//PCDLBZLpa/3+eefq3fv3mrWrJkiIiI0fPhwnTx5UqdPn3Z77aNGjdKBAwe0bds2SaUbTwwZMkT169d3+3sBALyL4AQA8Dtl9zKdOnVKCxYsUOvWrXXjjTe6/DqHDh3SH//4R3Xo0EEffvihvvnmG7322muSpDNnzri7bEVHRys5OVkLFizQ0aNH9e9//5tlegBQQxCcAAB+Z8iQIQoKCtKSJUv09ttva8yYMTIMQ+3atVNGRka5sRkZGWrbtq2Cg4MrvM4333wjq9WqF198Uddee63atm2rX375pdyYkJCQKmerqhISEiJJlZ53zz336L333tOcOXPUunXrCjNkAIDARHACAPidBg0aaOjQoZo0aZLMZrNGjRolSXrssce0bt06Pfvss9q/f7/eeustvfrqq1Vu6NCmTRudPXtW/+///T/9+OOPeuedd/TGG2+UG9OyZUsVFhZq3bp1OnHihFNL+KKjoxUeHq60tDQdPXpU+fn59q/169dPkZGRmjp1qkaPHl39bwIAwK8QnAAAfmns2LH69ddf1a9fP8XFxUmSunTpovfff19Lly5VYmKiJk+erClTptiD1YU6duyoWbNmacaMGUpMTNTixYs1ffr0cmN69OihcePGaejQoWrSpIlmzpzpsLY6derolVde0b/+9S/FxcVp0KBB9q8FBQVp1KhRslgsGjFiRPW/AQAAv2LYzt/vFQAAXLKxY8fq+PHj+uSTT3xdCgDATer4ugAAAGqK/Px87d69W0uWLCE0AUANQ3ACAMBNBg0apO3bt2vcuHHq27evr8sBALgRS/UAAAAAwAE2hwAAAAAABwhOAAAAAOAAwQkAAAAAHCA4AQAAAIADBCcAAAAAcIDgBAAAAAAOEJwAAAAAwAGCEwAAAAA4QHACAAAAAAf+PxQgu/yncpVBAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Get the weights (in perentage) of the portfolio with the lowest volatility" + ], + "metadata": { + "id": "v4jE07br-DEJ" + } + }, + { + "cell_type": "code", + "source": [ + "\n", + "optimized_weight=weights[volatility.index(min(volatility))]\n", + "pie_df=pd.DataFrame(optimized_weight*100, index=prices.columns, columns=['weights'])\n", + "pie_df= pie_df.sort_values(by=['weights'], ascending=False)\n", + "pie_df" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 394 + }, + "id": "FzvioR9k11Tx", + "outputId": "16dd12f8-ee60-44ab-eaa0-1c4dc2482a01" + }, + "execution_count": 9, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " weights\n", + "symbol \n", + "TRX-USD 67.715856\n", + "BNB-USD 13.161715\n", + "BTC-USD 9.982129\n", + "XRP-USD 5.275661\n", + "LTC-USD 3.864639\n", + "ADA-USD 0.000000\n", + "DOT-USD 0.000000\n", + "ETH-USD 0.000000\n", + "MATIC-USD 0.000000\n", + "SOL-USD 0.000000" + ], + "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", + "
weights
symbol
TRX-USD67.715856
BNB-USD13.161715
BTC-USD9.982129
XRP-USD5.275661
LTC-USD3.864639
ADA-USD0.000000
DOT-USD0.000000
ETH-USD0.000000
MATIC-USD0.000000
SOL-USD0.000000
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "pie_df", + "summary": "{\n \"name\": \"pie_df\",\n \"rows\": 10,\n \"fields\": [\n {\n \"column\": \"symbol\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 10,\n \"samples\": [\n \"MATIC-USD\",\n \"BNB-USD\",\n \"ADA-USD\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"weights\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 20.819539048319967,\n \"min\": 0.0,\n \"max\": 67.71585619449834,\n \"num_unique_values\": 6,\n \"samples\": [\n 67.71585619449834,\n 13.161715147317723,\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Display Pie Chart of the weights" + ], + "metadata": { + "id": "WSHUOb_O_12C" + } + }, + { + "cell_type": "code", + "source": [ + "pie_df= pie_df.query('weights != 0.000000')\n", + "\n", + "fig, ax = plt.subplots()\n", + "ax.pie(pie_df.weights, labels=pie_df.index.values.tolist(), autopct='%1.1f%%', radius=2)\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 664 + }, + "id": "Ad1Ncn3N2iRj", + "outputId": "3f635343-2f6d-4966-e15f-13ac9e15bb40" + }, + "execution_count": 10, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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4Z577sEff/zRqveVyWRISkpCZmamTTOSY2LBJavrFuGDr+YPwhtX90KEr4fdn/8Jnx+4ektkR9qGakzwihcdw2YkSLg86XKsvGwlxseMFx3HqkaNGoW0tDSkpaVhx44dmDBhAi655BJkZWVd9H1bcwjT5s2bmwq0TqfDp59+2qZ8w4cPR0ZGBtavX4/LL78chw4dwrBhw/D000+36v0tFgskyQFeViS7Y8Elm5mSGo71943AwrGJ0Cjt809tpH8ZwnN/sctzEdFfZhTlio5gE6lBqfj80s/x+KDH4a3yFh3H6jw9PZGQkICEhAT069cP77//PmpqavDee+9d9H2TkpJw9OjRC96nb9++TQU6LS0NU6dOBQB4e3ujoqLinPuXl5efs7VBqVRi2LBheOCBB7BmzRo89dRTePrpp6HX6y/43CaTCSdOnEBsbOxFPxZyPSy4ZFMapRwLxyZhw30jMblHmM2f7yn/nyBxdCiR3fXM3otYzwjRMawmWBuMZ4c9i48v+RhdA7uKjmM3kiRBJpOhrq7uove95pprcPz48WZHdv3JYrGgoqICHh4eTQU6ISEBXl6Ng4KSk5OxZ8+ec95vz549SEq68ICMLl26wGg0or7+woNGPvroI5SVlWHmzJkX/VjI9bDgkl2E+3rgzWt64+v5g9AtwjarIEP9KxCV85NNHpuILm6GzFd0hA5TyVSY130evr/se0yOm+zyL283NDQgPz8f+fn5OHLkCO68805UV1djypQpF33fWbNm4corr8TVV1+NZ555Brt27UJWVhZWr16NsWPHYuPG859DvmDBAhw/fhx33XUX9u/fj2PHjuHll1/G559/jvvuu6/pfiNHjsS7776L3bt3IzMzEz/++CMefvhhjBo1Ct7ef30tqa2tRX5+Ps6cOYNt27bhgQcewPz587FgwQKMGjWqY39I5JQ4yYzszmy24Ktd2XhxzTEUV1/4Jaa2+DXhS8ScOXclgYjso0QXhLEhXjCajaKjtMvoqNH4V79/IcorSnQUu5g7dy4++uijpl97eXkhJSUFDzzwwDmrniNHjkTPnj3x6quvNrvdbDZj8eLFWLJkCQ4dOgSFQoHExETMnj0b8+bNg4fH+a/D2LlzJx555BGkpaVBr9cjJSUFDz74IC677LKm+zz77LP4/vvvcezYMdTW1iI8PByTJ0/GY4891nTS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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "FgllhXez_sr3" + }, + "execution_count": 10, + "outputs": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "obb", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.9.19" + }, + "colab": { + "provenance": [] + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From bd8e31e358c7a8af09fad0e59fe26de4cf48cea2 Mon Sep 17 00:00:00 2001 From: Ambrose Ikpele <68953964+ambroseikpele@users.noreply.github.com> Date: Wed, 2 Oct 2024 01:42:15 +0100 Subject: [PATCH 2/2] Updated file : Updated Notebook for Portfolio Optimization Using Modern Portfolio Theory (Hacktoberfest) Addressed review comments --- ...timizationUsingModernPortfolioTheory.ipynb | 1159 ++++++++++++----- 1 file changed, 844 insertions(+), 315 deletions(-) diff --git a/examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb b/examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb index 08732cb16501..ae2e21fd1502 100644 --- a/examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb +++ b/examples/portfolioOptimizationUsingModernPortfolioTheory.ipynb @@ -19,6 +19,24 @@ "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/OpenBB-Finance/OpenBB/blob/develop/examples/[Notebook_Name].ipynb)" ] }, + { + "cell_type": "markdown", + "source": [ + "### Introduction" + ], + "metadata": { + "id": "-Ih2c6xRxklu" + } + }, + { + "cell_type": "markdown", + "source": [ + "Modern Portfolio Theory (MPT) is a mathematical framework for constructing a portfolio of assets to maximize expected return based on a given level of risk. In this notebook, we will implement MPT to construct an optimal portfolio with minimum volatility using a selection of the top cryptocurrencies as our assets. The notebook will fetch historical price data for these assets, calculate the portfolio's expected return and risk, and visualize the optimal portfolio based on risk-return trade-offs." + ], + "metadata": { + "id": "mWd0TC0DxZm-" + } + }, { "cell_type": "markdown", "source": [ @@ -37,7 +55,7 @@ "metadata": { "id": "iexQsZ1XvYa8" }, - "execution_count": null, + "execution_count": 17, "outputs": [] }, { @@ -70,12 +88,21 @@ { "cell_type": "markdown", "source": [ - "Fetch the daily data of the top crypto currencies for a period of one year using openbb" + "### Define the assets and fetch the data" ], "metadata": { "id": "w3XB7egmzlmI" } }, + { + "cell_type": "markdown", + "source": [ + "Fetch the daily data of the top crypto currencies for a period of one year using openbb" + ], + "metadata": { + "id": "SyF2ROKDyKdJ" + } + }, { "cell_type": "code", "source": [ @@ -90,7 +117,7 @@ "base_uri": "https://localhost:8080/", "height": 455 }, - "outputId": "8ab3c023-43e8-4d81-f5ef-22451d3604bb" + "outputId": "fd4a3544-32f9-49c1-d7ad-bca9efa88baa" }, "execution_count": 2, "outputs": [ @@ -106,11 +133,11 @@ "2023-10-01 4.105477 4.279937 4.103880 4.261009 \n", "2023-10-01 1671.161499 1750.595703 1670.082153 1733.810425 \n", "... ... ... ... ... \n", - "2024-10-01 66.820854 68.483223 66.786285 67.686295 \n", - "2024-10-01 0.395941 0.404462 0.394638 0.399719 \n", - "2024-10-01 152.604584 157.199478 151.796982 155.045334 \n", - "2024-10-01 0.155929 0.156981 0.155710 0.156684 \n", - "2024-10-01 0.611519 0.633387 0.611519 0.627602 \n", + "2024-09-30 69.314308 69.321297 66.454277 66.820450 \n", + "2024-09-30 0.421419 0.421627 0.394318 0.395917 \n", + "2024-09-30 158.632416 159.508926 152.019836 152.618469 \n", + "2024-09-30 0.156474 0.156746 0.154867 0.155915 \n", + "2024-09-30 0.641945 0.652411 0.610951 0.611492 \n", "\n", " volume symbol \n", "date \n", @@ -120,17 +147,17 @@ "2023-10-01 8.294334e+07 DOT-USD \n", "2023-10-01 5.054880e+09 ETH-USD \n", "... ... ... \n", - "2024-10-01 2.475363e+08 LTC-USD \n", - "2024-10-01 3.507427e+07 MATIC-USD \n", - "2024-10-01 1.949461e+09 SOL-USD \n", - "2024-10-01 3.093434e+08 TRX-USD \n", - "2024-10-01 1.424177e+09 XRP-USD \n", + "2024-09-30 3.003743e+08 LTC-USD \n", + "2024-09-30 3.730373e+07 MATIC-USD \n", + "2024-09-30 2.376781e+09 SOL-USD \n", + "2024-09-30 3.565544e+08 TRX-USD \n", + "2024-09-30 2.051369e+09 XRP-USD \n", "\n", - "[3670 rows x 6 columns]" + "[3660 rows x 6 columns]" ], "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
returnsvolatilityweights
02.2882140.771558[[0.0], [0.0], [0.0], [0.0], [0.0], [0.0], [0....
12.2882140.771558[[0.0], [8.540177112501205e-18], [0.0], [0.0],...
22.2882140.771558[[0.0], [1.708035422500241e-17], [0.0], [0.0],...
32.2882140.771558[[0.0], [2.5620531337503614e-17], [0.0], [0.0]...
42.2882140.771558[[0.0], [3.416070845000482e-17], [0.0], [0.0],...
............
740.6996860.289411[[0.0], [0.14064237710852637], [0.110488877515...
750.6959880.289372[[0.0], [0.1384244599412712], [0.1077026598376...
760.6922910.289344[[0.0], [0.136206542774016], [0.10491644215937...
770.6885930.289328[[0.0], [0.1339886256067608], [0.1021302244811...
780.6848950.289322[[0.0], [0.1317707084395056], [0.0993440068028...
\n", + "

79 rows × 3 columns

\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "efficient_frontier_portfolios", + "summary": "{\n \"name\": \"efficient_frontier_portfolios\",\n \"rows\": 79,\n \"fields\": [\n {\n \"column\": \"returns\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": 0.6848950166508636,\n \"max\": 2.2882141236911924,\n \"num_unique_values\": 66,\n \"samples\": [\n 0.72557090559056,\n 0.6959884409071444,\n 2.2882141236911924\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"volatility\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": 0.2893221746578987,\n \"max\": 0.7715581124191021,\n \"num_unique_values\": 66,\n \"samples\": [\n 0.28999332370675096,\n 0.2893721484198184,\n 0.7715581124191021\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"weights\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 7 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Visualize the efficient frontier" ], "metadata": { "id": "AaQTTEhZ70e7" @@ -1770,7 +2298,7 @@ "height": 465 }, "id": "Kt1n-3HQ1gj7", - "outputId": "cea126b2-e715-4995-bbdf-e201a35d0cfd" + "outputId": "686d5698-8806-4c7e-ba07-46b26d76add0" }, "execution_count": 8, "outputs": [ @@ -1780,7 +2308,7 @@ "text/plain": [ "
" ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAHACAYAAACVhTgAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPGklEQVR4nO3de1yUdd7/8fcFykGFUUwEFFfTLAnP3hbaydQ8tNx616528Gy1mh2t3XK3JMw03fKufpWt5qFSsyyzLBc1FQ+kWSkmWpqGYTZ4okAwUGfm9wfL3CLgzOAc4fV8PObxcC6+18xn8Mp48/1e349hs9lsAgAAAABUKcjXBQAAAACAvyM4AQAAAIADBCcAAAAAcIDgBAAAAAAOEJwAAAAAwAGCEwAAAAA4QHACAAAAAAcITgAAAADgQB1fF+BtVqtVv/zyiyIiImQYhq/LAQAAAOAjNptNp06dUlxcnIKCLj6nVOuC0y+//KL4+HhflwEAAADATxw+fFjNmze/6JhaF5wiIiIklX5zIiMjfVwNAAAAAF8pKChQfHy8PSNcTK0LTmXL8yIjIwlOAAAAAJy6hYfNIQAAAADAAYITAAAAADhAcAIAAAAAB2rdPU7OsNlsOnfunCwWi69LAeAhwcHBqlOnDm0JAACAUwhOFzhz5ozMZrNOnz7t61IAeFi9evUUGxurkJAQX5cCAAD8HMHpPFarVdnZ2QoODlZcXJxCQkL4bTRQA9lsNp05c0bHjx9Xdna2rrjiCodN7wAAQO1GcDrPmTNnZLVaFR8fr3r16vm6HAAeFB4errp16+qnn37SmTNnFBYW5uuSAACAH+NXrJXgN89A7cB/6wAAwFn81AAAAAAADrBUDwAAAIBXZB8rUv+XN6rEYlNosKG0h29Uq+j6vi7LKcw4oVq+//57XXvttQoLC1OnTp2cOmfUqFEaPHiw/flNN92kRx55xCP1+ZLNZtN9992nqKgoGYahzMzMSo+58vnT09NlGIZ+++03j9ZelYyMDLVv315169Yt93foTYZhaMWKFT55bwAAcOkun/SZes1KV4nFJkkqsdjUa1a6Lp/0mY8rcw4zTjXEqFGj9NZbb0mS6tatqxYtWmjEiBH6+9//rjp1qv/XPGrUKP32228VfmBNSUlR/fr1tW/fPjVo0KBar718+XLVrVu32rX5q7S0NC1cuFDp6em6/PLLddlll1V6zJXP36NHD5nNZplMJrfVeejQIbVq1Uo7d+50GH4nTpyoTp066d///ne1/76d9cwzz2jFihXKzMwsd9xsNqtRo0YefW8AAOAZl0/6TFZb5V+z2kq//uP0W71blIsITh5isdq0PTtPx04VKzoiTN1bRSk4yLNbm/fv318LFixQSUmJVq1apQkTJqhu3bqaNGmSy69lsVguuhX7wYMHdeutt+oPf/hDteuNioqq9rn+7ODBg4qNjVWPHj0uesyVzx8SEqKYmBi31umKgwcPaty4cWrevHmlX7fZbLJYLJcU0h251M9/5swZ+jUBAOAD2ceKqgxNZay20nH+vGyPpXoekJZl1nUz1uvOudv08NJM3Tl3m66bsV5pWWaPvm9oaKhiYmL0hz/8QePHj1efPn30ySefSJJ+/fVXjRgxQo0aNVK9evU0YMAA/fDDD/ZzFy5cqIYNG+qTTz5RQkKCQkNDNWbMGL311lv6+OOPZRiGDMOwLxn75ptvNGXKFBmGoWeeeUaStHv3bt18880KDw9X48aNdd9996mwsLDKei9cquaoxp9++knJyclq1KiR6tevr6uvvlqrVq2q8vWd/cyrV69Wu3bt1KBBA/Xv319m88X/nrKysjRgwAA1aNBATZs21fDhw3XixAlJpTN0Dz74oHJycmQYhlq2bFnpsco+f0lJiZ544gnFx8crNDRUbdq00bx58yRVvlRvy5Ytuv766xUeHq74+Hg99NBDKioqsn+9ZcuWmjZtmsaMGaOIiAi1aNFCc+bMsX+9VatWkqTOnTvLMAzddNNNFT7roUOHZBiGTp48qTFjxsgwDPvMmWEY+ve//62uXbsqNDRUW7ZsUUlJiR566CFFR0crLCxM1113nb766iv765Wdt27dOnXr1k316tVTjx49tG/fPvvfSWpqqnbt2mW/5hYuXCip4lK9w4cPa8iQIWrYsKGioqI0aNAgHTp0yP71sqWhzz33nOLi4nTllVde9O8VAAB4Rv+XN7p1nK8QnNwsLcus8Yt2yJxfXO54bn6xxi/a4fHwdL7w8HCdOXNGUukPkV9//bU++eQTbd26VTabTQMHDtTZs2ft40+fPq0ZM2bozTff1J49e/TKK69oyJAh9jBhNpvtS8auvvpqPfbYYzKbzXr88cdVVFSkfv36qVGjRvrqq6+0bNkyff7553rggQecrtdRjRMmTFBJSYk2bdqk3bt3a8aMGRddNubsZ37hhRf0zjvvaNOmTcrJydHjjz9e5Wv+9ttvuvnmm9W5c2d9/fXXSktL09GjRzVkyBBJ0ssvv6wpU6aoefPmMpvN+uqrryo9VpkRI0bo3Xff1SuvvKLvvvtO//rXv6r8fAcPHlT//v11++2369tvv9V7772nLVu2VPh+v/jii+rWrZt27typ+++/X+PHj7eHlO3bt0uSPv/8c5nNZi1fvrzC+8THx8tsNisyMlIvvfSSzGazhg4dav/6k08+qeeff17fffedOnTooL/97W/68MMP9dZbb2nHjh1q06aN+vXrp7y8vHKv+49//EMvvviivv76a9WpU0djxoyRJA0dOlSPPfaYrr76avs1d/77lTl79qz69euniIgIbd68WRkZGfbgW3bNS9K6deu0b98+rV27Vp9++mml30sAAOBZZfc0uWucr7BUz40sVptSV+5VZX/lNkmGpNSVe9U3Icajy/ZsNpvWrVun1atX68EHH9QPP/ygTz75RBkZGfalYosXL1Z8fLxWrFihP//5z5JKfxh9/fXX1bFjR/trhYeHq6SkpNwyqZiYGNWpU0cNGjSwH587d66Ki4v19ttvq3790inWV199VcnJyZoxY4aaNm160ZqdqTEnJ0e333672rdvL0m6/PLLL+n1yj7zG2+8odatW0uSHnjgAU2ZMqXK13311VfVuXNnTZs2zX5s/vz5io+P1/79+9W2bVtFREQoODi43PessmPn279/v95//32tXbtWffr0cfj5pk+frrvvvts+Y3XFFVfolVde0Y033qjZs2fbm7kOHDhQ999/vyTpiSee0P/+7/9qw4YNuvLKK9WkSRNJUuPGjausq6xmwzBkMpkqjJsyZYr69u0rSSoqKtLs2bO1cOFCDRgwQFLpdbF27VrNmzdPf/3rX+3nPffcc7rxxhsllYavW2+9VcXFxQoPD1eDBg1Up06diy7Ne++992S1WvXmm2/al5QuWLBADRs2VHp6um655RZJUv369fXmm2+yRA8AAB8KDTacCkWhwZ69reVSMePkRtuz8yrMNJ3PJsmcX6zt2XlVjrkUn376qRo0aKCwsDANGDBAQ4cO1TPPPKPvvvtOderU0TXXXGMf27hxY1155ZX67rvv7MdCQkLUoUOHar33d999p44dO9pDkyT17NlTVqvVPsPh6HxHNT700EOaOnWqevbsqZSUFH377beX9HqSVK9ePXtokqTY2FgdO3asytfdtWuXNmzYoAYNGtgfV111laTSWaDqyszMVHBwsD1MOLJr1y4tXLiwXB39+vWT1WpVdna2fdz5f5+GYSgmJuain89V3bp1s//54MGDOnv2rHr27Gk/VrduXXXv3r3c9/zCumJjYyXJpbp27dqlAwcOKCIiwv75o6KiVFxcXO7voX379oQmAAB8LO1h536+cXacrzDj5EbHTlUdmqozzlW9evXS7NmzFRISori4OJdv1A8PD7/ohhC+ds8996hfv3767LPPtGbNGk2fPl0vvviiHnzwwWq/5oW72hmGIZut6t+IFBYW2mfRLlQWAKojPDzcpfGFhYX6y1/+ooceeqjC11q0aGH/c2Wfz2q1Vq/ISpwflF1xfl1l15wrdRUWFqpr165avHhxha+VzaRdSn0AAMB9WkXXV5Chi24QEWTIrzeGkJhxcqvoiDC3jnNV/fr11aZNG7Vo0aJcaGrXrp3OnTunL7/80n7s5MmT2rdvnxISEi76miEhIbJYLA7fu127dtq1a1e5zQkyMjIUFBTk1E35ztYYHx+vcePGafny5Xrsscc0d+7cS3o9V3Xp0kV79uxRy5Yt1aZNm3KPS/khvX379rJardq40bmbIrt06aK9e/dWqKFNmzZOz7CUjXPm79cZrVu3VkhIiDIyMuzHzp49q6+++sql77kz11yXLl30ww8/KDo6usLnd+eW7QAA1AYWq01bD57Ux5lHtPXgSVkcbYFXDT9Ov1VV3akSZMjvtyKXCE5u1b1VlGJNYapqzsaQFGsq3Zrcm6644goNGjRI9957r7Zs2aJdu3Zp2LBhatasmQYNGnTRc1u2bKlvv/1W+/bt04kTJ8ptrHC+u+++W2FhYRo5cqSysrK0YcMGPfjggxo+fLjD+5ucrfGRRx7R6tWrlZ2drR07dmjDhg1q166d2z/zxUyYMEF5eXm688479dVXX+ngwYNavXq1Ro8efUkBpGXLlho5cqTGjBmjFStWKDs7W+np6Xr//fcrHf/EE0/oiy++0AMPPKDMzEz98MMP+vjjj13ajCM6Olrh4eH2DS7y8/OrXb9UGtzHjx+vv/71r0pLS9PevXt177336vTp0xo7dqzTr9OyZUtlZ2crMzNTJ06cUElJSYUxd999ty677DINGjRImzdvtn+/HnroIf3888+X9DkAAKhNvLkb9I/Tb9WGiTfZ72UKDTa0YeJNARGaJIKTWwUHGUpJLv3N+oXhqex5SnKCx/s5VWbBggXq2rWr/vjHPyopKUk2m02rVq1y2ID13nvv1ZVXXqlu3bqpSZMm5WYTzlevXj2tXr1aeXl5+q//+i/96U9/Uu/evfXqq6+6rUaLxaIJEyaoXbt26t+/v9q2bavXX3/d7Z/5YuLi4pSRkSGLxaJbbrlF7du31yOPPKKGDRsqKOjS/nOaPXu2/vSnP+n+++/XVVddpXvvvbfcDN75OnTooI0bN2r//v26/vrr1blzZ02ePFlxcXFOv1+dOnX0yiuv6F//+pfi4uIuKVCWef7553X77bdr+PDh6tKliw4cOKDVq1e71Lj29ttvV//+/dWrVy81adJE7777boUx9erV06ZNm9SiRQvddtttateuncaOHavi4mJFRkZe8ucAAKA28MVu0K2i62vfcwN16Plbte+5gX6/PO98hu1iN3TUQAUFBTKZTMrPz6/wA1ZxcbGys7PVqlUr+65k1ZGWZVbqyr3lLsJYU5hSkhPUP7H698EAcC93/TcPAECgsVhtum7G+io3NjMkxZjCtOWJm33yS39vuVg2uBCbQ3hA/8RY9U2I0fbsPB07VazoiNLleTX5ogMAAEDgcGU36KTWjb1XmB8jOHlIcJDBRQYAAAC/5OvdoAMR9zgBAAAAtYyvd4MORAQnAAAAoJbx192g/RnBqRK1bL8MoNbiv3UAQG3lz7tB+yuC03nKtqk+ffq0jysB4A1l/61fyhb1AAB4gjea0vZPjNXsYV0UYyq/HC/GFKbZw7qwG/QF2BziPMHBwWrYsKGOHTsmqbRXjGGQsoGaxmaz6fTp0zp27JgaNmyo4OBgX5cEAICdN1vbsBu08+jjdAGbzabc3Fz99ttv3i8OgFc1bNhQMTEx/IIEAOA3yprSXvgDetn/qZgJci/6OF0CwzAUGxur6OhonT171tflAPCQunXrMtMEAPArFqtNqSv3VghNUmlfJUNS6sq96psQw4yQD/g0OE2fPl3Lly/X999/r/DwcPXo0UMzZszQlVdeWeU5c+fO1dtvv62srCxJUteuXTVt2jR1797drbUFBwfzQxUAAAC8hqa0/s2nm0Ns3LhREyZM0LZt27R27VqdPXtWt9xyi4qKiqo8Jz09XXfeeac2bNigrVu3Kj4+XrfccouOHDnixcoBAAAA96IprX/zq3ucjh8/rujoaG3cuFE33HCDU+dYLBY1atRIr776qkaMGOFwvCvrGAEAAABv2XrwpO6cu83huHfvvZYZJzdxJRv41Xbk+fn5kqSoKOcbbZ0+fVpnz5516RwAAADA39CU1r/5TXCyWq165JFH1LNnTyUmJjp93hNPPKG4uDj16dOn0q+XlJSooKCg3AMAAACoDk/2V6IprX/zm131JkyYoKysLG3ZssXpc55//nktXbpU6enpCgsLq3TM9OnTlZqa6q4yAQAAUEt5o79SWVPaC98nxkN9nOA8v7jH6YEHHtDHH3+sTZs2qVWrVk6d88ILL2jq1Kn6/PPP1a1btyrHlZSUqKSkxP68oKBA8fHx3OMEAAAAp3m7v5LFaqMprRcETB8nm82mBx98UB999JHS09OdDk0zZ87Uc889p9WrV180NElSaGioQkND3VEuAAAAaiFf9FcKDjLYAMLP+PQepwkTJmjRokVasmSJIiIilJubq9zcXP3+++/2MSNGjNCkSZPsz2fMmKGnn35a8+fPV8uWLe3nFBYW+uIjAAAAoIZzpb8Sai6fBqfZs2crPz9fN910k2JjY+2P9957zz4mJydHZrO53DlnzpzRn/70p3LnvPDCC774CAAAAKjh6K8EyQ+W6jmSnp5e7vmhQ4c8UwwAAABQieiIyjchq+44BCa/2Y4cAAAA8Ef0V4JEcAIAAAAuiv5KkAhOAAAAqAE82ZhW+r/+SjGm8svxYkxhbt+KHP7JbxrgAgAAANXhjca0Uml46psQQ3+lWsovGuB6kytNrgAAAODfvN2YFjWLK9mApXoAAAAISI4a00qljWndvWwPtRPBCQAAAAGJxrTwJoITAAAAAhKNaeFNBCcAAAAEJBrTwpsITgAAAAhINKaFNxGcAAAAEJBoTAtvIjgBAADAozzZnJbGtPAWGuACAADAY7zRnJbGtPAGGuACAADAI2hOC39HA1wAAAD4FM1pUdMQnAAAAOB2NKdFTUNwAgAAgNvRnBY1DcEJAAAAbkdzWtQ0BCcAAAC4Hc1pUdMQnAAAAGo5T/RZojktahr6OAEAANRinuyzVNac9sLXj3FzHyfAG+jjBAAAUEt5q8+SxWqjOS38kivZgBknAACAWshRnyVDpX2W+ibEXHLICQ4ylNS68SW9BuBr3OMEAABQC9FnCXANwQkAAKAWos8S4BqCEwAAQC1EnyXANQQnAACAWog+S4BrCE4AAAC1EH2WANcQnAAAAPycJxrUSv/XZynGVH45XowpzG1bkQM1BduRAwAA+DFPNqiVSsNT34QY+iwBDtAAFwAAwE95q0EtUFu5kg1YqgcAAOCHHDWolUob1Lpr2R6AiyM4AQAA+CEa1AL+xafBafr06fqv//ovRUREKDo6WoMHD9a+ffscnrds2TJdddVVCgsLU/v27bVq1SovVAsAAOA9NKgF/ItPg9PGjRs1YcIEbdu2TWvXrtXZs2d1yy23qKioqMpzvvjiC915550aO3asdu7cqcGDB2vw4MHKysryYuUAAACeRYNawL/41eYQx48fV3R0tDZu3Kgbbrih0jFDhw5VUVGRPv30U/uxa6+9Vp06ddIbb7zh8D3YHAIAAAQCi9Wm62asV25+caX3ORkq3TZ8yxM3swMeUE0BuzlEfn6+JCkqquoO1Vu3blWfPn3KHevXr5+2bt1a6fiSkhIVFBSUewAAAPg7GtQC/sVvgpPVatUjjzyinj17KjExscpxubm5atq0abljTZs2VW5ubqXjp0+fLpPJZH/Ex8e7tW4AAAAa1AI1n980wJ0wYYKysrK0ZcsWt77upEmTNHHiRPvzgoICwhMAAHAbGtQCtYNfBKcHHnhAn376qTZt2qTmzZtfdGxMTIyOHj1a7tjRo0cVExNT6fjQ0FCFhoa6rVYAAIAyVTWozc0v1vhFO9w2KxQcZCipdeNLfh0A1efTpXo2m00PPPCAPvroI61fv16tWrVyeE5SUpLWrVtX7tjatWuVlJTkqTIBAAAqoEEtULv4NDhNmDBBixYt0pIlSxQREaHc3Fzl5ubq999/t48ZMWKEJk2aZH/+8MMPKy0tTS+++KK+//57PfPMM/r666/1wAMP+OIjAACAWooGtUDt4tPgNHv2bOXn5+umm25SbGys/fHee+/Zx+Tk5MhsNtuf9+jRQ0uWLNGcOXPUsWNHffDBB1qxYsVFN5QAAABwNxrUArWLT+9xcqaFVHp6eoVjf/7zn/XnP//ZAxUBAAA4hwa1QO3iN9uRAwAABJLuraIUawqr0GOpjKHS3fW6t6q6PyWAwEFwAgAAtYY7+y3RoBaoXfxiO3IAAABP80S/pbIGtRe+bowb+zgB8A+GzZkbjWqQgoICmUwm5efnKzIy0tflAAAAL6iq31LZXNCl9luyWG00qAUCkCvZgBknAABQoznqt2SotN9S34SYaocdGtQCNR/3OAEAgBqNfksA3IHgBAAAajT6LQFwB4ITAACo0ei3BMAdCE4AAKBGo98SAHcgOAEAgBqNfksA3IHgBAAA/I47G9VK/9dvKcZUfjlejCnskrciB1A7sB05AADwK55oVCuVhqe+CTH0WwJQLTTABQAAfsPTjWoB4HyuZAOW6gEAAL/gqFGtVNqo9lKX7QFAdRCcAACAX6BRLQB/RnACAAB+gUa1APwZwQkAAPgFGtUC8GcEJwAA4BdoVAvAnxGcAACAX6BRLQB/RnACAAB+g0a1APwVDXABAIBfoVEtAH9EcAIAAH4nOMhQUuvGvi4DAOxYqgcAAAAADhCcAAAAAMABghMAAAAAOEBwAgAAAAAH2BwCAIBayGK1sWsdALiA4AQAQC2TlmVW6sq9MucX24/FmsKUkpxAnyQAqAJL9QAAqEXSsswav2hHudAkSbn5xRq/aIfSssw+qgwA/BvBCQCAWsJitSl15V7ZKvla2bHUlXtlsVY2AgBqN4ITAAC1xPbsvAozTeezSTLnF2t7dp73igKAAEFwAgCgljh2qurQVJ1xAFCb+DQ4bdq0ScnJyYqLi5NhGFqxYoXDcxYvXqyOHTuqXr16io2N1ZgxY3Ty5EnPFwsAQICLjghz6zgAqE18GpyKiorUsWNHvfbaa06Nz8jI0IgRIzR27Fjt2bNHy5Yt0/bt23Xvvfd6uFIAAAJf91ZRijWFqapNxw2V7q7XvVWUN8sCgIDg0+3IBwwYoAEDBjg9fuvWrWrZsqUeeughSVKrVq30l7/8RTNmzPBUiQAA1BjBQYZSkhM0ftEOGVK5TSLKwlRKcgL9nACgEgF1j1NSUpIOHz6sVatWyWaz6ejRo/rggw80cOBAX5cGAEBA6J8Yq9nDuijGVH45XowpTLOHdaGPEwBUIaAa4Pbs2VOLFy/W0KFDVVxcrHPnzik5OfmiS/1KSkpUUlJif15QUOCNUgEA8Fv9E2PVNyFG27PzdOxUsaIjSpfnMdMEAFULqBmnvXv36uGHH9bkyZP1zTffKC0tTYcOHdK4ceOqPGf69OkymUz2R3x8vBcrBgDAPwUHGUpq3ViDOjVTUuvGhCYAcMCw2Wx+0eXOMAx99NFHGjx4cJVjhg8fruLiYi1btsx+bMuWLbr++uv1yy+/KDa24vKCymac4uPjlZ+fr8jISLd+BgAAAACBo6CgQCaTyalsEFBL9U6fPq06dcqXHBwcLEmqKv+FhoYqNDTU47UBAAAAqLl8ulSvsLBQmZmZyszMlCRlZ2crMzNTOTk5kqRJkyZpxIgR9vHJyclavny5Zs+erR9//FEZGRl66KGH1L17d8XFxfniIwAAAACoBXw64/T111+rV69e9ucTJ06UJI0cOVILFy6U2Wy2hyhJGjVqlE6dOqVXX31Vjz32mBo2bKibb76Z7cgBAAAAeJTf3OPkLa6sYwQAAABQc9XYe5wAAAgUFquN7b4BoAYhOAEA4GZpWWalrtwrc36x/VisKUwpyQk0mAWAAOVUcOrcubMMw7nfku3YseOSCgIAIJClZZk1ftEOXbgOPje/WOMX7dDsYV0ITwAQgJwKTuf3ViouLtbrr7+uhIQEJSUlSZK2bdumPXv26P777/dIkQAABAKL1abUlXsrhCZJskkyJKWu3Ku+CTEs2wOAAONUcEpJSbH/+Z577tFDDz2kZ599tsKYw4cPu7c6AAACyPbsvHLL8y5kk2TOL9b27DwltW7svcIAAJfM5T5Oy5YtK9dbqcywYcP04YcfuqUoAAAC0bFTVYem6owDAPgPl4NTeHi4MjIyKhzPyMhQWFiYW4oCACAQRUc49/9BZ8cBAPyHy7vqPfLIIxo/frx27Nih7t27S5K+/PJLzZ8/X08//bTbCwQAIFB0bxWlWFOYcvOLK73PyZAUYyrdmhwAEFhcDk5PPvmkLr/8cr388statGiRJKldu3ZasGCBhgwZ4vYCAQAIFMFBhlKSEzR+0Q4ZUrnwVLYVREpyAhtDAEAAMmw2W2W/FKvUuXPnNG3aNI0ZM0bNmzf3ZF0e40p3YAAAqoM+TgAQGFzJBi4FJ0lq0KCBsrKy1LJly0up0WcITgAAb7BYbdqenadjp4oVHVG6PI+ZJgDwL65kA5eX6vXu3VsbN24M2OAEAIA3BAcZbDkOADWIy8FpwIABevLJJ7V792517dpV9evXL/f1//7v/3ZbcQAAAADgD1xeqhcUVPUO5oZhyGKxXHJRnsRSPQAAAACSh5fqWa3WahcGAAAAAIHI5Qa4AAAAAFDbuDzjJElFRUXauHGjcnJydObMmXJfe+ihh9xSGAAAzmD3OgCAN7gcnHbu3KmBAwfq9OnTKioqUlRUlE6cOKF69eopOjqa4AQA8Br6JQEAvMXlpXqPPvqokpOT9euvvyo8PFzbtm3TTz/9pK5du+qFF17wRI0AAFSQlmXW+EU7yoUmScrNL9b4RTuUlmX2UWUAgJrI5eCUmZmpxx57TEFBQQoODlZJSYni4+M1c+ZM/f3vf/dEjQAAlGOx2pS6cq8q2xa27Fjqyr2yWF3aOBYAgCq5HJzq1q1r35I8OjpaOTk5kiSTyaTDhw+7tzoAACqxPTuvwkzT+WySzPnF2p6d572iAAA1msv3OHXu3FlfffWVrrjiCt14442aPHmyTpw4oXfeeUeJiYmeqBEAgHKOnao6NFVnHAAAjrg84zRt2jTFxpbecPvcc8+pUaNGGj9+vI4fP645c+a4vUAAAC4UHRHm1nEAADji8oxTt27d7H+Ojo5WWlqaWwsCAMCR7q2iFGsKU25+caX3ORmSYkylW5MDAOAOLs84zZ8/X9nZ2Z6oBQAApwQHGUpJTpBUGpLOV/Y8JTmBfk4AALdxOThNnz5dbdq0UYsWLTR8+HC9+eabOnDggCdqAwCgSv0TYzV7WBfFmMovx4sxhWn2sC70cQIAuJVhs9lc3qv1yJEjSk9P16ZNm7Rx40b98MMPio2N1U033aRFixZ5ok63KSgokMlkUn5+viIjI31dDgDgElmsNm3PztOxU8WKjihdnsdMEwDAGa5kg2oFpzKnT5/W5s2b9e6772rx4sWy2Ww6d+5cdV/OKwhOAAAAACTXsoHLm0OsWbNG6enpSk9P186dO9WuXTvdeOON+uCDD3TDDTdUu2gAAAAA8FcuB6f+/furSZMmeuyxx7Rq1So1bNjQA2UBAAAAgP9weXOIWbNmqWfPnpo5c6auvvpq3XXXXZozZ47279/vifoAAAAAwOcu6R6n3bt3a+PGjVq/fr0+/fRTRUdH6+eff3ZnfW7HPU4AAAAAJA/f4yRJNptNO3fuVHp6ujZs2KAtW7bIarWqSZMm1SoYAOD/2L0OAFCbubxULzk5WY0bN1b37t21ePFitW3bVm+99ZZOnDihnTt3uvRamzZtUnJysuLi4mQYhlasWOHwnJKSEv3jH//QH/7wB4WGhqply5aaP3++qx8DAOCCtCyzrpuxXnfO3aaHl2bqzrnbdN2M9UrLMvu6NAAAvMLlGaerrrpKf/nLX3T99dfLZDJd0psXFRWpY8eOGjNmjG677TanzhkyZIiOHj2qefPmqU2bNjKbzbJarZdUBwCgamlZZo1ftEMXruvOzS/W+EU7aDYLAKgVLukep+LiYoWFhTke6EwhhqGPPvpIgwcPrnJMWlqa7rjjDv3444+Kioqq1vtwjxMAOM9item6Getlzi+u9OuGpBhTmLY8cTPL9gAAAceVbODyUj2r1apnn31WzZo1U4MGDfTjjz9Kkp5++mnNmzevehU76ZNPPlG3bt00c+ZMNWvWTG3bttXjjz+u33//vcpzSkpKVFBQUO4BAHDO9uy8KkOTJNkkmfOLtT07z3tFAQDgAy4Hp6lTp2rhwoWaOXOmQkJC7McTExP15ptvurW4C/3444/asmWLsrKy9NFHH+mll17SBx98oPvvv7/Kc6ZPny6TyWR/xMfHe7RGAKhJjp2qOjRVZxwAAIHK5eD09ttva86cObr77rsVHBxsP96xY0d9//33bi3uQlarVYZhaPHixerevbsGDhyoWbNm6a233qpy1mnSpEnKz8+3Pw4fPuzRGgGgJomOcG45trPjAAAIVC4HpyNHjqhNmzYVjlutVp09e9YtRVUlNjZWzZo1K7cpRbt27WSz2arsHxUaGqrIyMhyDwCAc7q3ilKsKUxV3b1kSIo1lW5NDgBATeZycEpISNDmzZsrHP/ggw/UuXNntxRVlZ49e+qXX35RYWGh/dj+/fsVFBSk5s2be/S9AaA2Cg4ylJKcIEkVwlPZ85TkBDaGAADUeC5vRz558mSNHDlSR44ckdVq1fLly7Vv3z69/fbb+vTTT116rcLCQh04cMD+PDs7W5mZmYqKilKLFi00adIkHTlyRG+//bYk6a677tKzzz6r0aNHKzU1VSdOnNBf//pXjRkzRuHh4a5+FACAE/onxmr2sC5KXbm33EYRMaYwpSQnsBU5AKBWqNZ25Js3b9aUKVO0a9cuFRYWqkuXLpo8ebJuueUWl14nPT1dvXr1qnB85MiRWrhwoUaNGqVDhw4pPT3d/rXvv/9eDz74oDIyMtS4cWMNGTJEU6dOdTo4sR05AFSPxWrT9uw8HTtVrOiI0uV5zDQBAAKZK9ngkvo4Xejrr79Wt27d3PVyHkFwAgAAACB5uI9TYWFhhR3sMjMzlZycrGuuucbVlwMAAAAAv+d0cDp8+LCSkpLs/ZAmTpyo06dPa8SIEbrmmmtUv359ffHFF56sFQAAAAB8wunNIf7617+quLhYL7/8spYvX66XX35Zmzdv1jXXXKODBw+yqx0AAACAGsvp4LRp0yYtX75c1157rYYMGaKYmBjdfffdeuSRRzxYHgAAAAD4ntNL9Y4ePapWrVpJkqKjo1WvXj0NGDDAY4UBAAAAgL9wqY9TUFBQuT+HhIS4vSAAAFt/AwDgb5wOTjabTW3btpVhlP6Pu7CwUJ07dy4XpiQpLy/PvRUCQC2TlmWu0Gw2lmazAAD4lNPBacGCBZ6sAwCg0tA0ftEOXdhgLze/WOMX7dDsYV0ITwAA+IDTwWnkyJGerAMAaj2L1abUlXsrhCZJskkyJKWu3Ku+CTEs2wMAwMtcboALAPCM7dl55ZbnXcgmyZxfrO3ZLIkGAMDbCE4A4CeOnao6NFVnHAAAcB+CEwD4ieiIMLeOAwAA7kNwAgA/0b1VlGJNYarq7iVDpbvrdW8V5c2yAACACE4A4DeCgwylJCdIUoXwVPY8JTmBjSEAAPABp3bVmzhxotMvOGvWrGoXAwC1Xf/EWM0e1qVCH6cY+jgBAOBTTgWnnTt3lnu+Y8cOnTt3TldeeaUkaf/+/QoODlbXrl3dXyEA1DL9E2PVNyFG27PzdOxUsaIjSpfnMdMEAIDvOBWcNmzYYP/zrFmzFBERobfeekuNGjWSJP36668aPXq0rr/+es9UCQC1THCQoaTWjX1dBgAA+A/DZrNV1muxSs2aNdOaNWt09dVXlzuelZWlW265Rb/88otbC3S3goICmUwm5efnKzIy0tflAAAAAPARV7KBy5tDFBQU6Pjx4xWOHz9+XKdOnXL15QAAAADA77kcnP7nf/5Ho0eP1vLly/Xzzz/r559/1ocffqixY8fqtttu80SNAAAAAOBTTt3jdL433nhDjz/+uO666y6dPXu29EXq1NHYsWP1z3/+0+0FAgAAAICvuXyPU5mioiIdPHhQktS6dWvVr1/frYV5Cvc4AaiMxWpjFzsAAGoZV7KByzNOZcxms8xms2644QaFh4fLZrPJMPghA0DgScsyV+ibFEvfJAAAcB6X73E6efKkevfurbZt22rgwIEym82SpLFjx+qxxx5ze4EA4ElpWWaNX7SjXGiSpNz8Yo1ftENpWWYfVQYAAPyJy8Hp0UcfVd26dZWTk6N69erZjw8dOlRpaWluLQ4APMlitSl15V5Vtl657Fjqyr2yWKu1ohkAANQgLi/VW7NmjVavXq3mzZuXO37FFVfop59+clthAOBp27PzKsw0nc8myZxfrO3ZeTSjBQCglnN5xqmoqKjcTFOZvLw8hYaGuqUoAPCGY6eqDk3VGQcAAGoul4PT9ddfr7ffftv+3DAMWa1WzZw5U7169XJrcQDgSdERYW4dBwAAai6Xl+rNnDlTvXv31tdff60zZ87ob3/7m/bs2aO8vDxlZGR4okYA8IjuraIUawpTbn5xpfc5GZJiTKVbkwMAgNrN5RmnxMRE7d+/X9ddd50GDRqkoqIi3Xbbbdq5c6dat27tiRoBwCOCgwylJCdIKg1J5yt7npKcQD8nAADgegPcnJwcxcfHV9qzKScnRy1atHBbcZ5AA1wAF6KPEwAAtZMr2cDl4BQcHCyz2azo6Ohyx0+ePKno6GhZLBbXK/YighOAylisNm3PztOxU8WKjihdnsdMEwAANZsr2cDlpXo2m63S2abCwkKFhbl2A/WmTZuUnJysuLg4GYahFStWOH1uRkaG6tSpo06dOrn0ngBQmeAgQ0mtG2tQp2ZKat2Y0AQAAMpxenOIiRMnSirdRe/pp58utyW5xWLRl19+6XKIKSoqUseOHTVmzBjddtttTp/322+/acSIEerdu7eOHj3q0nsCAAAAgKucDk47d+6UVDrjtHv3boWEhNi/FhISoo4dO+rxxx936c0HDBigAQMGuHSOJI0bN0533XWXgoODXZqlAgAAAIDqcDo4bdiwQZI0evRovfzyyz67P2jBggX68ccftWjRIk2dOtUnNQAAAACoXVzu4/TSSy/p3LlzFY7n5eWpTp06Hg1UP/zwg5588klt3rxZdeo4V3pJSYlKSkrszwsKCjxVHgAAAIAayuXNIe644w4tXbq0wvH3339fd9xxh1uKqozFYtFdd92l1NRUtW3b1unzpk+fLpPJZH/Ex8d7rEYAAAAANZPL25FHRUUpIyND7dq1K3f8+++/V8+ePXXy5MnqFWIY+uijjzR48OBKv/7bb7+pUaNGCg4Oth+zWq2y2WwKDg7WmjVrdPPNN1c4r7IZp/j4eLYjB/wE24ADAABfcWU7cpeX6pWUlFS6VO/s2bP6/fffXX05p0VGRmr37t3ljr3++utav369PvjgA7Vq1arS80JDQxUaGuqxugBUH41nAQBAoHB5qV737t01Z86cCsffeOMNde3a1aXXKiwsVGZmpjIzMyVJ2dnZyszMVE5OjiRp0qRJGjFiRGmhQUFKTEws94iOjlZYWJgSExNVv359Vz8KAB9KyzJr/KId5UKTJOXmF2v8oh1KyzL7qDIAAICKXJ5xmjp1qvr06aNdu3apd+/ekqR169bpq6++0po1a1x6ra+//lq9evWyPy/rFTVy5EgtXLhQZrPZHqIA1BwWq02pK/eqsnXCNkmGpNSVe9U3IYZlewAAwC+4fI+TJGVmZmrmzJnatWuXwsPD1aFDB02aNElXXHGFJ2p0K1fWMQLwjK0HT+rOudscjnv33muV1LqxFyoCAAC1kUfvcZKkTp06acmSJdUqDgCOnSp2PMiFcQAAAJ7m8j1OknTw4EE99dRTuuuuu3Ts2DFJ0r///W/t2bPHrcUBqJmiI8LcOg4AAMDTXA5OGzduVPv27fXll1/qww8/VGFhoSRp165dSklJcXuBAGqe7q2iFGsKU1V3Lxkq3V2ve6sob5YFAABQJZeD05NPPqmpU6dq7dq1CgkJsR+/+eabtW2b43sWACA4yFBKcoIkVQhPZc9TkhPYGAIAAPgNl4PT7t279T//8z8VjkdHR+vEiRNuKQpAzdc/MVazh3VRjKn8crwYU5hmD+tCHycAAOBXXN4comHDhjKbzRUazu7cuVPNmjVzW2EAar7+ibHqmxCj7dl5OnaqWNERpcvzmGkCAAD+xuXgdMcdd+iJJ57QsmXLZBiGrFarMjIy9Pjjj9ub1QKAs4KDDLYcBwAAfs/lpXrTpk3TVVddpfj4eBUWFiohIUE33HCDevTooaeeesoTNQIAAACAT1WrAa4k5eTkKCsrS4WFhercuXNANL+VaIALAAAAoJTHG+BKUosWLRQfHy9JMgzuRwAAAABQc1WrAe68efOUmJiosLAwhYWFKTExUW+++aa7awMAAAAAv+DyjNPkyZM1a9YsPfjgg0pKSpIkbd26VY8++qhycnI0ZcoUtxcJwHMsVhu72gEAADjg8j1OTZo00SuvvKI777yz3PF3331XDz74oN/3cuIeJ+D/pGWZlbpyr8z5xfZjsaYwpSQn0EcJAADUeK5kA5eX6p09e1bdunWrcLxr1646d+6cqy8HwEfSsswav2hHudAkSbn5xRq/aIfSssw+qgwAAMD/uBychg8frtmzZ1c4PmfOHN19991uKQqAZ1msNqWu3KvKppvLjqWu3CuLtVqbbgIAANQ41dpVb968eVqzZo2uvfZaSdKXX36pnJwcjRgxQhMnTrSPmzVrlnuqBOBW27PzKsw0nc8myZxfrO3ZeTSnBQAAUDWCU1ZWlrp06SJJOnjwoCTpsssu02WXXaasrCz7OLYoB/zXsVNVh6bqjAMAAKjpXA5OGzZs8EQdALwoOiLMreMAAABqOpfvcTp+/HiVX9u9e/clFQPAO7q3ilKsKUxVzQsbKt1dr3urKG+WBQAA4LdcDk7t27fXZ599VuH4Cy+8oO7du7ulKACeFRxkKCU5QZIqhKey5ynJCfRzAgAA+A+Xg9PEiRN1++23a/z48fr999915MgR9e7dWzNnztSSJUs8USMAD+ifGKvZw7ooxlR+OV6MKUyzh3WhjxMAAMB5XG6AK0k7d+7U8OHDVVJSory8PF1zzTWaP3++YmJiPFGjW9EAFyjPYrVpe3aejp0qVnRE6fI8ZpoAAEBt4Eo2qNZ25G3atFFiYqI+/PBDSdLQoUMDIjQBqCg4yGDLcQAAAAdcXqqXkZGhDh066IcfftC3336r2bNn68EHH9TQoUP166+/eqJGAAAAAPApl4PTzTffrKFDh2rbtm1q166d7rnnHu3cuVM5OTlq3769J2oEAAAAAJ9yeanemjVrdOONN5Y71rp1a2VkZOi5555zW2EAAAAA4C+qtTlEIGNzCAAAAACSa9nA6aV6AwcOVH5+vv35888/r99++83+/OTJk0pISHC9WgCyWG3aevCkPs48oq0HT8pirVW/zwAAAPB7Ts84BQcHy2w2Kzo6WpIUGRmpzMxMXX755ZKko0ePKi4uThaLxXPVugEzTvA3aVlmpa7cK3N+sf1YrClMKckJ9FICAADwII/MOF2Yr2rZCj/AI9KyzBq/aEe50CRJufnFGr9oh9KyzD6qDAAAAOdzeVc9AO5hsdqUunKvKvsVRNmx1JV7WbYHAADgB5wOToZhyDCMCscAVM/27LwKM03ns0ky5xdre3ae94oCAABApZzejtxms2nUqFEKDQ2VJBUXF2vcuHGqX7++JKmkpMQzFQI11LFTVYem6owDAACA5zg94zRy5EhFR0fLZDLJZDJp2LBhiouLsz+Pjo7WiBEjXHrzTZs2KTk5WXFxcTIMQytWrLjo+OXLl6tv375q0qSJIiMjlZSUpNWrV7v0noC/iI4Ic+s4AAAAeI7TM04LFixw+5sXFRWpY8eOGjNmjG677TaH4zdt2qS+fftq2rRpatiwoRYsWKDk5GR9+eWX6ty5s9vrAzype6soxZrClJtfXOl9ToakGFOYureK8nZpAAAAuIDfNMA1DEMfffSRBg8e7NJ5V199tYYOHarJkyc7NZ7tyOFPynbVk1QuPJXdPTh7WBe2JAcAAPAQj2xH7o+sVqtOnTqlqKiqfyNfUlKigoKCcg/AX/RPjNXsYV0UYyq/HC/GFEZoAgAA8CNOL9XzRy+88IIKCws1ZMiQKsdMnz5dqampXqwKcE3/xFj1TYjR9uw8HTtVrOiI0uV5wUHsWgkAAOAvAjY4LVmyRKmpqfr4448VHR1d5bhJkyZp4sSJ9ucFBQWKj4/3RomA04KDDCW1buzrMgAAAFCFgAxOS5cu1T333KNly5apT58+Fx0bGhpq30IdAAAAAKoj4O5xevfddzV69Gi9++67uvXWW31dDgAAAIBawKczToWFhTpw4ID9eXZ2tjIzMxUVFaUWLVpo0qRJOnLkiN5++21JpcvzRo4cqZdfflnXXHONcnNzJUnh4eEymUw++QwAAAAAaj6fzjh9/fXX6ty5s70H08SJE9W5c2f71uJms1k5OTn28XPmzNG5c+c0YcIExcbG2h8PP/ywT+oHAAAAUDv4TR8nb6GPEwAAAADJtWwQkJtDAJ5msdrYHhwAAAB2BCfgAmlZZqWu3CtzfrH9WKwpTCnJCTSkBQAAqKUCblc9wJPSsswav2hHudAkSbn5xRq/aIfSssw+qgwAAAC+RHAC/sNitSl15V5VdtNf2bHUlXtlsdaq2wIBAAAgghNgtz07r8JM0/lsksz5xdqenee9ogAAAOAXCE7Afxw7VXVoqs44AAAA1BwEJ+A/oiPC3DoOAAAANQfBCfiP7q2iFGsKU1Wbjhsq3V2ve6sob5YFAAAAP0BwQo1nsdq09eBJfZx5RFsPnqxyc4fgIEMpyQmSVCE8lT1PSU6gnxMAAEAtRB8n1Giu9mTqnxir2cO6VDgnhj5OAAAAtZphs9lq1d7KBQUFMplMys/PV2RkpK/LgQeV9WS68AIvmy+aPaxLlUHIYrVpe3aejp0qVnRE6fI8ZpoAAABqFleyATNOqJEc9WQyVNqTqW9CTKWBKDjIUFLrxp4uEwAAAAGCe5xQI9GTCQAAAO5EcEKNRE8mAAAAuBPBCTUSPZkAAADgTgQn1Ej0ZAIAAIA7EZwQcJzpy0RPJgAAALgTu+ohoLjSl4meTAAAAHAX+jghYFS3LxM9mQAAAFAZ+jihxrmUvkz0ZAIAAMCl4h4nBAT6MgEAAMCXCE4ICPRlAgAAgC8RnBAQ6MsEAAAAXyI4ISDQlwkAAAC+RHCCz9GXCQAAAP6OXfXgU/RlAgAAQCCgjxN8hr5MAAAA8CX6OMHv0ZcJAAAAgYR7nOAT9GUCAABAICE4wSfoywQAAIBAQnCCT9CXCQAAAIGE4ASfoC8TAAAAAgnBCR7hqDcTfZkAAAAQSHwanDZt2qTk5GTFxcXJMAytWLHC4Tnp6enq0qWLQkND1aZNGy1cuNDjdcI1aVlmXTdjve6cu00PL83UnXO36boZ65WWZS43rqwvU4yp/HK8GFNYlVuRAwAAAL7g0+3Ii4qK1LFjR40ZM0a33Xabw/HZ2dm69dZbNW7cOC1evFjr1q3TPffco9jYWPXr188LFcORqnoz5eYXa/yiHRUCUf/EWPVNiKEvEwAAAPya3zTANQxDH330kQYPHlzlmCeeeEKfffaZsrKy7MfuuOMO/fbbb0pLS3PqfWiA6zkWq03XzVhf5Tbjhkpnk7Y8cTPBCAAAAD7nSjYIqHuctm7dqj59+pQ71q9fP23durXKc0pKSlRQUFDuAc+gNxMAAABqqoAKTrm5uWratGm5Y02bNlVBQYF+//33Ss+ZPn26TCaT/REfH++NUmslejMBAACgpgqo4FQdkyZNUn5+vv1x+PBhX5dUY9GbCQAAADWVTzeHcFVMTIyOHj1a7tjRo0cVGRmp8PDwSs8JDQ1VaGioN8qr9cp6M+XmF1fYHEL6v3uc6M0EAACAQBNQM05JSUlat25duWNr165VUlKSjyqqXejNBAAAgNrKpzNOhYWFOnDggP15dna2MjMzFRUVpRYtWmjSpEk6cuSI3n77bUnSuHHj9Oqrr+pvf/ubxowZo/Xr1+v999/XZ5995quPUGukZZmVunJvuc0fYk1hSklOqLC9+OxhXSqMjalkLAAAABAofLodeXp6unr16lXh+MiRI7Vw4UKNGjVKhw4dUnp6erlzHn30Ue3du1fNmzfX008/rVGjRjn9nmxH7rqqejOVzRtV1qzWYrXRmwkAAAB+zZVs4Dd9nLyF4OQaejMBAACgpqqxfZzgffRmAgAAAAhOcIDeTAAAAADBCQ7QmwkAAAAgOMGBst5MVd29ZKh0dz16MwEAAKAmIzhBUtU9mujNBAAAAPi4jxP8g6MeTfRmAgAAQG3HduS1nCs9mujNBAAAgJrElWzAjFMtZrHalLpyb4XQJJVuM25ISl25V30TYhQcZCg4yFBS68ZerhIAAADwPe5xqsXo0QQAAAA4h+BUi9GjCQAAAHAOwakWo0cTAAAA4ByCUy1GjyYAAADAOQSnWoAeTQAAAMClYVe9Go4eTQAAAMClo49TDUaPJgAAAKBq9HECPZoAAAAAN+IepxqKHk0AAACA+xCcaih6NAEAAADuQ3CqoejRBAAAALgPwamGokcTAAAA4D4Epxqgsj5N9GgCAAAA3Idd9QKcoz5N9GgCAAAALh19nAKYs32a6NEEAAAAVEQfp1rA1T5N9GgCAAAAqo97nAIUfZoAAAAA7yE4BSj6NAEAAADeQ3AKUPRpAgAAALyH4BSg6NMEAAAAeA/BKUBc2KtJEn2aAAAAAC9hV70AcLFeTfRpAgAAADyPPk5+zpleTX0TYujTBAAAALiIPk41hCu9mujTBAAAAHiOX9zj9Nprr6lly5YKCwvTNddco+3bt190/EsvvaQrr7xS4eHhio+P16OPPqri4pq37Ta9mgAAAAD/4PPg9N5772nixIlKSUnRjh071LFjR/Xr10/Hjh2rdPySJUv05JNPKiUlRd99953mzZun9957T3//+9+9XLnn0asJAAAA8A8+D06zZs3Svffeq9GjRyshIUFvvPGG6tWrp/nz51c6/osvvlDPnj111113qWXLlrrlllt05513OpylCkT0agIAAAD8g0+D05kzZ/TNN9+oT58+9mNBQUHq06ePtm7dWuk5PXr00DfffGMPSj/++KNWrVqlgQMHVjq+pKREBQUF5R6Bgl5NAAAAgH/w6eYQJ06ckMViUdOmTcsdb9q0qb7//vtKz7nrrrt04sQJXXfddbLZbDp37pzGjRtX5VK96dOnKzU11e21e8q+X05p4P/bJItNCjakfwy8Qs9+9oMMqdwmEfRqAgAAALzH50v1XJWenq5p06bp9ddf144dO7R8+XJ99tlnevbZZysdP2nSJOXn59sfhw8f9nLFzmv55Gfq90ppaJIki02a8tkPsqm0N9P5Ykxhmj2sC72aAAAAAC/w6YzTZZddpuDgYB09erTc8aNHjyomJqbSc55++mkNHz5c99xzjySpffv2Kioq0n333ad//OMfCgoqnwVDQ0MVGhrqmQ/gRi2f/OyiXzfnF+vde6+lVxMAAADgAz6dcQoJCVHXrl21bt06+zGr1ap169YpKSmp0nNOnz5dIRwFBwdLkgK1l++d/9rm1Lio8BAN6tRMSa0bE5oAAAAAL/L5Ur2JEydq7ty5euutt/Tdd99p/PjxKioq0ujRoyVJI0aM0KRJk+zjk5OTNXv2bC1dulTZ2dlau3atnn76aSUnJ9sDVCD5/YxFW7NPOjW23yubPFwNAAAAgMr4dKmeJA0dOlTHjx/X5MmTlZubq06dOiktLc2+YUROTk65GaannnpKhmHoqaee0pEjR9SkSRMlJyfrueee89VHuCT3vfOVr0sAAAAA4IBhC9T1bdVUUFAgk8mk/Px8RUZG+rQWi9WmNn9fJVf+Ag49f6vH6gEAAABqE1eygc+X6tVmL6/d71JoSoiJ8FgtAAAAAKpGcPIRi9Wm1zYecOmcd++rfMMMAAAAAJ5FcPKR/7fuB1mszo9vERUmU726nisIAAAAQJUITj5gsdo0e+NBp8fXqxukTX/r7cGKAAAAAFwMwckHth08qZJzzk83Zab082A1AAAAABwhOPlAxsHjTo/tFB+pkDr8NQEAAAC+xE/kPvBVdp7TY//ar50HKwEAAADgDIKTl1msNmX+nO/U2LpB0rWXN/ZwRQAAAAAcITh52baDJ3XW4lz3pt7tmio4yPBwRQAAAAAcITh5mSv3Nw1Paum5QgAAAAA4jeDkZUd+/d2pcXUMlukBAAAA/oLg5Kc6tWjIMj0AAADATxCc/FSzhuG+LgEAAADAfxCcAAAAAMABghMAAAAAOEBwAgAAAAAHCE5eZhjObfjg7DgAAAAAnkdw8rJmjZzb9MHZcQAAAAA8j+DkZT1aX+bWcQAAAAA8j+DkZdde3lgN69W96JhG9erS/BYAAADwIwQnLwsOMvT8be0vOmb6be1pfgsAAAD4EYKTD/RPjNUbw7ooJjKs3PFYU5jeGNZF/RNjfVQZAAAAgMrU8XUBtVX/xFj1TYjR9uw8HTtVrOiIMHVvFcVMEwAAAOCHCE4+FBxkKKk19zIBAAAA/o6legAAAADgAMEJAAAAABwgOAEAAACAAwQnAAAAAHCA4AQAAAAADhCcAAAAAMABghMAAAAAOEBwAgAAAAAHCE4AAAAA4ADBCQAAAAAcqOPrArzNZrNJkgoKCnxcCQAAAABfKssEZRnhYmpdcDp16pQkKT4+3seVAAAAAPAHp06dkslkuugYw+ZMvKpBrFarfvnlF0VERMgwDF+Xc8kKCgoUHx+vw4cPKzIy0tflIEBxHcEduI7gLlxLcAeuIzjDZrPp1KlTiouLU1DQxe9iqnUzTkFBQWrevLmvy3C7yMhI/lHAJeM6gjtwHcFduJbgDlxHcMTRTFMZNocAAAAAAAcITgAAAADgAMEpwIWGhiolJUWhoaG+LgUBjOsI7sB1BHfhWoI7cB3B3Wrd5hAAAAAA4CpmnAAAAADAAYITAAAAADhAcAIAAAAABwhOAAAAAOAAwSkAvPbaa2rZsqXCwsJ0zTXXaPv27VWOXb58ubp166aGDRuqfv366tSpk9555x0vVgt/5cp1dL6lS5fKMAwNHjzYswUiILhyHS1cuFCGYZR7hIWFebFa+DNX/0367bffNGHCBMXGxio0NFRt27bVqlWrvFQt/JUr19FNN91U4d8kwzB06623erFiBDKCk5977733NHHiRKWkpGjHjh3q2LGj+vXrp2PHjlU6PioqSv/4xz+0detWffvttxo9erRGjx6t1atXe7ly+BNXr6Myhw4d0uOPP67rr7/eS5XCn1XnOoqMjJTZbLY/fvrpJy9WDH/l6rV05swZ9e3bV4cOHdIHH3ygffv2ae7cuWrWrJmXK4c/cfU6Wr58ebl/j7KyshQcHKw///nPXq4cAcsGv9a9e3fbhAkT7M8tFostLi7ONn36dKdfo3PnzrannnrKE+UhQFTnOjp37pytR48etjfffNM2cuRI26BBg7xQKfyZq9fRggULbCaTyUvVIZC4ei3Nnj3bdvnll9vOnDnjrRIRAC71Z6T//d//tUVERNgKCws9VSJqGGac/NiZM2f0zTffqE+fPvZjQUFB6tOnj7Zu3erwfJvNpnXr1mnfvn264YYbPFkq/Fh1r6MpU6YoOjpaY8eO9UaZ8HPVvY4KCwv1hz/8QfHx8Ro0aJD27NnjjXLhx6pzLX3yySdKSkrShAkT1LRpUyUmJmratGmyWCzeKht+5lJ/RpKkefPm6Y477lD9+vU9VSZqmDq+LgBVO3HihCwWi5o2bVrueNOmTfX9999XeV5+fr6aNWumkpISBQcH6/XXX1ffvn09XS78VHWuoy1btmjevHnKzMz0QoUIBNW5jq688krNnz9fHTp0UH5+vl544QX16NFDe/bsUfPmzb1RNvxQda6lH3/8UevXr9fdd9+tVatW6cCBA7r//vt19uxZpaSkeKNs+Jnq/oxUZvv27crKytK8efM8VSJqIIJTDRQREaHMzEwVFhZq3bp1mjhxoi6//HLddNNNvi4NAeDUqVMaPny45s6dq8suu8zX5SCAJSUlKSkpyf68R48eateunf71r3/p2Wef9WFlCDRWq1XR0dGaM2eOgoOD1bVrVx05ckT//Oc/CU6olnnz5ql9+/bq3r27r0tBACE4+bHLLrtMwcHBOnr0aLnjR48eVUxMTJXnBQUFqU2bNpKkTp066bvvvtP06dMJTrWUq9fRwYMHdejQISUnJ9uPWa1WSVKdOnW0b98+tW7d2rNFw+9U99+j89WtW1edO3fWgQMHPFEiAkR1rqXY2FjVrVtXwcHB9mPt2rVTbm6uzpw5o5CQEI/WDP9zKf8mFRUVaenSpZoyZYonS0QNxD1OfiwkJERdu3bVunXr7MesVqvWrVtX7re4jlitVpWUlHiiRAQAV6+jq666Srt371ZmZqb98d///d/q1auXMjMzFR8f783y4Sfc8e+RxWLR7t27FRsb66kyEQCqcy317NlTBw4csP8SR5L279+v2NhYQlMtdSn/Ji1btkwlJSUaNmyYp8tETePr3SlwcUuXLrWFhobaFi5caNu7d6/tvvvuszVs2NCWm5trs9lstuHDh9uefPJJ+/hp06bZ1qxZYzt48KBt7969thdeeMFWp04d29y5c331EeAHXL2OLsSuerDZXL+OUlNTbatXr7YdPHjQ9s0339juuOMOW1hYmG3Pnj2++gjwE65eSzk5ObaIiAjbAw88YNu3b5/t008/tUVHR9umTp3qq48AP1Dd/7ddd911tqFDh3q7XNQALNXzc0OHDtXx48c1efJk5ebmqlOnTkpLS7PfDJmTk6OgoP+bOCwqKtL999+vn3/+WeHh4brqqqu0aNEiDR061FcfAX7A1esIqIyr19Gvv/6qe++9V7m5uWrUqJG6du2qL774QgkJCb76CPATrl5L8fHxWr16tR599FF16NBBzZo108MPP6wnnnjCVx8BfqA6/2/bt2+ftmzZojVr1viiZAQ4w2az2XxdBAAAAAD4M37FDAAAAAAOEJwAAAAAwAGCEwAAAAA4QHACAAAAAAcITgAAAADgAMEJAAAAABwgOAEAAACAAwQnAECN0rJlS7300ktufx3DMLRixYpLfl0AQGAiOAEA/EZycrL69+9f6dc2b94swzD07bffuvU9Fy5cqIYNG1Y4/tVXX+m+++6zPzebzRowYIAk6dChQzIMQ5mZmW6tBQDgvwhOAAC/MXbsWK1du1Y///xzha8tWLBA3bp1U4cOHbxSS5MmTVSvXj3785iYGIWGhnrlvQEA/ofgBADwG3/84x/VpEkTLVy4sNzxwsJCLVu2TGPHjtWHH36oq6++WqGhoWrZsqVefPHFi77mrFmz1L59e9WvX1/x8fG6//77VVhYKElKT0/X6NGjlZ+fL8MwZBiGnnnmGUkXX6rXqlUrSVLnzp1lGIZuuukmbdq0SXXr1lVubm6593/kkUd0/fXXV/+bAgDwCwQnAIDfqFOnjkaMGKGFCxfKZrPZjy9btkwWi0Xt2rXTkCFDdMcdd2j37t165pln9PTTT1cIWucLCgrSK6+8oj179uitt97S+vXr9be//U2S1KNHD7300kuKjIyU2WyW2WzW448/7rDO7du3S5I+//xzmc1mLV++XDfccIMuv/xyvfPOO/ZxZ8+e1eLFizVmzJhqfkcAAP6C4AQA8CtjxozRwYMHtXHjRvuxBQsW6Pbbb9ecOXPUu3dvPf3002rbtq1GjRqlBx54QP/85z+rfL1HHnlEvXr1UsuWLXXzzTdr6tSpev/99yVJISEhMplMMgxDMTExiomJUYMGDRzW2KRJE0lS48aNFRMTo6ioKEmlSw0XLFhgH7dy5UoVFxdryJAh1fpeAAD8B8EJAOBXrrrqKvXo0UPz58+XJB04cECbN2/W2LFj9d1336lnz57lxvfs2VM//PCDLBZLpa/3+eefq3fv3mrWrJkiIiI0fPhwnTx5UqdPn3Z77aNGjdKBAwe0bds2SaUbTwwZMkT169d3+3sBALyL4AQA8Dtl9zKdOnVKCxYsUOvWrXXjjTe6/DqHDh3SH//4R3Xo0EEffvihvvnmG7322muSpDNnzri7bEVHRys5OVkLFizQ0aNH9e9//5tlegBQQxCcAAB+Z8iQIQoKCtKSJUv09ttva8yYMTIMQ+3atVNGRka5sRkZGWrbtq2Cg4MrvM4333wjq9WqF198Uddee63atm2rX375pdyYkJCQKmerqhISEiJJlZ53zz336L333tOcOXPUunXrCjNkAIDARHACAPidBg0aaOjQoZo0aZLMZrNGjRolSXrssce0bt06Pfvss9q/f7/eeustvfrqq1Vu6NCmTRudPXtW/+///T/9+OOPeuedd/TGG2+UG9OyZUsVFhZq3bp1OnHihFNL+KKjoxUeHq60tDQdPXpU+fn59q/169dPkZGRmjp1qkaPHl39bwIAwK8QnAAAfmns2LH69ddf1a9fP8XFxUmSunTpovfff19Lly5VYmKiJk+erClTptiD1YU6duyoWbNmacaMGUpMTNTixYs1ffr0cmN69OihcePGaejQoWrSpIlmzpzpsLY6derolVde0b/+9S/FxcVp0KBB9q8FBQVp1KhRslgsGjFiRPW/AQAAv2LYzt/vFQAAXLKxY8fq+PHj+uSTT3xdCgDATer4ugAAAGqK/Px87d69W0uWLCE0AUANQ3ACAMBNBg0apO3bt2vcuHHq27evr8sBALgRS/UAAAAAwAE2hwAAAAAABwhOAAAAAOAAwQkAAAAAHCA4AQAAAIADBCcAAAAAcIDgBAAAAAAOEJwAAAAAwAGCEwAAAAA4QHACAAAAAAf+PxQgu/yncpVBAAAAAElFTkSuQmCC\n" + "image/png": "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lZeXa926ddq+fbtmzZp11mVjzn7m5557Tu+8847WrVunffv26f7776/1NX///XddccUVSk5O1qZNm5SZmamDBw9qxIgRkqQXX3xRjz/+uNq3by+TyaTvvvuuxmM1GTNmjN577z299NJL+uGHH/Tvf/+71s+Xn5+voUOH6oYbbtD333+v999/Xxs2bKj2/X7++efVu3dvbd26VXfeeacmTZpkb1Kys7MlSV988YVMJpOWLl1a7X3i4+NlMpkUFRWl2bNny2QyaeTIkfavP/zww3r66af1ww8/qFu3bnrwwQf1n//8R2+99Za2bNmizp07a8iQISoqKqryuo888oief/55bdq0SSEhIRo/frwkaeTIkbrvvvt08cUX26+509+v0smTJzVkyBBFRkZq/fr1ysrKsje+lde8JK1evVo7d+7UqlWr9Omnn9b4vQQAAJ5ldTzEpXG+wlI9N7JYbUpfnidbDV+zSTJISl+ep8GJsR5dtmez2bR69WqtXLlSd911l3bt2qVPPvlEWVlZ9qVi7777ruLj47Vs2TL97W9/k1Txy+irr76q7t27218rIiJC5eXlVZZJxcbGKiQkRM2bN7cff/3111VWVqa3335bzZo1kyS9/PLLSk1N1axZs9SmTZuz1uxMjfv27dMNN9ygrl27SpLOO++8er1e5Wd+7bXX1KlTJ0nSlClT9Pjjj9f6ui+//LKSk5M1c+ZM+7E333xT8fHx+umnn3TBBRcoMjJSwcHBVb5nNR073U8//aQPPvhAq1at0lVXXeXw82VkZOiWW26xz1idf/75eumll3T55Zdrzpw59s1cr7nmGt15552SpIceekj/+te/9NVXX+nCCy9U69atJUmtWrWqta7Kmg0Gg4xGY7Vxjz/+uAYPHixJOnbsmObMmaMFCxZo2LBhkiqui1WrVmnevHl64IEH7Oc99dRTuvzyyyVVNF/XXnutysrKFBERoebNmyskJOSsS/Pef/99Wa1WvfHGG/YlpfPnz1eLFi20Zs0aXX311ZKkZs2a6Y033mCJHgAAPhQk55oif5/R8ff6Akp2QVG1mabT2SSZzGXKLiiqdUx9fPrpp2revLnCw8M1bNgwjRw5Uo899ph++OEHhYSEqE+fPvaxrVq10oUXXqgffvjBfiw0NFTdunWr03v/8MMP6t69u71pkqT+/fvLarXaZzgcne+o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VqtVq1evrvKvuI5YrVaVl5d7okQEAFevo4suukjbt29XTk6O/fGXv/xFgwYNUk5OjuLj471ZPvyEO34eWSwWbd++XXFxcZ4qE36uLtdR//79tXv3bvs/4EjSTz/9pLi4OJqmRqw+P5OWLFmi8vJyjRo1ytNloiHydToFard48WJbWFiYbcGCBba8vDzbHXfcYWvRooWtsLDQZrPZbKNHj7Y9/PDD9vEzZ860ff7557b8/HxbXl6e7bnnnrOFhITYXn/9dV99BPgBV6+jM5GqB5vN9esoPT3dtnLlSlt+fr5t8+bNthtvvNEWHh5u27Fjh68+AvyAq9fRvn37bJGRkbYpU6bYdu7cafv0009tMTExtieffNJXHwF+oq7/b7v00kttI0eO9Ha5aCBYqufHRo4cqcOHD2vGjBkqLCxUjx49lJmZab8Zct++fQoK+mPS8NixY7rzzjv1yy+/KCIiQhdddJEWLlyokSNH+uojwA+4eh0BNXH1Ovrtt990++23q7CwUC1btlSvXr309ddfKzEx0VcfAX7A1esoPj5eK1eu1L333qtu3bqpXbt2uueee/TQQw/56iPAT9Tl/207d+7Uhg0b9Pnnn/uiZDQABpvNZvN1EQAAAADgz/hnZgAAAABwgMYJAAAAABygcQIAAAAAB2icAAAAAMABGicAAAAAcIDGCQAAAAAcoHECAAAAAAdonAAADUrHjh01e/Zst7+OwWDQsmXL6v26AIDAROMEAPAbqampGjp0aI1fW79+vQwGg77//nu3vueCBQvUokWLase/++473XHHHfbnJpNJw4YNkyTt3btXBoNBOTk5bq0FAOC/aJwAAH5jwoQJWrVqlX755ZdqX5s/f7569+6tbt26eaWW1q1bq2nTpvbnsbGxCgsL88p7AwD8D40TAMBv/PnPf1br1q21YMGCKsdLS0u1ZMkSTZgwQf/5z3908cUXKywsTB07dtTzzz9/1td84YUX1LVrVzVr1kzx8fG68847VVpaKklas2aNxo0bJ7PZLIPBIIPBoMcee0zS2ZfqJSQkSJKSk5NlMBg0cOBArVu3Tk2aNFFhYWGV9586daoGDBhQ928KAMAv0DgBAPxGSEiIxowZowULFshms9mPL1myRBaLRV26dNGIESN04403avv27Xrsscf06KOPVmu0ThcUFKSXXnpJO3bs0FtvvaUvv/xSDz74oCSpX79+mj17tqKiomQymWQymXT//fc7rDM7O1uS9MUXX8hkMmnp0qW67LLLdN555+mdd96xjzt58qTeffddjR8/vo7fEQCAv6BxAgD4lfHjxys/P19r1661H5s/f75uuOEGzZ07V1deeaUeffRRXXDBBRo7dqymTJmiZ599ttbXmzp1qgYNGqSOHTvqiiuu0JNPPqkPPvhAkhQaGiqj0SiDwaDY2FjFxsaqefPmDmts3bq1JKlVq1aKjY1VdHS0pIqlhvPnz7ePW758ucrKyjRixIg6fS8AAP6DxgkA4Fcuuugi9evXT2+++aYkaffu3Vq/fr0mTJigH374Qf37968yvn///tq1a5csFkuNr/fFF1/oyiuvVLt27RQZGanRo0fr6NGjOn78uNtrHzt2rHbv3q1vvvlGUkXwxIgRI9SsWTO3vxcAwLtonAAAfqfyXqaSkhLNnz9fnTp10uWXX+7y6+zdu1d//vOf1a1bN/3nP//R5s2b9corr0iSTpw44e6yFRMTo9TUVM2fP18HDx7Uf//7X5bpAUADQeMEAPA7I0aMUFBQkBYtWqS3335b48ePl8FgUJcuXZSVlVVlbFZWli644AIFBwdXe53NmzfLarXq+eef1yWXXKILLrhAv/76a5UxoaGhtc5W1SY0NFSSajzvtttu0/vvv6+5c+eqU6dO1WbIAACBicYJAOB3mjdvrpEjR2r69OkymUwaO3asJOm+++7T6tWr9cQTT+inn37SW2+9pZdffrnWQIfOnTvr5MmT+n//7/9pz549euedd/Taa69VGdOxY0eVlpZq9erVOnLkiFNL+GJiYhQREaHMzEwdPHhQZrPZ/rUhQ4YoKipKTz75pMaNG1f3bwIAwK/QOAEA/NKECRP022+/aciQIWrbtq0kqWfPnvrggw+0ePFiJSUlacaMGXr88cftjdWZunfvrhdeeEGzZs1SUlKS3n33XWVkZFQZ069fP02cOFEjR45U69at9cwzzzisLSQkRC+99JL+/e9/q23btho+fLj9a0FBQRo7dqwsFovGjBlT928AAMCvGGyn570CAIB6mzBhgg4fPqxPPvnE16UAANwkxNcFAADQUJjNZm3fvl2LFi2iaQKABobGCQAANxk+fLiys7M1ceJEDR482NflAADciKV6AAAAAOAA4RAAAAAA4ACNEwAAAAA4QOMEAAAAAA7QOAEAAACAAzROAAAAAOAAjRMAAAAAOEDjBAAAAAAO0DgBAAAAgAM0TgAAAADgwP8HilfyNTSmaHQAAAAASUVORK5CYII=\n" }, "metadata": {} } @@ -1798,8 +2326,9 @@ { "cell_type": "code", "source": [ + "optimized_weight=np.array(list(cla.max_sharpe().values()))\n", + "optimized_weight= np.round(optimized_weight, 4)\n", "\n", - "optimized_weight=weights[volatility.index(min(volatility))]\n", "pie_df=pd.DataFrame(optimized_weight*100, index=prices.columns, columns=['weights'])\n", "pie_df= pie_df.sort_values(by=['weights'], ascending=False)\n", "pie_df" @@ -1810,7 +2339,7 @@ "height": 394 }, "id": "FzvioR9k11Tx", - "outputId": "16dd12f8-ee60-44ab-eaa0-1c4dc2482a01" + "outputId": "9eae848f-52ba-47bc-c17f-4cf753c82504" }, "execution_count": 9, "outputs": [ @@ -1818,22 +2347,22 @@ "output_type": "execute_result", "data": { "text/plain": [ - " weights\n", - "symbol \n", - "TRX-USD 67.715856\n", - "BNB-USD 13.161715\n", - "BTC-USD 9.982129\n", - "XRP-USD 5.275661\n", - "LTC-USD 3.864639\n", - "ADA-USD 0.000000\n", - "DOT-USD 0.000000\n", - "ETH-USD 0.000000\n", - "MATIC-USD 0.000000\n", - "SOL-USD 0.000000" + " weights\n", + "symbol \n", + "SOL-USD 37.11\n", + "TRX-USD 32.71\n", + "BNB-USD 30.17\n", + "ADA-USD 0.00\n", + "BTC-USD -0.00\n", + "DOT-USD 0.00\n", + "ETH-USD 0.00\n", + "LTC-USD 0.00\n", + "MATIC-USD 0.00\n", + "XRP-USD 0.00" ], "text/html": [ "\n", - "
\n", + "
\n", "
\n", "