Engine comparison · v0.8.0 · 100-strategy benchmark

PineForge vs PyneCore. Reproducible, not rhetorical.

Every number on this page is generated by bash benchmarks/run_all.sh in the open-source pineforge-engine repo, against the same 53,930-bar Binance ETH/USDT 15-minute feed. Reproduce in ~5 minutes from a clean clone, zero external API calls.
Side by side

What each engine actually gives you.

CapabilityPineForgeTradingViewPyneCore
Byte-reproducible backtests
Native compiled runtime
251/252 strict TV parity
Sell strategies as compiled binaries
Time-bound seller licenses
Machine-bound seller licenses
Open-source runtime you can audit
Run on your own data, your machine
Audit-grade reproducibility for compliance
Native live broker integrations
100-strategy match degree

How many of 100 strategies hit excellent tier against TradingView.

benchmark receipt
162xmedian
PF / PC
speed.md
2026-06-11
PF/PC set
99 strategies
PF/vbt set
65 strategies
hot loop
41,307 bars
vbt scope
replicas
sample
N=20
PineForge
C++ / GBench
median_ms
6.35 ms
throughput
6.5M bars/s
sweep
1K trials ~6.4s
6.35 ms
PyneCore
Python / subprocess
median_ms
1,100 ms
throughput
38k bars/s
sweep
1K trials ~18m
1,100 ms
vectorbt
Pandas / Numba replicas
median_ms
71.2 ms
throughput
580k bars/s
sweep
1K trials ~71s
71.2 ms
PineTS
Node / indicators
median_ms
486 ms
throughput
85k bars/s
sweep
strategy: -
486 ms
C++ static lib
PineForge
100 / 100
median_ms6.35throughput6.5M bars/svs PyneCore162xvs vectorbt10.5x
Excellent100Strong0Moderate0Weak0
Python (PyneSys cloud-compiled)
PyneCore
85 / 100
median_ms1,100throughput38k bars/ssample99 strategies
Excellent85Strong2Moderate10Weak3
TypeScript (LuxAlgo)
PineTS
indicators only
canonical_ms486throughput85k bars/sscope10 indicators
Strategy backtester-Per-bar indicators10/10 indicatorsmatch

Tiers follow the canonical PineForge parity sweep: excellent = all four dimensions (count delta, entry p90, exit p90, P&L p90) within strict thresholds and ≥95% trades matched; strong within 5× strict; moderate / weak / minimal step down from there. Strategies that use TradingView’s trail_* exits get the production threshold profile (looser exit + P&L tolerances).

The 3-strategy delta

Three strategies draw all the daylight.

On 85 of 100 reference strategies PineForge and PyneCore both hit excellent. The 15-strategy gap is not random. Every divergence is in the same category: bracket exits, trailing stops, or partial position closes. PyneCore’s broker emulator differs from TV here; PineForge mirrors TV trade-for-trade.

06-liquidity-sweep
bracket exit
PineForge
excellent (88 / 88)
PyneCore
moderate (91)
93 TV trades in window. PineForge matches 88 within strict tolerances. PyneCore generates 91 trades: +3 count drift, plus exit-price drift on bracket-stopped exits.
07-scalping-strategy
trailing stop (production thresholds)
PineForge
excellent (412 / 429)
PyneCore
moderate (412)
429 TV trades in window. PineForge: 412 matched, all four parity dimensions inside production thresholds. PyneCore: same matched count, but exit-price p90 falls outside threshold because broker-emulator trail_offset arithmetic diverges from TV.
49-partial-exit-qty-percent
partial close (qty_percent)
PineForge
excellent (683 / 725)
PyneCore
weak (2,671)
The clearest divergence in the corpus. 725 TV trades, PineForge matches 683 at strict parity. PyneCore generates 2,671 trades: 3.7× the correct count. Root cause: strategy.close(qty_percent=…) in PyneCore splits each entry into per-percentage sub-exits instead of a single partial close. Open upstream issue as of this commit.
Where each engine wins

We don’t hide our gaps. Neither should they.

CHOOSE PINEFORGE WHEN

You need byte-reproducible determinism (CI gates, audit trails, paid-parity claims to clients).
You need TV-faithful semantics on bracket exits, trailing stops, or partial closes. Three concrete strategies above are unambiguous on this.
You need native compiled speed for parameter sweeps (Optuna across thousands of parameter combinations on 50k-bar feeds).
You want a hosted Studio UI later — Code · Backtest · Optimize · Compare · Reports tabs are coming Q4 2026.
You eventually want to sell compiled strategies to other traders. The encrypted-distribution + license-server design is in the public engine repo.

CHOOSE PYNECORE WHEN

You need forward-testing or live broker execution today. PineForge ships those Q3-Q4 2026; PyneCore has them now.
You need a fully-Python strategy execution path (deeper integration with NumPy/Pandas backtesting tooling, Jupyter-native iteration).
You’re comfortable on the bracket/trail/partial-exit caveats (85/100 of strategies still hit excellent despite them).
Full OSI open-source end-to-end matters more to you than source-available. PyneCore is OSI-licensed throughout; PineForge’s engine is Apache-2.0 but the codegen is source-available (PolyForm Noncommercial, free for personal trading) — not OSI-approved.
You’re a heavy contributor and want a project where your PRs land directly in the strategy execution path.

Don’t trust the table. Reproduce it.

Every number on this page is generated by the public benchmark suite. No hidden config, no API keys, no committed-snapshot tricks. ~5 minutes from a clean clone.

# 1. Clone the open-source engine + benchmark suite
git clone https://github.com/pineforge-4pass/pineforge-engine
cd pineforge-engine

# 2. Pull the LFS-tracked OHLCV (2.3 MB)
git lfs install && git lfs pull

# 3. Run the full three-engine sweep (~5 min)
bash benchmarks/run_all.sh

# 4. Read the results — same table that's on this page
cat benchmarks/results/summary.md