Blog/AI & Technology
AI & TechnologyJul 29, 202611 min read

What Actually Happens After a Graded Setup: The Real Outcome Data

An aggregate report on SnapPChart's automatic outcome tracking: 923 resolved skip checks, 151 chases that went materially adverse, and a 32-row actionable pool that is far too small to call a win rate.

BL
Benjamin Loh
Founder of SnapPChart · trader and dev

SnapPChart grades a chart and hands back a letter, a verdict, an entry and a stop. The obvious follow-up, and the question I get asked more than any other, is whether any of that turns out to be right. For most of the tool's life I could not answer honestly, because nothing was watching what happened after the grade. That is no longer true. An automated sweep now pulls the real price bars that printed after a chart was graded and checks, mechanically, what a fixed set of exit rules would have done with them. This post is the first aggregate read on that table. Every figure comes from one direct query against the production outcomes table on 29 July 2026, so treat it as a dated snapshot rather than a fixed number, because rows land every day. One clarification before the numbers, since it decides how to read the whole thing: this is not a guide to tracking your own trades. The piece on which journal metrics are worth logging and which are noise covers that, and it is about your personal accuracy by grade band. This one is company-level and aggregate. It is what we see across everybody's charts, published because a tool that grades setups should be willing to show what happened next.

Quick Answer

The whole report in one paragraph

As of a pull on 29 July 2026 the outcome table held 955 resolved rows across two separate checks that must not be blended. The large one, 923 rows, covers setups the AI told people to skip or wait on and asks what chasing the entry anyway would have done. 151 of those hypothetical chases (16.4%) were materially underwater by the end of the tracking window, and 772 (83.6%) had not moved much in either direction. The small one, 32 rows, covers setups the AI called actionable and checks whether the AI's own stop or a derived 2:1 target got touched first. 14 reached target, 18 hit the stop, and none went untouched. Thirty-two is nowhere near enough to publish as a win rate. The breakeven win rate at 2:1 is 33.3%, and the 95% interval around 14 of 32 runs from roughly 28% to 61%, which sits on both sides of it. So the skip data is starting to say something and the take data is not saying anything yet, and this post is written that way round on purpose.

What Actually Gets Tracked After a Grade

Nothing here relies on anyone logging a trade. When an analysis finishes, a row goes into a tracking queue automatically, and a background sweep picks it up later once enough finalized bars have printed. That row is then judged by one of two recipes, chosen by what the AI said to do. The two recipes measure different things, in different units, and mixing them together would produce a number that means nothing at all, which is why every table below keeps them apart.

The first recipe applies when the verdict was actionable, meaning the AI wrote down an entry and a stop and said the setup was worth taking now. The sweep ignores whatever target the AI suggested and derives its own at exactly twice the risk distance, so every actionable row reads on one common scale instead of on whatever ratio the model happened to pick that day. Then it walks the bars in order and records which level real price touched first. Stop first is a loss on that scale, target first is a win, and if the window runs out having touched neither the row resolves as untouched. For stocks the sweep drops pre-market and after-hours bars entirely, so a thin extended-hours wick cannot fake a touch that nobody could have traded. The reason a 2:1 frame is the right yardstick, and what it implies about the win rate you need, is worked through in the guide to how a reward-to-risk ratio sets your required win rate, and the standard definition is the one on Investopedia's risk-reward ratio entry.

The second recipe applies to everything the AI told you to leave alone, both the plain skips and the wait-for-a-pullback calls. There is no confirmed fill on any of those, so claiming a profit would be dishonest and the code never does. What it measures instead is the counterfactual that actually matters to a trader looking at a skip verdict and itching to click anyway: if you had chased this at the price on screen the moment it was graded, where would you be by the end of the window? It anchors to the open of the first bar after the grade, compares that to the close at the end of the window, and calls it an avoided loss only if the move against you was at least 1% of price. Anything smaller counts as noise. Notably it uses the window's closing price rather than the worst tick inside it, which produces a smaller and less dramatic number, and a reproducible one. You can open the same chart and check it.

The two recipes, side by side
different questions, different units
 The take-it checkThe skip / wait check
Which verdicts it coversActionable, enter nowSkip, no clean entry, and wait for a pullback
Entry price it assumesThe entry level the AI wrote downThe open of the first bar after the grade, the price a chaser would get
Exit rules it appliesThe AI's own stop, and a target derived at exactly 2x the riskNone. No fill is ever assumed, so no profit is ever claimed
What resolves itWhichever level real price touches firstThe adverse move measured at the close of the window, not the worst tick
Threshold for a bad resultAny touch of the stop before the targetAt least 1% adverse against the direction, below that is treated as noise
Unit it reports inR multiples, +2R on target and -1R on stopPercent of price, because there is no confirmed entry or stop to define R
Window it waitsFixed candle count off the chart's own timeframe, a touch resolves it soonerThe same candle count, but it always runs to the end of the window
Resolved as of this pull32923

