ICT Weekly PD Array: An Empirical Test

Test period: January 2012 – October 2026 · Instruments: EURUSD, GBPUSD, USDJPY, AUDUSD, XAUUSD, BTCUSD, NAS100 (M1, bid) · Out-of-sample block: 2012–2018 · Published: November 2026

previous N completed weekly candles (N = 20 / 40 / 60 / 80)price at the decision point: P = 0.18100% = range high75%50% = EQ25%0% = range lowP > 1: above the rangeP < 0: below the rangePremium half (P ≥ 0.5)→ short biasDiscount half (P < 0.5)→ long bias
Fig. 1 — The weekly premium/discount grid used in this study. The dealing range is the highest high and lowest low of the previous N completed weekly candles, frozen at the weekly open. The 50% level is the equilibrium (EQ); the four bands are the grid’s grading. P is the position of price inside the range (0 = range low, 1 = range high).

1. Objective

The premium/discount array (PD array) is the oldest, higher-timeframe part of the ICT toolkit. A dealing range is marked on a weekly (or daily) chart and split at its 50% equilibrium. Price above EQ is “premium”, where one is supposed to look for shorts; price below EQ is “discount”, where one is supposed to look for longs. Finer versions grade the range into quarters and treat the 25%, 50% and 75% levels as reaction points. Later formulations apply the same grid to intraday charts, including one-minute data; that use is outside the scope of this study, which tests the original weekly-anchored form.

The rules are turned into fixed, mechanical definitions and every claim is compared with a random baseline, across seven instruments and nearly 15 years of one-minute data. The design follows the order block study.

1.1 Claims tested

#ClaimSection
①Premium/discount bias: when price is in the discount half of the weekly range, longs do better than ordinary long entries; in the premium half, shorts do better than ordinary short entries3.1
②Grading: the deeper price sits inside the discount (premium) quarter, the stronger the effect; the four bands behave differently3.2
③Price reacts at the 25%, 50% (EQ) and 75% levels of the weekly range more than at other levels3.3
④The weekly premium/discount location improves the quality of 4-hour order block and fair value gap first-return entries when used as a directional filter3.4

2. Methodology

2.1 Data

  • Source: Dukascopy, M1 bid (via the dukascopy-node CLI)
  • Range: 2012-01-01 to 2026-10-31 for EURUSD, GBPUSD, USDJPY, AUDUSD, XAUUSD and NAS100; BTCUSD starts in May 2017 (first test entries in 2018). Flat (OHLC-equal) bars were removed
  • Time handling: all timestamps converted to New York time with full US daylight-saving rules. Weekly candles open on Sunday 17:00 NY, daily candles at 17:00 NY, and 4-hour candles at 18:00, 22:00, 02:00, 06:00, 10:00 and 14:00 NY, as in the order block study
  • Out-of-sample split: all definitions and parameters were fixed while working on 2019–2026. The 2012–2018 block was not looked at until the final run, so it acts as a genuine out-of-sample check. Because the first weekly ranges need 20–80 completed weeks of history, the earliest out-of-sample entries fall in 2013 (mid-2013 for the 80-week window). Every headline result is reported for both blocks

2.2 Weekly dealing range and grid (fixed before testing)

  • Dealing range: highest high and lowest low of the previous N completed weekly candles, N = 20, 40, 60 and 80 (60 is the look-back usually quoted; 80 is a longer variant used on some chart templates). The range is frozen at the weekly open, so every value is known at the time of entry. A live chart indicator that includes the current week changes during the week and is therefore not what is tested here
  • Location: P = (price − range low) / (range high − range low). Discount: P < 0.5. Premium: P ≥ 0.5. Bands: 0–25% and 25–50% (discount), 50–75% and 75–100% (premium); P < 0 and P > 1 mean price is outside the range
  • Daily decision point (claims ① ②): 18:00 NY on every trading day, entry at that minute’s open. Bias rule: long if P < 0.5, short otherwise. Stop 1.0 × ATR(14) of the previous 14 completed daily candles; fixed targets of 1R and 2R; five days to resolve
  • Level reactions (claim ③): for every trading day, the first touch of each level of the weekly range, approached from the side of that day’s open. From the touch, price must move ±1 daily ATR around the level within three days: back toward the open side is a reversal, through the level is a continuation. Control levels are 12.5%, 37.5%, 62.5% and 87.5%
  • Zone entries (claim ④): 4-hour order blocks and fair value gaps with the rules of the order block study. OB: an opposite-colour candle at a 12-candle extreme, body ≥ 0.1 × ATR(14), validated within 12 candles by a close beyond the zone; FVG: a three-candle gap of at least 0.1 × ATR(14). Limit entry at the near edge on the first return within 48 candles (gap fills at the bar’s open), stop at the far edge (for OBs, including the next candle’s low), three days to resolve. The zone’s location is P at the fill price. A trade is “aligned” when it is long in discount or short in premium, and “counter” otherwise

