Why Did Welles Wilder Create the Directional Movement System? From True Range to ADX

Flow from True Range through directional indicators to ADX in Welles Wilder's Directional Movement System

By the time we reach ADX, Welles Wilder's indicator family can look like a long chain of formulas.

True Range
→ ATR
→ +DM / -DM
→ +DI / -DI
→ DX
→ ADX

But there is a more useful way to see it.

These calculations belong to one larger design problem:

How can we turn
"this market is trending"
into something measurable?

Wilder published the Directional Movement Concept and the Directional Movement System in his 1978 book New Concepts in Technical Trading Systems.

In this companion lesson, we will not rebuild the Python code. We already did that in the Core Path. Instead, we will ask why the system needs all of these layers.

1. What the Historical Record Clearly Shows

Wilder's 1978 book contains a section titled The Directional Movement Concept. Publisher material also lists a separate The Directional Movement System.

Concept
→ define directional movement mathematically

System
→ turn those measurements
  into an operating framework

A later article in Technical Analysis of Stocks & Commodities reproduced Wilder's description of directional movement as a problem he had spent substantial time studying before reducing it to a mathematical equation.

So the historical starting question was not simply:

How do I invent ADX?

It was closer to:

How do I define
directional movement
in measurable terms?

2. Direction Sounds Simple Until You Try to Measure It

Looking at a chart, we casually use words such as:

uptrend
downtrend
sideways

A computer cannot use those descriptions until we define them.

Should direction come from:

Close versus previous Close?

today's High?

today's Low?

the whole trading range?

the size of the move?

the persistence of the move?

The Directional Movement framework can be read as an attempt to break that vague visual idea into smaller measurable questions.

3. Why High and Low Matter

Momentum can begin with closing prices.

Close today
-
Close N periods ago

Directional Movement asks something different.

Did today's range
expand upward?

or

Did today's range
expand downward?

That is why the calculation compares today's High and Low with the previous bar's High and Low.

4. +DM and -DM Turn Range Expansion into Direction

The Core Path defined two candidate moves:

Up Move
=
High today - High yesterday

Down Move
=
Low yesterday - Low today

The stronger qualifying side becomes directional movement.

Up Move wins
→ +DM

Down Move wins
→ -DM

neither qualifies
→ both zero

One ambiguous price range has now been transformed into a directional quantity.

5. Raw Directional Movement Has a Scale Problem

Imagine two markets:

Market A
+DM = 2

Market B
+DM = 20

The second number is larger, but the markets may trade at completely different price levels and normally move through very different ranges.

Directional movement therefore needs context.

6. True Range Supplies the Context

True Range asks how large the relevant movement of the bar was.

True Range
=
max(
    High - Low,
    |High - Previous Close|,
    |Low - Previous Close|
)

This gives the Directional Movement framework a measure of total relevant price movement against which directional movement can be compared.

Review: What Is True Range? Measure Daily Price Movement with Python .

7. Wilder Smoothing Creates a Stable Running Measurement

Wilder did not use every raw one-bar measurement directly.

The same recursive smoothing logic appears across the framework.

True Range
→ smooth

+DM
→ smooth

-DM
→ smooth

later DX
→ smooth again

This is why Alphesta separated Wilder Smoothing into its own Learning Block.

8. +DI and -DI Turn Direction into a Relative Measure

+DI
=
100 ×
smoothed +DM
-------------
smoothed TR


-DI
=
100 ×
smoothed -DM
-------------
smoothed TR

The key idea is the ratio.

directional movement
        ↓
divide by relevant range
        ↓
relative directional strength

That makes +DI and -DI more interpretable than raw price-unit movement alone.

9. Direction and Trend Strength Are Different Questions

Once we have +DI and -DI, their relative position can describe directional dominance.

+DI > -DI
→ upward directional dominance

-DI > +DI
→ downward directional dominance

But this does not yet tell us how strongly one side dominates.

That leads to a new question:

How far apart are
+DI and -DI?

10. DX Keeps the Separation but Removes Direction

DX
=
100 ×
|+DI - -DI|
-----------
+DI + -DI

The absolute value changes the question.

large +DI advantage
→ large DX

large -DI advantage
→ large DX

DX therefore asks:

How strong is the
directional separation?

It does not say whether the dominant side is up or down.

11. ADX Smooths the Strength Measurement

DX can change sharply from one bar to the next. Wilder smooths DX to create ADX.

+DI / -DI
    ↓
directional separation
    ↓
DX
    ↓
Wilder smoothing
    ↓
ADX

The conceptual roles are now different:

+DI versus -DI
→ direction

ADX
→ strength of directional movement

This is why ADX itself has no bullish or bearish sign.

12. The Whole System Is a Sequence of Questions

How large was the relevant movement?
→ True Range

Which side expanded more?
→ +DM / -DM

How large is directional movement
relative to recent range?
→ +DI / -DI

How separated are the directions?
→ DX

How strong has that separation been
after smoothing?
→ ADX

