Skip to content

BreakerZero/SP500_recursive_forecasts

Repository files navigation

Stock Index Prediction and Trading Strategy (EN)

Description

This project uses neural networks to predict movements in the SP500 stock market index.

Content

  • Import of financial index data from Yahoo Finance

  • Exploratory analysis of the data

  • Feature selection using correlation analysis and VIF

  • Data normalisation

  • Search for neural architecture via Optuna for features and then for the final model

  • Model training and validation

  • Recursive prediction and evaluation

  • Trading strategy and performance evaluation

Technologies

This project uses the following libraries and methods:

yfinance, numpy, pandas, tensorflow, sklearn, seaborn, XGboost, SARIMA, keras, optuna, matplotlib, scipy, bitsandbytes and related dependencies.

Steps

Data import

  1. Importing data from several financial indices from Yahoo Finance

  2. Choice of index for analysis and prediction (here SP500, the method is supposed to be adaptable to other indices with approximately the same efficiency)

Exploratory Data Analysis (EDA)

  1. Study of the correlation between the different features

  2. Use of VIF to avoid multicollinearity

Data normalisation

  1. Application of Robust normalisation to selected features

Neural Architecture Search

  1. Using Optuna to find the best architecture for neural network models for each feature according to various criteria.

  2. Complete training on the 5 best architectures found by Optuna

  3. Prediction using XGboost as a back-up in the event of unsatisfactory prediction using neural networks.

  4. Prediction using SARIMA as a control prediction

  5. Evaluation of models using RMSE

Recursive prediction and evaluation

  1. Using the best model to make recursive predictions

  2. Model evaluation using MDA (Mean Directional Accuracy)

  3. Comparison with a naive model

  4. Repeat architecture search and recursive prediction for the final model

Trading Strategy

  1. Development of a trading strategy based on the predictions

  2. Evaluate the performance of the strategy using metrics (absolute and relative rate of gain, change in capital if the strategy is followed, etc.).

Conclusion

  1. Comparison with market performance, outlook...

Warning

This notebook is primarily a technical challenge and its results should not be considered as financial advice or a recommendation to buy or sell financial assets. Investing in the stock market involves risk and you should consult a professional financial advisor before making any investment decision.

This notebook has some known technical errors and approximations (most of which are referenced in the conclusion and outlook), this notion should be taken into account when you assess this code.

Important note: The past performance of this model does not guarantee its accuracy for future predictions. Financial markets are influenced by a multitude of factors that are beyond the control of any predictive model. Use the information and methodology in this notebook at your own risk.


Prédiction d'Indice Boursier et Stratégie de Trading (FR)

Description

Ce projet utilise des réseaux de neurones pour prédire les mouvements de l'indice boursier SP500.

Contenu

  • Importation des données d'indices financiers depuis Yahoo Finance
  • Analyse exploratoire des données
  • Sélection des features via l'analyse de corrélation et le VIF
  • Normalisation des données
  • Recherche d'architecture neuronale via Optuna pour les features puis pour le modèle final
  • Entraînement et validation des modèles
  • Prédiction récursive et évaluation
  • Stratégie de trading et évaluation de la performance

Technologies

Ce projet utilise les bibliothèques et méthodes suivantes :

yfinance, numpy, pandas, tensorflow, sklearn, seaborn, XGboost, SARIMA, keras, optuna, matplotlib, scipy, bitsandbytes ainsi que les dépendances liés

Démarche

Importation des Données

  1. Importation de données de plusieurs indices financiers à partir de Yahoo Finance
  2. Choix de l'indice pour l'analyse et la prédiction (ici SP500, la méthode est supposément adaptable sur d'autre indice avec une efficacité sensiblement identique)

Analyse Exploratoire des Données (EDA)

  1. Étude de la corrélation entre les différentes features
  2. Utilisation du VIF pour éviter la multicolinéarité

Normalisation des Données

  1. Application de la normalisation Robust sur les features sélectionnées

Recherche d'Architecture Neuronale

  1. Utilisation d'Optuna pour trouver la meilleure architecture pour les modèle de réseau de neurones pour chaque feature selon divers critères
  2. Entraînement complet sur les 5 meilleures architectures trouvées par Optuna
  3. Prédiction avec XGboost comme prédiction de secours en cas de prédiction peu satisfaisante avec les réseaux neuronaux
  4. Prédiction faites avec SARIMA comme prédiction témoin
  5. Évaluation des modèles en utilisant le RMSE

Prédiction Récursive et Évaluation

  1. Utilisation du meilleur modèle pour faire des prédictions récursives
  2. Évaluation du modèle en utilisant le MDA (Mean Directional Accuracy)
  3. Comparaison avec un modèle naïf
  4. Répétions de la recherche d'architecture et des prédiction récursives pour le modèle final

Stratégie de Trading

  1. Élaboration d'une stratégie de trading basée sur les prédictions
  2. Évaluation de la performance de la stratégie en utilisant des métriques (taux gain absolu et relatif, évolution du capital si suivi de stratégie, etc.)

Conclusion

  1. Comparaison avec les performances du marché, perspectives d'évolution...

Avertissement

Ce notebook est avant tout un challenge technique et ses résultats ne doivent pas être considéré comme un conseil financier ou une recommandation pour acheter ou vendre des actifs financiers. Investir en bourse comporte des risques et vous devriez consulter un conseiller financier professionnel avant de prendre toute décision d'investissement.

Ce notebook possède quelques erreurs et approximations techniques connues (la plupart référencées dans la conclusion et perspectives d'évolution), cette notion est à prendre en compte lors de votre appréciation de ce code.

Note importante : Les performances passées de ce modèle ne garantissent pas sa justesse pour les prédictions futures. Les marchés financiers sont influencés par une multitude de facteurs qui sont hors du contrôle de tout modèle prédictif. Utilisez les informations et la méthodologie de ce notebook à vos propres risques.