2.3 Random baseline

Every trade is paired with ten random entries in the same direction, at the same minute of the day, on other days within ±60 days (inside the same block), with the same stop distance. The quantity reported throughout is the edge: the real win rate minus the random win rate, in percentage points (pp). Standard errors are clustered by calendar month across all instruments, which is more conservative than treating consecutive days or different instruments as independent. Comparisons of two groups use the same month clusters.

2.4 Outcomes and costs

  • Whichever of target or stop is hit first on M1 data. A trade whose entry bar already touches the stop is a loss; if target and stop are both hit inside the same later M1 bar, or neither is hit in time, the trade is excluded as unresolved (for real and random entries alike)
  • Minimum stop distance: 10 × the round-trip cost, so costs never exceed 0.1R
  • Net expectancy is reported after an approximate prop-firm cost (spread plus commission, round trip, October 2026). “Break-even cost” is the multiple of these costs at which a group’s net expectancy would be zero
EURUSDGBPUSDUSDJPYAUDUSDXAUUSDBTCUSD*NAS100*
1.4 pips2.2 pips2.5 pips1.6 pips$0.58$252.0 points

* Assumed round-trip costs for BTCUSD and NAS100; they are not taken from a verified account specification. The order block pocket in Section 3.4 stays positive without these two instruments.

3. Results

3.1 Claim ① — “Buy in discount, sell in premium”

The rule was applied at 24,506 daily decision points (9,918 in 2012–2018, 14,588 in 2019–2026). Each trade follows the weekly bias and is compared with random entries in the same direction.

Look-backn (1R)Edge 2012–2018Edge 2019–2026Edge, all (1R)Win rate real / randomNet exp. 1REdge, all (2R)Net exp. 2R
20 weeks17,811+3.49 pp+2.79 pp+3.07 pp (z +4.82)48.5% / 45.5%-0.054R+2.26 pp (z +3.79)-0.410R
40 weeks17,370+2.53 pp+2.45 pp+2.48 pp (z +3.98)48.7% / 46.2%-0.051R+1.73 pp (z +2.65)-0.396R
60 weeks16,902+1.82 pp+1.89 pp+1.86 pp (z +2.94)48.5% / 46.6%-0.055R+1.24 pp (z +1.84)-0.393R
80 weeks16,468+1.98 pp+1.76 pp+1.84 pp (z +2.77)49.4% / 47.5%-0.038R+1.30 pp (z +1.84)-0.364R

Across all seven instruments, trading with the weekly bias beats random same-direction entries by +1.9 pp at 60 weeks (z +2.94), with the same size in both blocks (+1.8 pp in 2012–2018, +1.9 pp in 2019–2026) and a positive sign in 14 of 14 instrument-by-block cells. Shorter windows give a larger tilt (20 weeks: +3.1 pp, z +4.82); lengthening the window to 80 weeks does not improve on 60 (+1.8 pp, z +2.77).

The tilt does not make money. Bias trades win 48.5% of the time against 46.6% for the random entries, and a 1R target needs more than 50%. Gross expectancy is -0.030R and net expectancy -0.055R per trade; no window has a positive net result at 1R or 2R. The random baseline itself wins less than half the time because the rule is contrarian (it sells in premium, and premium trades outnumber discount trades 9,876 to 7,026 in this sample, a sample dominated by rising markets such as gold, Nasdaq and bitcoin). The edge measure removes that drift; the profit and loss does not.

