Skip to content
How we measure parity

7,989 backtests graded, 100.00 % excellent or strong

Against TradingView’s own trade lists: 7,983 excellent, 6 strong, none below strong.

15-minuteDailyETHUSDT.PBTCUSDTES1!NQ1!AAPLNIFTYFEURUSDXAUUSD
15-minuteDailyETHUSDT.PBTCUSDTES1!NQ1!AAPLNIFTYFEURUSDXAUUSD

Tap or drag the chart to read any point.

Source: parity baseline pineforge-parity-baseline-20261013-engine-2608ebdd, 2026-10-13. How we grade

The chart as a table

Each mark is one strategy script on one market and timeframe; the 6 amber ones graded strong, the other 7,983 excellent.

MarketTimeframeGradedExcellentStrong
ETHUSDT.P15-minute1,0091,0090
BTCUSDT15-minute6686662
BTCUSDTDaily5165160
ETHUSDT.PDaily5405400
ES1!15-minute76760
ES1!Daily35350
NQ1!15-minute74740
NQ1!Daily37370
AAPL15-minute6326311
AAPLDaily4644640
NIFTY15-minute3143140
NIFTYDaily2252250
F15-minute6376361
FDaily5055050
EURUSD15-minute6536521
EURUSDDaily4534530
XAUUSD15-minute6956941
XAUUSDDaily4564560

The tier rubric

The gates for excellent and strong. For excellent, where TradingView shows two or more distinct entry Signals at one exact time, price and direction, the engine shows as many distinct entries there (distinct-entry identity).
GateExcellentStrong
Trade-count difference0< 6 %
Entry price, 90th percentile< 0.01 %< 0.1 %
Exit price, 90th percentile< 0.01 %*< 0.5 %
P&L, 90th percentile< 1 %*< 100 %
TradingView trades matchedor at most one unmatched≥ 99 %≥ 95 %
How this is measured

Every figure on this site comes from one of the measurements below. Each section says what is measured, how it is graded and where the source lives.

Each backtest is graded against the trade list TradingView itself exported for the same script, market and timeframe. Every TradingView trade is paired with the nearest engine trade in the same direction that entered within one hour of it, at an entry price within $3. The count, price and P&L gates are computed over the window both lists cover; coverage counts every closed TradingView trade.

Below strong come moderate, weak and minimal.

*Strategies that use trail_* exits are graded with a production profile, which absorbs TradingView’s sub-bar fill drift on those exits: exits within 0.05 % and P&L within 100 %.

The parity baseline

How this is measured

Main pineforge-parity-baseline-20261013-engine-2608ebdd, 2026-10-13, engine 2608ebdd, snapshot 438ca43a. Release v1.4.0: 7,983 excellent, 6 strong. How we grade

A probe is one strategy script on one market and timeframe, graded against the trade list TradingView itself exported for that chart.

The baseline of 2026-10-13 grades 7,989 probes: 309 open reference strategies from the public corpus, one probe each, and the closed test’s 7,680 probes of 741 TradingView scripts: 680 community-shared scripts from TradingView’s public library (7,179 probes) and 61 probe scripts the maintainers wrote (501 probes). They run on 9 markets and 2 timeframes, 15-minute and daily. Between them, the probes hold 4,692,951 trades compared with TradingView. Each graded probe contributes its trade count once; a position closed in several parts counts once; trades still open at the end of TradingView’s list are excluded.

The markets: BTCUSDT (Binance spot), ETHUSDT perpetual (Binance), ES1! and NQ1! (CME index futures), AAPL (Nasdaq), F (NYSE), NIFTY (NSE), EURUSD and XAUUSD (OANDA). 4,758 probes are on 15-minute charts and 3,231 on daily charts.

Result: 7,983 excellent (99.92 %) and 6 strong (0.08 %), so 100.00 % are excellent or strong. None is below strong and none hit an engine error. 17 probes whose TradingView export shows a TradingView-side defect are excluded from grading (8,006 in the population).

The main baseline was promoted on 2026-10-13, engine 2608ebdd with codegen 1598e1cf. Engine and codegen v1.4.0 grade 7,989 probes, 7,983 excellent and 6 strong, on their own immutable baseline pineforge-parity-baseline-20261007-engine-b3192bfc (2026-10-07); a later main baseline does not change them.

Source: parity campaign records (internal, not public): baseline pineforge-parity-baseline-20261013-engine-2608ebdd (snapshot sha256 438ca43a…5aac, population cf857209…b062); scripts by origin: pineforge-engine README.md, d1d18867; trade count: pineforge-release facts.json.

The open-corpus gate

How this is measured

pineforge-corpus is a public, Apache-2.0 set of 312 reference strategies. Each one ships its Pine source, the C++ that codegen 1.0.1 generated from it, TradingView’s exported trade list and the engine’s trade list, so anyone can diff the two; the engine’s lists were written by engine v1.0.1 from that C++.

The engine’s corpus parity check on main pins the result: 311 of 312 excellent. The remaining one, anomaly-equity-mirror-strategy-equity-01, is declared an anomaly in the corpus, so the check reports it as an anomaly, not as a failure. Its notes record the original diagnosis: at exactly 1× equity, TradingView’s margin check admitted some entries above equity and rejected some below it. That diagnosis is under review, because the 2026-10-13 parity baseline graded this probe excellent. Release v1.4.0 includes the check.

The engine bake-off

How this is measured

201 strategies, 100 from the open corpus and 101 closed community scripts, run on the same 53,929-bar ETHUSDT 15-minute feed in PineForge, in PyneCore and, for the 13 strategies with a hand-written port, in vectorbt. Each engine’s trades are graded against TradingView’s export with the rubric above.

Measured 2026-09-29 at engine 35db01c8, codegen 121b3e6a and PyneCore 6.10.3; engine v1.4.0 was released after it, and the tiers were not re-measured on the release. PineForge: 201 excellent. PyneCore: 137 excellent, 46 strong, 12 moderate, 4 weak, 1 minimal, and 1 with no trade list, whose source the PyneSys compiler rejects. vectorbt: 4 excellent, 6 strong, 2 moderate, 1 weak. On the 100 open-corpus strategies alone, PineForge grades 100 excellent and PyneCore 86 excellent, 12 strong, 1 moderate and 1 weak.

Indicator values (10 series from 6 ta.* calls) agree across PineForge, PyneCore and PineTS to about 1e-10 relative difference at the 90th percentile. That compares the engines with each other, not with TradingView.

The public half reproduces from a clean clone with no API keys: bash benchmarks/run_all.sh in pineforge-engine. The closed half’s scripts are not redistributed.

The speed benchmark

How this is measured

On an AWS c7a.8xlarge (AMD EPYC 9R14, 32 cores, SMT off) running Ubuntu 24.04, each timing process pinned to fixed cores, with the bar magnifier on, a full backtest over the 53,929-bar feed takes PineForge a median 66.84 ms (29.2 ms to 848 ms across the 201 strategies), a median 806.8 thousand bars per second. Measured 2026-09-29 at engine 35db01c8; engine v1.4.0 was released after it, and the timings were not re-measured on the release.

The median speedup over PyneCore 6.10.3 is 36× across the 200 strategies both engines ran (15× at the 5th percentile, 131× at the 95th); PyneCore takes a median 2,629 ms per strategy. PineForge is timed in-process with Google Benchmark; PyneCore is timed as a subprocess, so its wall time includes interpreter start-up. On the 13 strategies with a vectorbt port, PineForge’s median speedup is 4.2×, and vectorbt is faster on 2 of them. With the bar magnifier off, the throughput package runs a median 780 thousand bars per second per strategy.