DonnIA
Toutes les ressources
GuideData & RAG16 min

Analyser des données financières publiques

Sources traçables, chiffres calculés par du code, et pourquoi un backtest flatteur est un mauvais signal.


Ce n'est pas un conseil en investissement

Rien ici ne constitue une recommandation d'achat, de vente ou de conservation d'un actif. Trois points à garder en tête avant de commencer.

Un modèle de langage ne prédit pas les cours. Il produit des phrases vraisemblables, et sur des séries financières le vraisemblable et le vrai sont décorrélés. Une explication convaincante d'un mouvement de marché est une narration construite après coup, pas une prévision.

Un backtest surestime presque toujours les performances. C'est la règle, pas l'exception : biais de survie, données révisées après coup, coûts de transaction absents, et surtout le fait qu'on a essayé plusieurs variantes avant de garder celle qui marchait. Un résultat historique flatteur est un signal faible, souvent négatif.

Les performances passées ne préjugent pas des performances futures, et l'écart entre un carnet d'analyse et une décision d'investissement se comble avec un professionnel, pas avec une conversation.

Il existe une quantité considérable de données financières publiques et gratuites : séries de taux et d'agrégats monétaires publiées par les banques centrales, comptes annuels déposés par les sociétés cotées, statistiques nationales, historiques d'indices. Les manipuler est devenu facile, et c'est précisément ce qui rend l'exercice risqué.

Le problème n'est pas d'obtenir un chiffre, c'est d'obtenir un chiffre juste et de savoir d'où il vient. Sur ce terrain, les deux modes de défaillance d'un agent se combinent au pire moment : il calcule de tête au lieu d'exécuter du code, et il comble un trou plutôt que de signaler qu'il manque une donnée. Les deux produisent des résultats crédibles, présentables, et faux.

Ce guide ne parle donc pas de stratégie. Il parle de méthode : d'où viennent les nombres, qui les calcule, et ce qu'on fait quand il en manque un.

Avant de commencer

  • Python avec pandas (pip install pandas)
  • Une question précise, pas « analyse ce marché »
  • Un carnet où tu notes chaque source et sa date de consultation

1Choisir des sources qu'on peut citer

Une source utilisable a trois propriétés : un émetteur identifiable, un identifiant de série stable, et une date de publication. Tout ce qui n'a pas ces trois choses est une valeur trouvée quelque part, ce qui n'est pas une donnée.

Quelques points d'entrée publics et traçables : le portail de données de la Banque centrale européenne, les statistiques de la Banque de France, l'INSEE pour les séries macroéconomiques françaises, la base FRED de la Réserve fédérale de Saint-Louis, et EDGAR pour les documents déposés par les sociétés cotées aux États-Unis.

EDGAR impose des règles d'accès automatisé qu'il faut respecter : un en-tête User-Agent qui identifie ton projet et une adresse de contact, et un plafond de dix requêtes par seconde. Les dépasser fait bloquer ton adresse IP, ce qui est une façon coûteuse d'apprendre à lire une documentation.

Les bibliothèques non officielles cassent sans prévenir

Plusieurs paquets Python très populaires récupèrent des cours en interrogeant des points d'accès non documentés de portails financiers grand public. Ils sont pratiques, ils ne sont pas officiels, ils tombent en panne à chaque changement côté serveur, et leur usage peut contrevenir aux conditions du site. Si un chiffre doit être défendable, prends-le à la source qui le publie.

Pour chaque serie que tu vas utiliser, remplis d'abord ce tableau :
identifiant de la serie, emetteur, URL exacte, periode couverte,
frequence, unite, date de consultation.
Ne telecharge rien tant qu'une ligne est incomplete. Si tu ne trouves
pas la source officielle d'une serie, dis-le au lieu d'en prendre une
approchante.

2Figer les données avant de les analyser

Une série macroéconomique n'est pas figée : les premières estimations sont révisées, parfois de façon significative, plusieurs trimestres après leur publication. Une analyse relancée trois mois plus tard sur les mêmes identifiants ne donne pas les mêmes chiffres, et rien ne le signale.

La parade est mécanique : télécharge une fois, enregistre le fichier brut, et travaille sur ce fichier.

Telecharge chaque serie une seule fois dans ./donnees_brutes, sans
aucune transformation, avec la date de telechargement dans le nom du
fichier.
Toutes les etapes suivantes lisent ces fichiers locaux. Si tu as besoin
d'une donnee absente, arrete-toi et demande, ne relance pas une requete.

Ça vaut aussi pour les cours : un historique de prix « ajusté » intègre les dividendes et les divisions d'actions, un historique brut non. Les deux sont corrects, ils ne répondent pas à la même question, et les mélanger produit des sauts qui ressemblent à des mouvements de marché.