This is much easier to remember than treating TR, +DM, -DM, +DI, -DI, DX, and ADX as unrelated formulas.

13. ATR and ADX Answer Different Questions

ATR
→ How large has recent movement been?

ADX
→ How strong has directional separation been?

Both belong to Wilder's framework, but volatility and trend strength are not the same quantity.

Review: What Is ATR? Build Average True Range with Python .

14. The Original Framework Included ADXR Too

Modern charting discussions often stop at ADX.

Wilder's original Directional Movement framework also included ADXR, the Average Directional Movement Index Rating.

TA-Lib defines ADXR as the average of the current ADX and an earlier ADX value.

ADX
→ trend-strength measure

ADXR
→ further-smoothed
  trend-strength rating

This reminds us that the original system was broader than the single ADX line commonly shown today.

15. Be Careful with the Famous “25” Rule

Modern explanations often use a shortcut:

ADX above 25
→ trending market

That can be a useful convention, but it is not a universal law.

There is also a historical nuance. A 1985 article describing Wilder's original Directional Movement System reports a rule of thumb based on ADXR above 25 when deciding whether trend-following methods were appropriate.

modern shorthand
often:
ADX > 25

Wilder's broader framework:
included ADXR
and used ADXR in
market-selection logic

So we should not collapse the entire original framework into one modern threshold.

16. The Directional Movement System Was More Than an Indicator

The word System matters.

Historical descriptions of Wilder's framework include +DI/-DI crossover rules, an extreme-point rule, and filters for deciding when trend-following methods were appropriate.

Alphesta deliberately separates those layers.

measurement layer
→ TR
→ ATR
→ +DM / -DM
→ +DI / -DI
→ DX
→ ADX

strategy layer
→ entries
→ reversals
→ filters
→ risk rules

We learn the measurement layer first. Strategy claims belong later, where they can be defined precisely and backtested.

17. What the Architecture Suggests — An Alphesta Interpretation

The historical sources tell us what Wilder published. The following is an interpretation of the design structure, not a direct quotation from Wilder.

raw geometry
High / Low / Previous Close
        ↓
extract quantities
TR, +DM, -DM
        ↓
smooth noisy measurements
Wilder smoothing
        ↓
normalize
+DI, -DI
        ↓
compare competing directions
DX
        ↓
smooth again
ADX

Each stage removes one ambiguity.

price units
→ relative scale

up versus down
→ directional dominance

directional dominance
→ direction-independent strength

This layered design is one reason the system is such a useful teaching example, even before we ask whether a trading rule built from it is profitable.

18. Why This Matters for Python

The architecture also explains the code structure we built.

true_range()

wilder_average()

directional_movement()

+DI / -DI calculation

DX calculation

ADX smoothing

Each function corresponds to one conceptual transformation.

one mathematical idea
→ one testable block

tested blocks
→ compose into a larger indicator

19. The Core Path We Built

  1. What Is True Range? Measure Daily Price Movement with Python
  2. What Is Wilder’s Smoothing? Build Wilder Average from Scratch with Python
  3. What Is ATR? Build Average True Range with Python
  4. What Is Directional Movement? Build +DI and -DI with Python
  5. What Is ADX? Measure Trend Strength with Python

Before publishing this history article, verify that every Core Path URL above is live.

20. Historical Importance Is Not Proof of Trading Edge

historically influential
does not mean
automatically profitable

Nor does a familiar threshold become valid merely because it is widely repeated.

A trading researcher still needs to ask:

What exact rule
do we want to test?

On which market?

At which timeframe?

With which costs?

Against which baseline?

Those questions belong to later strategy and backtesting phases.

Check Your Understanding

  • Wilder published both a Directional Movement Concept and a Directional Movement System in 1978.
  • +DM and -DM describe upward and downward range expansion.
  • True Range supplies a measure of relevant total movement.
  • +DI and -DI normalize directional movement by smoothed True Range.
  • +DI versus -DI helps describe directional dominance.
  • DX measures the size of the separation between +DI and -DI without keeping direction.
  • ADX smooths DX and therefore measures trend strength rather than bullish or bearish direction.
  • Wilder's original framework also included ADXR.
  • The modern “ADX above 25” shorthand should not be treated as a universal law or as the whole original system.
  • The original Directional Movement System contained trading rules in addition to indicator calculations.
  • Alphesta separates measurement from strategy so each claim can be tested later.

What You Just Learned

High / Low / Previous Close
            ↓
        True Range
            +
       +DM / -DM
            ↓
     Wilder smoothing
            ↓
       +DI / -DI
            ↓
    directional separation
            ↓
           DX
            ↓
     Wilder smoothing
            ↓
           ADX

Direction
→ +DI versus -DI

Trend strength
→ ADX

If one idea stays in your head after this lesson, let it be this:

Wilder did not simply add one more line called ADX. The Directional Movement System is a layered attempt to turn the vague idea of trend into measurable components.

Sources