A trader buys an indicator, loads it on a chart and scrolls back through a year of history. Every arrow sits at a turn. Nothing is early, nothing is late. Then they run it live for a week and the arrows appear, drift, and sometimes vanish while they are watching. Nothing was faked in a graphics editor. The tool is simply showing its final opinion about each bar, and its final opinion was formed after the bar had finished.
Three separate mechanisms, one symptom
The word repainting covers behaviours that look similar on a chart but have different causes and different severity.
| Type | What happens | How bad |
|---|---|---|
| Unconfirmed bar | A signal appears mid-bar based on the live price and disappears if the bar closes elsewhere | Manageable. The fix is to act only on closed bars |
| Historical recalculation | The plot is computed differently on historical bars than in real time, often by referencing a future extreme | Severe. The historical chart is fiction and no live account can reproduce it |
| Delayed or revised data | The underlying series is revised, or a higher timeframe value is pulled before that timeframe closed | Severe, and the hardest to notice, because the plot itself looks stable |
The middle and bottom rows are the ones that ruin research. They invert results rather than merely flattering them, because a rule that quietly reads a value from the future will always look right.
Catching it in ten minutes
Three tests are enough for almost every case, and none of them require reading the source code.
Take a screenshot of the live chart with the current signals visible, note the exact bar times, then come back after several bars have closed and reload. Anything that has moved, appeared or disappeared was provisional. Do this on a fast timeframe so the answer arrives in an hour rather than a week.
Step through a bar replay from a point in the past. A tool that only uses information available at the time will produce its marker at the close of the triggering bar and never before. If markers are already present as you step in, the code has seen data you would not have had.
Set an alert and keep the log. Alerts fire in real time and are timestamped, so a week of alert history compared against the chart a week later is the cleanest evidence of what the tool actually said. The mechanics of setting these up are covered in the alerts guide.
An indicator can pass the visual test and still fail in a backtest. Testers on some platforms evaluate historical bars in a different mode from live execution, so a strategy that reads intrabar values can behave one way in the tester and another way in the market. Verify the tool on both sides before drawing a conclusion.
Where it comes from in the code
In scripting environments the usual sources are few and specific. A script that evaluates on every tick rather than on bar close will naturally show provisional output; that is expected behaviour and is fine as long as the entry rule waits for confirmation. A script that requests data from a higher timeframe without the correct offset can receive a value from a period that has not finished, which is the classic lookahead error. And functions that search for the highest or lowest point within a window will revise their answer whenever a new extreme appears, which is legitimate for a swing tool and misleading for an entry marker.
A well written script separates provisional drawing from confirmed signals, and only fires alerts on confirmed ones. If you write your own tools, that separation is the first thing to build in, and the language basics are covered in Pine Script basics. If you are buying, ask the vendor directly whether alerts fire on bar close and whether any higher timeframe data is referenced.
Why the industry runs on repainted screenshots
Marketing for signal tools is built from historical charts, and a historical chart shows the final state of every calculation. If the tool revises itself, the bad calls have already been removed by the code. Nobody had to crop anything. This is why a gallery of perfect entries proves very little and why a timestamped record of live alerts, or a verified track record, is worth more than any number of images. The wider checklist for assessing these offers sits in evaluating signal services.
The same problem contaminates research done on your own charts. An indicator that repaints will make any historical study of it worthless, and the resulting rule set will look strong right up to the moment it goes live. Anyone building a system should run the repaint check before starting the work described in backtesting basics, because a tool that revises the past invalidates every later step.
When redrawing is acceptable
Not every revising tool is a problem. A swing labeller has to move its last point when a new extreme forms, and a market profile builds through the session by construction. Used as context, that is honest and useful. The line to hold is simple: anything you would act on has to be final at the moment you act on it, and anything provisional has to be visibly marked as provisional. A tool that blurs that line is either badly written or is relying on the blur, and from the outside it does not matter which. No indicator removes the risk in leveraged trading, and one that edits its own history increases it.
"If the arrows are perfect, the arrows were placed afterwards. Ask for the alert log, not the screenshots."
— Alex Onta, Executive Director, SINGUARD
Key Takeaways
- Mid-bar signals that settle on close are manageable, while historical recalculation and lookahead errors make research worthless.
- Screenshot the live chart, wait for several closes and reload: anything that moved was never a real time signal.
- A timestamped alert log is the only cheap evidence of what a tool said at the time, which is why vendors rarely lead with one.
- Redrawing is acceptable for context tools, but anything you act on must be final at the moment you act on it.
Frequently Asked Questions
Is every repainting indicator dishonest?
No. Some tools redraw by design and are transparent about it. A zigzag or a swing labeller has to revise its last leg when a new extreme appears, and used as a visual aid that is fine. The problem is a signal marker presented as an entry that quietly relocates or disappears once the bar closes, and any performance claim built on a chart of those markers. The distinction is whether the tool is honest about which of its output is provisional.
How can I test an indicator for repainting in a few minutes?
Take a screenshot of the live chart with the current signals visible, wait for several bars to close, then reload the chart and compare. Anything that moved or vanished was provisional. A second check is to step through a replay mode bar by bar and confirm that each signal appears at the moment the bar closes rather than being present from the start. A third is to log alerts as they fire and compare that log to the chart a day later.
Why do signal services show charts full of perfect entries?
Because a historical chart shows the final state of every indicator, not what was visible in real time. If the tool revises its markers, the historical view is an edited version in which the bad calls were removed by the code itself. That is why a live alert log, timestamped as the alerts fired, is worth far more than any number of screenshots when assessing a signal service.