Subset (60 weeks, 1R)nEdge 2012–2018Edge 2019–2026Edge, allGross exp.Net exp.
Long in discount (P < 0.5)7,026+2.10 pp+2.77 pp+2.48 pp (z +2.46)-0.001R-0.026R
Short in premium (P ≥ 0.5)9,876+1.53 pp+1.38 pp+1.43 pp (z +1.54)-0.051R-0.075R
First decision of the week only3,787+2.03 pp-0.38 pp+0.53 pp (z +0.56)-0.059R-0.084R

The discount side is break-even before costs (gross -0.001R); the premium side loses (-0.051R gross). Using only the first decision of each week (n = 3,787) leaves an edge of +0.5 pp (z +0.56), too small a sample to separate from zero.

Instrument (60 weeks, 1R)nEdge 2012–2018Edge 2019–2026Edge, all
EURUSD2,608+2.94 pp+1.07 pp+1.89 pp (z +1.41)
GBPUSD2,612+1.70 pp+2.62 pp+2.23 pp (z +1.68)
USDJPY2,595+1.77 pp+4.23 pp+3.14 pp (z +2.23)
AUDUSD2,577+0.55 pp+2.07 pp+1.40 pp (z +1.03)
XAUUSD2,514+2.43 pp+0.42 pp+1.28 pp (z +0.98)
BTCUSD2,241+3.62 pp+1.82 pp+1.88 pp (z +1.14)
NAS1001,755+0.81 pp+0.90 pp+0.88 pp (z +0.51)

No instrument stands out. All seven are positive and none exceeds z = 2.3 on its own.

3.2 Claim ② — Grading the range

Edge by weekly range band (pp)-12-8-40+4+8+12+16+20Win rate minus random (pp)Below range: -1.99 pp (95% CI ±9.18)Below range: +11.26 pp (95% CI ±8.85)BelowrangeDeep discount: +4.77 pp (95% CI ±3.31)Deep discount: +4.03 pp (95% CI ±4.50)DeepdiscountShallow discount: -1.49 pp (95% CI ±3.40)Shallow discount: +1.30 pp (95% CI ±3.33)ShallowdiscountShallow premium: -1.79 pp (95% CI ±3.48)Shallow premium: -0.34 pp (95% CI ±2.65)ShallowpremiumDeep premium: +3.47 pp (95% CI ±4.74)Deep premium: +2.23 pp (95% CI ±3.04)DeeppremiumAbove range: +9.09 pp (95% CI ±12.81)Above range: +3.48 pp (95% CI ±4.92)Aboverange2012–2018 (out-of-sample)2019–2026
Fig. 2 — Edge of the weekly-bias trade by band of the 60-week range, in percentage points over random entries (1R, whiskers = 95% CI, month-clustered). The two outer quarters carry the tilt; the inner quarters do not. Bars outside the range rest on a few hundred trades and flip sign between blocks.
Band (60 weeks)SidenEdge 2012–2018Edge 2019–2026Edge, all (1R)Net exp. 1REdge, all, 80 weeks
Below the range (P < 0)long220-1.99 pp+11.26 pp+4.76 pp (z +1.46)-0.092R+4.23 pp (z +0.99)
Deep discount 0–25%long3,496+4.77 pp+4.03 pp+4.41 pp (z +3.10)-0.005R+3.99 pp (z +2.69)
Shallow discount 25–50%long3,310-1.49 pp+1.30 pp+0.29 pp (z +0.23)-0.043R+0.77 pp (z +0.65)
Shallow premium 50–75%short3,727-1.79 pp-0.34 pp-0.83 pp (z -0.77)-0.084R-1.01 pp (z -0.75)
Deep premium 75–100%short5,560+3.47 pp+2.23 pp+2.61 pp (z +2.00)-0.067R+2.74 pp (z +2.16)
Above the range (P > 1)short589+9.09 pp+3.48 pp+4.51 pp (z +1.89)-0.105R+4.54 pp (z +1.66)

