python-pour-finance/06-Pandas-avec-Time-Series/Rolling et Expanding.ipynb

359 lines
682 KiB
Plaintext
Raw Normal View History

2023-08-21 15:12:19 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Rolling et Expanding\n",
"\n",
"Une technique très courante avec les séries temporelles consiste à créer des données à partir d'une moyenne mobile. Regardons comment faire cela facilement avec pandas !"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# La meilleure façon de lire les données avec l'index des séries temporelles !\n",
"df = pd.read_csv('time_data/walmart_stock.csv',index_col='Date',parse_dates=True)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Open High Low Close Volume Adj Close\n",
"Date \n",
"2012-01-03 59.970001 61.060001 59.869999 60.330002 12668800 52.619235\n",
"2012-01-04 60.209999 60.349998 59.470001 59.709999 9593300 52.078475\n",
"2012-01-05 59.349998 59.619999 58.369999 59.419998 12768200 51.825539\n",
"2012-01-06 59.419998 59.450001 58.869999 59.000000 8069400 51.459220\n",
"2012-01-09 59.029999 59.549999 58.919998 59.180000 6679300 51.616215"
],
"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>Open</th>\n <th>High</th>\n <th>Low</th>\n <th>Close</th>\n <th>Volume</th>\n <th>Adj Close</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 </tr>\n </thead>\n <tbody>\n <tr>\n <th>2012-01-03</th>\n <td>59.970001</td>\n <td>61.060001</td>\n <td>59.869999</td>\n <td>60.330002</td>\n <td>12668800</td>\n <td>52.619235</td>\n </tr>\n <tr>\n <th>2012-01-04</th>\n <td>60.209999</td>\n <td>60.349998</td>\n <td>59.470001</td>\n <td>59.709999</td>\n <td>9593300</td>\n <td>52.078475</td>\n </tr>\n <tr>\n <th>2012-01-05</th>\n <td>59.349998</td>\n <td>59.619999</td>\n <td>58.369999</td>\n <td>59.419998</td>\n <td>12768200</td>\n <td>51.825539</td>\n </tr>\n <tr>\n <th>2012-01-06</th>\n <td>59.419998</td>\n <td>59.450001</td>\n <td>58.869999</td>\n <td>59.000000</td>\n <td>8069400</td>\n <td>51.459220</td>\n </tr>\n <tr>\n <th>2012-01-09</th>\n <td>59.029999</td>\n <td>59.549999</td>\n <td>58.919998</td>\n <td>59.180000</td>\n <td>6679300</td>\n <td>51.616215</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {},
"execution_count": 3
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:xlabel='Date'>"
]
},
"metadata": {},
"execution_count": 4
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 1152x432 with 1 Axes>",
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n <cc:Work>\r\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n <dc:date>2020-12-01T22:26:34.966924</dc:date>\r\n <dc:format>image/svg+xml</dc:format>\r\n <dc:creator>\r\n <cc:Agent>\r\n <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n </cc:Agent>\r\n </dc:creator>\r\n </cc:Work>\r\n </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n <g id=\"patch_1\">\r\n <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n </g>\r\n <g id=\"axes_1\">\r\n <g id=\"patch_2\">\r\n <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n </g>\r\n <g id=\"matplotlib.axis_1\">\r\n <g id=\"xtick_1\">\r\n <g id=\"line2d_1\">\r\n <defs>\r\n <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"me905572faa\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n </defs>\r\n <g>\r\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#me905572faa\" y=\"300.96\"/>\r\n </g>\r\n </g>\r\n <g id=\"text_1\">\r\n <!-- 2012 -->\r\n <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n <defs>\r\n <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n </defs>\r\n <use xlink:href=\"#DejaVuSans-50\"/>\r\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n <use x=\
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"df['Open'].plot(figsize=(16,6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Maintenant, ajoutons une moyenne glissante ! Cette méthode de roulement (rolling) fournit des entrées de lignes, où chaque entrée est alors représentative de la période. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Open High Low Close Volume \\\n",
"Date \n",
"2012-01-03 NaN NaN NaN NaN NaN \n",
"2012-01-04 NaN NaN NaN NaN NaN \n",
"2012-01-05 NaN NaN NaN NaN NaN \n",
"2012-01-06 NaN NaN NaN NaN NaN \n",
"2012-01-09 NaN NaN NaN NaN NaN \n",
"2012-01-10 NaN NaN NaN NaN NaN \n",
"2012-01-11 59.495714 59.895714 59.074285 59.440000 9.007414e+06 \n",
"2012-01-12 59.469999 59.744285 59.007143 59.321429 8.231357e+06 \n",
"2012-01-13 59.322857 59.638571 58.941428 59.297143 7.965071e+06 \n",
"2012-01-17 59.397143 59.708571 59.105714 59.358572 7.355329e+06 \n",
"2012-01-18 59.450000 59.791428 59.217143 59.502857 7.047043e+06 \n",
"2012-01-19 59.578572 59.960000 59.335715 59.707143 7.412086e+06 \n",
"2012-01-20 59.767143 60.180000 59.577143 59.988571 7.908014e+06 \n",
"2012-01-23 60.017143 60.387143 59.787143 60.204285 8.017800e+06 \n",
"2012-01-24 60.154286 60.672857 59.979999 60.474285 8.035857e+06 \n",
"2012-01-25 60.440000 60.958572 60.270000 60.749999 7.776786e+06 \n",
"2012-01-26 60.715714 61.205714 60.448571 60.910000 7.624814e+06 \n",
"2012-01-27 60.868572 61.361429 60.575714 61.010000 7.678514e+06 \n",
"2012-01-30 60.945715 61.445714 60.661428 61.108571 7.450271e+06 \n",
"2012-01-31 61.057143 61.491429 60.648571 61.158571 7.362086e+06 \n",
"\n",
" Adj Close \n",
"Date \n",
"2012-01-03 NaN \n",
"2012-01-04 NaN \n",
"2012-01-05 NaN \n",
"2012-01-06 NaN \n",
"2012-01-09 NaN \n",
"2012-01-10 NaN \n",
"2012-01-11 51.842984 \n",
"2012-01-12 51.739567 \n",
"2012-01-13 51.718386 \n",
"2012-01-17 51.771963 \n",
"2012-01-18 51.897808 \n",
"2012-01-19 52.075984 \n",
"2012-01-20 52.321443 \n",
"2012-01-23 52.509586 \n",
"2012-01-24 52.745077 \n",
"2012-01-25 52.985553 \n",
"2012-01-26 53.125103 \n",
"2012-01-27 53.212323 \n",
"2012-01-30 53.298295 \n",
"2012-01-31 53.341905 "
],
"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>Open</th>\n <th>High</th>\n <th>Low</th>\n <th>Close</th>\n <th>Volume</th>\n <th>Adj Close</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 </tr>\n </thead>\n <tbody>\n <tr>\n <th>2012-01-03</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 </tr>\n <tr>\n <th>2012-01-04</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 </tr>\n <tr>\n <th>2012-01-05</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 </tr>\n <tr>\n <th>2012-01-06</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 </tr>\n <tr>\n <th>2012-01-09</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 </tr>\n <tr>\n <th>2012-01-10</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 </tr>\n <tr>\n <th>2012-01-11</th>\n <td>59.495714</td>\n <td>59.895714</td>\n <td>59.074285</td>\n <td>59.440000</td>\n <td>9.007414e+06</td>\n <td>51.842984</td>\n </tr>\n <tr>\n <th>2012-01-12</th>\n <td>59.469999</td>\n <td>59.744285</td>\n <td>59.007143</td>\n <td>59.321429</td>\n <td>8.231357e+06</td>\n <td>51.739567</td>\n </tr>\n <tr>\n <th>2012-01-13</th>\n <td>59.322857</td>\n <td>59.638571</td>\n <td>58.941428</td>\n <td>59.297143</td>\n <td>7.965071e+06</td>\n <td>51.718386</td>\n </tr>\n <tr>\n <th>2012-01-17</th>\n <td>59.397143</td>\n <td>59.708571</td>\n <td>59.105714</td>\n <td>59.358572</td>\n <td>7.355329e+06</td>\n <td>51.771963</td>\n </tr>\n <tr>\n <th>2012-01-18</th>\n <td>59.450000</td>\n <td>59.791428</td>\n <td>59.217143</td>\n <td>59.502857</td>\n <td>7.047043e+06</td>\n <td>51.897808</td>\n </tr>\n <tr>\n <th>2012-01-19</th>\n <td>59.578572</td>\n <td>59.960000</td>\n <td>59.335715</td>\n <td>59.707143</td>\n <td>7.412086e+06</td>\n <td>52.075984</td>\n </tr>\n <tr>\n <th>2012-01-20</th>\n <td>59.767143</td>\n <td>60.180000</td>\n <td>59.577143</td>\n <td>59.988571</td>\n <td>7.908014e+06</td>\n <td>52.321443</td>\n </tr>\n <tr>\n <th>2012-01-23</th>\n <td>60.017143</td>\n <td>60.387143</td>\n <td>59.787143</td>\n <td>60.204285</td>\n <td>8.017800e+06</td>\n <td>52.509586</td>\n </tr>\n <tr>\n <th>2012-01-24</th>\n <td>60.154286</td>\n <td>60.672857</td>\n <td>59.979999</td>\n <td>60.474285</td>\n <td>8.035857e+06</td>\n <td>52.745077</td>\n </tr>\n <tr>\n <th>2012-01-25</th>\n <td>60.440000</td>\n <td>60.958572</td>\n <td>60.270000</td>\n <td>60.749999</td>\n <td>7.776786e+06</td>\n <td>52.985553</td>\n </tr>\n <tr>\n <th>2012-01-26</th>\n <td>60.715714</td>\n <td>61.205714</td>\n <td>60.448571</td>\n <td>60.910000</td>\n <td>7.624814e+06</td>\n <td>53.125103</td>\n </tr>\n <tr>\n <th>2012-01-27</th>\n <td>60.868572</td>\n <td>61.361429</td>\n <td>60.575714</td>\n
},
"metadata": {},
"execution_count": 5
}
],
"source": [
"# Moyenne glissante sur 7 jours\n",
"df.rolling(7).mean().head(20)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:xlabel='Date'>"
]
},
"metadata": {},
"execution_count": 6
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"252.024627pt\" version=\"1.1\" viewBox=\"0 0 368.925 252.024627\" width=\"368.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n <cc:Work>\r\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n <dc:date>2020-12-01T22:26:35.333014</dc:date>\r\n <dc:format>image/svg+xml</dc:format>\r\n <dc:creator>\r\n <cc:Agent>\r\n <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n </cc:Agent>\r\n </dc:creator>\r\n </cc:Work>\r\n </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n <g id=\"patch_1\">\r\n <path d=\"M -0 252.024627 \r\nL 368.925 252.024627 \r\nL 368.925 0 \r\nL -0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n </g>\r\n <g id=\"axes_1\">\r\n <g id=\"patch_2\">\r\n <path d=\"M 26.925 203.04 \r\nL 361.725 203.04 \r\nL 361.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n </g>\r\n <g id=\"matplotlib.axis_1\">\r\n <g id=\"xtick_1\">\r\n <g id=\"line2d_1\">\r\n <defs>\r\n <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m2c312a53f9\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n </defs>\r\n <g>\r\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"41.809267\" xlink:href=\"#m2c312a53f9\" y=\"203.04\"/>\r\n </g>\r\n </g>\r\n <g id=\"text_1\">\r\n <!-- 2012 -->\r\n <g transform=\"translate(18.729076 229.34544)rotate(-30)scale(0.1 -0.1)\">\r\n <defs>\r\n <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n </defs>\r\n <use xlink:href=\"#DejaVuSans-50\"/>\r\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n <use x
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"df['Open'].plot()\n",
"df.rolling(window=30).mean()['Close'].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La façon la plus simple d'ajouter une légende est de faire de cette valeur de roulement une nouvelle colonne, puis pandas le fait automatiquement !"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:xlabel='Date'>"
]
},
"metadata": {},
"execution_count": 7
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 1152x432 with 1 Axes>",
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n <cc:Work>\r\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n <dc:date>2020-12-01T22:26:35.574178</dc:date>\r\n <dc:format>image/svg+xml</dc:format>\r\n <dc:creator>\r\n <cc:Agent>\r\n <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n </cc:Agent>\r\n </dc:creator>\r\n </cc:Work>\r\n </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n <g id=\"patch_1\">\r\n <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n </g>\r\n <g id=\"axes_1\">\r\n <g id=\"patch_2\">\r\n <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n </g>\r\n <g id=\"matplotlib.axis_1\">\r\n <g id=\"xtick_1\">\r\n <g id=\"line2d_1\">\r\n <defs>\r\n <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m46fc0698ec\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n </defs>\r\n <g>\r\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#m46fc0698ec\" y=\"300.96\"/>\r\n </g>\r\n </g>\r\n <g id=\"text_1\">\r\n <!-- 2012 -->\r\n <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n <defs>\r\n <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n </defs>\r\n <use xlink:href=\"#DejaVuSans-50\"/>\r\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n <use x=\
"image/png": "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Ht4kz99UJPAUQgghxFHPO07FbNBh0Cs4XZLxFOJEoKoqU6dOZezYsezevZstW7bwzDPPkJ2d3aLruPTSS9m4cSPr1q3jvvvu45577gGgoKCAxx9/nBUrVrBy5Uoef/xxCgsLgz7HCy+8wPr169m+fTsDBw5k3Lhx2O1Ns189OjqaJUuWAFBUVERWVlaTPG9TksBTCCGEEEc9b6mtyaDDqA+e8dx0sJhKu6ullyaEaEYLFizAaDRy8803+24bMGAAo0cH9j61Wq1cc8019O3bl4EDB7JgwQIANm/ezLBhwxgwYAD9+vVj586dAEyfPt13+0033YTLVffPjsjISN/fy8vLURQFgDlz5jBx4kRiY2OJiYlh4sSJ/Pbbb3U+l6Io3H333SQlJfHrr78C8I9//IMhQ4bQu3dvHn30UQDmz5/P1KlTfY+bO3cu5513XtDnvPjii/nyyy8B+O6772oc98ILLzB06FD69evne37QMqODBw+md+/evPfee77bw8PD+fe//03//v0ZMWJEkwT6DR2nIoQQQgjRanyBp16HUa/g8Mt4Wh0u7v92A9+vy+ShM3py/ehOrbVMIY5vv94PhzY27XMm9YXTnqv17k2bNjF48OB6n+bNN98EYOPGjWzbto1JkyaxY8cO3nnnHe68804uu+wy7HY7LpeLrVu3MnPmTJYsWYLRaOSWW25hxowZXHnllVx//fXcfPPNDBkyJOhrvPzyy9jtdv744w8ADh48SEpKiu+Y5OTkBpfQDho0iG3btnHOOefw9NNPExsbi8vlYsKECWzYsIHx48dz6623kpubS0JCAh999BHXXHNN0OeaMGECN9xwAy6Xiy+//JL33nuPJ598EoDff/+dnTt3snLlSlRV5eyzz2bRokWMGTOGDz/8kNjYWCorKxk6dCjnn38+cXFxlJeXM2LECJ5++mnuu+8+3n//fR566KEGva/aSMZTCCGEEEe9gD2e1TKeX60+wPfrMgHILbW1yvqEEK3rr7/+4oorrgCgR48edOjQgR07djBy5EieeeYZnn/+efbt20dISAjz589nzZo1DB06lAEDBjB//nz27NkDwAcffBA06AS49dZb2b17N88//zxPPfUUQMC+Si9vNrQ+/o/96quvGDRoEAMHDmTz5s1s2bIFRVG44oormD59OkVFRSxbtozTTjst6HPp9XpOPvlkZs6cSWVlJWlpab77fv/9d37//XcGDhzoC3a9md/XXnvNl9U8cOCA73aTycSZZ54JwODBg0lPT2/Qe6qLZDyFEEIIcdTzL7U1VOtqu2hHHqmxoZTbnJTZnK21RCGOf3VkJptL7969+eabb+o9LlgACNrezOHDhzN79mwmT57MBx98gKqqXHXVVTz77LNHtKaLL76Yf/zjH4CW4Vy4cKHvvoyMDMaOHdug5/n777+ZMGECe/fu5cUXX2TVqlXExMRw9dVXY7VaAbjmmms466yzsFgsTJs2DYOh9vDt4osvZurUqTz22GMBt6uqygMPPMBNN90UcPvChQuZN28ey5YtIzQ0lLFjx/pe12g0+gJovV6P09n4n62S8RRCCCHEUc/udKMoYNApGHVKQMYzo7CC7kkRhJkNlEvgKcRxZfz48dhsNt5//33fbatWreLPP/8MOG7MmDHMmDEDgB07drB//366d+/
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"df['Close: 30 Day Mean'] = df['Close'].rolling(window=30).mean()\n",
"df[['Close','Close: 30 Day Mean']].plot(figsize=(16,6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## expanding\n",
"\n",
"Maintenant, que faire si vous voulez tout prendre en compte depuis le début de la série temporelle comme valeur mobile ? Par exemple, ne prendre pas seulement en compte une période de 7 jours, ou une moyenne mobile mensuelle, mais prendre en compte plutôt tout ce qui s'est passé depuis le début de la série temporelle, de façon continue :"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:xlabel='Date'>"
]
},
"metadata": {},
"execution_count": 8
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 1152x432 with 1 Axes>",
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n <cc:Work>\r\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n <dc:date>2020-12-01T22:26:35.842166</dc:date>\r\n <dc:format>image/svg+xml</dc:format>\r\n <dc:creator>\r\n <cc:Agent>\r\n <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n </cc:Agent>\r\n </dc:creator>\r\n </cc:Work>\r\n </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n <g id=\"patch_1\">\r\n <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n </g>\r\n <g id=\"axes_1\">\r\n <g id=\"patch_2\">\r\n <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n </g>\r\n <g id=\"matplotlib.axis_1\">\r\n <g id=\"xtick_1\">\r\n <g id=\"line2d_1\">\r\n <defs>\r\n <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"ma7448ecc14\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n </defs>\r\n <g>\r\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#ma7448ecc14\" y=\"300.96\"/>\r\n </g>\r\n </g>\r\n <g id=\"text_1\">\r\n <!-- 2012 -->\r\n <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n <defs>\r\n <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n </defs>\r\n <use xlink:href=\"#DejaVuSans-50\"/>\r\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n <use x=\
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"# Facultatif : spécifier un nombre minimum de périodes\n",
"df['Close'].expanding(min_periods=1).mean().plot(figsize=(16,6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Les Bandes de Bollinger\n",
"\n",
"Nous parlerons plus tard beaucoup plus des graphiques d'analyse financière et des indicateurs techniques, mais en voici un qui mérite d'être mentionné !\n",
"\n",
"Plus d'informations : http://www.investopedia.com/terms/b/bollingerbands.asp\n",
"\n",
"*Développées par John Bollinger, les Bandes de Bollinger® sont des bandes de volatilité placées au-dessus et au-dessous d'une moyenne mobile. La volatilité est basée sur l'écart-type, qui change au fur et à mesure que la volatilité augmente et diminue. Les bandes s'élargissent automatiquement lorsque la volatilité augmente et se rétrécissent lorsque la volatilité diminue. Cette nature dynamique des Bandes de Bollinger permet également de les utiliser sur différents titres avec les paramètres standards. Pour les signaux, les Bandes de Bollinger peuvent être utilisées pour identifier les valeurs hautes et les valeurs basses ou pour déterminer la force de la tendance.*\n",
"\n",
"*Les Bandes de Bollinger reflètent la direction avec la SMA (Moyenne Mobile Simple) à 20 périodes et la volatilité avec les bandes supérieures/inférieures. Elles peuvent donc être utilisées pour déterminer si les prix sont relativement élevés ou bas. Selon Bollinger, les bandes devraient contenir 88-89% d'action sur les prix, ce qui rend significatif un mouvement en dehors des bandes. Techniquement, les prix sont relativement élevés lorsqu'ils se situent au-dessus de la bande supérieure et relativement bas lorsqu'ils se situent en dessous de la bande inférieure. Cependant, un niveau relativement élevé ne doit pas être considéré comme une baisse ou un signal de vente. De même, un cours relativement bas ne doit pas être considéré comme haussier ou comme un signal d'achat. Les prix sont élevés ou bas pour une raison. Comme pour les autres indicateurs, les bandes de Bollinger ne sont pas destinées à être utilisées comme un outil autonome.*"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<AxesSubplot:xlabel='Date'>"
]
},
"metadata": {},
"execution_count": 9
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 1152x432 with 1 Axes>",
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"349.944627pt\" version=\"1.1\" viewBox=\"0 0 926.925 349.944627\" width=\"926.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n <cc:Work>\r\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n <dc:date>2020-12-01T22:26:36.093166</dc:date>\r\n <dc:format>image/svg+xml</dc:format>\r\n <dc:creator>\r\n <cc:Agent>\r\n <dc:title>Matplotlib v3.3.1, https://matplotlib.org/</dc:title>\r\n </cc:Agent>\r\n </dc:creator>\r\n </cc:Work>\r\n </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n <g id=\"patch_1\">\r\n <path d=\"M 0 349.944627 \r\nL 926.925 349.944627 \r\nL 926.925 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n </g>\r\n <g id=\"axes_1\">\r\n <g id=\"patch_2\">\r\n <path d=\"M 26.925 300.96 \r\nL 919.725 300.96 \r\nL 919.725 7.2 \r\nL 26.925 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n </g>\r\n <g id=\"matplotlib.axis_1\">\r\n <g id=\"xtick_1\">\r\n <g id=\"line2d_1\">\r\n <defs>\r\n <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m1c1c40d03a\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n </defs>\r\n <g>\r\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"66.616378\" xlink:href=\"#m1c1c40d03a\" y=\"300.96\"/>\r\n </g>\r\n </g>\r\n <g id=\"text_1\">\r\n <!-- 2012 -->\r\n <g transform=\"translate(43.536188 327.26544)rotate(-30)scale(0.1 -0.1)\">\r\n <defs>\r\n <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n </defs>\r\n <use xlink:href=\"#DejaVuSans-50\"/>\r\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n <use x=\
"image/png": "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
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"df['Close: 30 Day Mean'] = df['Close'].rolling(window=20).mean()\n",
"df['Upper'] = df['Close: 30 Day Mean'] + 2*df['Close'].rolling(window=20).std()\n",
"df['Lower'] = df['Close: 30 Day Mean'] - 2*df['Close'].rolling(window=20).std()\n",
"df[['Close','Close: 30 Day Mean','Upper','Lower']].plot(figsize=(16,6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour les opérations d'expansion, il n'est pas très utile de visualiser cela par rapport aux données quotidiennes, mais c'est plutôt un bon moyen d'avoir une idée de la \"stabilité\" d'un titre. Cette idée de stabilité et de volatilité est quelque chose que nous allons explorer en profondeur dans le prochain projet, alors c'est parti !"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"name": "python3",
"display_name": "Python 3.7.9 64-bit ('pyfinance': conda)",
"metadata": {
"interpreter": {
"hash": "e89404a230d8800c54ad520c7b67d1bd9bb833a07b37dd3e521a178a3dc34904"
}
}
},
"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.7.9-final"
}
},
"nbformat": 4,
"nbformat_minor": 1
}