The last row is the one that shapes everything else. A tool whose default answer is skip resolves nearly thirty skip and wait rows for every actionable one, 923 against 32, so one of these two datasets is already large enough to read and the other is not close. That imbalance is not a filter hiding bad results. It tracks the verdict split reported in the 90-day breakdown of how the grades and verdicts actually landed, where skip took 88% of charts and actionable took 6%.

What Happened to the Setups It Said to Skip?

923 of those calls have now resolved, and 151 of them, 16.4%, would have put a chaser at least 1% underwater by the close of the tracking window. The remaining 772, 83.6%, would not have moved much either way. Here is the full resolved breakdown across both recipes, with each share taken against its own pool rather than against the combined total, because a combined percentage would be meaningless.

Resolved outcomes, pulled 29 July 2026
955 rows, two separate pools
PoolResolved outcomeRowsShare of pool
Skip / waitChase would have gone materially against you15116.4% of 923
Skip / waitChase would not have moved much either way77283.6% of 923
Take itDerived 2:1 target touched first1443.8% of 32
Take itThe AI's own stop touched first1856.3% of 32
Take itWindow elapsed touching neither level00.0% of 32

Roughly one skip call in six was protecting somebody from a real adverse move, and the threshold for counting one is not a rounding error. It is a full 1% against you measured at the end of the window, on a trade you would have entered at market because the setup looked good enough to chase. Scale that across a few sessions a week and you have the entire loss-prevention argument in one number, which is the same argument as the piece on building a filter for the trades that are not worth taking. The edge is not in the setups you find. It is in the ones you were talked out of, and 151 is the first time I have been able to count them instead of assert them.

Both pools drawn to the same scale, then the small one magnified

AI chart grading outcome data: the resolved skip pool next to the much smaller actionable poolThree horizontal bars. The first shows 923 resolved skip and wait rows, split into 151 rows where a chase would have gone materially adverse and 772 where it would not have moved much. The second shows the 32 resolved actionable rows drawn at the same scale, a thin sliver by comparison. The third re-draws those same 32 rows magnified twenty times so the split of 14 target hits and 18 stop hits is readable.Skip / wait pool923 resolved15177216.4% adverse83.6% not much either wayActionable pool, same scale32 resolvedThis is the pool people want a win rate from.The same 32 rows, magnified 20x14182:1 target firststop first43.8% of 32 is not a win rate. The 95% interval runs about 28% to 61%, and 2:1 breakeven is 33.3%.
AI chart grading outcome data: the resolved skip pool dwarfs the actionable pool, which is why the small one gets no headline number
Before the next impulse entry

Would the chart in front of you land in the 16.4%, or the 83.6%?

Upload the screenshot and SnapPChart grades it against the same rubric every chart in this report went through, then hands back a verdict with an entry, a stop and targets. You still make the call.

Grade this setup

Does Skipping a Trade Actually Help?

Sometimes, and 772 rows say the honest answer is that most of the time it did not matter much. That is the number I was most tempted to bury, so it gets its own section. In 83.6% of resolved skip and wait calls, chasing the entry anyway would have gone essentially nowhere by the end of the window. Not disaster, not a missed rocket, just a flat outcome that would have cost you commission, spread and attention for no particular reason.

There is a spin available here that I am not going to use. Somebody could call 772 rows a pile of missed trades, or alternatively wave them away as boring proof that skipping is free. Neither reading is supported. A move under 1% at the window close is genuinely ambiguous: it could have been a small winner, a small loser, a whipsaw that came back, or nothing at all. The check is not designed to distinguish those cases, because a not-entered setup has no confirmed entry, no confirmed size and no confirmed stop to score against. All 772 honestly means is that chasing would not have mattered much either way, so no strong claim gets made from it in either direction.

What that leaves is a sensible expectation to carry into your own trading. When a verdict says wait or skip and you override it, you are usually not blowing up your account. You are usually just adding a low-information trade to your day, and occasionally, about one time in six on this data, you are walking into something that hurts. That is a much less dramatic story than the one most trading tools tell, and it is closer to how a real session behaves. Most charts are not the trade. The momentum reads the engine is built around, the flags and reclaims and clean breakouts in the momentum trading playbook, only line up a handful of times a week, and everything else is filler you can decline at no real cost.

What About the 32 Setups It Said to Take?

This is the pool everyone wants a headline number from, and it is the pool that cannot support one yet. 32 actionable rows have resolved. 14 touched the derived 2:1 target first, 18 touched the stop first, and none ran the window without touching either level. That works out to a 43.8% target-hit rate on a sample of 32, against a breakeven win rate of 33.3% for a 2:1 target, and all three of those numbers have to travel together every single time any one of them gets quoted.

