The track record
ChartLens has not yet resolved enough analyses to publish a win rate. We hold publication until at least 20 calls have resolved, because a rate computed from a handful of outcomes is noise dressed up as evidence.
Status
Gathering data
The scoring engine runs hourly from the day the app ships. This page publishes the first figures once 20 analyses have resolved, and updates daily from then on. The methodology below is fixed now, before any numbers exist — which is the only order in which publishing a methodology means anything.
Updated . Rebuilt nightly from the live scoring database.
How this is measured
Every analysis is logged the moment it is produced and scored daily against exchange candle data. First level touched wins: target hit, stopped, or invalidated. Anything unresolved after 30 days expires. Nothing is removed after the fact.
- Only analyses that named a tradeable symbol with a numeric stop and target are scored. Analyses that said "wait", or that read an illegible price axis, make no falsifiable claim and are excluded rather than counted as wins.
- A candle that touches both the stop and the target is scored as a stop, because intra-candle order is unknowable.
- An idea that hit its stop before price ever reached the entry zone is recorded as invalidated, not as a loss — it was never tradeable.
- Outcomes are checked on 15-minute candles from Binance, regardless of the timeframe the analysis was made on.
- Average R is the realised multiple: the plan reward-to-risk on a target hit, -1 on a stop, 0 on an invalidation or expiry.
What it does not measure
- This measures whether the levels an AI produced were touched. It does not measure what a human trader would have earned — no slippage, fees, partial fills or position management are modelled.
- Sample sizes per symbol and per pattern are small early on. Treat any figure with a low n as noise.
Two of those rules cost us points on purpose. Scoring a candle that spans both levels as a loss, and excluding ideas that were never fillable, both push the published number down. A record that resolves its ambiguities in its own favour is not a record.
Why publish this at all
Because the alternative is asking you to trust a confident tone. Every product in this category produces analysis that sounds equally certain whether it is right or wrong, and none of them count. Publishing the record is the only claim we can make that a competitor cannot copy by rewriting their landing page — they would have to have been logging outcomes all along.
It also disciplines the product. When the losses are public, "make the model sound more confident" stops being a growth tactic.
Questions about the record
How accurate is ChartLens?
Not enough analyses have resolved to publish a rate yet. We do not publish a win rate below 20 resolved calls, because a figure built on a handful of outcomes swings twenty points on the next one.
How is the win rate calculated?
Every analysis with a numeric stop and target is logged when produced, then checked daily against 15-minute exchange candles. Whichever level price touches first decides the outcome. Anything unresolved after 30 days expires.
Can ChartLens delete a bad call?
No. Analyses enter the record the moment they are produced, before anyone knows how they resolve, and there is no mechanism to remove one afterwards. The numbers in the app are the same ones on this page.
Why are some analyses excluded?
Because they made no falsifiable claim. An analysis that concluded "wait", or that could not read the price axis and gave no numbers, cannot be right or wrong. Counting those either way would distort the record.
Does this mean I would have made money?
No, and it does not claim to. It measures whether levels were touched. It models no fees, no slippage, no partial fills and no position management, and it says nothing about what a human would have done in the moment.
Page last reviewed . Figures are regenerated from the scoring database on every nightly build.