Every MRE row in the capture carries the same phrase in its Read column: the break was confirmed on the five minute chart before the fifteen minute setup printed. That is a design choice with a price attached, and desks argue about it in the wrong currency. The argument is usually about whether the signal feels late. The argument that can actually be settled is whether the entry price you surrender by waiting is smaller than the expected loss on the false starts that waiting removes.
Written as an inequality it fits on one line, and once it is written the disagreement stops being about temperament.
The choice, stated as a cost rather than a preference
Define three quantities, all in basis points of notional, all measured on your own fills.
L is the lag cost. It is the difference between the price available at the moment the unconfirmed condition first appears and the price available at the moment the confirmed signal prints, signed so that adverse movement is positive. You pay L on every single trade you take. It is not a probabilistic cost, it is a toll.
S is the cost of a false start. It is the loss on a trade that triggers and immediately fails, which for a bracketed setup is bounded by the stop distance, plus the realised slippage on both the entry and the stop exit.
C is the round-trip transaction cost, spread plus fees plus any borrow, on a trade you would not otherwise have taken.
Now let d be the incremental false-start rate you incur by firing on the unconfirmed condition instead of the confirmed one, expressed as a decimal fraction of signals. Confirming is worth it when L is less than d times the quantity S plus C. Rearranged, the break-even is d equals L divided by S plus C. One division. That number is the threshold your desk has been arguing about in adjectives.

Measuring each input without fooling yourself
L is the input people get wrong, because the obvious estimate is biased. If you measure the price difference only on trades you took, you are conditioning on a set that was selected by the confirmation itself, and confirmation is more likely to arrive when the move continued. The honest estimator requires the counterfactual: the price at the unconfirmed trigger on every occasion the condition appeared, including the ones that never confirmed and never became a trade. If your systems do not persist the unconfirmed trigger, you cannot compute L, and no amount of analysis on the fills you have will fix that.
S is easier and still has a trap. The stop distance is known in advance because the module ships bracketed entries with a pre-set stop and target, so the theoretical loss is a given. The realised loss is not, because the stop exit is a fill into the direction that just went against you. Measure S from the actual exit prints, not from the stop levels, and measure it separately for the scalp class, where every visible row in the capture sits, because a tight stop and a wide stop have very different slippage profiles relative to their own size.
C is your desk's number and you already have it. The only refinement worth making is to use the cost at the hours the signals actually arrive rather than a blended all-day figure. A 15m reversal feed emitting around thirty setups a day will not distribute them evenly across the session, and crypto pairs in particular carry different spreads at different hours of the day.
A worked example, with placeholder inputs
The numbers below are illustrative. Substitute your own or the exercise is worthless.
| Input | Value | Where it comes from |
|---|---|---|
| L, lag cost per fill | 18 bps | Mean adverse move from unconfirmed trigger to confirmed print |
| S, realised false-start loss | 60 bps | Stop distance plus exit slippage, scalp class |
| C, round trip cost | 8 bps | Spread and fees at signal hours |
Break-even d is 18 divided by 68, which is 26.5 percentage points. Confirmation has to remove more than a quarter of the false starts that firing early would produce before it pays for itself at those inputs. If your measured d is 9 points, confirmation is costing you 18 bps a fill to save 6.1, and you should be firing on the unconfirmed trigger. If your measured d is 35 points, confirmation is saving 23.8 against a cost of 18 and you should keep it.
Notice how sensitive the threshold is to S. Halve the stop distance and break-even d rises to about 47 points, which is a level almost no confirmation rule clears. Double it and break-even falls to about 14 points, which most confirmation rules clear comfortably. The confirm-or-not decision is therefore not a property of the signal at all. It is a property of the bracket width, which means the answer can legitimately differ between two setup classes on the same engine.
Why the answer changes by instrument and by session
L scales with the volatility of the confirmation window. On a fifteen minute crypto setup where the confirmation is a five minute break, L is one five minute bar of an instrument that trades continuously. On an index reversal, the same nominal wait can straddle a session boundary, and the price at the confirmed print can be on the other side of a gap. There is no meaningful L to measure across a gap because the intermediate prices did not exist, which means the whole framework needs a separate treatment for instruments that stop trading.
C moves in the same direction as L during stress and S moves against you at the same moment, so the three inputs are not independent. During a fast tape the lag cost rises, the stop slippage rises, and the false-start rate rises too. Measuring the three on a calm sample and applying the threshold in a violent one is the standard way this analysis fails in production. Compute the break-even separately on the highest volatility quintile of your sample and see whether the decision flips. If it does, you do not have one threshold, you have a volatility-conditional rule, and you should implement it as one rather than pretending the average applies.
Instrumenting the counterfactual before the next argument
Almost every desk that has this argument has it without data, and the reason is architectural rather than analytical. The signal feed delivers confirmed signals, so confirmed signals are what gets logged. The unconfirmed trigger, which is the entire comparison group, exists for a few minutes inside somebody's calculation and is then discarded.
The fix is to persist, at the moment the unconfirmed condition appears, the instrument, the timestamp, the side, the prevailing bid and offer, and the bracket levels the setup would have carried. That record costs nothing to store and is the only thing that makes L and d measurable. Given that MRE scoring updates on every supported timeframe close and surfaces new signals within seconds of computation, the natural place for that capture is your own subscriber-side handler, stamped with your clock rather than the vendor's.
Run it for a quarter and the argument resolves itself. You will have L from the paired prices, d from comparing the outcome distribution of confirmed against unconfirmed triggers, and S from your own stop exits, and the break-even division takes a second. What you should not do is set the threshold from the vendor's archive of its own confirmed signals, because that archive contains no unconfirmed triggers by construction and therefore contains no information about the quantity you are trying to price.