Files
python-for-finances/daily-and-cumulative-return/daily-and-cumulative-return.ipynb
T

793 lines
315 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Libraries installation"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"!pip install pandas -q\n",
"!pip install numpy -q\n",
"!pip install yfinance -q\n",
"!pip install matplotlib -q"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import yfinance as yf\n",
"from datetime import datetime"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Building investment wallet"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Period\n",
"start = \"2018-01-01\"\n",
"end = f\"{datetime.now():%Y-%m-%d}\"\n",
"\n",
"# Selection of wallet assets\n",
"assets = [\"BBAS3.SA\", \"B3SA3.SA\", \"ITSA4.SA\", \"PETR4.SA\", \"VALE3.SA\",\n",
" \"TRPL4.SA\", \"EGIE3.SA\", \"TAEE11.SA\", \"WEGE3.SA\", \"KLBN4.SA\"]\n",
"\n",
"# Assignment of 10% weight for each asset\n",
"weights = np.array([.1] * 10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Downloading financial data"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[*********************100%***********************] 10 of 10 completed\n"
]
}
],
"source": [
"wallet = yf.download(assets, start, end)[\"Adj Close\"]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"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>B3SA3.SA</th>\n",
" <th>BBAS3.SA</th>\n",
" <th>EGIE3.SA</th>\n",
" <th>ITSA4.SA</th>\n",
" <th>KLBN4.SA</th>\n",
" <th>PETR4.SA</th>\n",
" <th>TAEE11.SA</th>\n",
" <th>TRPL4.SA</th>\n",
" <th>VALE3.SA</th>\n",
" <th>WEGE3.SA</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-01-02</th>\n",
" <td>6.221113</td>\n",
" <td>23.474606</td>\n",
" <td>18.884989</td>\n",
" <td>6.252337</td>\n",
" <td>2.534116</td>\n",
" <td>6.091883</td>\n",
" <td>12.486040</td>\n",
" <td>10.113166</td>\n",
" <td>28.455339</td>\n",
" <td>8.858922</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-03</th>\n",
" <td>6.327015</td>\n",
" <td>23.774002</td>\n",
" <td>18.758101</td>\n",
" <td>6.326030</td>\n",
" <td>2.510867</td>\n",
" <td>6.147096</td>\n",
" <td>12.503497</td>\n",
" <td>9.907570</td>\n",
" <td>28.284828</td>\n",
" <td>8.724374</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-04</th>\n",
" <td>6.367747</td>\n",
" <td>24.002117</td>\n",
" <td>18.514900</td>\n",
" <td>6.445067</td>\n",
" <td>2.541866</td>\n",
" <td>6.158139</td>\n",
" <td>12.305675</td>\n",
" <td>9.635947</td>\n",
" <td>28.400774</td>\n",
" <td>8.639398</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-05</th>\n",
" <td>6.460073</td>\n",
" <td>24.002117</td>\n",
" <td>18.610065</td>\n",
" <td>6.456405</td>\n",
" <td>2.495369</td>\n",
" <td>6.194947</td>\n",
" <td>12.363855</td>\n",
" <td>9.790517</td>\n",
" <td>28.844112</td>\n",
" <td>8.674805</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-08</th>\n",
" <td>6.489944</td>\n",
" <td>24.059149</td>\n",
" <td>18.715805</td>\n",
" <td>6.450731</td>\n",
" <td>2.503118</td>\n",
" <td>6.268565</td>\n",
" <td>12.305675</td>\n",
" <td>9.739493</td>\n",
" <td>29.485239</td>\n",
" <td>8.745622</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" B3SA3.SA BBAS3.SA EGIE3.SA ITSA4.SA KLBN4.SA PETR4.SA \\\n",
"Date \n",
"2018-01-02 6.221113 23.474606 18.884989 6.252337 2.534116 6.091883 \n",
"2018-01-03 6.327015 23.774002 18.758101 6.326030 2.510867 6.147096 \n",
"2018-01-04 6.367747 24.002117 18.514900 6.445067 2.541866 6.158139 \n",
"2018-01-05 6.460073 24.002117 18.610065 6.456405 2.495369 6.194947 \n",
"2018-01-08 6.489944 24.059149 18.715805 6.450731 2.503118 6.268565 \n",
"\n",
" TAEE11.SA TRPL4.SA VALE3.SA WEGE3.SA \n",
"Date \n",
"2018-01-02 12.486040 10.113166 28.455339 8.858922 \n",
"2018-01-03 12.503497 9.907570 28.284828 8.724374 \n",
"2018-01-04 12.305675 9.635947 28.400774 8.639398 \n",
"2018-01-05 12.363855 9.790517 28.844112 8.674805 \n",
"2018-01-08 12.305675 9.739493 29.485239 8.745622 "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wallet.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Transform date into base 1 relative scale\n",
"(wallet / wallet.iloc[0]).plot();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Daily and cumulative return"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"returns = wallet.pct_change()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"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>B3SA3.SA</th>\n",
" <th>BBAS3.SA</th>\n",
" <th>EGIE3.SA</th>\n",
" <th>ITSA4.SA</th>\n",
" <th>KLBN4.SA</th>\n",
" <th>PETR4.SA</th>\n",
" <th>TAEE11.SA</th>\n",
" <th>TRPL4.SA</th>\n",
" <th>VALE3.SA</th>\n",
" <th>WEGE3.SA</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-01-02</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-03</th>\n",
" <td>0.001702</td>\n",
" <td>0.001275</td>\n",
" <td>-0.000672</td>\n",
" <td>0.001179</td>\n",
" <td>-0.000917</td>\n",
" <td>0.000906</td>\n",
" <td>0.000140</td>\n",
" <td>-0.002033</td>\n",
" <td>-0.000599</td>\n",
" <td>-0.001519</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-04</th>\n",
" <td>0.000644</td>\n",
" <td>0.000960</td>\n",
" <td>-0.001297</td>\n",
" <td>0.001882</td>\n",
" <td>0.001235</td>\n",
" <td>0.000180</td>\n",
" <td>-0.001582</td>\n",
" <td>-0.002742</td>\n",
" <td>0.000410</td>\n",
" <td>-0.000974</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-05</th>\n",
" <td>0.001450</td>\n",
" <td>0.000000</td>\n",
" <td>0.000514</td>\n",
" <td>0.000176</td>\n",
" <td>-0.001829</td>\n",
" <td>0.000598</td>\n",
" <td>0.000473</td>\n",
" <td>0.001604</td>\n",
" <td>0.001561</td>\n",
" <td>0.000410</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-08</th>\n",
" <td>0.000462</td>\n",
" <td>0.000238</td>\n",
" <td>0.000568</td>\n",
" <td>-0.000088</td>\n",
" <td>0.000311</td>\n",
" <td>0.001188</td>\n",
" <td>-0.000471</td>\n",
" <td>-0.000521</td>\n",
" <td>0.002223</td>\n",
" <td>0.000816</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-07-31</th>\n",
" <td>0.001223</td>\n",
" <td>0.001925</td>\n",
" <td>-0.000989</td>\n",
" <td>0.000102</td>\n",
" <td>0.001535</td>\n",
" <td>0.004536</td>\n",
" <td>-0.000525</td>\n",
" <td>0.000120</td>\n",
" <td>0.002262</td>\n",
" <td>-0.000992</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-01</th>\n",
" <td>-0.001074</td>\n",
" <td>-0.001722</td>\n",
" <td>0.000613</td>\n",
" <td>-0.000204</td>\n",
" <td>-0.001944</td>\n",
" <td>-0.001639</td>\n",
" <td>0.000361</td>\n",
" <td>0.001394</td>\n",
" <td>-0.001388</td>\n",
" <td>-0.000150</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-02</th>\n",
" <td>0.000204</td>\n",
" <td>0.000443</td>\n",
" <td>0.000068</td>\n",
" <td>0.000510</td>\n",
" <td>0.000881</td>\n",
" <td>-0.000229</td>\n",
" <td>0.000194</td>\n",
" <td>0.000747</td>\n",
" <td>-0.001628</td>\n",
" <td>0.000426</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-03</th>\n",
" <td>0.000677</td>\n",
" <td>0.000168</td>\n",
" <td>-0.001376</td>\n",
" <td>-0.000102</td>\n",
" <td>0.001747</td>\n",
" <td>0.001277</td>\n",
" <td>0.000608</td>\n",
" <td>0.000078</td>\n",
" <td>0.000626</td>\n",
" <td>0.000999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-04</th>\n",
" <td>-0.001076</td>\n",
" <td>-0.000525</td>\n",
" <td>-0.000617</td>\n",
" <td>-0.000813</td>\n",
" <td>0.001931</td>\n",
" <td>-0.002975</td>\n",
" <td>0.000220</td>\n",
" <td>-0.000429</td>\n",
" <td>0.000074</td>\n",
" <td>0.001039</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1388 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" B3SA3.SA BBAS3.SA EGIE3.SA ITSA4.SA KLBN4.SA PETR4.SA \\\n",
"Date \n",
"2018-01-02 NaN NaN NaN NaN NaN NaN \n",
"2018-01-03 0.001702 0.001275 -0.000672 0.001179 -0.000917 0.000906 \n",
"2018-01-04 0.000644 0.000960 -0.001297 0.001882 0.001235 0.000180 \n",
"2018-01-05 0.001450 0.000000 0.000514 0.000176 -0.001829 0.000598 \n",
"2018-01-08 0.000462 0.000238 0.000568 -0.000088 0.000311 0.001188 \n",
"... ... ... ... ... ... ... \n",
"2023-07-31 0.001223 0.001925 -0.000989 0.000102 0.001535 0.004536 \n",
"2023-08-01 -0.001074 -0.001722 0.000613 -0.000204 -0.001944 -0.001639 \n",
"2023-08-02 0.000204 0.000443 0.000068 0.000510 0.000881 -0.000229 \n",
"2023-08-03 0.000677 0.000168 -0.001376 -0.000102 0.001747 0.001277 \n",
"2023-08-04 -0.001076 -0.000525 -0.000617 -0.000813 0.001931 -0.002975 \n",
"\n",
" TAEE11.SA TRPL4.SA VALE3.SA WEGE3.SA \n",
"Date \n",
"2018-01-02 NaN NaN NaN NaN \n",
"2018-01-03 0.000140 -0.002033 -0.000599 -0.001519 \n",
"2018-01-04 -0.001582 -0.002742 0.000410 -0.000974 \n",
"2018-01-05 0.000473 0.001604 0.001561 0.000410 \n",
"2018-01-08 -0.000471 -0.000521 0.002223 0.000816 \n",
"... ... ... ... ... \n",
"2023-07-31 -0.000525 0.000120 0.002262 -0.000992 \n",
"2023-08-01 0.000361 0.001394 -0.001388 -0.000150 \n",
"2023-08-02 0.000194 0.000747 -0.001628 0.000426 \n",
"2023-08-03 0.000608 0.000078 0.000626 0.000999 \n",
"2023-08-04 0.000220 -0.000429 0.000074 0.001039 \n",
"\n",
"[1388 rows x 10 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Weighted return, that means, how much each asset acted in the return of the wallet\n",
"returns * weights"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"wallet_return = (returns * weights).sum(axis = 1)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"wallet_return.plot();"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# Cumulative product on base 0\n",
"cumulative_return_wallet = (1 + wallet_return).cumprod() - 1"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cumulative_return_wallet.plot();"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[*********************100%***********************] 1 of 1 completed\n"
]
}
],
"source": [
"ibov = yf.download(\"^BVSP\", start, end)[\"Adj Close\"]\n",
"ibov_return = ibov.pct_change()\n",
"cumulative_return_ibov = (1 + ibov_return).cumprod() - 1"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cumulative_return_ibov.plot();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Comparing performance of IBOV x Wallet "
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"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>Wallet Return</th>\n",
" <th>IBOV Return</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-01-03</th>\n",
" <td>-0.000538</td>\n",
" <td>0.001335</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-04</th>\n",
" <td>-0.001822</td>\n",
" <td>0.009706</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-05</th>\n",
" <td>0.003125</td>\n",
" <td>0.015149</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-08</th>\n",
" <td>0.007866</td>\n",
" <td>0.019104</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-09</th>\n",
" <td>0.004247</td>\n",
" <td>0.012492</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-07-31</th>\n",
" <td>2.119721</td>\n",
" <td>0.565560</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-01</th>\n",
" <td>2.101773</td>\n",
" <td>0.556637</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-02</th>\n",
" <td>2.106787</td>\n",
" <td>0.551643</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-03</th>\n",
" <td>2.121399</td>\n",
" <td>0.548138</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2023-08-04</th>\n",
" <td>2.111500</td>\n",
" <td>0.534298</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1386 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" Wallet Return IBOV Return\n",
"Date \n",
"2018-01-03 -0.000538 0.001335\n",
"2018-01-04 -0.001822 0.009706\n",
"2018-01-05 0.003125 0.015149\n",
"2018-01-08 0.007866 0.019104\n",
"2018-01-09 0.004247 0.012492\n",
"... ... ...\n",
"2023-07-31 2.119721 0.565560\n",
"2023-08-01 2.101773 0.556637\n",
"2023-08-02 2.106787 0.551643\n",
"2023-08-03 2.121399 0.548138\n",
"2023-08-04 2.111500 0.534298\n",
"\n",
"[1386 rows x 2 columns]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portifolio_return = pd.DataFrame()\n",
"portifolio_return[\"Wallet Return\"] = cumulative_return_wallet\n",
"portifolio_return[\"IBOV Return\"] = cumulative_return_ibov\n",
"portifolio_return = portifolio_return.dropna()\n",
"portifolio_return"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"portifolio_return.plot();"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2023-08-11 18:40:26 -03:00
"version": "3.11.0"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}