That 33.3% is just arithmetic. At a 2:1 reward-to-risk ratio the breakeven win rate is 1 divided by (1 + 2). So 43.8% on a sample of 32 sits above breakeven, and if the sample were large that would be a real result. The sample is not large. Applying a standard binomial proportion confidence interval to 14 successes out of 32 gives a 95% range of roughly 28% to 61%. The 33.3% breakeven line sits inside that range. In plain terms, 32 rows cannot distinguish a genuine edge from a coin flip that happened to land well, and anyone who tells you otherwise with a sample this size is selling something. If you want to see how quickly the required win rate moves as you change the ratio, the breakeven win rate calculator does the arithmetic for any R multiple you type in.

Two more caveats on those 32, both of which cut against the flattering reading. First, when a single bar touches the stop and the target within the same candle, the code resolves it as the target. That is deliberately the optimistic convention, so 14 is the generous count of target hits rather than the conservative one. Second, the target is derived at a flat 2:1 from the AI's own entry and stop, which means a setup whose real structure supported a much larger move still gets scored at 2R and a setup with an unrealistically tight stop gets a target that was never realistic. The uniform frame is what makes rows comparable to each other. It is not a claim that 2:1 was the right exit on any particular chart.

The reason to publish this pool at all, at n=32, is that waiting until the number looks better is how trading-tool statistics got their reputation. So here it is, with its own interval attached, and the plan is to leave it alone until the sample is several times larger. Frequent intraday trading carries a substantial risk of loss regardless of what any grader says, a point FINRA's guidance on frequent intraday trading makes without any hedging at all, and 32 resolved rows does not move that base rate.

Why This Is Outcome Tracking and Not Prediction

Nothing in this post involves the AI forecasting anything. That distinction gets blurred constantly in this category, so it is worth spelling out mechanically. At grade time the model reads a static screenshot and produces a quality score, a verdict, and levels. It makes no statement about what price will do next. Days later, a separate process that has never seen the model's reasoning fetches the bars that actually printed, applies a fixed arithmetic rule to them, and writes down what that rule would have produced. The sweep is a scorekeeper walking real data with a ruler, and it runs after the fact, on facts. The wider question of why a grader is a fundamentally different product from a forecaster is worked through in the piece on why the tool grades a chart instead of predicting the market, and the same boundary separates a graded verdict from an alert that simply tells you to buy.

The practical consequence is that a resolved outcome cannot be fed back as validation of the model's judgment on any individual chart. A target-hit row does not mean the grade was correct, and a stop-hit row does not mean it was wrong. A good setup can lose and a bad one can run. What the aggregate does support, once the samples are large enough, is a much narrower claim: that the verdicts sort real price behavior into meaningfully different buckets. The skip pool is already large enough to start answering that. The actionable pool is not.

It is also worth naming what the tracking cannot see, because the gaps are structural rather than temporary. It does not know whether anybody entered a trade, at what size, or where they really put their stop. It does not connect to a broker, read an account, or watch a position. It does not scan for setups or alert you when one forms. Rows on symbols the data provider does not cover, timeframes that will not parse, or entries and stops that are geometrically nonsensical get marked untrackable instead of estimated. If you want the plain-English version of what the read is before any of these numbers are attached, the AI chart analysis overview covers it, and the broader argument for where a machine read belongs next to your own judgment is in the guide to AI trading.

What This Data Should and Should Not Change

When I ran the 30-day experiment of grading every setup by hand before taking it, the thing that changed was behavior rather than results, and the value showed up in the trades the bar kept me out of. These 923 rows are the population-scale version of that anecdote, measured by a process with no opinion and no memory of what I hoped it would find. That is the useful part. The 32-row pool is the part to leave alone for now.

  • Treat a skip verdict as cheap most of the time and valuable occasionally
    83.6% of the time chasing anyway would not have mattered much, and 16.4% of the time it would have put you at least 1% underwater. Both facts argue for the same behavior, because the upside of overriding a skip is small and the downside is not.
  • Do not quote the 43.8% figure without the 32
    The sample is too small to separate an edge from noise, and its confidence interval crosses the 33.3% breakeven line for a 2:1 target. If you repeat the number anywhere, repeat the sample size in the same sentence.
  • A resolved outcome is not a verdict on the grade
    The sweep applies one fixed arithmetic rule to real bars. It does not know if you traded, and it cannot tell you whether any individual grade was right. Good setups lose. That is the job.
  • Check the number yourself when it matters
    The skip check measures the adverse move at the window close rather than the worst tick precisely so you can open the same chart and verify it. Any tool reporting outcomes you cannot reproduce deserves less trust, including this one.
  • Expect these figures to move
    One query, one day, on a table that grows continuously. The skip shares will drift slowly and the 32-row pool will swing hard on a handful of new rows. Read the pull date before you read the percentage.
