What it is (short definition)
– The Aroon indicator is a technical analysis tool that quantifies how recently an asset has made new highs and new lows over a chosen lookback window. It produces two lines—Aroon Up and Aroon Down—each scaled 0–100. Higher values mean a more recent high (Aroon Up) or low (Aroon Down); lower values mean it has been longer since a high or low.
Core formula (standard 25‑period version)
– Aroon Up = ((N − Periods since N‑period high) / N) × 100
– Aroon Down = ((N − Periods since N‑period low) / N) × 100
– Typical default: N = 25 periods (days on a daily chart, bars on an intraday chart)
Key terms
– Period: one bar on your chart (day, hour, minute, etc.).
– Periods since N‑period high: number of periods since the highest price within the last N periods occurred.
– Crossover: the moment one Aroon line crosses above the other (often used as a trade signal).
– Consolidation: when neither line is high (commonly both below 50), indicating no clear trend.
How it works (intuitive)
– In a sustained uptrend new highs occur frequently, so the number of periods since the most recent N‑period high is small → Aroon Up is high.
– In a sustained downtrend new lows occur frequently, so the number of periods since the most recent N‑period low is small → Aroon Down is high.
– The indicator is time‑based: it tracks when highs/lows occurred, not the magnitude of price moves.
Typical interpretation
– Aroon Up near 100 and Aroon Down near 0: strong bullish trend.
– Aroon Down near 100 and Aroon Up near 0: strong bearish trend.
– Aroon Up crossing above Aroon Down: potential buy signal (trend shift toward upside).
– Aroon Down crossing above Aroon Up: potential sell/signal to favor downside.
– Both lines below ~50: likely consolidation; watch for breakouts and await confirmation.
– Values above 50 mean a new high/low occurred within the most recent half of the N‑period window (for N=25, inside ~12–13 periods).
Step‑by‑step: calculate Aroon in a spreadsheet
1. Choose N (default = 25).
2. For each bar, find the highest high and lowest low across the last N bars.
3. Count how many periods ago the highest high occurred (PeriodsSinceHigh).
4. Count how many periods ago the lowest low occurred (PeriodsSinceLow).
5. Compute:
– AroonUp = ((N − PeriodsSinceHigh) / N) × 100
– AroonDown = ((N − PeriodsSinceLow) / N) × 100
6. Plot both lines from 0 to 100 beneath the price chart; watch crossovers and level thresholds.
Short checklist for using Aroon
– Set the lookback N to match your timeframe (default 25 for daily charts).
– Confirm which price series you’re using (typically closing prices for highs/lows).
– Watch AroonUp and AroonDown values and crossovers, not just one line alone.
– Use price action and at least one additional indicator (e.g., volume, trend or momentum) to confirm signals.
– Be mindful that Aroon measures timing of highs/lows, not move size—set stops according to your risk plan.
– Backtest your settings on historical data and paper‑trade before using real capital.
Worked numeric example
– Suppose N = 25 (25 trading days).
– The most recent 25‑day high occurred 3 days ago → PeriodsSinceHigh = 3.
AroonUp = ((25 − 3) / 25) × 100 = (22/25) × 100 = 88.0
– The most recent 25‑day low occurred 20 days ago → PeriodsSinceLow = 20.
AroonDown = ((25 − 20) / 25) × 100 = (5/25) × 100 = 20.0
– Interpretation: AroonUp = 88 → the market has seen a recent high and shows bullish bias; AroonDown = 20 → it’s been a long time since a recent low. An AroonUp this high suggests trend strength to the upside; a trader might look for confirmation before initiating a long bias.
Limitations and cautions
– Lagging nature: Aroon looks backward—signals may arrive after a large move has already occurred.
– False signals: crossovers can occur in flat markets or produce whipsaws.
– Ignores price amplitude: it does not measure how large highs or lows were, only when they happened.
– Parameter sensitivity: different N values change responsiveness; shorter N → more sensitive and noisier, longer N → smoother but slower.
– Always combine with price analysis and other tools; do not rely solely on one indicator.
How Aroon differs from related indicators
– Directional Movement Index (DMI): DMI focuses on the magnitude of directional price moves (how big highs/lows differ), while Aroon focuses on the timing of highs and lows (how recently they occurred).
– MACD: MACD is a momentum indicator based on moving average convergence/divergence (price momentum and trend strength), whereas Aroon is time‑based and tracks recency of highs/lows.
Choosing the best period
– No universal “best”
No universal “best” N (look‑back length) exists; choose N to match the asset’s time scale and your trading horizon. Shorter N makes Aroon more responsive but noisier; longer N smooths noise but delays signals.
Practical guidance on choosing N
– Intraday scalping/short trades: N = 5–10. Reacts quickly to recent price shifts.
– Short‑term swing trading (days to a few weeks): N = 10–25. Common default: N = 14.
– Medium‑term trend following (weeks to months): N = 25–50.
– Longer‑term analysis (monthly data or multi‑month trends): use larger N (50+).
How to pick N — a step‑by‑step checklist
1. Define timeframe: specify data frequency (e.g., 1‑min, 5‑min, daily, weekly) and holding period.
2. Estimate volatility: higher volatility → consider longer N to reduce false signals; lower volatility → shorter N may suffice.
3. Backtest multiple N values: test a grid (e.g., 7, 14, 21, 28, 50) across historical data.
4. Use out‑of‑sample validation: reserve a later period to confirm results.
5. Penalize overfitting: prefer simpler robust settings that generalize rather than those that only optimize historical returns.
6. Monitor live performance and re‑calibrate periodically.
Formulas and quick worked example
– Definitions:
– N = look‑back period (number of bars/days).
– DaysSinceHigh = number of bars since the highest high in the last N bars (0 if today is the high).
– DaysSinceLow = number of bars since the lowest low in the last N bars.
– Aroon Up = ((N − DaysSinceHigh) / N) × 100
– Aroon Down = ((N − DaysSinceLow) / N) × 100
– Aroon Oscillator = Aroon Up − Aroon Down (ranges −100 to +100)
Worked numeric example (N = 14)
– Suppose the 14‑day highest high occurred 4 days ago, and the 14‑day lowest low occurred 12 days ago.
– Aroon Up = ((14 − 4) / 14) × 100 = (10/14) × 100 ≈ 71.43
– Aroon Down = ((14 − 12) / 14) × 100 = (2/14) × 100 ≈ 14.29
– Interpretation: Aroon Up ≈ 71 suggests recent strong highs (bullish bias). Aroon Down ≈ 14 indicates lows are not recent.
Common interpretation rules (educational, not investment advice)
– Crossovers: Aroon Up crossing above Aroon Down can indicate the start of an uptrend; the opposite crossover can indicate a downtrend. Confirm with price and volume.
– Thresholds: Readings > 70 often reflect strong trends; readings < 30 suggest weak or no trend.
– Aroon Oscillator: positive values favor bulls; negative values favor bears. Sustained extremes (near +100 or −100) indicate strong, persistent trends.
– Divergence: if price makes a new high but Aroon Up does not, that can warn the trend’s momentum is weakening.
How to compute in Excel (simple approach)
1. For each row t compute the highest high over the previous N bars (including t) and the index (position) of that high within the window.
2. DaysSinceHigh = N − (position_of_high − 1). If the high is today, DaysSinceHigh = 0.
3. AroonUp = ((N − DaysSinceHigh) / N) * 100. Repeat analogously for lows.
(If you want exact formulas, I can provide cell formulas for a concrete sheet layout.)
Pseudocode (rolling computation)
– For each time t:
– window = prices[t−N+1 … t]
– DaysSinceHigh = t − argmax_index(window)
– DaysSinceLow = t − argmin_index(window)
– AroonUp[t] = ((N − DaysSinceHigh)/N)*100
– AroonDown[t] = ((N − DaysSinceLow)/N)*100
Backtesting and risk checklist
Backtesting and risk checklist
– Data and sampling
– Use raw OHLC (open, high, low, close) with timestamps. Ensure the high and low series you feed Aroon are the true bar highs and lows, not smoothed or mid prices.
– Remove look‑ahead bias: compute Aroon using only information available at the bar close (for an indicator computed on close, don’t peek into the next bar).
– Use a realistic sample split: in‑sample (for parameter tuning) and out‑of‑sample (for evaluation), or perform walk‑forward cross‑validation.
– Watch survivorship bias: include delisted/removed issuers if backtesting equities.
– Execution and cost modeling
– Include realistic transaction costs: commission per trade, bid/ask spread, and slippage. Model slippage as a per‑trade fixed amount, a percentage of price, or drawn from historical realized slippage.
– Account for execution delay: if signals are generated at close, decide whether
whether you place the order at the next open, at the next close, or with a limit/stop order (and model the probability of fills). Simulate fills and partial fills rather than assuming all signals turn into perfect executions.
Execution and market-impact checklist
– Order timing: simulate realistic order delay (e.g., 0–3 bars) and apply fills at the chosen price (next open, next close, or mid-bar simulated price).
– Order types: model market orders, limit orders (with fill probability for each price level), and stop orders. Specify how you handle unfilled limits (cancel, retry next bar, or execute as market).
– Slippage: apply fixed slippage per trade (e.g., $0.01/share) or percentage slippage (e.g., 0.05% of price), or sample slippage from historical fills. Example: $50 round-trip commission + 0.05% slippage on a $20 stock
Next, calibrate and test those execution assumptions against realistic fills for the instruments and venues you intend to trade.
Transaction-cost calibration — step-by-step
1. Gather real cost data: commissions, exchange fees, and historical fill/slippage data for your broker or venue. If unavailable, use conservative published estimates and inflate them for safety.
2. Convert to per-share and percentage terms so you can scale by position size and price. Example conversions:
– Per-share commission = $c_share
– Round-trip commission per share = 2 × c_share (if charged per side)
– Slippage per share (percentage) = s_pct × price
3. Model fills by size: add an order-size-dependent impact model (e.g., linear or square-root model). For example, impact ≈ k × (order_size / ADV)^0.5 × price, where ADV = average daily volume and k is calibrated from historical executions.
4. Choose a fill policy for limits/stops: probability of fill vs. time-in-force (cancel or reroute), and handle partial fills by scaling remaining exposure or canceling.
5. Validate: run a small sample backtest on historical days with realistic orders and compare predicted fill prices to any known executions or live paper-trading fills. Adjust k and s_pct accordingly.
Worked numeric example (applies previous example)
– Stock price = $20; trade size = 100 shares.
– Expected gross move per trade = 3% → gross per share = 0.03 × $20 = $0.60 → gross = $60.
– Commission: $0.005/share per side → round-trip = $0.01/share → commission = $1.00.