Risk disclosure
© 2026 Erianux LLC. All rights reserved.

Insights Erianux Method 9 August 2026 7 min

How to prove an indicator repaints

Repainting is one of the most common defects in retail trading software, and one of the easiest to hide. Here is how to test for it in ten minutes, without source code.

Repainting is one of the most common defects in retail trading software, and one of the easiest to hide. An indicator repaints when it changes something it already drew — a level moves, a signal appears on a bar that has closed, a zone that was there yesterday is not there today. The backtest looks superb because the past has been quietly edited to agree with what happened next.

You do not need source code to catch it. You need about ten minutes and a screenshot.

What repainting actually is

There are three distinct behaviours that get lumped under one word, and they are not equally bad.

Recalculation on the forming bar is normal and unavoidable. The current bar has no final high, low or close until it closes, so anything derived from it moves. This is not a defect. It becomes one only when a tool presents a live-bar value as though it were settled.

Retroactive placement is the real problem. The tool waits until a move has happened, then draws its marker back at the bar where the move started. On a historical chart this looks like prescience. In live trading the marker simply is not there when you need it — it appears afterwards, on a bar that has already gone.

Silent deletion is the same offence in reverse: levels that failed are removed from history, so the chart only ever shows the ones that worked. Nothing on screen is false. The chart is still a lie, because the survivors are the only thing you are being shown.

The distinction that matters An honest tool can still update on the live bar. What it must never do is change a decision it made about a bar that has already closed.

The screenshot test

This takes ten minutes and catches retroactive placement immediately.

  1. Open a chart on a timeframe that closes often — one minute is ideal.
  2. Screenshot the visible chart, including the last twenty bars.
  3. Wait for ten or fifteen bars to close.
  4. Screenshot again, and compare the region that both images cover.

Anything that is present in the second image but absent from the first, at a bar that had already closed when the first was taken, was placed retroactively. Anything present in the first and gone from the second was deleted. Either one is disqualifying.

Do this during an active session. Quiet markets generate few events, and a tool can look impeccable for an hour simply because nothing happened.

The reload test

The second test catches a subtler class of defect: state that depends on how much history was loaded rather than on the market.

Note what is on your chart. Now change the loaded history — from one month to three, or reload the chart entirely — and look again at the same date range you noted.

It should be identical. If levels appear, vanish or move because more bars were loaded, the tool is deriving its decisions from where its data happens to start. That is not a market signal. It is an artefact of your data window, and it will differ on every machine that runs it.

This one is worth doing carefully, because it is the failure that survives the screenshot test. A tool can be perfectly well behaved bar to bar and still produce a completely different chart for a customer who loads a different amount of history.

The replay test

If your platform has a bar replay, the third test is definitive. Replay a session you have already seen live, and compare what the tool draws in replay against what it drew at the time.

Divergence between them is the whole question, stated exactly. A tool that draws one chart in replay and a different chart live is telling you, unambiguously, that its historical behaviour is not its live behaviour — which is the only reason anyone cares about repainting in the first place.

What good looks like

A tool that does not repaint has a specific, dull property: watching it live is boring. Levels arrive late — after the bar that justified them has closed — and then they never move. There is no moment of a marker appearing at a beautiful entry three bars back. That moment is exactly the thing being sold to you, and it is exactly the thing that cannot survive contact with a live market.

Every level, block and signal decided on a bar that has already closed. A level you saw at 10:04 is at the same price at the close.

That is the standard every Erianux engine is built to, and the reason our tools announce things later than their competitors do. Being late and correct is a product decision. It is also the only version of this that is honest.

Test the tools you already own. Most of the ones that fail were not built dishonestly — they were built by someone who never ran the second test.