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
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
• 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
| Day | High | Low | Close | Volume |
|---|---|---|---|---|
| 1 | 101 | 99 | 100 | 50,000 |
| 2 | 103 | 100 | 102 | 62,000 |
| 3 | 103 | 100 | 101 | 48,000 |
| 4 | 105 | 101 | 104 | 70,000 |
| 5 | 108 | 104 | 107 | 85,000 |
| 6 | 108 | 105 | 106 | 60,000 |
| 7 | 110 | 106 | 109 | 90,000 |
| 8 | 110 | 107 | 108 | 72,000 |
| 9 | 108 | 104 | 105 | 80,000 |
| 10 | 105 | 102 | 103 | 66,000 |
| 11 | 105 | 102 | 104 | 55,000 |
| 12 | 104 | 101 | 102 | 75,000 |
| 13 | 102 | 98 | 99 | 95,000 |
| 14 | 102 | 99 | 101 | 64,000 |
| 15 | 105 | 101 | 104 | 71,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
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