What the porting agent does, and where it fails
v1.14.2 ships an agent. Not a chat box that explains what you could do — a porting engineer you hand the migration to. You state one instruction, it works the queue on its own, and it ends by telling you what it could not convert, by name. This post is the honest version: what it actually does, the numbers from a real run, and the four places it fails.
What you hand over
One sentence, stated once, from the radar icon on the rail:
From that point it runs on the workspace clock without further input. One script per cycle: convert it, then run the conversion beside the Pine reference over the same bars and count every difference above floating-point tolerance. Each cycle writes one log entry with what it did, why, and the number it produced.
It also states its price before it starts, which is the part we care most about:
A real run, in full
The four sample scripts that ship with the demo, BTCUSD 1D, on the visible window. This is the log, not a summary of it:
| Script | Clean | Noted | Unsupported | Bars differ |
|---|---|---|---|---|
rsi_divergence.pine | 13 | 1 | 2 | 0 of 306 |
vwap_bands.pine | 8 | 2 | 0 | 0 of 320 |
htf_trend_filter.pine | 9 | 1 | 0 | 0 of 270 |
ema_cross.pine | 14 | 0 | 0 | 0 of 320 |
| Queue finished | 44 | 4 | 2 | 0 in total |
And the sentence it finished with:
Why the proof is the product
Any tool can emit Python that looks like your Pine. The question is whether it produces the same numbers, and the only answer that means anything is a count. The Equivalence tab runs both implementations over the same bars:
| Implementation | Bars | Differ | Max Δ | Signals | Off |
|---|---|---|---|---|---|
| Pine reference | 306 | — | — | 6 | — |
| IndicatorSmith conversion | 306 | 0 | 0 | 6 | 0 |
| Hand port using an EMA instead of Wilder smoothing | 306 | 306 | 21.93 | 9 | 3 |
The third row is the whole argument for automating this. Pine's ta.rsi smooths with ta.rma (Wilder, alpha = 1/N). Porting it with a plain EMA (alpha = 2/(N+1)) looks right and reads wrong: the level is off by up to 21.93 RSI points, overbought and oversold cross on different bars, the script fires 9 signals instead of 6 with 3 of them on the wrong bar, and it leaves 13 bars with no value at all where Pine has one. Nobody catches that by eye.
Where it fails
Four honest limits. We would rather you read them here than discover them in a month.
1. It will not invent a construct it does not have
label.new() has no equivalent object in the engine yet. The agent marks the line with a ✕ in the gutter on both sides and drops the caption. The triangle still plots and the values are unaffected, but the "Bull" text is gone. That is a deliberate refusal: a lookalike substitution would convert cleanly and quietly change what your chart says.
2. The proof covers values, not costs or fills
Equivalence answers one question: does the converted indicator produce the same series and fire on the same bars? It says nothing about whether the strategy makes money. The verdict panel says so itself — "Costs and fills are not part of this comparison — that is the backtest below." A conversion with 0 differing bars can still be a bad rule.
3. It proves on the window you are looking at
The count is over the visible bars — 306, 320 or 270 in the run above, depending on the warm-up each script needs. Pan or zoom to a different stretch of history and press Re-run, because a conversion that agrees on one regime is not thereby proved everywhere.
4. Some things do not travel at all
Saved drawings and alerts from your old platform do not import. Nothing converts them, so you re-arm them here once. The agent says this in the first thirty seconds rather than letting you find out later.
It also says when nothing happened
The second standing instruction is a watch across three symbols. Most of its cycles produce no signal, and it logs those too — with the number that fell short, so you can judge the threshold instead of trusting it:
Checked BTCUSD, ETHUSD, SPX at bar 521 — said nothing SPX crossed up and separated to 0.37 × ATR, but RSI is 76.0 — on the wrong side of 50 for that direction, so the cross and the momentum disagree and I stayed quiet SPX RSI 76.0 Checked BTCUSD, ETHUSD, SPX at bar 520 — said nothing no cross on any of the three 3 bars back. ETHUSD is the nearest to one, with its two EMAs 0.10 × ATR apart — they have to meet before there is anything for me to say nearest ETHUSD 0.10 × ATR apart
An agent that always finds something is a salesman. This one is quiet most of the time, and the cost line says so before you turn it on: "A rule strict enough to be worth reading is quiet most of the time. You will see far more 'nothing to report' than signals."
What it will not do at all
It does not place orders, does not read your provider keys, and does not give advice. Ask it to size with a leverage multiple and it answers before anything else: "No. I do not size with leverage multiples and I will not model one. Sizing here is quarter Kelly (0.25) on the measured edge, capped at 7.5 % of equity per asset, with fees at 4 bps, slippage at 20 bps and a −20 % drawdown halt. That is the ceiling, not a starting point I negotiate up from." Ask for a t-statistic from four trades and it refuses that too, because a number from that few is a decimal place pretending to be evidence.
How to stop it
Four buttons in the same panel as the log, one click each: Pause freezes the clock and the log exactly where they are, Resume continues from the next cycle, Undo last reverses the most recent change it made in your workspace and marks that entry as undone, and Stop ends the instruction entirely. Nothing runs on your behalf that you cannot see and reverse. The agent docs have the full reference.
Educational model output on illustrative sample data. Trading involves risk. Backtests are hypothetical results and do not predict future results. Nothing in this post is financial advice.