Internal vs External Liquidity: 2,208 SPY Swing Levels, Tested Against Distance
Internal and external liquidity are ICT terms: external range liquidity is the orders resting beyond the current range, above its swing high and below its swing low. Internal range liquidity sits inside the range, chiefly in fair value gaps. The teaching holds that price alternates between the two.
Internal and external liquidity are ICT’s names for two kinds of price target. External range liquidity is the orders resting beyond the current range, above its swing high and below its swing low. Internal range liquidity sits inside the range, mostly in fair value gaps. This page defines both, walks through SPY in September 2026, and tests on 33 years of SPY daily bars whether either kind is reached more often than its distance alone would predict.
How it forms
Start with a dealing range. The range runs from a swing low to a swing high, usually on a higher timeframe such as the daily chart. The swing high and low page covers how those points are marked.
External range liquidity is beyond the edges. Short sellers keep their stops above the swing high and breakout traders park buy orders there; the mirror image sits below the swing low. The buy-side and sell-side liquidity page covers who places those orders.
Internal range liquidity is inside. The main example is a fair value gap: three candles where the first and third do not overlap, leaving a stretch of prices that one fast candle skipped. Order blocks and minor equal highs or lows inside the range are counted here too.
Price is said to alternate. In this teaching, once price runs an external level it tends to come back to rebalance an internal gap, and once an internal gap is filled the next target is external again. The framework comes from the Inner Circle Trader (ICT), the name Michael J. Huddleston teaches under; the ICT page covers the wider vocabulary. LuxAlgo’s concept library describes the rotation as a guide rather than a law, and notes that real breakouts can skip it.
The rules counted here
Swing high. A daily high above the highs of the two sessions before and the two after. It is known at the close of the second session after, and every test starts there. Swing low is the mirror.
External test. Did SPY trade above that swing high, or below that swing low, within 5, 10 or 20 sessions of it becoming known?
Internal test. A bullish fair value gap forms when a day’s low is above the high of the day two sessions earlier. Did price trade back down to the gap’s upper edge within 5, 10 or 20 sessions? Bearish gaps are the mirror.
The base rate is a level at the same distance. A swing high 1% above the close is only interesting if it is taken more often than any price 1% above the close. For every level, the base is the share of all SPY sessions whose next 5, 10 or 20 sessions reached that far from the close.
A worked example
SPY at the close of Friday 25 September 2026: $771.35. The most recent swing high is 22 September’s high of $775.14, confirmed on the 24th. The most recent swing low is 16 September’s low of $749.60, confirmed on the 18th. That is the dealing range.
External liquidity. Buy-side above $775.14, 0.49% above the close, with the untaken 28 August swing high of $775.30 just beyond. Sell-side below $749.60, 2.82% below the close.
Internal liquidity. A bullish fair value gap formed on 22 September, between the 18 September high of $762.00 and the 22 September low of $772.57. Price came back into it on the 23rd, with a low of $766.50, and again on the 24th, with a low of $763.25, without reaching $762.00.
An external level taken earlier in the month. On 21 September SPY traded to $774.89, above the 3 September swing high of $774.03, then closed at $773.50, back below it. In ICT terms that session took the buy-side above the high and closed back inside the range.
The original data
The sample. SPY daily bars from 29 January 1993 to 25 September 2026, 8,472 sessions. The rule found 1,091 swing highs and 1,117 swing lows. The median swing high sat 1.25% above the close on the day it became known, and the median swing low 1.73% below. Every level is in the SPY swing levels file, and every gap in the SPY fair value gaps file.
Swing highs were taken more often than distance predicts. Within 20 sessions, 837 of 1,087 swing highs were traded through, 77.0%. A level the same distance above the close was reached 72.1% of the time (p < 0.001). At 10 sessions it was 67.9% against 60.6%.
Swing lows were taken about as often as distance predicts. Within 20 sessions, 637 of 1,114, 57.2%, against 56.3% for the same distance (p = 0.50). At 5 sessions they were taken less often: 33.8% against 36.5% (p = 0.033).
Bullish fair value gaps matched distance exactly. 1,681 bullish gaps formed, with a median upper edge 0.47% below the close. Within 20 sessions, 1,364 of 1,676 were revisited, 81.4%, against 81.5% for the same distance (p = 0.92). 69.3% were filled to the far edge.
Bearish gaps were revisited more often. 1,070 formed. Within 20 sessions, 956 of 1,065 were revisited, 89.8%, against 84.7% (p < 0.001).
What the numbers point to
Both results that beat distance point up. Highs above price and bearish gaps above price were reached more often than distance predicts; lows and bullish gaps below price were reached at the distance rate. That fits SPY’s long upward drift and its habit of bouncing after short drops, a pattern that needs no resting orders to explain it.
Taking a level rarely meant a clean reversal. Of the 1,088 swing highs later traded through, 457, 42.0%, closed back below the high on the day they were taken. For lows it was 447 of 997, 44.8%.
When it fails
The level breaks and keeps going. A run through external liquidity that closes beyond it is a breakout, not a raid. More than half of SPY’s taken swing highs, 631 of 1,088, closed above them on the day they were taken.
Every range has both sides. There is always a high above and a low below, so naming which side was the draw after the fact explains nothing. The test above is the question to ask before: is this level more likely to be reached than any price at the same distance?
The p-values are generous. Swings and gaps overlap in time, so the counts are not fully independent. The swing-high result is large enough to survive that; the others are close to the distance rate either way.
One market, one timeframe. These are SPY daily bars. Single stocks, futures and intraday charts need their own count.
Related
The buy-side and sell-side liquidity page names the orders that sit beyond a range. The fair value gap page covers the three-candle pattern that makes up most internal liquidity. And swing highs and lows explains how the edges of a dealing range are marked in the first place.
I mark the swing high, the swing low and the gaps inside, then I ask how far away each one is. Distance explains most of what gets taken, so the nearest level is my default draw until price tells me otherwise.
— Michael Whitman
This page is educational, not financial advice. Test every idea on your own charts before risking money.