Part II, Classical TA Chapter 5

Support, Resistance, and the Quality of a Level

Every line on a chart implicitly answers a question: how seriously should I take it? Most traders never make the question explicit.

5.0Why this chapter exists

Open any chart. Within a single ATR of the current price you will likely find: yesterday's high, yesterday's low, last week's high, the value-area edges from the prior session, a naked point of control from a few sessions ago, two or three round numbers, the session VWAP and one anchored VWAP from a recent event, plus whatever the IB has produced today. Twelve levels, give or take. Maybe more.

Treat them all with equal weight and you are overwhelmed before the open. Pick favorites by intuition and you are inconsistent. Neither is a strategy.

The institutional discipline is to rank levels by a quality score: a function that compresses level type, confluence, age, and prior touch behaviour into a single number you can trade off. The score does not replace judgment. It tells you which line to look at first.

This chapter builds that scoring function from first principles. It is the same structure used in the author's Trend & Levels Pine indicator:

score = baseWeight × confluence_multiplier × age_decay × touch_quality

Each of the four factors gets justified, parameterised, and stress-tested below. By the end of the chapter you should be able to look at a cluttered chart, score the levels in your head, and know which two or three are worth a watch. The mechanical rule the rest of the book leans on: when several levels sit in the same zone, trade the highest-scoring cluster, not the closest line.


5.1The taxonomy of horizontal levels

Before we score, we have to enumerate. The level types that matter for liquid futures, in roughly descending order of standalone reliability:

Volume-derived levels (highest standalone weight)

  • POC (Point of Control): the price level with the most volume in a session. The institutional benchmark for "where business got done."
  • VAH and VAL (Value Area High/Low): the upper and lower bounds of the 70% value area, the price range that contained 70% of the session's volume.
  • Naked POC: a POC from a prior session that has not been retested since formation. Empirically the strongest single horizontal level type on liquid futures (Dalton: ~75% retest within 30 sessions on ES). We treat the naked-POC retest as a primary trade in Chapter 9.

Reference levels (high standalone weight)

  • PDH, PDL, PDC (Prior Day High/Low/Close): the most-marked levels on every desk's chart. Standard-issue reference points.
  • PWH, PWL (Prior Week High/Low): longer-horizon reference. More durable than PDH/PDL because more participants reference them.
  • PMH, PML (Prior Month High/Low): swing-trader reference. Less relevant intraday, more relevant for end-of-day directional bias.
  • Prior session settlement. The price the position was marked to overnight. AVWAP-relevant in particular (Chapter 10).

Structural levels (moderate standalone weight)

  • HTF pivots (1H, 4H swing highs/lows): confirmed swings from higher timeframes. Useful as durable reference within the day.
  • Session pivots (5-min, 15-min ATR-conditioned swings): intraday structural points from Chapter 4.

Intraday session levels (high intraday weight, low overnight weight)

  • IB high, IB low: the 09:30 to 10:30 ET range edges on ES. Standard playbook reference for the rest of the session.
  • Today's RTH open: the cash open price, often retested.
  • Overnight high (ONH), overnight low (ONL): the extended-session range bounds. More relevant to overnight traders; intraday traders care primarily for whether the IB extends through them.

Boost-only levels (low standalone weight, useful in confluence)

  • Round numbers: ES at 6,200, NQ at 22,500, GC at 3,300, CL at 72.00. Mentioned standalone in retail TA but empirically weak as standalone reaction zones; strong when they coincide with two or more other types.

The crucial distinction: standalone weight is what the level produces by itself. Confluence-boosted weight is what happens when the level coincides with one or more other types. The quality score is built to capture this.


5.2The base-weight scale

The hierarchy is what matters; the numbers are evidence.