The tilt sits in the outer quarters: +4.4 pp in the deep discount band (z +3.10) and +2.6 pp in the deep premium band (z +2.00), both positive in both blocks. The inner quarters are indistinguishable from random (+0.3 pp for 25–50%, -0.8 pp for 50–75%). The 50% line does not divide the range into a long half and a short half: just below and just above EQ the bias trade does no better than a coin flip against random entries. Outside the range the samples are small and unstable — below the range the edge is -2.0 pp in 2012–2018 and +11.3 pp in 2019–2026.

Even the best band is only break-even after costs: the deep discount band earns -0.005R net per trade at 1R (break-even cost 0.79 × the assumed costs) and is clearly negative at 2R. With six bands, two targets and two windows, single z-values near 3 should be read as descriptive; the 0–25% band at 60 weeks clears a Bonferroni threshold for 12 cells (|z| ≥ 2.9).

3.3 Claim ③ — Do the 25 / 50 / 75% levels act as reaction points?

If a level matters, price touching it should reverse more often than at levels that are not part of the grid. A coin flip gives 50%.

Level of the weekly range (60 weeks)TouchesReversal rate 2012–2018Reversal rate 2019–2026Reversal rate, all (95% CI)
12.5% (control)65047.5%46.7%47.1% (±3.3)
25%64445.6%52.3%49.4% (±3.5)
37.5% (control)57252.8%47.7%49.5% (±4.2)
50% (EQ)58144.3%54.3%50.9% (±4.1)
62.5% (control)67445.5%53.5%50.9% (±4.0)
75%78751.1%48.2%49.2% (±3.6)
87.5% (control)1,03648.5%51.3%50.3% (±3.3)
25 / 50 / 75% pooled2,01247.3%51.2%49.8% (±2.2)
Control levels pooled2,93248.4%50.3%49.6% (±1.8)

At 60 weeks the pooled reversal rate is 49.8% at the grid levels and 49.6% at the control levels, a difference of +0.2 pp (z +0.13). EQ reverses 50.9% of the time (n = 581), +1.4 pp from the control levels (z +0.59). At 80 weeks the grid levels reverse 49.5% against 50.8% for the controls, and EQ shows -4.5 pp (z -1.98). The sign of the EQ result changes with the window and between the two blocks, which is what noise looks like. No level of the weekly grid behaves differently from an arbitrary level.

3.4 Claim ④ — Weekly location as a filter for 4-hour zone entries

There are 6,458 order block and 24,189 fair value gap first returns in the sample. Zone trades use the structure of the zone for stop and target, so the tests below are closer to how the grid is used in practice than the fixed-ATR trades above.

Zone-entry edge by weekly location (pp)-6-2+2+6+10+14+18Win rate minus random (pp)4H OB aligned: +3.10 pp (95% CI ±3.11)4H OB aligned: +4.24 pp (95% CI ±2.58)4H OBaligned4H OB counter: +1.16 pp (95% CI ±3.76)4H OB counter: -0.58 pp (95% CI ±3.36)4H OBcounter4H OB long, bottom quarter: +6.74 pp (95% CI ±6.30)4H OB long, bottom quarter: +12.50 pp (95% CI ±6.13)4H OB long,bottom quarter4H FVG aligned: +1.61 pp (95% CI ±1.70)4H FVG aligned: +2.95 pp (95% CI ±1.31)4H FVGaligned4H FVG counter: +0.67 pp (95% CI ±1.79)4H FVG counter: +1.47 pp (95% CI ±1.22)4H FVGcounter2012–2018 (out-of-sample)2019–2026
Fig. 3 — Edge over random of 4-hour zone entries by weekly location (60-week range, 1R, whiskers = 95% CI). “Aligned” means long in discount or short in premium.

Order blocks

Setup (60-week range)n (1R)Edge 2012–2018Edge 2019–2026Edge, all (1R)Net exp. 1REdge, all (2R)Net exp. 2R
4H OB, all first returns5,824+2.18 pp+2.05 pp+2.10 pp (z +2.66)-0.025R+1.95 pp (z +2.60)-0.092R
… aligned with weekly bias2,880+3.10 pp+4.24 pp+3.81 pp (z +3.75)-0.020R+3.55 pp (z +3.68)-0.080R
… counter to weekly bias2,497+1.16 pp-0.58 pp+0.11 pp (z +0.09)-0.029R+0.15 pp (z +0.13)-0.106R
aligned − counter+1.94 pp (z +0.78)+4.82 pp (z +2.35)+3.70 pp (z +2.34)+3.40 pp (z +2.27)
… long, bottom quarter (0–25%)559+6.74 pp+12.50 pp+9.42 pp (z +4.15)+0.074R+8.05 pp (z +3.56)+0.044R
… short, top quarter (75–100%)977+6.57 pp+1.18 pp+3.01 pp (z +1.62)-0.031R+1.77 pp (z +1.01)-0.114R

