D'une formule à une régression complète
statsmodels.formula.api.ols('excess ~ mkt_rf + smb + hml', data=table).fit() ajuste une régression des moindres carrés ordinaires à partir d'une formule d'une ligne : le nom à gauche de ~ est ce qu'on explique, les noms à droite sont les régresseurs, et une constante est ajoutée pour vous (écrivez - 1 pour la retirer). L'objet résultat contient tout : params (les coefficients), bse (leurs erreurs standard), tvalues, pvalues, rsquared, rsquared_adj, aic, resid et summary() pour le rapport imprimé. Comme chacun est une Series pandas ou un nombre, les mettre côte à côte dans un DataFrame donne un tableau net, et res.predict(nouveau_tableau) applique la formule ajustée à de nouvelles lignes ayant les mêmes noms de colonnes. La régression factorielle d'une action en est l'usage standard : excess est le rendement de l'action au-dessus du taux sans risque, mkt_rf celui du marché, smb le facteur taille et hml le facteur valeur.
Deux comparaisons rendent le tableau utile. Le MEDAF n'utilise que le marché, excess ~ mkt_rf ; le modèle à trois facteurs ajoute smb et hml. Ajouter des régresseurs ne peut jamais baisser le R², donc on utilise le R² ajusté, l'AIC ou un test F : ff3.compare_f_test(capm) renvoie la statistique F, sa p-valeur et le nombre de régresseurs en plus, et une petite p-valeur dit que les deux facteurs supplémentaires apportent un vrai pouvoir explicatif. Un second point de routine est le tableau lui-même. Les rendements de fin de mois viennent du dernier cours de chaque mois civil (prices.groupby(prices.index.to_period('M')).last() puis pct_change()), et ils doivent être joints à la table des facteurs sur le même mois : une régression sur des mois mal alignés est une régression sur du bruit.
- Une ligne, une régression : la formule nomme la réponse et les régresseurs, et l'objet résultat contient chaque statistique.
- Comparer des modèles emboîtés avec le bon outil : le R² monte toujours, donc utilisez le R² ajusté, l'AIC ou le test F.
- Alignez d'abord les mois : un rendement de fin de mois va avec les facteurs du même mois.
Lab : ce qui est noté
- Le tableau de régression mensuel15 pts
- L'ajustement du MEDAF10 pts
- L'ajustement à trois facteurs10 pts
- Un tableau de coefficients net15 pts
- Le modèle plus grand en vaut-il la peine ?15 pts
- Une prévision10 pts
- L'étude complète25 pts