PineForge excellent sur les 201, PyneCore sur 137
36× plus rapide que PyneCore, en médiane
Touchez ou faites glisser le graphique pour lire n’importe quel point.
Source : summary.md, pineforge-engine 6b45f510, banc d’essai du 2026-09-29.
Le graphique sous forme de tableau
Un palier par stratégie, dans le même ordre sur chaque ligne : un creux signale une stratégie notée sous le niveau excellent, et plus le creux est profond, plus la note est basse.
| Note | PineForge | PyneCore |
|---|---|---|
| Excellent | 201 | 137 |
| Solide | 0 | 46 |
| Modéré | 0 | 12 |
| Faible | 0 | 4 |
| Minimal | 0 | 1 |
| Sans liste de trades | 0 | 1 |
Le graphique sous forme de tableau
90 % centraux : de 15× à 131×
| Stratégie | Accélération |
|---|---|
| Anvil percent costs | 32× |
| VCP: Vol z-score anomaly | 36× |
| Dual stop source order short first | 23× |
| OBV EMA cross | 25× |
| Script privé 101 | 73× |
| Script privé 125 | 35× |
| Script privé 150 | 29× |
| Script privé 175 | 60× |
| Script privé 201 | 49× |
Méthode de mesure
Source : benchmarks/results/summary.md dans pineforge-engine, au commit 6b45f510, soit le banc d’essai du 2026-09-29 sur le moteur au commit 35db01c8, avec PyneCore 6.10.3. Le moteur v1.10.0 a été publié ensuite, et les niveaux n’ont pas été remesurés sur cette version.
Chaque chiffre de cette page vient du banc d’essai du dépôt open source pineforge-engine : 201 stratégies sur le même flux ETHUSDT en 15 minutes de 53 929 barres, avec les trades de chaque moteur notés face à la liste de trades exportée par TradingView. Les 100 stratégies du corpus ouvert se reproduisent depuis un clone vierge avec bash benchmarks/run_all.sh, sans clé d’API.
Les niveaux suivent la grille de notation canonique du moteur, définie dans scripts/verify_corpus.py. Excellent : le même nombre de trades, des prix d’entrée et de sortie à 0,01 % près et un P&L à 1 % près au 90e percentile, et au moins 99 % des trades de TradingView appariés. Solide : un écart de nombre de trades inférieur à 6 %, des entrées à 0,1 % près, des sorties à 0,5 % près, un P&L à 100 % près et au moins 95 % des trades appariés. Les stratégies avec des sorties trail_* utilisent le profil « production » : sorties à 0,05 % près et P&L à 100 % près. Modéré, faible et minimal suivent, par ordre décroissant. Pour le niveau excellent, lorsque TradingView affiche deux ou plusieurs Signals d’entrée distincts au même instant exact, au même prix et dans la même direction, le moteur affiche autant d’entrées distinctes à cet endroit (identité des entrées distinctes).
vectorbt: Les 13 stratégies portées à la main dans vectorbt. Excellent 4Solide 6Modéré 2Faible 1
Chaque point correspond à l’une des 200 stratégies chronométrées avec les deux moteurs et se place à son accélération exacte, sur une échelle logarithmique. Notre protocole de mesure : PineForge exécuté dans le même processus avec Google Benchmark, loupe de barres activée ; PyneCore 6.10.3 lancé en sous-processus, si bien que son temps écoulé inclut le démarrage de l’interpréteur. Une instance AWS c7a.8xlarge (AMD EPYC 9R14, 32 cœurs, SMT désactivé) sous Ubuntu 24.04, chaque processus de mesure épinglé sur des cœurs fixes ; moteur 35db01c8, 2026-09-29, un flux ETHUSDT en 15 minutes de 53 929 barres. Le moteur v1.10.0 a été publié ensuite, et les temps n’ont pas été remesurés sur cette version. Lire le benchmark complet.
Là où les notes diffèrent
analyzer-parity-percent-of-equity-sizing-01
dimensionnement en pourcentage du capital
- PineForge
- excellent (57 sur 57)
- PyneCore
- solide (57 sur 57)
mtf-triple-tf-macd-hist-confluence-01
multi-unités de temps (request.security)
- PineForge
- excellent (24 sur 24)
- PyneCore
- modéré (22 sur 22)
filtre regex str.match
- PineForge
- excellent (1 916 sur 1 916)
- PyneCore
- faible (1 514 sur 1 917)
Méthode de mesure
Sur les 201 stratégies, PyneCore 6.10.3 reste sous le niveau excellent pour 63 d’entre elles et ne produit aucune liste de trades dans 1 cas, où le compilateur PyneSys rejette le code source. Le rapport du benchmark les passe en revue. Parmi elles, 32 échouent uniquement sur le P&L (16) ou uniquement sur le nombre de trades (16), et leurs exécutions concordent avec celles de TradingView : le courtier de PyneCore prend des positions dès la première barre du flux, cinq mois avant le début de la plage de TradingView. Avec un dimensionnement en pourcentage du capital, un P&L que TradingView n’a jamais eu se capitalise donc au fil des trades, et une position déjà ouverte au début de la plage ajoute un trade en bordure de celle-ci. Sur les 9 scripts multi-unités de temps qu’une version antérieure de PyneCore ne reproduisait qu’en partie, des correctifs apportés à request.security en font passer 4 au niveau excellent ; 4 autres ne reproduisent toujours que 41,6 à 91,7 % de l’historique de TradingView. Enfin, 3 bots de trading en grille dérivent lors des clôtures FIFO, un filtre regex str.match est noté faible, et les stratégies restantes butent sur d’autres critères. Trois exemples tirés du corpus ouvert :
analyzer-parity-percent-of-equity-sizing-01: Les exécutions de PyneCore correspondent à celles de TradingView : ses prix d’entrée et de sortie concordent au 90e percentile. Son P&L s’écarte pourtant de 2,05 % au 90e percentile, car son courtier a commencé à trader cinq mois avant la plage de TradingView : avec un dimensionnement en pourcentage du capital, un P&L que TradingView n’a jamais eu s’était donc déjà capitalisé.
mtf-triple-tf-macd-hist-confluence-01: TradingView a exporté 24 trades. PyneCore en émet 39 ; sur la fenêtre couverte par les deux listes, qui contient 22 trades de TradingView, il apparie les 22 : il reproduit donc 91,7 % de l’historique de TradingView. PineForge, avec ses 24 trades, obtient le niveau excellent.
ta-str-match-regex-filter-01: La stratégie filtre ses entrées avec str.match. Sur la fenêtre, PyneCore émet 1 514 trades contre 1 917 chez TradingView, soit 21 % d’écart sur le nombre de trades, et apparie 51,2 % des trades de TradingView ; PineForge retrouve la totalité des 1 916 trades de sa fenêtre.
Quel moteur pour quel usage
Les trois runtimes sont open source. PineForge et PyneCore exécutent des stratégies avec des ordres strategy.*, et PineTS intègre un espace de noms strategy.* depuis la version 0.9.17, mais le banc d’essai ne fait tourner PineTS que sur des indicateurs : son harnais n’a pas de runner de stratégies pour PineTS. Seul PineForge compile une stratégie en code natif. PineForge et PineTS convertissent le Pine sur votre propre machine ; PyneCore le convertit via le compilateur PyneSys, un service hébergé.
PineForge
- Vous avez besoin des trades que TradingView vous donnerait : PineForge obtient le niveau excellent sur l’ensemble des 201 stratégies du banc d’essai.
- Vous enchaînez les backtests : en médiane, PineForge est 36× plus rapide que PyneCore par stratégie (PineForge chronométré dans le même processus, PyneCore en sous-processus, démarrage de l’interpréteur compris).
- Vous voulez embarquer le moteur : un runtime C++17 sous licence Apache-2.0, avec une ABI C stable qui n’évolue que par ajouts.
- Vous backtestez depuis un agent IA : un endpoint MCP hébergé gratuit, ou un serveur MCP local sous Docker pour vos propres données.
PyneCore
- Vous voulez écrire vos stratégies en Python : PyneCore exécute barre par barre du Python façon Pine, avec les bibliothèques Python de données et de machine learning dans le même code.
- Vous avez besoin d’indicateurs et de valeurs tracées : PyneCore les calcule. PineForge, lui, refuse les scripts indicator() et ne dessine rien : les tracés, les tables, les setters purement visuels et les alertes sont acceptés mais restent sans effet, et les objets line, box, label, linefill et chart.point sont conservés sous forme de données que la stratégie peut relire.
- Vous voulez un runtime sous licence Apache-2.0, quitte à convertir votre Pine avec le compilateur PyneSys, un service hébergé. Le moteur de PineForge est sous licence Apache-2.0, mais son transpileur est à code source disponible sous la PineForge Source License 1.2 depuis codegen 1.3.0 et n’est pas open source au sens de l’OSI.
Reproduire le banc d’essai
La moitié publique du banc d’essai, soit les 100 stratégies du corpus ouvert, est reproductible depuis un clone vierge : toutes les données d’entrée sont versionnées dans les ressources du benchmark, et aucune clé d’API n’est nécessaire. Les 101 scripts communautaires privés ne sont pas redistribués (conditions d’utilisation de TradingView) : cette moitié ne peut donc pas être relancée en dehors de PineForge.
# 1. Cloner le moteur et les ressources publiques du benchmark
git clone https://github.com/pineforge-4pass/pineforge-engine.git
cd pineforge-engine
git submodule update --init benchmarks/assets
# 2. Installer les outils Python et Node des autres moteurs, puis compiler
(cd benchmarks && uv sync --python 3.12 && npm install)
cmake -B build -S . -DPINEFORGE_BUILD_TESTS=ON -DPINEFORGE_BUILD_BENCH_STRATEGIES=ON -DPINEFORGE_BUILD_SPEED_BENCH=ON
cmake --build build --target pineforge bench_strategies pineforge_bench -j
# 3. Noter chaque moteur face à TradingView
SKIP_BUILD=1 SKIP_SPEED=1 JOBS=8 bash benchmarks/run_all.sh
# 4. Lire les résultats : les 100 lignes du corpus ouvert derrière les totaux de cette page
cat benchmarks/results/summary.md