Des resultats mesures, pas des arguments marketing. Les benchmarks detailles seront publies avec la version v1.0.
Comparaison directe sur les operations de backtest essentielles.
| Metrique | Python | StratForge | Amelioration |
|---|---|---|---|
| Indicateur unique (par barre) | A venir | A venir | A venir |
| Etape de strategie | A venir | A venir | A venir |
| Backtest complet (1M barres) | A venir | A venir | A venir |
| Debit | A venir | A venir | A venir |
| Empreinte memoire | A venir | A venir | A venir |
Comment StratForge compose les optimisations tout au long du pipeline de backtest.
Les barres sont stockees dans des tampons en colonnes optimises pour le cache. Les calculs d'indicateurs parcourent la memoire contigue au lieu de suivre des pointeurs.
Chaque indicateur maintient un etat interne et se met a jour en O(1) par barre. Pas de recalcul de fenetre glissante.
La logique d'entree/sortie de strategie est reecrite en arithmetique sans branchement quand c'est possible, pour eviter les blocages du pipeline sur le code conditionnel de prix.
Les parametres d'indicateurs connus a la compilation deviennent consteval. Les templates specialises eliminent le dispatch a l'execution.
Execution d'une passe de backtest sur le chemin critique.
| Operation | Backtesteur Python | StratForge |
|---|---|---|
| Allocations memoire | Nombreuses (objets Python par barre) | 0 |
| Stockage des barres | Copies de DataFrame pandas | Vues std::span sur tampon en colonnes |
| Etat des indicateurs | Allocation de tableau par appel | Etat glissant pre-alloue |
| Empreinte memoire | Dynamique, geree par le ramasse-miettes | Statique, pre-allouee |
| Determinisme | Derive en virgule flottante entre les executions | Reproductible bit-exact |
Les choix de conception qui se composent pour un backtesting deterministe a faible latence.
| Technique | Backtesteur Python | StratForge |
|---|---|---|
| Disposition memoire | Orientee lignes (DataFrame) | En colonnes (optimisee pour le cache) |
| Mises a jour des indicateurs | Recalcul de la fenetre a chaque appel | Incremental O(1) par barre |
| Dispatch de boucle | Boucle Python interpretee | Boucle template C++ inlinee |
| Determinisme numerique | Depend de la version NumPy / pandas | Bit-exact entre les executions |
| Composition de strategies | Hierarchie de classes + dispatch dynamique | Concepts + polymorphisme statique |
| Gestion des erreurs | Exceptions | std::expected (sans throw) |
Bibliotheques et frameworks de reference etudies lors de la conception de StratForge.
| Bibliotheque | Ce que nous avons appris | Ce que nous avons construit | Resultat |
|---|---|---|---|
| TA-Lib | Definitions canoniques d'indicateurs et gestion des cas limites | Bibliotheque d'indicateurs C++23 en-tetes uniquement | 138 indicateurs |
| vectorbt | API de backtest vectorise et balayage de parametres | Expansion de parametres par template a la compilation | A venir |
| backtrader | Cycle de vie des strategies et hooks d'evenements | Interface de strategie basee sur les concepts | Cycle de vie type-safe |
| QuantLib | Architecture modulaire de tarification et d'analyse | Modules d'analyse enfichables | A venir |
| Eigen | Templates d'expression pour des mathematiques a cout zero | Composition paresseuse d'indicateurs | Pas de tampons temporaires |
| Arrow | Standards de disposition memoire en colonnes | Stockage natif de barres en colonnes | Compatible lignes de cache |
| Folly | Primitives sans verrou et small_vector | Journaux de transactions pre-alloues | A venir |
| Highway | Abstraction SIMD portable | Boucles internes d'indicateurs compatibles SIMD | A venir |
| fmt | Chaines de format a la compilation | Formatage de rapports a cout zero | A venir |
| Boost.PMR | Tampon monotone pour allocation d'arene | Pool std::pmr::monotonic_buffer_resource | Zero allocation memoire |
| Catch2 | Tests unitaires d'indicateurs style BDD | Suite de regression bit-exact | IC reproductible |
Trois commandes pour cloner et commencer le backtesting.
git clone https://github.com/StratCraftsAI/StratForge.git
cd StratForge
./start.sh build