The honest version

Of 955 resolved rows pulled on 29 July 2026, the meaningful pool is the 923 skip and wait calls: 151 chases (16.4%) would have gone materially against you, and 772 (83.6%) would not have mattered much either way. The 32 actionable rows split 14 target and 18 stop, which is 43.8% against a 33.3% breakeven at 2:1, on a sample far too small to call an edge. None of it is a prediction. It is a mechanical rule applied to bars that already printed, and it is published while it is still inconvenient rather than once it flatters the product.

Frequently Asked Questions

Do I have to log anything for this outcome tracking to work?

No. A row is enqueued automatically when an analysis completes, and a sweep resolves it later once enough finalized bars have printed. There is nothing to click, no trade to mark as taken, no journal to fill in. The flip side of that convenience is coverage: a row can only resolve if the symbol maps to a supported ticker, the chart's timeframe parses to a bar interval, and the entry and stop form sensible geometry. Charts that fail any of those get marked untrackable rather than guessed at, which is why the resolved counts in this post are smaller than the total number of charts graded in the same period. The numbers describe the subset that could be checked against real bars, not every chart anyone uploaded.

Why is the take-it sample so much smaller than the skip sample?

Because the grader says skip far more often than it says go. The 90-day distribution report put the actionable verdict at about 6% of charts and skip at about 88%, and the resolved counts in this post show the gap wider still: 923 skip and wait rows against 32 actionable ones, nearly thirty times as many. The sweep code is even written around that imbalance, with separate per-run caps for the two pools so the high-volume skip backlog cannot starve the handful of actionable rows waiting to resolve. It is not a sampling bug or a filter that hides losers. It is the direct consequence of a tool whose default answer is no, which means an honest win-rate read on the actionable pool is going to take a long time to accumulate.

Does a chase_avoided_loss row mean SnapPChart saved me money?

No, and the distinction matters. That result means one thing only: if someone had bought or shorted at the price visible right after the chart was graded, they would have been at least 1% underwater by the end of the tracking window. It does not know whether anyone actually took the trade, what size they used, where they would have placed a stop, or whether they would have cut it early. Nobody's account is being observed. It is a counterfactual measured on real bars, which is a genuinely useful thing to have counted at scale and a completely different thing from a P&L claim. Treat it as evidence that skip calls are not empty, not as a number you can add up and call savings.

Can I reproduce these numbers on my own chart?

The skip check yes, the take check mostly. The skip check deliberately measures the adverse move at the close of the tracking window rather than the worst tick inside it, specifically so you can open the same chart later and check the number yourself. Worst-tick numbers look more dramatic and are much harder to verify, which is why the code does not use them. The take check is a first-touch test on stop versus a 2:1 target, so you can walk the bars and see which level got tagged first. One convention to know about before you audit it: when a single bar touches both the stop and the target, the code resolves it as the target. That is the optimistic reading, and it means the target-hit count is the generous version of the count rather than the conservative one.

Will these numbers still be accurate when I read this?

No, and you should assume they have drifted. Every figure here comes from one query against the production outcomes table on 29 July 2026, and the table adds rows every day as new charts get graded and old ones resolve. The shares will move, and the take-it pool in particular will move a lot, because a sample of 32 swings on a handful of rows. That is the honest reason this is published as a dated snapshot with a stated pull date rather than as a permanent statistic on a marketing page. If a number here is load-bearing for a decision you are about to make, treat it as a direction rather than a constant.

Disclaimer

This article is for educational and informational purposes only and does not constitute financial advice. It reports anonymized, aggregate product data from SnapPChart's automated outcome tracking, read from the production outcomes table on 29 July 2026 and accurate only as of that pull. The figures describe what a fixed, mechanical exit rule would have produced against real price bars after a chart was graded. They are not any trader's returns, and no profit, loss, or win-rate claim is made or implied. The 32-row actionable sample is explicitly too small to support a win-rate conclusion. SnapPChart grades a static chart screenshot against a consistent rubric; it does not predict price, scan the market, send alerts, connect to your broker, read live price or account state, or know whether you entered any trade. Day trading carries a substantial risk of loss, is not suitable for every trader, and many day traders lose money regardless of any tool they use. Always do your own research and never trade with money you cannot afford to lose.

BL
Benjamin Loh
Founder of SnapPChart · trader and dev

Writes about AI-assisted day trading, technical analysis, and the systems traders actually use to stay disciplined.

Get a grade on the chart in front of you.

Upload the screenshot and SnapPChart returns a letter grade, a verdict, an entry, a stop and targets, scored against the same rubric every chart in this report went through. It reads the picture you hand it. It does not know whether you take the trade, and the outcome sweep described here checks a mechanical exit against real bars afterwards rather than predicting anything. No card required.

Grade your setupNo card required