Fair value gaps

Setup (60-week range)n (1R)Edge 2012–2018Edge 2019–2026Edge, all (1R)Net exp. 1REdge, all (2R)Net exp. 2R
4H FVG, all first returns23,248+1.19 pp+2.13 pp+1.73 pp (z +5.05)-0.040R+0.74 pp (z +2.12)-0.073R
… aligned with weekly bias9,842+1.61 pp+2.95 pp+2.43 pp (z +4.55)-0.050R+1.77 pp (z +3.42)-0.077R
… counter to weekly bias11,671+0.67 pp+1.47 pp+1.18 pp (z +2.27)-0.030R-0.08 pp (z -0.17)-0.066R
aligned − counter+0.93 pp (z +0.72)+1.48 pp (z +1.54)+1.25 pp (z +1.62)+1.86 pp (z +2.66)
  • Aligned order blocks are better than counter order blocks. Aligned entries beat random by +3.8 pp (z +3.75); counter entries by +0.1 pp (z +0.09). The difference is +3.7 pp (z +2.34) over the full sample, +4.8 pp in 2019–2026 and +1.9 pp in the out-of-sample block: same sign, but not significant on its own there.
  • For fair value gaps the filter adds little. The aligned minus counter difference is +1.2 pp at 1R (z +1.62) and +1.9 pp at 2R (z +2.66); both groups already beat random by a small amount (+1.7 pp overall).
  • Costs still decide. Net expectancy is negative for aligned and counter entries in both setups, and for the whole sample (-0.025R for all order blocks at 1R, -0.040R for fair value gaps).
  • One pocket stays positive after costs: order block longs in the bottom quarter of the range. 559 trades, win rate 56.7% against 47.3% for random entries, edge +9.4 pp (z +4.15), gross +0.134R and net +0.074R per trade at 1R (+8.1 pp and +0.044R at 2R). It appears in both blocks (+6.7 pp, z +2.10, n = 299 out-of-sample; +12.5 pp, z +4.00, n = 260 in 2019–2026). At 80 weeks it is +7.5 pp with +0.045R net. Order block longs everywhere else in the range show no edge. Its mirror image, shorts in the top quarter, does not work (+3.0 pp, -0.031R net).

The pocket is positive in every instrument with 30 or more trades (EURUSD +14.8 pp (n=133), GBPUSD +9.0 pp (n=101), USDJPY +7.0 pp (n=45), AUDUSD +5.9 pp (n=154), XAUUSD +2.8 pp (n=54), BTCUSD +16.3 pp (n=50)). Removing EURUSD leaves +7.7 pp and +0.042R net; removing 2022, which holds 21% of its trades, leaves +8.6 pp and +0.065R. Removing BTCUSD and NAS100, the two instruments with assumed costs, leaves +8.7 pp and +0.064R. It does not survive higher costs: at twice the assumed costs net expectancy is +0.014R, at three times -0.046R. It was highlighted after the fact, although it clears a Bonferroni threshold for the 24 cells examined at each window in this section (|z| ≥ 3.1), and it is small: about 38 trades a year across seven instruments.

4. Checks and design changes

  1. Engine check. 1,200 simulated trade outcomes were recomputed with an independent loop and compared with the production routine; there were no differences.
  2. Level test redesigned before the out-of-sample run. The first version counted only touches inside the same week, which produced fewer than 400 events per instrument and was too thin to say anything. It was changed to daily first touches (about 850 per instrument) while working on 2019–2026 only. No definition or parameter was changed after the 2012–2018 block had been run.
  3. Mirror image. Trading against the weekly bias gives, to within rounding of the unresolved trades, the mirror result (the edge changes sign), so it is not reported separately.
  4. Baseline reproduction. The 4-hour OB and FVG rules were re-implemented from the order block study. The first-return edge over random (+2.1 pp for order blocks, +1.7 pp for fair value gaps; net -0.025R and -0.040R at 1R) is of the same size and sign as in that study (+2.4 pp and +1.3 pp; net −0.030R and −0.056R). The number of zones differs from it because of the two added instruments and because details such as the extreme-candle window were re-derived.

