Files
python-for-finances/riskfolio-lib/riskfolio_lib_plots.ipynb
T

655 lines
829 KiB
Plaintext
Raw Normal View History

2023-08-11 08:16:14 -03:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
2023-08-11 18:40:26 -03:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: pip in ./venv/lib/python3.10/site-packages (23.2.1)\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install --upgrade pip"
]
},
{
"cell_type": "code",
"execution_count": 2,
2023-08-11 08:16:14 -03:00
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "yLacqQR2O_8l",
"outputId": "a46a4c1e-a8a3-44c2-a5da-b6833ec35687"
},
"outputs": [
{
"name": "stdout",
2023-08-11 18:40:26 -03:00
"output_type": "stream",
2023-08-11 08:16:14 -03:00
"text": [
2023-08-11 18:40:26 -03:00
"Note: you may need to restart the kernel to use updated packages.\n",
"Note: you may need to restart the kernel to use updated packages.\n",
"Note: you may need to restart the kernel to use updated packages.\n",
"Note: you may need to restart the kernel to use updated packages.\n",
"Note: you may need to restart the kernel to use updated packages.\n"
2023-08-11 08:16:14 -03:00
]
}
],
"source": [
2023-08-11 18:40:26 -03:00
"%pip install numpy -q\n",
"%pip install pandas -q\n",
"%pip install yfinance -q\n",
"%pip install mosek -q\n",
"%pip install riskfolio-lib -q"
2023-08-11 08:16:14 -03:00
]
},
{
"cell_type": "code",
2023-08-11 18:40:26 -03:00
"execution_count": 126,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "AXkX5PxyPP6u",
"outputId": "c11a8d3b-8413-48a2-cbae-ab200a405332"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[*********************100%***********************] 45 of 45 completed\n"
]
}
],
2023-08-11 08:16:14 -03:00
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import yfinance as yf\n",
"import riskfolio as rp\n",
"\n",
"# Tickers of assets\n",
2023-08-11 18:40:26 -03:00
"tickers = [\n",
" \"ABCB4.SA\", \"ALUP11.SA\", \"B3SA3.SA\", \"BRSR6.SA\", \"BBSE3.SA\", \"BRAP4.SA\", \"BBAS3.SA\", \"AGRO3.SA\", \"CMIG3.SA\",\n",
" \"CMIG4.SA\", \"CSMG3.SA\", \"CPLE6.SA\", \"CPFE3.SA\", \"CMIN3.SA\", \"CURY3.SA\", \"DIRR3.SA\", \"ENAT3.SA\", \"EGIE3.SA\",\n",
" \"FESA4.SA\", \"GGBR4.SA\", \"GOAU4.SA\", \"MYPK3.SA\", \"RANI3.SA\", \"ITSA4.SA\", \"JBSS3.SA\", \"JHSF3.SA\", \"KEPL3.SA\",\n",
" \"LAVV3.SA\", \"MRFG3.SA\", \"BEEF3.SA\", \"PETR3.SA\", \"PETR4.SA\", \"PSSA3.SA\", \"RAPT4.SA\", \"ROMI3.SA\", \"SANB11.SA\",\n",
" \"CSNA3.SA\", \"TAEE11.SA\", \"VIVT3.SA\", \"TRPL4.SA\", \"TRIS3.SA\", \"UNIP6.SA\", \"USIM5.SA\", \"VALE3.SA\", \"VBBR3.SA\"\n",
"]\n",
"\n",
2023-08-11 08:16:14 -03:00
"tickers.sort()\n",
"\n",
"# Downloading the data\n",
2023-08-11 18:40:26 -03:00
"data = yf.download(tickers, start=start, end=end)\n",
"data = data.loc[:, ('Adj Close', slice(None))]\n",
2023-08-11 08:16:14 -03:00
"data.columns = tickers\n",
"assets = data.pct_change().dropna()\n",
"\n",
"Y = assets\n",
"\n",
"# Creating the Portfolio Object\n",
"port = rp.Portfolio(returns=Y)\n",
"\n",
"# To display dataframes values in percentage format\n",
"pd.options.display.float_format = '{:.4%}'.format\n",
"\n",
"# Choose the risk measure\n",
"rm = 'MSV' # Semi Standard Deviation\n",
"\n",
"# Estimate inputs of the model (historical estimates)\n",
2023-08-11 18:40:26 -03:00
"# Method to estimate expected returns based on historical data.\n",
"method_mu = 'hist'\n",
"# Method to estimate covariance matrix based on historical data.\n",
"method_cov = 'hist'\n",
2023-08-11 08:16:14 -03:00
"\n",
"port.assets_stats(method_mu=method_mu, method_cov=method_cov, d=0.94)\n",
"\n",
"# Estimate the portfolio that maximizes the risk adjusted return ratio\n",
2023-08-11 18:40:26 -03:00
"w1 = port.optimization(model='Classic', rm=rm,\n",
" obj='Sharpe', rf=0.0, l=0, hist=True)\n",
2023-08-11 08:16:14 -03:00
"\n",
"# Estimate points in the efficient frontier mean - semi standard deviation\n",
2023-08-11 18:40:26 -03:00
"ws = port.efficient_frontier(\n",
" model='Classic', rm=rm, points=20, rf=0, hist=True)\n",
2023-08-11 08:16:14 -03:00
"\n",
"# Estimate the risk parity portfolio for semi standard deviation\n",
"w2 = port.rp_optimization(model='Classic', rm=rm, rf=0, b=None, hist=True)"
2023-08-11 18:40:26 -03:00
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
2023-08-11 08:16:14 -03:00
"outputs": [
{
2023-08-11 18:40:26 -03:00
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>weights</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>PETR3.SA</th>\n",
" <td>32.5183%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CMIG3.SA</th>\n",
" <td>18.4078%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CPLE6.SA</th>\n",
" <td>12.6776%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RANI3.SA</th>\n",
" <td>11.1030%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TAEE11.SA</th>\n",
" <td>10.3605%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>FESA4.SA</th>\n",
" <td>9.1889%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>UNIP6.SA</th>\n",
" <td>5.7439%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PSSA3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>KEPL3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CURY3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BBSE3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BEEF3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CPFE3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CSMG3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PETR4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CMIG4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>GOAU4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>EGIE3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ALUP11.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BBAS3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AGRO3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>GGBR4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TRPL4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ABCB4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VIVT3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BRSR6.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DIRR3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MYPK3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ITSA4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>LAVV3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>JBSS3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VALE3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ENAT3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MRFG3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BRAP4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SANB11.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RAPT4.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>JHSF3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B3SA3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>VBBR3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ROMI3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CMIN3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TRIS3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>USIM5.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CSNA3.SA</th>\n",
" <td>0.0000%</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" weights\n",
"PETR3.SA 32.5183%\n",
"CMIG3.SA 18.4078%\n",
"CPLE6.SA 12.6776%\n",
"RANI3.SA 11.1030%\n",
"TAEE11.SA 10.3605%\n",
"FESA4.SA 9.1889%\n",
"UNIP6.SA 5.7439%\n",
"PSSA3.SA 0.0000%\n",
"KEPL3.SA 0.0000%\n",
"CURY3.SA 0.0000%\n",
"BBSE3.SA 0.0000%\n",
"BEEF3.SA 0.0000%\n",
"CPFE3.SA 0.0000%\n",
"CSMG3.SA 0.0000%\n",
"PETR4.SA 0.0000%\n",
"CMIG4.SA 0.0000%\n",
"GOAU4.SA 0.0000%\n",
"EGIE3.SA 0.0000%\n",
"ALUP11.SA 0.0000%\n",
"BBAS3.SA 0.0000%\n",
"AGRO3.SA 0.0000%\n",
"GGBR4.SA 0.0000%\n",
"TRPL4.SA 0.0000%\n",
"ABCB4.SA 0.0000%\n",
"VIVT3.SA 0.0000%\n",
"BRSR6.SA 0.0000%\n",
"DIRR3.SA 0.0000%\n",
"MYPK3.SA 0.0000%\n",
"ITSA4.SA 0.0000%\n",
"LAVV3.SA 0.0000%\n",
"JBSS3.SA 0.0000%\n",
"VALE3.SA 0.0000%\n",
"ENAT3.SA 0.0000%\n",
"MRFG3.SA 0.0000%\n",
"BRAP4.SA 0.0000%\n",
"SANB11.SA 0.0000%\n",
"RAPT4.SA 0.0000%\n",
"JHSF3.SA 0.0000%\n",
"B3SA3.SA 0.0000%\n",
"VBBR3.SA 0.0000%\n",
"ROMI3.SA 0.0000%\n",
"CMIN3.SA 0.0000%\n",
"TRIS3.SA 0.0000%\n",
"USIM5.SA 0.0000%\n",
"CSNA3.SA 0.0000%"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
2023-08-11 08:16:14 -03:00
}
2023-08-11 18:40:26 -03:00
],
"source": [
"w1.sort_values(\"weights\", ascending=False)"
2023-08-11 08:16:14 -03:00
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "W1L6k2-QQS78"
2023-08-11 18:40:26 -03:00
},
"source": [
"### Plot series"
]
2023-08-11 08:16:14 -03:00
},
{
"cell_type": "code",
2023-08-11 18:40:26 -03:00
"execution_count": 128,
2023-08-11 08:16:14 -03:00
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "fswmfBhTP3C_",
"outputId": "256f0490-c901-4749-d554-107986845a7b"
},
"outputs": [
{
"data": {
2023-08-11 18:40:26 -03:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3gc1dn38e/MNvViS3KVbbk3jI0Bh2JMcTCBEMgTIJBCCS2EEEggeR5SIJQE0kmlJCGkEQjw0oIBAwYcMBgb22Ab9271tlpJW2fmvH+stNJaLpJZSXuk+3Nduhjtzu7M7G/H6J5z5hxDKaUQQgghhBBCCCFEypn9vQNCCCGEEEIIIcRAJUW3EEIIIYQQQgjRS6ToFkIIIYQQQggheokU3UIIIYQQQgghRC+RolsIIYQQQgghhOglUnQLIYQQQgghhBC9RIpuIYQQQgghhBCil0jRLYQQQgghhBBC9BIpuoUQQgghhBBCiF4iRbcQYsAZN24cl19+eX/vRhLDMPjhD3/YK++9a9cuDMPgkUce6ZX3F4eW6u/bYMrzhz/8IYZhpPQ933jjDQzD4I033kjp+wohhBBHSopuIURae+SRRzAMg1WrVh3w+VNPPZWZM2d+7O0sXry414ridFNdXc0tt9zC1KlTycrKIjs7m7lz53L33Xfj9/v7e/dEDw3WPP/whz+k1YWJ9mK//cflclFSUsIFF1zAxo0bj+g9Kyoq+OEPf8jatWtTu7NCCCH6lLu/d0AIIVJt8+bNmGbPrikuXryY3//+971WeIdCIdzu/v8nd+XKlZx99tm0tLTwpS99iblz5wKwatUq7r33XpYtW8aSJUv6eS9Fdw3mPP/whz9QVFTUpZfBKaecQigUwuv19st+feMb3+C4444jFovx4Ycf8sADD/DGG2+wfv16hg8f3qP3qqio4I477mDcuHHMnj27d3ZYCCFEr+v/vwCFECLFfD5ff+8CAI7jEI1GycjIICMjo793B7/fz2c/+1lcLhdr1qxh6tSpSc//6Ec/4o9//GM/7Z3oKcnzwEzT7Nfzbf78+VxwwQWJ36dMmcJ1113H3/72N77zne/02351Fg6H8Xq9Pb44KYQQ4sjIv7ZCiAFn/3tsY7EYd9xxB5MmTSIjI4OhQ4dy8skn88orrwBw+eWX8/vf/x4gqXtou9bWVm6++WZKS0vx+XxMmTKFn//85yilkrZrGAZf//rX+ec//8mMGTPw+Xy89NJLief2b0UvLy/nyiuvZOTIkfh8PsrKyrjuuuuIRqMANDQ0cMstt3DUUUeRk5NDXl4en/rUp/jggw+O6HN58MEHKS8v55e//GWXAg1g2LBhfP/730967A9/+EPiWEaOHMn111/fpctyexf/Dz/8kAULFpCVlcXEiRN58sknAXjzzTeZN28emZmZTJkyhVdffTXp9e339W7atImLLrqIvLw8hg4dyo033kg4HE5a17Is7rrrLiZMmIDP52PcuHF897vfJRKJJK13sHvo9/9utN++8Pbbb/Otb32L4uJisrOz+exnP0ttbW3Sa5VS3H333YwePZqsrCxOO+00NmzYcMDP2u/3c9NNNyW+MxMnTuQnP/kJjuN0We/yyy8nPz+fgoICLrvssm53Ce9pnj39TN566y2+8Y1vUFxcTEFBAddeey3RaBS/38+ll15KYWEhhYWFfOc730k6Fw52T3V371X/y1/+wumnn05JSQk+n4/p06dz//33d9nnDRs28OabbybO11NPPfWA2//6179OTk4OwWCwy7YuueQShg8fjm3bicdefPFF5s+fT3Z2Nrm5uZxzzjkHzbk75s+fD8D27duTHi8vL+crX/kKw4YNw+fzMWPGDB5++OHE82+88QbHHXccAFdccUXiONs/v4ONJXDqqacmPov29zEMg8cee4zvf//7jBo1iqysLAKBAJdffjk5OTmUl5dz/vnnk5OTQ3FxMbfcckvSZwLw2GOPMXfuXHJzc8nLy+Ooo47i17/+9RF/LkIIMZhIS7cQQgtNTU3U1dV1eTwWix32tT/84Q+55557uOqqqzj++OMJBAKsWrWK1atX88lPfpJrr72WiooKXnnlFf7+978nvVYpxWc+8xlef/11rrzySmbPns3LL7/Mt7/9bcrLy/nVr36VtP7SpUv597//zde//nWKiooYN27cAfepoqKC448/Hr/fzzXXXMPUqVMpLy/nySefJBgM4vV62bFjB8888wwXXnghZWVlVFdX8+CDD7JgwQI++ugjRo4c2f0PEHjuuefIzMxMaoU73Od2xx13sHDhQq677jo2b97M/fffz8qVK3n77bfxeDyJdRsbG/n0pz/NxRdfzIUXXsj999/PxRdfzD//+U9uuukmvvrVr/KFL3yBn/3sZ1xwwQXs3buX3NzcpO1ddNFFjBs3jnvuuYd3332X3/zmNzQ2NvK3v/0tsc5VV13FX//6Vy644AJuvvlmVqxYwT333MPGjRt5+umne/R5dHbDDTdQWFjI7bffzq5du7jvvvv4+te/zuOPP55Y57bbbuPuu+/m7LPP5uyzz2b16tWceeaZiYsk7YLBIAsWLKC8vJxrr72WMWPGsHz5cm699VYqKyu57777gPh367zzzuOtt97iq1/9KtOmTePpp5/msssu69Y+9zTPnrrhhhsYPnw4d9xxB++++y4PPfQQBQUFLF++nDFjxvDjH/+YxYsX87Of/YyZM2dy6aWXpmS7999/PzNmzOAzn/kMbreb559/nq997Ws4jsP1118PwH333ccNN9xATk4O3/ve94D4RYYD+fznP8/vf/97XnjhBS688MLE48FgkOeff57LL78cl8sFwN///ncuu+wyFi1axE9+8hOCwSD3338/J598MmvWrDno+Xwou3btAqCwsDDxWHV1NZ/4xCcSF+qKi4t58cUXufLKKwkEAtx0001MmzaNO++8k9tuu41rrrkmUbyfeOKJPd4HgLvuuguv18stt9xCJBJJdL+3bZtFixYxb948fv7zn/Pqq6/yi1/8ggkTJnDdddcB8Morr3DJJZdwxhln8JOf/ASAjRs38vbbb3PjjTce0f4IIcSgooQQIo395S9/UcAhf2bMmJH0mrFjx6rLLrss8fvRRx+tzjnnnENu5/rrr1cH+ifxmWeeUYC6++67kx6/4IILlGEYatu2bYnHAGWaptqwYUOX9wHU7bffnvj90ksvVaZpqpUrV3ZZ13EcpZRS4XBY2bad9NzOnTuVz+dTd955Z9JjgPrLX/5yyGMsLCxURx999CHXaVdTU6O8Xq8688wzk/bhd7/7nQLUww8/nHhswYIFClCPPvpo4rFNmzYlPo9333038fjLL7/cZV9vv/12BajPfOYzSfvwta99TQHqgw8+UEoptXbtWgWoq666Kmm9W265RQFq6dKlicf2/7zb7f/daP9+LVy4MPG5K6XUN7/5TeVyuZTf70/6PM4555yk9b773e8qIOk977rrLpWdna22bNmStO3/+7//Uy6XS+3Zs0cp1fHd+ulPf5pYx7IsNX/+/JTnqVTPP5NFixYlHesJJ5ygDMNQX/3qV5P2d/To0WrBggWJx15//XUFqNdffz1pOwf6nrZn31kwGOyyj4sWLVLjx49PemzGjBlJ2z3Y9h3HUaNGjVKf+9znktb797//rQC1bNkypZRSzc3NqqCgQF199dVJ61VVVan8/Pwujx9suw8//LCqra1VFRUV6qWXXlITJ05UhmGo9957L7HulVdeqUaMGKHq6uqS3uPiiy9W+fn5ic9g5cqVB/0u7J9buwULFhwwj/Hjx3f5bC+77DIFJP17opRSc+bMUXPnzk38fuONN6q8vDxlWdYhPwMhhBAHJt3LhRBa+P3vf88rr7zS5WfWrFmHfW1BQQEbNmxg69atPd7u4sWLcblcfOMb30h6/Oabb0YpxYsvvpj0+IIFC5g+ffoh39NxHJ555hnOPfdcjj322C7Pt3dt9/l8iXsubdumvr6enJwcpkyZwurVq3t8LIFAoEvr8sG8+uqrRKNRbrrppqT7Pq+++mry8vJ44YUXktbPy
2023-08-11 08:16:14 -03:00
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
2023-08-11 18:40:26 -03:00
]
2023-08-11 08:16:14 -03:00
},
2023-08-11 18:40:26 -03:00
"metadata": {},
"output_type": "display_data"
2023-08-11 08:16:14 -03:00
}
2023-08-11 18:40:26 -03:00
],
"source": [
"ax = rp.plot_series(returns=Y,\n",
" w=ws,\n",
" cmap='tab20',\n",
" height=6,\n",
" width=10,\n",
" ax=None)"
2023-08-11 08:16:14 -03:00
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8GfCgRdeRG5v"
2023-08-11 18:40:26 -03:00
},
"source": [
"### Gráfico de fronteira eficiente a partir de medida de risco especificado pelo usuário"
]
2023-08-11 08:16:14 -03:00
},
{
"cell_type": "code",
2023-08-11 18:40:26 -03:00
"execution_count": 129,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "PndiInJDQUmf",
"outputId": "ba39ae37-fb27-48c1-e25a-e5890047542f"
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1000x600 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2023-08-11 08:16:14 -03:00
"source": [
"label = 'Max Risk Adjusted Return Portfolio'\n",
"mu = port.mu\n",
"cov = port.cov\n",
"returns = port.returns\n",
"\n",
"ax = rp.plot_frontier(w_frontier=ws,\n",
" mu=mu,\n",
" cov=cov,\n",
" returns=returns,\n",
" rm=rm,\n",
" rf=0,\n",
" alpha=0.05,\n",
" cmap='viridis',\n",
" w=w1,\n",
" label=label,\n",
" marker='*',\n",
" s=16,\n",
" c='r',\n",
" height=6,\n",
" width=10,\n",
" t_factor=252,\n",
" ax=None)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hmh1aWuORcpo"
2023-08-11 18:40:26 -03:00
},
"source": [
"### Gráfico de pesos por ativo"
]
2023-08-11 08:16:14 -03:00
},
{
"cell_type": "code",
2023-08-11 18:40:26 -03:00
"execution_count": 130,
2023-08-11 08:16:14 -03:00
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "2XgCJ2eORMgb",
"outputId": "67b0b013-2a2a-44a8-971d-f0d170af513e"
},
"outputs": [
{
"data": {
2023-08-11 18:40:26 -03:00
"image/png": "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
2023-08-11 08:16:14 -03:00
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
2023-08-11 18:40:26 -03:00
]
2023-08-11 08:16:14 -03:00
},
2023-08-11 18:40:26 -03:00
"metadata": {},
"output_type": "display_data"
2023-08-11 08:16:14 -03:00
}
2023-08-11 18:40:26 -03:00
],
"source": [
"ax = rp.plot_pie(w=w1,\n",
" title='Portfolio',\n",
" height=6,\n",
" width=10,\n",
" cmap=\"tab20\",\n",
" ax=None)"
2023-08-11 08:16:14 -03:00
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "82BPUuTnSPvE"
2023-08-11 18:40:26 -03:00
},
"source": [
"### Gráfico de fronteira eficiente"
]
2023-08-11 08:16:14 -03:00
},
{
"cell_type": "code",
2023-08-11 18:40:26 -03:00
"execution_count": 131,
2023-08-11 08:16:14 -03:00
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "_Wo-Zo2lSN-Y",
"outputId": "9be452e7-f3b6-4866-8d45-ca29955335da"
},
"outputs": [
{
"data": {
2023-08-11 18:40:26 -03:00
"image/png": "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
2023-08-11 08:16:14 -03:00
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
2023-08-11 18:40:26 -03:00
]
2023-08-11 08:16:14 -03:00
},
2023-08-11 18:40:26 -03:00
"metadata": {},
"output_type": "display_data"
2023-08-11 08:16:14 -03:00
}
2023-08-11 18:40:26 -03:00
],
"source": [
"ax = rp.plot_frontier_area(w_frontier=ws,\n",
" cmap=\"tab20\",\n",
" height=6,\n",
" width=10,\n",
" ax=None)"
2023-08-11 08:16:14 -03:00
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_DZcrCF-S6te"
2023-08-11 18:40:26 -03:00
},
"source": [
"### Contribuição de risco por ativo"
]
2023-08-11 08:16:14 -03:00
},
{
"cell_type": "code",
2023-08-11 18:40:26 -03:00
"execution_count": 132,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "_Ke_zpDhSUGI",
"outputId": "2b25e639-b42c-49e9-fdcb-6339bf0aa5a6"
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2023-08-11 08:16:14 -03:00
"source": [
"ax = rp.plot_risk_con(w=w2,\n",
" cov=cov,\n",
" returns=returns,\n",
" rm=rm,\n",
" rf=0,\n",
" alpha=0.05,\n",
" color=\"tab:blue\",\n",
" height=6,\n",
" width=10,\n",
" t_factor=252,\n",
" ax=None)"
]
},
{
"cell_type": "code",
"execution_count": null,
2023-08-11 18:40:26 -03:00
"metadata": {},
"outputs": [],
"source": []
2023-08-11 08:16:14 -03:00
}
2023-08-11 18:40:26 -03:00
],
"metadata": {
"colab": {
"authorship_tag": "ABX9TyPHs9KgmNJona/3h+651ykJ",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}