Confluences

Which Condition Is Actually Carrying Your Edge?

A five-condition setup that works does not mean five conditions matter. Remove one at a time and re-measure. Leave-one-out attribution usually shows one or two conditions doing the work while the rest only shrink the sample.

E

EdgeFlow

Your checklist has five things on it. Higher-timeframe bias aligned, liquidity sweep, London session, retest of the level, momentum candle on the 5-minute. All five green, you take the trade. And it works. Your journal says so.

Here's the uncomfortable question.

Does it work because of five things? Or does it work because of two things, and the other three just happen to be standing nearby whenever those two show up?

Most of us have never checked. I didn't, for years. Adding a condition feels like caution. Removing one feels reckless, like unbolting a guard rail. So the checklist only ever grows.

Three words, then we start

R is one unit of risk. Risk £200, make £400, that's +2R. Get stopped out, that's −1R. It lets you compare a small trade and a big one on the same scale.

Expectancy is your average result per trade in R. An expectancy of +0.30R means the typical trade in that sample made you roughly a third of what you were risking. If any of that is fuzzy, the trading edge basics piece covers it properly.

And the one this post is really about: contribution. Not "does this condition show up in my winners." That's just correlation, and it's what nearly every journal's tag table shows you. Contribution asks something else. How much worse does the setup get when I take this condition away?

Those are different questions with different answers. A condition can appear in 90% of your winners and contribute nothing at all, because it also appears in 90% of your losers.

The test itself

Leave-one-out is exactly what it sounds like.

Measure the full stack first. All five conditions, whatever expectancy that gives you. That's your baseline.

Then remove one condition and measure again across everything that meets the remaining four. Not just the logged trades that met all five. Everything that met four out of five, including the ones you passed on because the fifth wasn't there.

The gap between those two numbers is that condition's contribution.

Repeat for each condition. You end up with five numbers, and in my experience one or two of them are much larger than the rest.

The requirement almost nobody meets

You need trades where the condition was absent.

Obvious when it's written down, and it's exactly where this falls apart for most journals. If you only ever log trades where all five conditions were true, you have no comparison group. There is literally nothing to measure against. You've got a folder of confirmations.

Two fixes, neither of them glamorous.

Tag every condition on every trade you take, independently, whether or not they were all present. Most traders take plenty of four-out-of-five trades and never record which one was missing.

Then log the ones you skipped. A one-line entry with the conditions that were present and where price actually went is enough. It's tedious for about a month. After that it's the most valuable data in your journal.

A worked example

Imagine fourteen months of journalling. The full five-condition stack produced 64 trades at +0.42R. Genuinely decent. That's the setup you'd defend in an argument down the pub.

Now leave one out at a time:

Condition removedTradesExpectancyContribution
Nothing (full stack)64+0.42Rbaseline
HTF bias aligned121+0.05R+0.37R
London session148+0.19R+0.23R
Retest of the level96+0.38R+0.04R
Liquidity sweep88+0.40R+0.02R
5m momentum candle112+0.44R−0.02R

Read the bottom three rows again.

The retest, the sweep and the momentum candle are contributing somewhere between nothing and rounding error. The momentum candle is slightly negative, which makes sense the moment you say it out loud. Waiting for a confirmation candle means entering later, further from your stop, with worse reward-to-risk on every single trade it lets through.

Two conditions are carrying this setup. Three are along for the ride.

One more thing in that table is worth noticing. Dropping the sweep only expanded the sample from 64 to 88, because this trader almost never takes anything that isn't a sweep. That makes the sweep row the least trustworthy number of the five. When a condition barely expands your sample, you haven't tested it. You've confirmed that you rarely trade without it.

The part that changes how you trade

Keep the two conditions that carried it. HTF bias aligned, London session. Drop the rest.

In this example that's 210 trades at +0.35R.

Yes, the per-trade number went down. Look at what happened to the total. Sixty-four trades at +0.42R is about 27R over those fourteen months. Two hundred and ten trades at +0.35R is about 73R over the same calendar.

