Tester des règles d'investissement honnêtement, sans argent réel
Un petit outil pour tester des règles d'investissement simples sur des cours passés — conçu pour ne pas pouvoir tricher, ni passer un vrai ordre.
Le besoin
Les tests de stratégies sur des données passées paraissent souvent brillants parce qu'ils utilisent, sans le dire, une information que personne n'avait le jour même.
L'idée
Construire le laboratoire autour du piège plutôt qu'autour des stratégies.
Ce que j'ai construit
- Une règle calculée sur la clôture d'un jour ne s'applique qu'au rendement du lendemain — jamais au jour même.
- Chaque changement de position coûte 0,05 % de frais.
- Chaque règle est comparée à « acheter au début et ne rien faire » : une stratégie qui gagne 8 % quand le marché en gagne 20 % a détruit de la valeur.
- Deux verrous : l'adresse de trading est écrite en dur sur le bac à sable, et le code ne sait que lire — il n'a aucun moyen de passer un ordre.
Le résultat
- 3modules Python
- 453lignes de code
- 11indicateurs calculés par test
- 0ordre possible — par construction
Pas encore de test automatisé, ni d'exécution avec de vraies clés de simulation que je puisse montrer. C'est un outil pour comprendre un mécanisme, pas pour décider d'un placement.
En images
Ce que j'ai appris
En essayant assez de combinaisons sur le passé, on finit toujours par en trouver une qui aurait marché. Connaître les limites d'un test fait partie du résultat.
Détails techniques Stack, architecture et choix — pour les lecteurs techniques
Stack
- Python
- Streamlit
- pandas
- NumPy
- requests
- API Alpaca (paper trading)
Comment ça marche
- Signal calculé à la clôture du jour J appliqué au rendement de J+1 ; 0,05 % de frais par changement de position ; comparaison systématique à l'achat conservé.
- Deux règles testables — croisement de moyennes mobiles, franchissement d'un plus haut — sur un à cinq ans de cours journaliers d'actions américaines.
- Adresse de l'API de trading écrite en dur sur le bac à sable paper-api d'Alpaca (non configurable) ; client en lecture seule, sans fonction d'ordre ; clés lues uniquement dans les variables d'environnement.
- Quand une donnée manque (clés absentes, 401/403, trop de requêtes), l'interface Streamlit affiche la raison au lieu d'un chiffre par défaut.
- Biais connu : l'entrée est comptée à la clôture qui a produit le signal, pas à l'ouverture suivante — l'écart de la nuit entre donc dans le résultat.
Ce qui manque encore
- Pas encore de test automatisé
- Pas un outil d'investissement