3Aucun nombre qui ne sorte d'un code exécuté

C'est la règle centrale, et elle vaut ici plus qu'ailleurs parce que les ordres de grandeur financiers sont familiers : un chiffre faux a l'air normal.

Regles pour cette analyse :
- tout nombre que tu m'annonces vient d'un code que tu as execute et
  dont tu me montres la sortie ;
- aucun calcul mental, aucune estimation, aucune valeur "de memoire" ;
- affiche systematiquement l'unite et la periode a cote du resultat ;
- pour chaque agregat, affiche aussi le nombre d'observations utilisees.

Le nombre d'observations est le contrôle le plus rentable. Une volatilité annualisée calculée sur 43 jours au lieu de 252 se lit exactement comme une volatilité normale, et le seul indice est le compte.

Précise aussi les conventions, sinon elles seront choisies pour toi : rendements simples ou logarithmiques, base d'annualisation, traitement des jours sans cotation, fenêtre glissante fermée à gauche ou à droite.

4Interdire de deviner une valeur absente

Les séries financières sont trouées par construction : jours fériés qui diffèrent d'une place à l'autre, suspensions de cotation, sociétés qui n'existaient pas au début de la période, changements de méthodologie. Chacun de ces trous a un sens, et le combler le détruit.

Une valeur absente reste absente. Ne la remplace ni par zero, ni par la
derniere valeur connue, ni par une interpolation, sauf si je le demande
explicitement.
Avant tout calcul, affiche par serie : le nombre de valeurs manquantes,
leur repartition dans le temps, et les dates ou les series ne se
recouvrent pas.
Si une comparaison exige une periode commune, montre-moi la periode
retenue et le nombre de points perdus.

Le report de la dernière valeur connue mérite une mention particulière. Il paraît anodin, il est très utilisé, et il fabrique de la stabilité : une série recopiée pendant les jours manquants affiche une volatilité plus basse que la réalité, ce qui améliore mécaniquement tous les ratios calculés dessus.

5Traiter un backtest comme une source de doute

Si tu testes une règle sur l'historique, le résultat n'est pas une performance, c'est une mesure de ta capacité à sur-ajuster. La question utile n'est jamais « combien ça rapporte » mais « par quels biais ce chiffre est gonflé ».

Pour ce backtest, remplis cette liste avant de me donner le moindre
chiffre de performance :
- biais de survie : la liste d'actifs utilisee inclut-elle ceux qui ont
  disparu sur la periode ?
- anticipation : chaque decision n'utilise-t-elle que des donnees
  disponibles a cette date, publication comprise ?
- revisions : les donnees utilisees sont-elles celles connues a
  l'epoque, ou les valeurs revisees d'aujourd'hui ?
- couts : frais, ecart achat-vente et glissement sont-ils modelises ?
- essais multiples : combien de variantes ai-je testees avant celle-ci ?
- hors echantillon : quelle periode n'a jamais servi au reglage ?
Reponds "non traite" quand c'est le cas, ne comble pas.

Le point sur les essais multiples est celui que personne n'écrit et qui explique la plupart des écarts entre backtest et réalité. Tester trente variantes et garder la meilleure produit un beau résultat même sur des données purement aléatoires. Si tu n'as pas compté tes essais, tu ne peux rien conclure du gagnant.

Quelques prompts pour aller plus loin

ObjectifPrompt à adapter
Vérifier une sourceVoici un chiffre lu dans [ARTICLE]. Retrouve la serie officielle d'ou il vient, sa definition exacte et sa date de publication. Si tu ne la retrouves pas, dis-le.
Décrire avant d'analyserPour ce fichier : periode, frequence, unite, nombre d'observations, valeurs manquantes par annee, ruptures de methodologie visibles. Aucune conclusion.
Reconstituer un calcul publié[SOURCE] annonce [CHIFFRE] pour [PERIODE]. Reproduis ce calcul a partir des donnees brutes. Si tu n'y arrives pas, montre l'ecart et ce qui l'explique.
Contrôler une comparaisonCes deux series sont-elles comparables ? Verifie unite, base, frequence, perimetre geographique, et periode de recouvrement reelle.
Chercher la faille d'un résultatVoici mon resultat et mon code. Cherche uniquement ce qui pourrait le rendre trop beau : anticipation, survie, donnees revisees, couts absents. Ne commente pas la strategie.
Documenter l'analyseEcris la note de methode : sources avec dates de consultation, transformations appliquees, conventions retenues, limites connues, et ce que ces donnees ne permettent pas de dire.

Tu as d’autres ressources comme ça ?

Ce que tu viens de lire est entièrement gratuit. Une nouvelle ressource part chaque semaine dans la newsletter : guides, modèles à copier et liens triés, sans compte à créer.

Cette page est en accès libre, n’hésite pas à la partager.