Le modèle de régression est très utilisé en science sociale et subséquemment en économie – finance, notamment sous sa forme linéaire. Sans doute à cause de sa simplicité et de l’aisance de son interprétation. En effet, elle permet de mettre en relation une variable dite variable dépendante en fonction d’autres variables dites variables indépendantes. En l’occurrence, nous allons nous intéresser au cas d’une variable indépendante, c’est-à-dire que, nous verrons comment expliquer une variable par une autre d’où le qualificatif simple.
C’est en vue de l’implémentation du Modèle d’Évaluation des Actifs Financiers (MEDAF) avec MATLAB, que nous allons notamment voir en toute rigueur comment la forme simple de la régression linéaire est dérivé, comment ses paramètres sont estimés et enfin comment évaluer la pertinence d’un tel model.
Sommaire
- 1 Model de régression linéaire simple
- 1.1 Formulation et hypothèses
- 1.2 Estimation par la méthode des moindres carrés ordinaires
- 1.3 Coefficient de corrélation de Pearson et test de la relation linéaire
- 1.4 Décomposition de la variance et Coefficient de détermination
- 1.5 Test sur les paramètres de la régression linéaire simple
- 1.6 T - Test
- 1.7 Global F - Test
- 2 Implémentation du MEDAF avec MATLAB
Model de régression linéaire simple
Formulation et hypothèses
Nous voulons donc ajuster la distribution du couple de variables à une fonction sous la forme suivante :
$$ \begin{equation}y = \alpha + \beta x + \epsilon \end{equation}$$ : variable dépendante,variable de réponse, variable expliquée…
: variable indépendante, variable de contrôle, variable explicative ..
: terme d’erreur ou perturbation
: ordonnée à l’origine
: le coefficient directeur ou la pente de la droite de régression. En effet, quand augmente d’une unité, augmente/diminue de .
Remarquons que et sont des variables aléatoires mais observables sur la base d’un échantillon donné, par contre et sont estimés sous certaines conditions. Il nous reste qui est sensé capturer la partie de non expliquée par .
Parmi les hypothèses sur les quelles sont basées ce modèle, on note notamment que :
- – Linéarité : ceci revient à dire que le facteur de variation de la variable expliquée suite à une variation de la variable explicative est constant peu importe le niveau déjà atteint par cette dernière. Mathématiquement parlant c’est vérifier que la dérivée de , qui est une constante.
- – Normalité : le Terme d’erreur suit une loi normal de moyenne nulle et de variance .
- – Homoscédasticité : cette hypothèse traduit le fait que la variance doit rester constante et que la covariance entre les termes d’erreurs consécutifs dans le cas de séries temporelles est nulle.
Estimation par la méthode des moindres carrés ordinaires
En supposant que la relation entre et peut être décrite par un modèle linéaire simple, nous allons utiliser la méthode des moindres carrés ordinaires(MCO) pour déterminer les estimateurs des coefficients et . Sans trop tarder sur les détails statistiques relatifs aux estimateurs, la MCO, nous apprend que les estimateurs et des coefficients sont ceux qui minimisent la somme des carrés des résidus ou écarts ou sum of square error en anglais(SSE) soit :
$$\begin{equation}SSE(\alpha,\beta) =\sum_{i = 1}^{n}\epsilon_{i}^2 =\sum_{i = 1}^{n}(y_{i} -\hat{\alpha}-\hat{\beta}x_{i})^{2}\end{equation}$$ Typiquement pour une fonction à double variable (\(\hat{\beta} \) et \(\hat{\alpha}\)), il faudrait qu’au minimum de la fonction SSE, les dérivées partielles soient nulles $$\begin{cases}\frac{\partial SSE}{\partial \hat{\alpha}}=\displaystyle\sum_{i = 1}^{n}2[y_{i} -(\hat{\alpha}+\hat{\beta})](-1)= -2\displaystyle\sum y_{i} + 2\displaystyle\sum \hat{\alpha} + 2\displaystyle\sum\hat{\beta}x_{i} =0 \\ \frac{\partial SSE}{\partial \hat{\beta}}=\displaystyle\sum_{i = 1}^{n}2[y_{i} -(\hat{\alpha}+ \hat{\beta})](-x_{i}) = -2\displaystyle\sum x_{i} y_{i} + 2\displaystyle\sum\hat{\alpha}x_{i} + 2\displaystyle\sum\hat{\beta}x_{i}^{2}=0\end{cases}$$ et après une simplification par \(-2\) nous obtenons : $$\begin{cases}\displaystyle\sum_{i = 1}^{n}y_{i}-\displaystyle\sum_{i = 1}^{n}\hat{\alpha}-\hat{\beta}\displaystyle\sum_{i = 1}^{n}x_{i}=\displaystyle\sum_{i = 1}^{n}y_{i}-n\hat{\alpha}-\hat{\beta}\displaystyle\sum_{i = 1}^{n}x_{i}=0 \\ \displaystyle\sum_{i = 1}^{n}x_{i}y_{i}-\hat{\alpha}\displaystyle\sum_{i = 1}^{n}x_{i}-\hat{\beta}\displaystyle\sum_{i = 1}^{n}x_{i}^{2}=0 \end{cases}$$ ou $$\begin{cases} n\hat{\alpha}+\hat{\beta}\displaystyle\sum_{i = 1}^{n}x_{i} =\displaystyle\sum_{i = 1}^{n} y_{i} \\ \hat{\alpha}\displaystyle\sum_{i = 1}^{n} x_{i}+\hat{\beta}\displaystyle\sum_{i = 1}^{n}x_{i}^{2} =\displaystyle\sum_{i = 1}^{n}x_{i} y_{i}\end{cases}$$ La solution pour ces deux équations simultanées est : $$\begin{equation}\begin{split} n\hat{\alpha}=\sum y_{i}- \hat{\beta}\sum x_{i} & \Longrightarrow \hat{\alpha}=\frac{\sum y_{i} }{n} – \hat{\beta}\frac{\sum x_{i}}{n} \\ & \Longrightarrow \hat{\alpha}=\bar{y}-\hat{\beta}\bar{x}\end{split}\end{equation}$$ Une fois que nous avons déterminé \(\hat{\alpha}\), nous pouvons le remplacer par son expression dans la deuxième équation : $$ \begin{equation}\begin{split}\hat{\beta}\displaystyle\sum x_{i}^{2} &= \displaystyle\sum x_{i} y_{i} -\hat{\alpha}\displaystyle\sum x_{i}=\displaystyle\sum x_{i} y_{i} -(\bar{y}- \hat{\beta}\bar{x})\displaystyle\sum x_{i} \\ &=\displaystyle\sum x_{i} y_{i}-\bar{y}\displaystyle\sum x_{i} +\hat{\beta}\hat{x}\displaystyle\sum x_{i} \\ &=\displaystyle\sum x_{i} y_{i}-\frac{(\sum x_{i})(\sum y_{i})}{n}+\hat{\beta}\frac{(\sum x_{i})^2}{n} \\ \hat{\beta}\Biggl[\displaystyle\sum x_{i}^{2}-\frac{(\sum x_{i})^2}{n}\Biggr] &=\displaystyle\sum x_{i} y_{i} -\frac{(\sum x_{i})(\sum y_{i})}{n} \end{split}\end{equation}$$ et comme nous savons que la moyenne des produits de \(x\) par \(y\), \(\overline{xy}=\frac{\sum x_i y_i}{n}\), le produit des moyennes \(\bar{x}\bar{y} = \frac{(\sum x_{i})(\sum y_{i})}{n^{2}} \) et que la moyenne des carrés de \(x\), \(\overline{x^2}=\frac{\sum x_{i}^{2}}{n}\), nous pouvons réécrire l’équation \((4)\) comme ce-ci : $$\begin{equation*} \hat{\beta}\Biggl[n(\overline{x^2})-n(\bar{x}^2)\Biggr] =n(\overline{xy})-n(\bar{x}\bar{y})\end{equation*}$$ En simplifiant par \(n \) et en notant que \(\overline{xy}-\bar{x}\bar{y}\) et \(\overline{x^2}-\bar{x}^2\), sont respectivement la covariance de \(x \) et \(y\), notée \(\sigma_{xy}\) et la variance de \(x\), notée \(\sigma^{2}_{x}\), on obtiendra donc : $$ \begin{equation}\hat{\beta}= \frac{\sigma_{xy}}{\sigma_{x}^2} \end{equation}$$
Remarquez jusqu’ici que nous avons pris le soin de noter et au lieu de et , c’est pour être statistiquement correcte à partir du moment où les premiers sont les estimateurs. Nous n’allons pas le démontrer mais est un bon estimateur de car et de variance . Il en est de même pour qui a une variance de où ou comme nous allons le démontrer au point sur la décomposition de la variance plus bas. On peut donc à partir des racines carrées des variances, déterminer les écart-types ou Standard Error qui servent à construire notamment des intervalles de confiances autour de nos coefficients.
Coefficient de corrélation de Pearson et test de la relation linéaire
Jusqu’ici, nous avons dérivé les coefficients \(\alpha\) et \(\beta\) de la droite de régression ou plus rigoureusement leurs estimateurs. Nous avons mentionné plus haut que la covariance \(\sigma_{xy}\) et \(\beta\) nous permettaient de mettre en évidence le sens de la relation entre \(y\) et \(x\) et mieux encore que \(\beta\) était le facteur constant d’augmentation ou de diminution de \(y\) quand \(x\) évolue d’une unité. Subséquemment, il est possible de comprendre que plus \(\lvert \sigma_{xy}\rvert\) ou \(\lvert \beta \rvert\) sera élevé ou important, plus élevé ou important sera l’impact de \(x\) sur \(y\). De la, on pourrait être tenté de prendre l’un ou l’autre de \(\sigma_{xy}\) ou de \(\beta\) pour mesurer l’importance ou l’intensité de la relation entre \(x\) et \(y\) notamment à des fins de comparaisons entre plusieurs variables indépendantes. Malheureusement, ces mesures dépendent fortement des échelles ou des unités des variables, plus précisément de celles et la covariance peut prendre n’importe qu’elle valeur dans l’ensemble des réels, auquel cas il serait donc aberrant de vouloir comparer des covariances entre elles.
Au vu de ces inconvénients, on peut déterminer une autre mesure qui, elle a l’avantage d’être normalisée. Il s’agit du coefficient de corrélation de Pearson \(\rho_{xy}\) qui permet de mesurer la force ou l’intensité de la liaison entre les variables \(x\) et \(y\) et qui n’excède jamais 1 en valeur absolue. Il se calcule comme suit :$$\begin{equation}\rho_{xy} = \frac{\sigma_{xy}}{\sigma_{x}\sigma_{y}}\end{equation}$$
En effet, on peut à travers l’inégalité de Cauchy-Schwarz, montrer que \(\rho_{xy}\) est toujours compris entre -1 et 1. D’après cette inégalité on peut écrire ce qui suit : $$\begin{equation}\overline{ab}^{2}\le \bar{a}^2\bar{b}^2\end{equation}$$ ainsi, en posant que et , et en observant que , et sont en fait, les formules originales(par ce que pour la formulation de l’équation \((5)\), nous avons opter pour leur formule développée), respectivement de la covariance \(\sigma_{xy}\), de la variance de \(x\), \(\sigma_{x}\) et de la variance de \(y\), \(\sigma_{y}\), alors on peut réécrire l’inéquation \((7)\) comme ceci : $$\begin{gather*}\overline{(x-\bar{x})(y-\bar{y})}^{2}\le\overline{(x-\bar{x})}^2\overline{(y-\bar{y})}^2 \\ \sigma_{xy}^2\le\sigma_{x}^2\sigma_{y}^2 \\ \lvert\sigma_{xy}\rvert\le\sigma_{x}\sigma_{y} \\ -\sigma_{x}\sigma_{y}\le\sigma_{xy}\le\sigma_{x}\sigma_{y} \\ -1\le\frac{\sigma_{xy}}{\sigma_{x}\sigma_{y}}\le 1 \\ -1\le\rho_{xy}\le 1\end{gather*}$$ Il s’interprète comme ceci :
– si \(\rho_{xy}\) tend vers -1, il existe une forte relation linéaire négative entre \(x\) et \(y\)
– si \(\rho_{xy}\) tend vers 1, il existe une forte relation linéaire positive entre \(x\) et \(y\)
– si \(\rho_{xy}\) est proche de 0, on dit de la relation linéaire entre \(x\) et \(y\), qu’elle est faible. De manière générale en pratique dès lorsque , on qualifie la liaison de forte, mais bon c’est relatif.
Décomposition de la variance et Coefficient de détermination
Avec les estimateurs et obtenus ci-dessous, nous pouvons connaissant la moyenne de , déterminer avec précision la moyenne de , ( voir l’équation (3)) et de manière générale connaissant une observation donnée on peut prédire une valeur , mais différente de la valeur de de . Ainsi, formellement ça donne : $$\begin{equation}y_i =\hat{y}_i + \hat{\epsilon}_i\end{equation}$$ De la, nous pouvons en effectuant les opérations suivantes dans l’ordre obtenir la variance totale de y et sa décomposition : il s’agit de soustraire de chaque côté de l’équation et ensuite d’élever chaque membre au carré puis de sommer le résultat pour chaque valeur de jusqu’à latex]n [/latex] : $$\begin{equation}\begin{split}y_i &=\hat{y}_i + \hat{\epsilon}_i \\ y_i – \bar{y} &=\hat{y}_i – \bar{y} + \hat{\epsilon}_i \\ (y_i – \bar{y})^2 &=((\hat{y}_i – \bar{y}) + \hat{\epsilon}_i)^2 \\ \sum_{i = 1}^n(y_i – \bar{y})^2 &=\sum_{i = 1}^n\Bigl((\hat{y}_i – \bar{y}) + \hat{\epsilon}_i\Bigr)^2 \\ \sum_{i = 1}^n(y_i – \bar{y})^2 &=\sum_{i = 1}^n\Bigl((\hat{y}_i – \bar{y}) + \hat{\epsilon}_i\Bigr)^2 \\ &=\sum_{i = 1}^n\Bigl((\hat{y}_i – \bar{y})^2 + \hat{\epsilon}_i^2 + 2(\hat{y}_i – \bar{y})\hat{\epsilon}_i\Bigr) \\ &=\sum_{i = 1}^n(\hat{y}_i – \bar{y})^2 + \sum_{i = 1}^n\hat{\epsilon}_i^2 +\underbrace{2\sum_{i = 1}^n(\hat{y}_i – \bar{y})\hat{\epsilon}_i}_{0} \end{split}\end{equation}$$ Et si l’on ne comprend pas pourquoi le membre le plus à droite est nul, on peut commencer par ceci : partons de l’équation qui implique que et de l’équation qui implique que , et montrons ensuite que la différence et puis intercalons dans l’expression suivante : , on peut ainsi réécrire que et pour finir avec une version plus “malléable” . Maintenant, avec ce que l’on sait, on peut facilement conclure de la nullité de la double somme : $$\begin{equation*}\begin{split}2\sum_{i = 1}^n(\hat{y}_i-\bar{y})\hat{\epsilon}_i &=2\sum_{i = 1}^n\hat{\beta}(x_i-\bar{x})\Bigl((y_i-\bar{y})-\hat{\beta}(x_i-\bar{x})\Bigr) \\ &=2\hat{\beta}\Bigl(\displaystyle\sum_{i = 1}^n(y_i-\bar{y})(x_i-\bar{x})-\hat{\beta}\displaystyle\sum_{i = 1}^n(x_i-\bar{x})^2\Bigr) \\ \text{Et comme }\hat{\beta} &=\frac{\sigma_{xy}}{\sigma_{x}^2}=\displaystyle\sum_{i = 1}^n\frac{(y_i-\bar{y})(x_i-\bar{x})}{(x_i-\bar{x})^2}=\frac{\sum_{i = 1}^n(y_i-\bar{y})(x_i-\bar{x})}{\sum_{i = 1}^n(x_i-\bar{x})^2} \\ &=2\hat{\beta}\Bigl(\sum_{i = 1}^n(y_i-\bar{y})(x_i-\bar{x})-\frac{\sum_{i = 1}^n(y_i-\bar{y})(x_i-\bar{x})}{\sum_{i = 1}^n(x_i-\bar{x})^2}\sum_{i = 1}^n(x_i-\bar{x})^2\Bigr) \\ &=2\hat{\beta}\underbrace{\Bigl(\sum_{i = 1}^n(y_i-\bar{y})(x_i-\bar{x})-\sum_{i = 1}^n(y_i-\bar{y})(x_i-\bar{x}) \Bigr)}_{0}\end{split}\end{equation*}$$ ceci étant fait nous revenons à notre équation dans la quelle nous allons remplacer par son expression pour obtenir finalement notre variance ou la somme des carrés totaux décomposée comme ceci : $$\begin{equation}\underbrace{\sum_{i = 1}^n(y_i-\bar{y})^2}_{SCT}=\underbrace{\sum_{i = 1}^n(\hat{y}_i-\bar{y})^2}_{SCE}+\underbrace{\sum_{i = 1}^n(y_i-\hat{y}_i)^2}_{SCR}\end{equation}$$ Ainsi nous avons démontré que la somme des carrés totaux (SCT) (il suffirait de diviser cette dernière par pour obtenir la formule de la variance) est égale à la somme des carrés expliqués (SCE), qui exprime la part de variation de que notre modèle, a le mérite d’expliquer, plus la somme des carrés résiduels(SCR), qui est la part non expliquée par le modèle et absorbée par le terme d’erreur.
Ainsi, il devient automatique de comprendre qu’un bon modèle devrait avoir une proportion de SCE dans SCT, plus importante que celle de SCR. Cette part qu’on appelle coefficient de détermination, mesure donc la qualité de prédiction de notre modèle de régression linéaire :$$\begin{equation}\begin{split}R^2 &=\frac{SCE}{SCT} \text{ ou encore }R^2=1-\frac{SCR}{SCT} \\ &=\frac{\sum_{i = 1}^n(\hat{y}_i-\bar{y})^2}{\sum_{i = 1}^n(y_i-\bar{y})^2}\\ &= \frac{\sum_{i = 1}^n\Bigl((\hat{\alpha}+\hat{\beta}x_i)-(\hat{\alpha}+\hat{\beta}\bar{x})\Bigr)^2}{\sum_{i = 1}^n(y_i-\bar{y})^2} \\ &=\hat{\beta}^2\frac{\sum_{i = 1}^n(x_i-\bar{x}) ^2}{\sum_{i = 1}^n(y_i-\bar{y})^2} \\ &=\Bigl(\frac{\sum_{i = 1}^n(y_i-\bar{y})(x_i-\bar{x})}{\sum_{i = 1}^n(x_i-\bar{x})^2}\Bigr)^2\frac{\sum_{i = 1}^n(x_i-\bar{x}) ^2}{\sum_{i = 1}^n(y_i-\bar{y})^2} \\ &=\Bigl(\frac{n\sigma_{xy}}{n\sigma_x^2}\Bigr)^2\frac{n \sigma_x^2}{ n\sigma_y^2} \\ &=\Bigl(\frac{\sigma_{xy}}{\sigma_x \sigma_y}\Bigr)^2 \\ R^2&=\rho_{xy}^2\end{split}\end{equation}$$ On remarque donc que ce coefficient de détermination n’est d’autre que le carré du coefficient de corrélation. Plus il sera proche de la valeur 1, meilleur sera le modèle, ce qui veut dire que la connaissance des valeurs de permet de prédire avec plus de précision celle de . On peut par ailleurs, calculer le coefficient de détermination ajusté qui est plus robuste que son précédent qui à tendance à augmenter avec le nombre de variables indépendantes : $$R_{Adjusted}^2 =1-(1-R^2)\frac{n-1}{n-k-1}$$ où est le nombre de variables indépendantes dans notre cas .
Test sur les paramètres de la régression linéaire simple
Vous vous doutez bien que les mesures et les coefficients que nous avons calculé jusqu’ici vont être soumis à des tests pour juger notamment de leur significativité. Ici, nous allons nous intéresser au coefficient puisse qu’en grande partie, de la robustesse de ce dernier dépendra la pertinence de notre modèle donc ça validité. Pour ce faire, nous pouvons recourir au T- test , pour contrôler la significativité des coefficients individuellement(nous allons voir le cas de beta mais dans l’application nous verrons les deux) ou recourir au test de significativité globale F-test qui lui porte directement sur le modèle dans sa globalité.
Pour qu’il existe une relation linéaire significative entre x et y, il faut que \beta soit différent de 0. Avant d’effectuer ce test, il faut d’abord vérifier que les valeurs sont indépendantes et suivent une loi normale centrée et de variance (inconnue). Ce ci peut être vérifié grâce un test de normalité comme celui de le test de Shapiro – Wilk.
Lorsque ce ci est fait, on peut passer à l’élaboration des hypothèses de notre test :
, il n’y a pas de relation linéaire
, il existe une relation linéaire
Ensuite nous allons déterminer la statistique du test. En effet, si l’hypothèse nulle est vraie, alors la statistique suit une loi de Student de de dégré liberté.Notez que
Règle de décision : Pour un niveau de risque donné (à ne pas confondre avec notre ordonnée à l’origine. En effet, est la probabilité de rejet de si cette dernière est vraie ou le risque d’erreur de première espèce), on lit le seuil critique , dans la table de Student et si , alors on peut rejeter et conclure que est significativement différent de 0. L’autre option, est de passer par la détermination du si et si . Dans ce cas on rejette quand .
Comme alternative au T- Test, nous avons le F- Test, qui découle du tableau de l’Analyse de la Variance(Analysis of variance, ANOVA) que nous présentons ci-dessous :
Source de variation | Somme des carrés | Degré de liberté | Carrés moyens | F de Fisher |
---|---|---|---|---|
Expliquée | ||||
Residuelle | ||||
Totale |
Où représente le nombre de variables indépendantes. Dans notre cas . Les hypothèses de bases restent les mêmes :
, il n’y a pas de relation linéaire
, il existe une relation linéaire
Ici la statistique , suit une loi de Fisher de degré de liberté au numérateur et au dénominateur.
Règle de décision : On rejettera , si ou si avec (On peut lire la valeur critique dans la table de Fisher).
Implémentation du MEDAF avec MATLAB
Le MEDAF en bref
Le MEDAF ou Modèle d’Évaluation Des Actifs Financiers, fait partie des modèles les plus connus en théorie financière. Il a été développé respectivement par Treynor, Sharpe, Lintner et Mossin. Ce modèle se base sur la théorie du portefeuille de Harry Markowitz, qui a le mérite d’avoir spécifié les critères de choix d’un actif financier et de manière plus général d’un portefeuille comme étant leur rendement et leur variance ou risque(En effet, plus un titre est risqué plus son rendement est élevé, et vis versa). Ce dernier critère se décompose en risque spécifique qui peut être neutralisé grâce à la technique de diversification de portefeuille et en risque systématique, dont l’on ne peut s’en défaire. A l’aune de cette analyse, lorsque les hypothèses suivantes sont vérifiées, notamment :
- – Marché des capitaux parfait : Absence coûts de transaction, un investisseur peut acheter ou vendre à découvert n’importe quelle action sans que cela ait une incidence sur le prix de l’action.Il n’y a pas de taxes.
- – Prévisions homogènes (tous les investisseurs ont les mêmes anticipations de rentabilités,
d’écarts types et de corrélations).
le MEDAF, statue qu’à l’équilibre le rendement exigé pour un titre risqué(donc qui contient un risque systématique) devrait surpasser/excéder le rendement de l’actif sans risque d’une prime de risque. Cette prime ne rémunère que le noyau dur du risque à savoir le risque systématique dans une proportion déterminée par le beta (sans doute la plus fameuse des lettres grecques en finance, loin devant les Greeks des dérivés ). Formellement, l’espérance de rendement d’un titre donne :$$\begin{equation}E[R_{j}]=R_{risk free}+\beta _{j}(E[R_{Market}]-R_{risk free})\end{equation}$$ où et représentent respectivement le rendement de l’actif sans risque généralement le taux de bonds de trésor et le rendement du marché. Ce modèle est extrêmement utilisé pour déterminer le coût des fonds propres et donc du capital d’une société, dans le cadre de la politique d’investissement en évaluation de projet ou de société d’où son appellation. Il a néanmoins fait l’objet de nombreuses critiques, certains lui préfèrent les modèles par arbitrage ou multifactoriels…
Par ailleurs, nous pouvons réécrire l’équation de la manière suivante : $$\begin{equation}\underbrace{E[R_{j}]-R_{risk free}}_{\text{prime de risque de l’actif j}}=\beta_{j}\underbrace{(E[R_{Market}]-R_{risk free})}_{\text{prime de risque du marché}}\end{equation}$$, C’est à l’aune de cette expression de l’équation du MEDAF, que nous pouvons estimer comme étant la pente de la droite de régression linéaire de l’excédent de rentabilité ou prime de risque(interprétation financière) d’un titre par rapport à l’excédent de rentabilité ou prime de risque du marché. Ainsi, par simple rappel de ce qui a été démontré, concernant la pente d’une droite de régression linéaire, peut s’exprimer comme ceci : $$\begin{equation}\beta_j=\displaystyle\sum_{i=1}^n\frac{(R_j^i-E[R_j])(R_{Market}^i-E[R_{Market}])}{(R_{Market}^i-E[R_{Market}])^2}=\frac{\sigma_{j,Market}}{\sigma_{Market}^2}\end{equation}$$ grâce à la MCO. Autrement dit, , n’est que le coefficient directeur de la droite de régression simple des rendements d’un titre par rapport aux rendements du marché. Ainsi, son estimation doit être suivie de l’ensemble des tests de significativités précédemment exposés.
Importation des données financières et calcul des rendements
Pour implémenter notre modèle nous allons importer les cours depuis Yahoo Finance qui est une plateforme à ne plus présentée. Pour ce faire, nous allons utiliser la fonction hist_stock_data(), que l’on peut trouver ici. Faites un copier coller de la fonction dans un fichier script nommé hist_stock_data.m ou si cela vous semble trop long à faire vous pouvez télécharger directement une copie ici. Ce fichier doit être bien entendu placé dans le répertoire courant de travail.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
>> dateBeg = '01012010'; % date de debut >> dateEnd = '30092016'; % date de fin >> symbols = {'AAPL','MSFT','^GSPC','^IRX'}; >> % Télécharger des données mensuelles depuis début 2010 à fin 2015 >> data = hist_stock_data(dateBeg,dateEnd,symbols{:},'frequency','m'); >> data data = 1x5 struct array with fields: Date Open High Low Close Volume AdjClose Ticker |
Nous avons téléchargé les données de cours mensuels, relatives à Apple(AAPL), Microsoft(MSFT), l’indice composite Standard & Poor 500 et au taux de bonds de trésors Américains de maturité 3 mois(IRX). Les deux premiers cours, nous permettront de déterminer les rendements des titres(stockReturn) alors que les deux derniers feront offices de calcul du rendement du marché(marketReturn) et du taux de l’actif sans risque(riskFreeRate).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
>> dates = flipud(datenum(data(1).Date(1:(end-1)))); % extraire les dates >> N = size(dates,1); >> riskyReturn = nan(N,3); % pour contenir les rendements des titres risqués >> for j = 1:3 P = flipud(data(j).AdjClose); for i = 2:(N+1) riskyReturn(i-1,j)= (P(i)-P(i-1))/P(i-1);% calcul de rendement [P(i)-P(i-1)]/P(i-1) end end >> % nos données finales qui vont servir au calcul des excédents de rendement >> stockReturn = riskyReturn(:,1:2); % extraire les rendements de Apple & Microsoft >> marketReturn = riskyReturn(:,3); % mettre à part le rendement de l'indice du marché >> riskFreeRate = (1 + flipud(data(4).AdjClose(1:N)/100)).^(1/12)-1; % rendre mensuel les taux |
Concernant le calcul des rendements, nous avons le choix entre le mode de calcul ordinaire et le mode log-return .
Description statistique et visualisation des séries financières
Maintenant nous allons voir les indicateurs statistiques des rendements. Pour se faire et éviter de calculer à chaque fois ces statistiques pour chaque titre, nous allons concevoir la fonction describe() comme ceci :
1 2 3 4 5 6 7 8 9 |
function[output] = describe(x,colnames) mesures ={'Min.','1st.Q.','Mean.','Median.',... '3rd.Q','Max.','Var.','Std.','Kurtosis',... 'Skewness'}; output = array2table([min(x); quantile(x,0.25); mean(x); ... median(x); quantile(x,0.75); max(x) ;var(x);... std(x) ;kurtosis(x); skewness(x)],'VariableNames',... colnames,'RowNames',mesures); end |
Bien entendu cette fonction doit être mise dans le fichier describe.m. nous pouvons ensuite visualiser et les rendements et les statistiques :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
>> plot(dates,[stockReturn marketReturn]) >> datetick 'x' >> xlabel('dates') >> ylabel('Monthly Returns') >> title('Apple, MSFT stock and S&P 500 index return from 2010 to 2016') >> set(gca,'xLim',[dates(1) dates(end)]) >> legend('AAPL','MSFT','S&P500','Location','northwest') >> describe([stockReturn marketReturn riskFreeRate],{'Apple','Microsoft','S_P500','Risk_free_Rate'}) ans = Apple Microsoft S_P500 Risk_free_Rate _________ _________ _________ ______________ Min. -0.14409 -0.15139 -0.081976 2.5e-06 1st.Q. -0.021653 -0.033295 -0.01504 1.5832e-05 Mean. 0.021875 0.013339 0.0093692 7.0073e-05 Median. 0.021186 0.019288 0.010776 5.1236e-05 3rd.Q 0.074735 0.055117 0.031644 0.00011243 Max. 0.18831 0.19626 0.10772 0.00026628 Var. 0.0053599 0.0045232 0.001364 4.624e-09 Std. 0.073212 0.067255 0.036932 6.8e-05 Kurtosis 2.6706 3.3335 3.1718 3.8596 Skewness -0.077301 0.2139 -0.10219 1.2376 |
Nous avons obtenus les indicateurs de tendance centrale, de dispersion et de forme. Faites votre interprétation ! Voici le graphique présentant l’évolution des rendement :
Détermination du beta et test de la pertinence du MEDAF
Nous allons dans un premier déterminer les excédents de rendement pour nos deux titres et pour l’indice du marché. Il s’agit de soustraire des rendements des titres, celui de l’actif sans risque :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
close all; % calcul des excédents de rentabilité excessReturnX = marketReturn - riskFreeRate; excessReturnY = stockReturn - [riskFreeRate riskFreeRate]; % visualisation par nuages de points figure('Position',[500 500 750 350]) a = gobjects(1,2); s = gobjects(1,2); col = {'r','b'}; for i=1:2 a(i) = subplot(1,2,i); s(i) = scatter(excessReturnX,excessReturnY(:,i),'filled'); s(i).LineWidth = 0.6; s(i).MarkerEdgeColor = col{i}; s(i).MarkerFaceColor = [0 0.5 0.5]; end xlabel(a(1),'S&P 500 Excess return'); ylabel(a(1),'Apple Excess Return'); xlabel(a(2),'S&P 500 Excess return'); ylabel(a(2),'Microsoft Excess Return'); |
Du code ci-dessous nous obtenons les nuages de points suivants : en abscisse les excédents de rentabilité de l’indice de rentabilité et en ordonnée les excédents respectifs des rentabilités de Apple et de Microsoft :
Pour la détermination des coefficients de la droite de régression et la réalisation test, si l’on dispose des packages Statistic ou Econometric, il sera dans l’embarras de choix pour la fonction à utiliser. En effet, nous avons de manière non exhaustive regress(), regstats(), fitlm(). Nous allons opter pour une méthode manuelle et construire nous même une fonction slregression() (comme toujours, il faudrait le mettre dans un fichier script à part, nommé slregression.m):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
function[model, anova] = slregression(x,y) covxy = cov(x,y); coef_beta = covxy(1,2)/var(x); % calcul de beta coef_alpha = mean(y) - coef_beta*mean(x); % calcul de alpha y_model = coef_alpha + x*coef_beta; % calcul des y_model = b + aX SCE = sum((y_model - mean(y)).^2); % Somme des carres expliques CME = SCE/1; % Carres moyen expliquees SCR = sum((y - y_model).^2); % Sommes des carrees residuels CMR = SCR/(length(x)-2); % Carres moyen residuel SCT = sum((y - mean(y)).^2); % Somme des carres totaux coef_rcarre = SCE/SCT; % Calcul du coefficient de determination coef_rcarreadj = 1-(1-coef_rcarre)*(length(x)-1)/(length(x)-2); % coefficient R^2 adj SCX = sum((x- mean(x)).^2); % Sommes des carres de x stderrorbeta = sqrt(CMR/SCX); % ecart type ou standard error de beta stderroralpha = sqrt(CMR*(1/length(x)+mean(x)^2/SCX)); % ecart type ou standard error de alpha t_beta= coef_beta/stderrorbeta; % t_statistic pour beta t_alpha = coef_alpha/stderroralpha; % t_statistic pour alpha tdist2T = @(t,v) (1-betainc(v/(v+t^2),v/2,0.5)); % t_probbeta = 1-tdist2T(t_beta,length(x)-2); % pvalue t_beta t_probalpha = 1-tdist2T(t_alpha,length(x)-2); % pvalue t_alpha à comparer avec taux risque f_statistic = CME/CMR; % F statistic f_probability = f_pdf(f_statistic,1,length(x)-2); % la pvalue associée à F statistic % Mise en forme du model coefficients = ['alpha ' ;'beta ';'R^2 ';'R^2 adj']; Estimate = [coef_alpha ;coef_beta;coef_rcarre;coef_rcarreadj]; StdError = [stderroralpha;stderrorbeta;0;0]; t_value =[t_alpha ;t_beta;0;0]; P_value =[t_probalpha;t_probbeta;0;0]; model=table(coefficients,Estimate,StdError,t_value,P_value); % Mise en forme du tableau ANOVA Source = ['regression'; 'residual '; 'Total ']; df = [ 1 ; length(x)-2 ; length(x)-1]; SS = [ SCE ; SCR ; SCT]; MS = [CME ; CMR ; 0 ]; F = [f_statistic; 0 ; 0]; P_value = [f_probability; 0; 0]; anova=table(Source,df,SS,MS,F,P_value); end function y = f_pdf( f, n, dl) % fonction de probabilité pour la loi de fisher tst = dl/(dl+n*f); if tst == 0 tst = tst + 0.0001; elseif tst == 1 tst = tst - 0.0001; end; y = betainc(tst,.5*dl,.5*n); end |
On peut maintenant passer à l’implémentation comme ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
>> [model_aapl anova_aapl]= slregression(excessReturnX,excessReturnY(:,1)) model_aapl = coefficients Estimate StdError t_value P_value ____________ ________ _________ _______ __________ alpha 0.012554 0.0073503 1.708 0.091608 beta 0.99477 0.19414 5.1239 2.1136e-06 R^2 0.25183 0 0 0 R^2 adj 0.24224 0 0 0 anova_aapl = Source df SS MS F P_value __________ __ _______ _________ ______ __________ regression 1 0.10663 0.10663 26.255 2.1136e-06 residual 78 0.31679 0.0040614 0 0 Total 79 0.42342 0 0 0 >> [model_msft anova_msft]= slregression(excessReturnX,excessReturnY(:,2)) model_msft = coefficients Estimate StdError t_value P_value ____________ _________ _________ _______ _________ alpha 0.0029004 0.0061727 0.46988 0.63975 beta 1.115 0.16304 6.8392 1.591e-09 R^2 0.37487 0 0 0 R^2 adj 0.36686 0 0 0 anova_msft = Source df SS MS F P_value __________ __ _______ _________ ______ _________ regression 1 0.13397 0.13397 46.775 1.591e-09 residual 78 0.22341 0.0028643 0 0 Total 79 0.35739 0 0 0 >> subplot(1,2,1); >> s1=scatter(excessReturnX,excessReturnY(:,1),'filled'); >> s1.LineWidth = 0.6; >> s1.MarkerEdgeColor = col{1}; >> s1.MarkerFaceColor = [0 0.5 0.5]; >> hold on >> x = -0.1:0.001:0.15; >> y = 0.012554 + 0.99477*x; >> plot(x,y,'LineWidth',2,'Color','r'); >> xlabel('S&P 500 Excess return'); >> ylabel('Apple Excess Return'); >> title('Modele lineaire avec beta = 0.99477'); >> subplot(1,2,2); >> s2=scatter(excessReturnX,excessReturnY(:,2),'filled'); >> s2.LineWidth = 0.6; >> s2.MarkerEdgeColor = col{2}; >> s2.MarkerFaceColor = [0 0.5 0.5]; >> hold on >> x = -0.1:0.001:0.15; >> y = 0.0029004 + 1.115*x; >> plot(x,y,'LineWidth',2,'Color','r'); >> xlabel('S&P 500 Excess return'); >> ylabel('Microsoft Excess Return'); >> title('Modele lineaire avec beta = 1.115'); |
On obtient les nuages de points suivants :
Interprétation
Comme prévu par le MEDAF, le coefficient alpha des deux titres est très proche de 0 avec des P-value dépassant de loin le niveau de risque de 5%( 0.091608> 0.05 et 0.63975> 0.05)notamment pour MSFT, on peut donc accepter , l’hypothèse de nullité du coefficient alpha avec un intervalle de confiance de 95%. Concernant notre coefficient vedette beta, il est très significatif pour les deux titres, au vu des P-value largement en dessous de notre niveau de risque de 5%(2.1136e-06 < 0.05 et 1.591e-09 < 0.05).
Nos conclusions tendent à conforter le niveau de pertinence du MEDAF à expliquer l’évolution des rendements des titres par le seul fait du risque systématique(le marché) et ceci d’autant plus que les P-value associés aux tests de significativité globale du modelé sont très faibles.
Par ailleurs, on peut observer que les betas des deux sociétés sont positifs et tournent autour de 1 à l’égard du beta de l’indice lui même (qui doit valoir 1), et les rendements ont comportement très similaires à celui de l’indice S&P 500. Cet état des faits n’est pas un hasard étant donné que Apple et Microsoft sont les deux plus grosses capitalisations qui composent cet indice(Au moins en 2015).
Toutefois, le taux de détermination est très faible. En effet, notre modèle n’explique que 24% de l’évolution du rendement de Apple et 36% de celle des rendements de Microsoft. C’est dire combien la prise en compte d’une seule variable reste insuffisante et qu’il serait peut être judicieux d’investiguer dans des modèles multifactoriels comme l‘APT.
1 2 3 4 5 |
table <- read.table('table.txt',header =T) summary(mdl.aapl <- lm(AAPL ~ SP500,data = table)) anova(mdl.aapl) summary(mdl.msft <- lm(MSFT ~ SP500,data = table)) anova(mdl.msft) |