PyneComp converts open-source Pine Script™ into Python.
PyneCore runs the converted scripts on real
market data, and this report compares plots and trades against TradingView's own output.
Pine Script
PyneComp
PyneCore (Python)
TradingView reference
544published scriptsopen-source Pine Script corpus
99.669%bit-exact valuesAll remaining values matched within published tolerance
The Proof Ladder
Every script in the corpus climbs the same four rungs.
No cherry-picking — failures are published right next to the successes.
T0
Compiles
PyneComp converts the original Pine source into runnable Python, untouched by human hands.
544 / 544 scripts
T1
Runs
PyneCore executes the converted script over 25,000+ bars of real exchange data without errors.
544 / 544 compiled
T2
Has measurable output
The run emitted numeric plot or trade data that can be checked. Drawing-only scripts are reported separately.
524 / 544 with plot/trade output
T3
Matches TradingView
Plot and trade outputs are compared bar by bar and trade by trade against TradingView's own reference.
743 / 743 outputs
484 plot + 259 trade outputs
Results at a Glance
Indicators compared plot by plot, strategies trade by trade, against TradingView's own output. The headline counts are over the scripts that produce a comparable numeric reference; a plot PyneCore fails to reproduce counts as a divergence, never as "no reference". Corpus coverage and each script's full detail are in The Corpus below.
Corpus outcome
512Matches TradingView
0Diverges from TradingView
11Depends on lookahead
1Data-limited (unavailable feed)
20Runs (no reference output)
0Run failed
Indicators — plot verification
251 / 251
indicators clearing the ≥99% plot-match threshold
Comparable plot references251 / 272
Compared plots >=99%251 / 251
Exact plot matches251 / 251
Mean on compared plots100%
Worst per-script plot match100%
Strategies — trade timing
261 / 259
strategies clearing the ≥99% entry and exit timing threshold
Trade references available259 / 272
Entry+exit timing >=99%261 / 259
Fully verified strategy outputs261 / 272
Trades compared in total214,868
Exact trade-count matches261 / 259
Net profit within tolerance259 / 259
Mean entry/exit timing match100% / 100%
How closely — the numbers themselves
99.669%
of the compared plotted values were the identical IEEE-754 double
Plotted values compared67,701,224
Identical to the bit67,477,563 (99.669%)
Scripts bit-exact throughout465 / 484
Explained by libm last bits3 / 484
Rest, within the published band16 / 484
Worst relative gap from TradingView1.2 × 10⁻¹⁰ (~9 sig. figures)
Methodology
Reproducible by design. The manifest pins the exact source of every script with a SHA-256 hash —
and TradingView keeps every published version forever, so anyone can re-run the comparison.
run parameters
symbol = BINANCE:BTCUSDTtimeframe = 30 minexceptions = 23 scripts on their own marketbars = 25,000+ per scriptulp_limit = 64 (libm tier)rel_tol = 1e-9scale_floor = 1e-9 x series mediannet_tol = 2.0% of the larger netreference = TradingView exportsources = SHA-256 pinned manifest
1
Open-source scripts only
A script enters the corpus only if it is published open source, written in a supported Pine version,
and its header does not forbid reuse. The detected license is recorded in the manifest.
2
No source redistribution
Only the manifest (name, author, link, license, version, SHA-256) is published.
Pine sources are fetched locally, used for measurement, never re-hosted.
3
TradingView is the reference
Reference plots and trade lists come from running the original script on TradingView itself,
on the same symbol, timeframe and bar range.
4
Failures stay on the board
Scripts that time out or hit harness limits are reported as-is.
A proof you can't falsify is not a proof.
“Matches” is a weak word. Here is what it means.
A percentage only says the outputs landed inside a band, and a band is something
we chose. So each compared value is also placed on the one scale that is not ours to
choose — the IEEE-754 double both engines store it in. Consecutive representable
doubles are one step apart; that step is the finest distinction the type can make.
bit-exactEvery compared bar produced the identical double. Not “close enough”:
the same 64 bits, from the first bar to the last.
libmThe values differ only in the last bits of the mantissa, and the script reaches a
transcendental function — log, exp, pow,
the trig family. IEEE-754 requires + − × ÷ and
sqrt to be correctly rounded, and requires nothing of those, so
CPython's C library and TradingView's Java runtime can both be right and still land a
few representable values apart — which a long accumulation then carries forward.
The tier is capped at 64 representable values, chosen from measurement: across our own
reference corpus the widest such gap is 23. A script whose numbers sit inside that cap
but reaches no transcendental is not labelled this way; an explanation has to
explain something.
The two tiers sit under the Verified badge in the table, because that is what they are:
the rung a verified script reached, never a verdict of their own. Anything else carries
no tier line — it agreed within the published band, which is what the Verified badge
above already says. The band itself is one number, not two — a relative
tolerance. Near zero a relative test has nothing to be relative to, so it falls back on a
floor taken from the series' own median magnitude; a fixed absolute floor would be
unreachable for a series living at 100,000 and larger than the whole signal for one
living at 0.000001.
The band itself, script by script
Agreement “within the band” is a range, not a verdict, so here is the whole
tier — worst relative gap first. The worst case is one number; the shape underneath
it — a single outlier over a floor of near-exact agreement — is what a bare
worst-case or a mean would throw away.
script
max_rel
sig. figures
Machine Learning Moving Average [LuxAlgo]
1.2 × 10⁻¹⁰
~9
Easy System 420
1.0 × 10⁻¹¹
~10
EMA Slope - RSI Oscillator Strategy
7.5 × 10⁻¹²
~11
OBV MACD Indicator
5.2 × 10⁻¹²
~11
TSI CCI Hull with profit$$$
2.8 × 10⁻¹²
~11
the other 11 scripts
< 10⁻¹²
12+
Don't take our word for it. Every script is pinned by SHA-256, and TradingView keeps every
published version. Pull the same script, run it on your own TradingView subscription, and
compare it with PyneSys. The numbers are the numbers.
The Corpus
The most-liked open-source Pine scripts on TradingView, in order of community popularity
(or whatever you sort the table by — the choice is remembered).
Every name links to the original publication.
Higher-timeframe lookahead — TradingView's own output leads this run by undefined bars, about one full period of the timeframe its request.security call asks for; realigned to that lead the two match —. The shape is TradingView reading a bar that had not closed yet — but a lag on the PyneCore side leaves the identical trace, and the shift alone does not separate the two, so this entry is held apart from the accuracy score and treated as open.
Higher-timeframe lookahead — TradingView's own output leads this run by undefined bars, about one full period of the timeframe its request.security call asks for; realigned to that lead the two match —. The shape is TradingView reading a bar that had not closed yet — but a lag on the PyneCore side leaves the identical trace, and the shift alone does not separate the two, so this entry is held apart from the accuracy score and treated as open.