5. Conclusion

  • ① Partly supported. Trading with the weekly premium/discount bias beats random same-direction entries by about +1.9 pp, in both blocks and in all seven instruments. It is not a standalone signal: gross expectancy is -0.030R and net -0.055R per trade.
  • ② The grading works only at the edges. The outer quarters carry the whole tilt; the inner half of the range, including the area around EQ, is indistinguishable from random. Windows of 60 and 80 weeks perform alike.
  • ③ Not supported. Price reverses at the 25%, 50% and 75% levels no more often than at arbitrary levels of the same range.
  • ④ Weekly location is a useful filter for order block entries (aligned minus counter +3.7 pp) but not for fair value gaps, and it is not enough to beat costs on its own. The only net-positive group, order block longs in the bottom quarter of the range (+0.074R per trade), is small, was highlighted after the fact, and disappears if costs are about twice as high as assumed.

In short: the measurable content of the weekly PD array is “price tends to bounce a little from the extremes of a long range”, and, at the extremes, order blocks in particular. The pieces that are specific to the grid — the 50% line as a dividing line, the intermediate levels as reaction points, the quarters as graded zones — did not add anything this data could detect.

Reading the weekly range in practice — what the data supports

  • Use it as a location filter, not a signal. The information is “price is near the top or the bottom of a long range”, not “price is above or below EQ”.
  • The 50% line and the middle quarters can be ignored; nothing measurable happens there, and the 25 / 50 / 75% levels are not reaction points.
  • Combined with 4-hour order block entries, the useful combination in this data is a long near the bottom of the range. Shorts near the top, and fair value gaps, added nothing after costs.
  • Costs outweigh location. For the 4-hour zone trades the assumed round-trip cost averages about 0.06R, which is worth roughly 3 pp of win rate at 1R: the same size as the whole filter effect.

6. Limitations

  • The dealing range is a rolling window of weekly highs and lows. Discretionary traders choose swing highs and lows by structure, which is not captured here.
  • The range is frozen at the weekly open. A live indicator that includes the current week moves within the week and will place price differently.
  • Each concept was tested with one mechanical definition. Daily decision points overlap in time and the event-level z-scores are optimistic; the month-clustered errors used throughout are the more conservative figures.
  • Costs are representative estimates; BTCUSD and NAS100 costs are assumptions, and slippage on stops is not modelled. Results are on bid prices only.
  • Coverage before 2019 is thin for two instruments: BTCUSD starts in May 2017 (385 out-of-sample decision points), and the NAS100 data has many days without a bar at 18:00 NY before 2019 (590 out-of-sample decision points).
  • Applications of the same grid on one-minute charts, and ranges built from monthly or yearly data, are not tested here.

7. Next Steps

  • Define dealing ranges from objectively detected swings (a market structure shift rule) instead of a rolling window, and repeat the band test
  • Test monthly and yearly ranges as a higher layer above the weekly range
  • Re-test the order block long pocket on fresh data and on other look-backs before treating it as more than a lead, and check whether it is a liquidity effect near recent lows
  • Test the one-minute use of the grid as a separate study

Appendix — Technical notes: Weekly ranges, daily ATR and 4-hour zones are built from M1 data with New York time and daylight-saving handling; trade outcomes (stop/target ordering) are evaluated on every M1 bar by a compiled routine. Random baselines use 10 same-direction, same-minute-of-day entries within ±60 days per trade, inside the same block. Instruments and costs: EURUSD 1.4 pips, GBPUSD 2.2 pips, USDJPY 2.5 pips, AUDUSD 1.6 pips, XAUUSD $0.58, BTCUSD $25 (assumed), NAS100 2.0 points (assumed) round trip. Full methodology and scripts available on request.