python-pour-finance/08-Analyse-Time-Series/2-EWMA-Moyennes-mobiles-pon...

435 lines
83 KiB
Plaintext
Raw Permalink Normal View History

2023-08-21 15:12:19 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# EWMA : Moyennes Mobiles Pondérées Exponentiellement"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"airline = pd.read_csv('airline_passengers.csv',index_col=\"Month\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"airline.dropna(inplace=True)\n",
"airline.index = pd.to_datetime(airline.index)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"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>Thousands of Passengers</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Month</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1949-01-01</th>\n",
" <td>112.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-02-01</th>\n",
" <td>118.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-03-01</th>\n",
" <td>132.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-04-01</th>\n",
" <td>129.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-05-01</th>\n",
" <td>121.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Thousands of Passengers\n",
"Month \n",
"1949-01-01 112.0\n",
"1949-02-01 118.0\n",
"1949-03-01 132.0\n",
"1949-04-01 129.0\n",
"1949-05-01 121.0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"airline.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SMA\n",
"## Moyenne Mobile Simple\n",
"\n",
"Nous avons déjà montré comment créer une moyenne mobile simple, pour une révision rapide:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"airline['6-month-SMA']=airline['Thousands of Passengers'].rolling(window=6).mean()\n",
"airline['12-month-SMA']=airline['Thousands of Passengers'].rolling(window=12).mean()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"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>Thousands of Passengers</th>\n",
" <th>6-month-SMA</th>\n",
" <th>12-month-SMA</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Month</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1949-01-01</th>\n",
" <td>112.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-02-01</th>\n",
" <td>118.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-03-01</th>\n",
" <td>132.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-04-01</th>\n",
" <td>129.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-05-01</th>\n",
" <td>121.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Thousands of Passengers 6-month-SMA 12-month-SMA\n",
"Month \n",
"1949-01-01 112.0 NaN NaN\n",
"1949-02-01 118.0 NaN NaN\n",
"1949-03-01 132.0 NaN NaN\n",
"1949-04-01 129.0 NaN NaN\n",
"1949-05-01 121.0 NaN NaN"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"airline.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x116b6eed0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"airline.plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# EWMA\n",
"## Moyennes Mobiles Pondérées Exponentiellement \n",
"\n",
"Nous venons de montrer comment calculer la moyenne mobile simple SMA à partir d'une période, mais la SMA de base a quelques \"faiblesses\".\n",
"* Des périodes plus petites entraîneront plus de bruit, plutôt que de signal.\n",
"* Elle sera toujours décalée par la taille de la période\n",
"* Elle n'atteindra jamais le sommet ou la vallée complète des données en raison du calcul de la moyenne.\n",
"* Ne vous informe pas vraiment sur les comportements futurs possibles, tout ce qu'elle fait vraiment c'est de décrire les tendances dans vos données.\n",
"* Des valeurs historiques extrêmes peuvent fausser votre SMA de manière significative.\n",
"\n",
"Pour aider à résoudre certains de ces problèmes, nous pouvons utiliser une moyenne mobile pondérée exponentielle (EWMA)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"EWMA nous permettra de réduire l'effet de décalage de la SMA et d'accorder plus de poids aux valeurs qui se sont produites plus récemment (en appliquant plus de poids aux valeurs plus récentes, d'où le nom). La quantité de poids appliquée aux valeurs les plus récentes dépendra des paramètres réels utilisés dans l'EWMA et du nombre de périodes correspondant à une taille de fenêtre.\n",
"[Tous les détails sur les mathématiques qui se cachent derrière cela peuvent être trouvés ici](http://pandas.pydata.org/pandas-docs/stable/computation.html#exponentially-weighted-windows)\n",
"Voici la version abrégée de l'explication de EWMA.\n",
"\n",
"La formule de EWMA est la suivante :"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$ y_t = \\frac{\\sum\\limits_{i=0}^t w_i x_{t-i}}{\\sum\\limits_{i=0}^t w_i} $"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Où x_t est la valeur d'entrée, w_i est le poids appliqué (notez comment il peut passer de i=0 à t), et y_t est la sortie.\n",
"\n",
"Maintenant la question est, comment définir le terme de poids w_i ?\n",
"\n",
"Cela dépend du paramètre d'ajustement que vous fournissez à la méthode .ewm().\n",
"\n",
"Lorsque l'ajustement est True (par défaut), les moyennes pondérées sont calculées à l'aide de poids :\n",
"\n",
"### $y_t = \\frac{x_t + (1 - \\alpha)x_{t-1} + (1 - \\alpha)^2 x_{t-2} + ...\n",
"+ (1 - \\alpha)^t x_{0}}{1 + (1 - \\alpha) + (1 - \\alpha)^2 + ...\n",
"+ (1 - \\alpha)^t}$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lorsque adjust=False est spécifié, les moyennes mobiles sont calculées comme suit :\n",
"\n",
"### $\\begin{split}y_0 &= x_0 \\\\\n",
"y_t &= (1 - \\alpha) y_{t-1} + \\alpha x_t,\\end{split}$\n",
"\n",
"ce qui équivaut à utiliser ces valeurs de poids :\n",
"\n",
" \\begin{split}w_i = \\begin{cases}\n",
" \\alpha (1 - \\alpha)^i & \\text{si } i < t \\\\\n",
" (1 - \\alpha)^i & \\text{si } i = t.\n",
"\\end{cases}\\end{split}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Quand adjust=True nous avons y0=x0 et à partir de la formule ci-dessus nous avons yt=αxt+(1-α)yt-1, donc il y a une hypothèse que x0 n'est pas une valeur ordinaire mais plutôt un moment pondéré exponentiellement de la série infinie jusque-là.\n",
"\n",
"Il faut avoir 0<α≤1, et bien que depuis la version 0.18.0 il soit possible de passer α directement, il est souvent plus facile de penser à la portée (span), au centre de masse (com) ou à la demi-vie (half-life) d'un moment pondéré exponetiellement :"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{split}\\alpha =\n",
" \\begin{cases}\n",
" \\frac{2}{s + 1}, & \\text{pour span}\\ s \\geq 1\\\\\n",
" \\frac{1}{1 + c}, & \\text{pour com}\\ c \\geq 0\\\\\n",
" 1 - \\exp^{\\frac{\\log 0.5}{h}}, & \\text{pour halflife}\\ h > 0\n",
" \\end{cases}\\end{split}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* span correspond à ce que l'on appelle communément une \"moyenne mobile pondérée exponentiellement au jour N\".\n",
"* com correspond a une interprétation plus physique et peut être considéré en termes de portée: c=(s-1)/2\n",
"* halflife est la période de temps pendant laquelle le poids exponentiel est réduit de moitié.\n",
"* alpha spécifie directement le facteur de lissage."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"airline['EWMA12'] = airline['Thousands of Passengers'].ewm(span=12).mean()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x116e9ed10>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"airline[['Thousands of Passengers','EWMA12']].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Super ! C'est tout pour l'instant, passons à la modélisation ARIMA !"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"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",
"version": "3.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}