How the validation works

Every rule below is implemented in the engine and repeated in each report, so a result can be reproduced and challenged.

1 · Selecting the channel and period

A backtest covers one Telegram channel and one date range. History starts at 1 July 2025; a shorter window is allowed if it fits your daily quota. Only messages from that channel are fetched, and only for the required period.

2 · Parsing posts into signals

Each post is read deterministically. The parser extracts the instrument, BUY/SELL, entry price or zone, stop-loss and every target. Labels that carry a number (TP 1: 4081, SL@5072) are handled, while risk/reward ratios, R-multiples, pip or lot annotations, dates and list markers are discarded instead of being mistaken for prices.

A post that cannot be read confidently is kept with explicit reasons — missing direction, stop on the wrong side, several instruments in one message, levels far from the market at that time. It is never turned into a trade.

3 · Linking follow-ups

“TP1 hit”, “move SL to breakeven”, “close half”, “cancel the order” are attached to the signal they refer to: first by Telegram reply, then by an explicit #1234 reference, then by the only open signal for that instrument within a fixed window. Ambiguous links are reported, not guessed.

4 · Simulating the trades

A signal may only act from the first candle at or after its message timestamp — no look-ahead. Multiple targets split the position equally. Stop moves and partial closes take effect from the first candle at or after the update message. Bid/ask spread is paid once per round turn; slippage and commission are applied explicitly.

Outcome buckets

Nothing is silently dropped. Each signal ends in exactly one bucket:

  • Win / Loss / Breakeven — a resolved trade.
  • Not filled — a limit order that price never reached.
  • Cancelled — cancelled by the channel before or after entry.
  • Open at end — still running when the data ends.
  • No market data — no candle series for that instrument.
  • Needs review — the parser was not confident.
  • Invalid levels — price levels incompatible with the market.
  • Out of range — the signal sits outside the selected window.

Win rate is computed over wins, losses and breakevens only. The unresolved buckets are always shown next to it.

What the engine will not do

  • It will not invent a price inside a candle that is not in the data.
  • It will not treat “TP hit” announcements as proof that price reached the level — the candles decide.
  • It will not merge timeframes: a run uses one series and reports which one.
  • It will not convert an ambiguous post into a trade to make the sample larger.

Reading the numbers honestly

Sample size matters

A month of posts may contain very few resolved trades. A win rate over ten trades is not a reliable estimate. The report shows the count of every bucket so you can judge the sample.

Costs change everything

A strategy with a small edge in pips can lose money after spread, slippage and commission. Those costs are part of every figure, and each run stores the settings it used.

Same-minute ambiguity

When a stop and target are both touched inside one minute, the outcome is resolved by an explicit policy and counted. It is not possible to recover the real path at this resolution.

Ready to test a channel?

Register, then contact @backtester_admin on Telegram to have your account activated.

Request access