At the top of the scale sits the naked point of control. A POC that has not been retested since formation is the strongest single horizontal level you can find on a liquid futures chart, and the empirical reaction rate (Dalton's ~75% within 30 sessions on ES, supported by informal validation on 2024 to 2025 data) backs that placement. Prior-week and prior-month extremes come next, durable because more participants reference them than reference any intraday level, and HTF pivots from the 4H chart sit alongside them. POCs and event-anchored AVWAPs occupy the middle. Prior-day extremes (PDH, PDL) and value-area edges follow, slightly lower not because desks ignore them but because the participant pool that defends them is smaller and shorter-horizon. The 5-minute pivots sit near the floor, useful as tactical reference but rarely durable past the session that formed them.

Round numbers are deliberately at the bottom of the scale, despite the prominence retail TA gives them. They do not produce reliable standalone reactions on liquid futures. Their value lives entirely in confluence: a round number that coincides with PDH and a naked POC is a real level. A round number alone is decoration that other traders happen to be looking at.

The actual numbers, calibrated against Bulkowski's reaction-rate hierarchy and Dalton's institutional benchmarks, and stress-tested against 2024 to 2025 data on the major contracts:

Level type Base weight
Naked POC 3.5
Prior week H/L (PWH, PWL) 3.0
Prior month H/L (PMH, PML) 3.0
HTF 4H pivot 3.0
POC 2.5
Anchored VWAP (event-anchored) 2.5
Prior day H/L (PDH, PDL) 2.0
HTF 1H pivot 2.0
Value area edge (VAH, VAL) 2.0
Prior day close (PDC) 1.5
5-min/15-min pivot 1.0
Round number 0.5 (boost-only)

The scale is ordinal but the ratios matter. A naked POC at 3.5 is roughly twice as reliable as a PDH at 2.0; a round number at 0.5 is roughly a quarter. These are not casual calibrations; they survive parameter perturbation across the major contracts and across the regimes in the sample window.


5.3Confluence: levels are clusters, not lines

When two or more levels of different types fall within an ATR-bounded proximity, they form a cluster. The cluster's effective weight exceeds the sum of its parts because:

  • More participants are looking at the price for different reasons.
  • The cluster is harder to "lose" than a single line; participants who reference one type defend, others who reference a different type defend, and the level holds across multiple participant subsets.
  • Liquidity is denser at clustered levels because resting orders accumulate from multiple frameworks simultaneously.

The clustering rule

Two levels cluster when they are within 0.25 × ATR(daily, 14) of each other. For ES with a typical daily ATR of 50 points, that is ~12.5 points; on NQ with ATR of 200 points, it is ~50 points. The proximity threshold scales with volatility, which is the right behavior, a 5-tick proximity that is meaningful in a calm regime is irrelevant in a volatile one.

Confluence multiplier: diminishing returns from additional source types Cap at 2.5× 1.0×1.4×1.8×2.2×2.5×2.5×2.5×2.5× 1 2 3 4 5 6 7 8+ 1.0× 1.5× 2.0× 2.5× Number of confluent source types Multiplier
Figure D5.3.Confluence multiplier curve. Two sources earn 1.4x; three earn 1.8x; five and beyond saturate at 2.5x. Diminishing returns shape the cap.

The confluence multiplier

confluence_multiplier = min(1 + 0.4 × (n_sources − 1), 2.5)

So: - 1 source: multiplier = 1.0 (no boost). - 2 sources: multiplier = 1.4. - 3 sources: multiplier = 1.8. - 4 sources: multiplier = 2.2. - 5+ sources: multiplier = 2.5 (capped).

The cap exists because a cluster of seven coincident sources is not seven times more reliable than a cluster of one; the additional sources contribute diminishing information. The empirical sweet spot is 3 to 4 confluent sources, which is rare enough to be informative and common enough to actually trade.

Worked clustering example

A cluster forms on ES at 6,212 to 6,213 containing: - PDH at 6,212.50 (base weight 2.0) - Round number at 6,200.00, ~12 points away but inside the daily ATR proximity at this volatility (base weight 0.5) - Naked POC from three sessions ago at 6,213.00 (base weight 3.5) - Anchored VWAP from this morning at 6,212.75 (base weight 2.5)

Sum of base weights: 2.0 + 0.5 + 3.5 + 2.5 = 8.5. Number of sources: 4. Confluence multiplier: 1 + 0.4 × 3 = 2.2. Effective cluster score before age and touch adjustments: 8.5 × 2.2 = 18.7.

A nearby single-source level at 6,205 (just PDC at base weight 1.5) has score 1.5 × 1.0 = 1.5, more than ten times less reliable. The trader's attention budget should be apportioned accordingly.


Age decay function: how level relevance decays with bars since formation Fresh: 1.00 ~1 session: 0.68 ~2.5 sessions: 0.37 ~5 sessions: 0.14 0 100 200 300 400 500 0 0.25 0.5 0.75 1.0 Bars since level formation Decay factor decay = e^(−bars / 200), with naked POCs and weekly extremes exempt
Figure D5.4.Age decay. A level's relevance decays exponentially with bars since formation. Naked POCs and weekly extremes are exempt and retain full weight.

5.4Age decay: levels become stale

A level's reliability decays with time since its formation. Recent levels are more relevant than ancient ones; participants who marked the level have had time to forget, take stops out, or have their strategy filter the level out.

The decay function

Exponential decay with a half-life proportional to typical session bar count:

age_decay = exp(−bars_since_formation / decay_constant)

For 5-min RTH bars on ES, decay_constant = 200 (approximately 2.5 sessions). So a level formed: - 0 bars ago: decay = 1.00. - 78 bars ago (one full RTH session): decay = exp(−78/200) = 0.68. - 200 bars ago (≈2.5 sessions): decay = 0.37. - 400 bars ago (≈5 sessions): decay = 0.14.

The decay is fast enough that levels older than a week have minimal residual weight (below 5%) unless they are exceptionally significant types (naked POCs, prior-month extremes), which we exempt from decay. A naked POC at 3.5 base weight does not decay; it remains at 3.5 until it is tested.

The exemption list

Levels exempted from age decay: - Naked POCs (until tested). - Prior-week and prior-month H/L (until next week/month). - Prior settlement (until next settlement). - Anchored VWAPs from events that are still relevant (FOMC AVWAP from this week's meeting; not a 6-month-old AVWAP).

Levels subject to decay: - 5-min and 15-min pivots. - HTF pivots after a session. - IB extremes after the IB session.

The asymmetry reflects the fact that some level types are fundamentally durable (naked POCs are known to retest at high frequency over multi-week windows) while others are tactical (an 11:00 ET pivot is irrelevant by 14:00 ET in most regimes).


5.5Touch quality: not all touches are equal

A level that has been touched five times is not five times more reliable. Touches should be quality-weighted.

The touch quality factor

touch_quality = 1
              + 0.5 × wick_reject_count
              + 0.3 × min(sweep_count, 3)
              − (broken ? 0.6 : 0)

Where: - wick_reject_count is the number of times the level was touched with a candle wick that closed back away from the level (a clean rejection). Each clean rejection adds 0.5 to the multiplier. - sweep_count is the number of times the level was swept (pierced beyond by ≥ 0.10 × ATR) and then defended (price closed back inside). Capped at 3 to avoid over-counting in choppy markets. Each sweep adds 0.3. - broken is true if the level has been definitively broken (price closed beyond the level by ≥ 0.20 × ATR and stayed there for at least 5 bars). A broken level is penalized 0.6 in the multiplier; it has lost its prior status.

Why sweeps add reliability

A counterintuitive point: a level that has been swept and defended is more reliable, not less. The sweep harvested the stop pool; the participants who placed stops above the level were taken out; the level's structural significance is intact, but its visible stop-pool liquidity is now reduced. The next test of the level encounters fewer stops to harvest, so the level is more likely to hold cleanly.

This is the institutional reading. Retail traders often treat a swept level as "compromised" and skip it; the desk reading is "this level just got defended by an institutional player who absorbed the sweep, the next test is a fade with above-average expectancy."

Why broken levels are penalized

A level that has been broken is not gone, but it has lost its primary identity. A broken resistance becomes possible support, but with reduced weight, because the participants who defended the prior level have already lost the trade and may not defend it again. The 0.6 penalty roughly halves the level's effective score, which is the right magnitude empirically.


5.6The composite score and the operational rule

Combining everything:

score = (sum_of_base_weights) × confluence_multiplier × age_decay × touch_quality

For the cluster example in §5.3: - Sum of base weights: 8.5 (PDH 2.0, round 0.5, naked POC 3.5, AVWAP 2.5) - Confluence multiplier: 2.2 (4 sources) - Age decay: 1.00 (mostly fresh; AVWAP is from today, naked POC is exempt, PDH is recent) - Touch quality: assume 1 wick reject earlier in the session = 1.5

Score = 8.5 × 2.2 × 1.00 × 1.5 = 28.05.

A nearby weak level (PDC alone, no touches, no sweeps) might score 1.5 × 1.0 × 0.85 × 1.0 = 1.27. The cluster is 22× more attention-worthy.

The operational rule

When multiple levels fall in the same trading zone:

  1. Compute or estimate the score for each.
  2. Trade the highest-scoring level, not the closest.
  3. Treat the score gap as a confidence proxy: a 5× score advantage justifies higher conviction; a 1.5× advantage is a tiebreaker, not a thesis.

In the field, most traders run a level-scoring tool (the author's Trend & Levels indicator is one example; many platforms support similar) so the score is precomputed. The discipline is to read the score before designing the trade, not afterward.


5.7Hierarchical timeframe synthesis

A level's score is computed within a timeframe context. The same physical price level can be a cluster on a 5-min chart and a single-source level on a daily chart. Which score should you trade?

The institutional discipline:

  • For intraday entries, use the intraday-timeframe score (5-min or 15-min context).
  • For directional bias and target setting, also consult the daily-timeframe score; a level that is a high-score cluster on both intraday and daily is a primary level.
  • A daily-timeframe level that does not appear at all on the intraday score is still relevant for end-of-day positioning; do not dismiss it.

The integration is additive. The intraday cluster tells you where to enter; the daily structural context tells you whether the trade has room to extend.


5.8Calibration and parameter sensitivity

The weights in §5.2 and the multipliers in §5.3 to §5.5 are defensible defaults, not laws. They should be calibrated against your own data.

How to calibrate

  1. Pull 60 to 90 sessions of your primary contract at your primary timeframe.
  2. For each session, identify all level types present and their scores.
  3. For each level, observe whether it produced a "reaction" (defined as: price touched the level and reversed by ≥ 0.5 × ATR within 20 bars).
  4. Bin the data by score and compute the empirical reaction rate per bin.
  5. The reaction rate should be monotone increasing with score. If it is not (e.g., score 5-10 has 60% reaction but score 10-15 has 50%), your weights are off and need adjustment.

A well-calibrated quality score produces a clear monotone curve: score 0-2 around 30 to 40% reaction; score 5-10 around 55 to 65%; score 15+ around 70 to 80%. Below 30% is approximately the unconditional base rate (price reacts somewhere ~30% of the time at random horizontal lines), so anything above that floor is real signal.

Parameter robustness

Vary each parameter (base weights, confluence multiplier, age-decay constant, touch coefficients) by ±20% and re-compute the reaction-rate curve. A robust calibration produces qualitatively similar curves under all perturbations. A fragile calibration produces wildly different curves; if so, you are overfit, and the parameters need to be simplified or pooled across regimes.

This is a small-scale walk-forward validation (Chapter 16). Doing it once on your contract and timeframe earns the right to trust the score.


5.9Failure modes of the quality score

Things the score does not capture, and where it can mislead.

  1. Regime mismatch. A high-score level in a Trend-Vol regime is not a high-quality fade; it is a continuation reference. The score does not encode regime; you must apply the regime filter from Chapter 2 separately.

  2. News-event scenarios. Around tier-one news (FOMC, NFP), scores collapse because the information event overrides structure. The blackout protocol from Frameworks doc applies.

  3. Roll-day distortion. On the day volume migrates between contracts, the score on the back-adjusted continuous chart can be misleading because the underlying contract's level reality has changed. Verify on the unadjusted contract.

  4. First-touch bias. A level that has never been touched (a fresh PDH, a fresh naked POC) carries no touch-quality history. The score on first touch is the structural component only; it can over- or under-estimate reliability depending on conditions.

  5. Liquidity holes. A level computed correctly but located in a thin part of the order book (overnight, near roll, holiday) will not produce reliable reactions even with a high score, because the price action through the level is a function of liquidity, not score.

  6. Self-fulfillment cap. A level that everyone tracks (PDH on ES) gets some reaction because everyone tracks it, regardless of score. This effect produces a "score floor" of meaningful reaction at trivially-scored levels of high prominence; do not overweight the score gap when comparing well-known levels to obscure ones.


5.10Diagram concepts referenced in this chapter

  • D5.1: Level taxonomy table-as-figure. A clean tabular display of all level types with their base weights, sorted by weight.
  • D5.2: Cluster formation visualisation. A chart showing four levels in close proximity, the ATR proximity threshold drawn, and the resulting cluster.
  • D5.3: Confluence multiplier curve. A line plot of confluence_multiplier versus n_sources, showing the diminishing-returns shape and the cap at 2.5.
  • D5.4: Age decay shape. Exponential decay curve over 0 to 500 bars, with named anchor points (1 session, 1 week, 1 month).
  • D5.5: Touch quality decision tree. A flowchart from "level touched" to one of {clean rejection / sweep-and-defend / break} with the resulting touch_quality contribution.
  • D5.6: Empirical reaction-rate calibration plot. A scatter or binned-bar chart of empirical reaction rate versus score, showing the monotone curve a well-calibrated score produces.


5.12Exercises

Exercise 5.1: Manual scoring. For one current ES RTH session, identify all levels within ±1.5 × daily ATR of the close. Assign base weights, identify clusters within 0.25 × ATR, compute confluence multipliers, apply age decay (use 0 for fresh levels and 0.5 for ~1 session old), apply touch quality (1.0 default for untouched, +0.5 per clean wick reject seen). Sort the levels by score. Compare to the levels that actually produced reactions in the next session.

Exercise 5.2: Calibration plot. On a tool of your choice, compute scores for all levels across 30 recent sessions on your primary contract. Tag each level with whether it produced a reaction (≥ 0.5 × ATR reversal within 20 bars). Plot empirical reaction rate versus score in 2-unit bins. The plot should be monotone. If it is not, your weights need recalibration.

Exercise 5.3: Confluence count distribution. Over 30 sessions, count how often the chart contains a cluster of exactly 1, 2, 3, 4, 5+ sources. The distribution will be heavily right-skewed; clusters of 4+ are rare. This is informative about how often the high-conviction confluence setup actually appears (typically 0 to 2 per session).

Exercise 5.4: Touch-quality stress test. Take a level that has been swept twice and defended on both sweeps. Compute its touch quality. Now compare to a level that has been touched twice with clean wick rejections. Both have similar touch-quality scores. Verify on your own data which is the more reliable predictor of the next reaction; the answer may be context-dependent (sweeps in Range regimes, rejections in Trend-Calm).

Exercise 5.5: Hierarchical timeframe overlay. On a single ES chart, mark the top three intraday-score levels and the top three daily-score levels. Note any overlaps and any disagreements. The overlaps are your highest-conviction zones.


Next chapter: trend tools, moving averages, MACD, ADX, treated as regime filters and deviation references rather than crossover signal generators.