15 — Trend & Momentum

Aroon#

Debated1 min read
◆ The PatternHow recently the high and the low were set; fresh highs mean the trend is still alive

The Aroon Indicator — Tushar Chande (1995). "Aroon" means "dawn" in Sanskrit.

Aroon Up = ((25 − periods since 25-day high) / 25) × 100
Aroon Down = ((25 − periods since 25-day low) / 25) × 100
Interpretation:
• Aroon Up > 70, Down < 30 → strong uptrend
• Aroon Down > 70, Up < 30 → strong downtrend
• Both below 50 → consolidation
• Crossovers signal trend changes
Worked example

Five-period Aroon looks back over six bars. On day 7 the high of 110 is today, so Aroon Up = 100; it stays there on day 8 (another 110), then loses 20 points a bar as that high ages, reaching 0 on day 13. The new lows of days 10–13 keep Aroon Down at 100 through the fall. On day 15 the high of 105 equals day 11’s and is today, so Aroon Up jumps back to 100 while Aroon Down is still 60: both high at once means no clear trend.

The example data: 15 days, used in every indicator here
DayHighLowCloseVolume
11019910050,000
210310010262,000
310310010148,000
410510110470,000
510810410785,000
610810510660,000
711010610990,000
811010710872,000
910810410580,000
1010510210366,000
1110510210455,000
1210410110275,000
13102989995,000
141029910164,000
1510510110471,000
Where it misleads
  • It only knows when the extremes happened, not how far price moved, so a tiny new high counts as fully as a large one.
  • Ties and short windows make it jumpy: one bar can swing a line from 0 to 100.
  • Crossovers of the two lines lag the turn by roughly the look-back period.
In code
last = lambda f: (lambda x: len(x) - 1 - f(x[::-1]))     # position of the latest extreme
pos_hi = df['high'].rolling(6).apply(last(np.argmax), raw=True)   # 0 = oldest of 6 bars, 5 = today
pos_lo = df['low'].rolling(6).apply(last(np.argmin), raw=True)
df['aroon_up'] = 100 * pos_hi / 5           # 100 = the high is today
df['aroon_down'] = 100 * pos_lo / 5
Python, in your browser — edit the code and run it again

Assumes import numpy as np, import pandas as pd, and a DataFrame df with columns high, low, close and volume — the 15 days above.

Sources
  • T. Chande introduced Aroon in Technical Analysis of Stocks & Commodities, 1995
  • Technical Analysis from A to Z (2nd ed.), S. B. Achelis, McGraw-Hill, 2000

Last reviewed October 2026 · How this site checks its content · Report a mistake

Pattern bridge: Time since highest high vs. lowest low measures where you are in a cycle. The same temporal awareness drives RNN hidden states.
Linked from 1
← Previous
Ichimoku Cloud
Open in the full reader, with the topic sidebar