Nearly three times the return, from a setup that looks worse on the headline stat.

And the 0.35R is a more believable number than the 0.42R ever was. Sixty-four trades leaves a wide range of plausible true values around your measured average. Two hundred and ten narrows it considerably. This is why honest edge statistics show a range instead of one confident figure, and why EdgeFlow ranks findings by the cautious lower bound rather than the flattering headline. A smaller number you can stand on beats a bigger one you can't.

Where this goes wrong

I'd be selling you something if I said run this once and you're finished.

Small differences are noise. That +0.04R for the retest is not "slightly positive." On 96 trades it's indistinguishable from zero. Treat anything under roughly 0.10R at these sample sizes as unmeasured, not as a small real effect.

Conditions interact. Leave-one-out removes them one at a time, so it can miss pairs. Two conditions might each look redundant on their own while the combination of the two does something real. It happens less often than people hope, but it happens, which is why this is a first pass rather than a verdict. Working through testing condition combinations properly is the follow-up step.

Some conditions aren't optional. There's a real difference between a condition that defines what the trade is and a condition that filters which ones you take. Remove "it's a sweep" and you're not testing a filter any more, you're testing a different strategy. Sorting your tags into required, supporting and avoid conditions before you run this saves you from a meaningless result.

Every condition you keep fragments your sample. Four tags is usually enough to cut a healthy journal into slices too small to read, and what happens at four tags is worth understanding before you start stacking again.

And you found this on the same data. That's the big one. You identified the two carriers by looking at history, so history will always agree with you. Split it chronologically instead. Find the pattern on the older trades, then check it on the newer ones you haven't touched. That discipline is most of what edge discovery actually is.

Why the usual tag table won't tell you this

Every journal has some version of a per-tag breakdown. Win rate by session, win rate by setup type, win rate by tag.

That's a correlation table. It tells you which labels sit next to good outcomes, not which labels produced them. The whole reason confluences don't reliably increase win rate is that the tag table can't separate those two things, and neither can you by eye.

Contribution per condition is a shipped part of what EdgeFlow's discovery output reports, mostly because I got tired of rebuilding this by hand in spreadsheets every few months. If you're weighing tools on this specifically, the EdgeFlow and Edgewonk comparison goes through what each one measures.

How to run this yourself this weekend

Write your setup's conditions down as a numbered list. If you can't get them into a list, that's the actual first job, and what confluence really means is a decent starting frame.

Measure the full stack. Trades, win rate, expectancy in R.

Then for each condition, filter to the other conditions only and measure again. Write the contribution next to it.

Sort by contribution. Anything under 0.10R goes on a list called "unproven," not a list called "delete."

That distinction matters more than it sounds. You're not throwing conditions away. You're demoting them from requirement to observation. Keep tagging them. In six months you'll have more data, and some of them might separate from zero.

Then trade the reduced version and watch what happens to your trade count. If the frequency triples and expectancy holds anywhere close, you've just found more edge than a new strategy would have given you.

Nobody can promise your table will look like the one above. Yours might show three real carriers, or none, or one condition that's quietly costing you money. All three of those are better than not knowing.

Common questions

How many trades do I need before leave-one-out means anything?

Enough that removing a condition still leaves a readable sample on both sides. Under about 30 trades in the comparison group you're mostly measuring noise. A good tool should tell you when the data can't answer, rather than answering anyway.

What if removing a condition makes the setup better?

That happens, and it usually means the condition is costing you entry price or filtering out your bigger winners. Confirmation candles are the classic culprit.

Do I have to log trades I didn't take?

To do this properly, yes. Without them you can only compare five-out-of-five against four-out-of-five inside the set of trades you already liked, which biases everything before you start.

Won't fewer conditions mean more losing trades?

Almost certainly. More losers, more winners, and more total R, if the conditions you dropped genuinely weren't doing anything. Win rate is the wrong thing to protect here.

Pick your most-traded setup, run leave-one-out on it once, and find out whether five conditions were ever really five.

Continue reading

Related articles