Introduction
The Aroon Oscillator provides useful insights into the strength of market trends and potential reversals. This guide will look into its intricacies, helping you understand its origins, mathematical construction, and how to effectively use it in your trading strategy. We will also look at how to code it in Python and R in case you want to build it into an Aroon screener or other automated Aroon strategy.
In terms of trading indicators in general, an oscillator is a statistical tool that oscillates between two levels, typically within a specific range, and is used to signal potential overbought or oversold conditions in a market, assisting traders in identifying potential price reversals.
History and Origin of the Aroon Oscillator
This oscillator was invented by Tushar Chande in 1995. Tushar Chande is a well-known figure in the field of technical analysis and has developed several other indicators as well and written a number of books on technical analysis referenced at the end of this article
This particular oscillator is a trend-following indicator that uses aspects of the Aroon Indicator (also developed by Chande) to gauge the strength of a trend. The name “Aroon” is derived from the Sanskrit word ‘Aruna’, meaning “the first light of dawn”, which symbolizes the indicator’s ability to reveal the beginning of a new trend.
Initial publication about it, was in a the September 1995 edition of the “Technical Analysis of Stocks & Commodities” magazine.
The Aroon Oscillator was developed to identify whether an instrument is trending up, down, or consolidating. It is a part of the Aroon study, which consists of two lines, Aroon.Up and Aroon.Down. These lines measure the placement of the highest high or lowest low over a given period, expressed as a percentage from 0 to 100. A high percentage for Aroon.Up and a low percentage for Aroon.Down indicates an uptrend, while the reverse suggests a downtrend.
Mathematical Construction
The Oscillator is calculated by subtracting Aroon.Down from Aroon.Up, which are each calculated using the following formulas respectively:
Aroon.Up = 100 * (Period – “offset from current bar to the bar with largest high in the latest <Period> bars”)/Period
Aroon.Down = 100 * (Period – “offset from current bar to the bar with lowest low in the latest <Period> bars”)/Period
The Aroon Oscillator is then calculated as:
AroonOscillator = Aroon.Up(@,Period)- Aroon.Down(@,Period)
The period parameter in these formulas represents the number of bars or periods in the lookback range.
Purpose and Design
The oscillator is designed to measure the strength of a trend and potential reversals. It does this by comparing the time elapsed since the highest high and the lowest low over a given period. A seen above, the oscillator subtracts the Aroon Down from the Aroon Up, resulting in a value that oscillates between -100 and +100.
Therefore, an Aroon Oscillator value above 50 typically indicates a strong uptrend, while a value below -50 suggests a strong downtrend. Values oscillating around zero signal a consolidation phase, indicating that the market is moving sideways and a clear trend is not present. However don’t be constrained by this interpretation, often traders use different thresholds or interpret the values differently.
Signals for Trading
The Aroon Oscillator can be key for traders looking to identify the start of new trends or the continuation of existing ones. Here’s how you can use it:
- Identifying Uptrends: When the Aroon Oscillator value is above 50, it indicates a strong uptrend. This could be a signal to consider entering a long position.
- Identifying Downtrends: Conversely, when the Aroon Oscillator value is below -50, it suggests a strong downtrend. Traders might consider this as a signal to enter a short position.
- Spotting Consolidation Phases: If the Aroon Oscillator is oscillating around zero, it indicates a lack of a clear trend, suggesting that the market is in a consolidation phase. During these periods, traders might choose to stay out of the market or prepare for a potential breakout.
- Signaling Trend Reversals: A shift from positive to negative values (or vice versa) can often indicate a potential trend reversal. Traders could use these signals to close existing positions or open new ones in the direction of the emerging trend.
As is typical with most indicators, the Aroon Oscillator tends to need confirmation to justify a trade entry should not be used on its own. Always consider other technical indicators and fundamental factors before making trading decisions.
Pros and Cons
Like any trading tool, the Aroon Oscillator comes with its own set of advantages and limitations. Understanding these can help you make the most of this indicator in your trading strategy.
Pros
- Trend Identification: The Aroon Oscillator excels at identifying the start of new trends, which can be invaluable for traders looking to catch trends early.
- Strength of Trend: By providing a numerical value, the Aroon Oscillator not only identifies the direction of the trend but also gives an indication of its strength. This can help traders gauge the potential longevity and profitability of a trend.
- Versatility: The Aroon Oscillator can be used across different timeframes and markets, making it a versatile tool for all kinds of traders.
Cons
- False Signals: The Aroon Oscillator can sometimes give false signals, especially in volatile markets. This is why it’s crucial to use it in conjunction with other indicators and tools.
- Potential for Delayed Signals: While the Aroon Oscillator aims to identify the beginning of new trends, there can be instances where it provides delayed signals, especially in choppy or sideways markets. It’s essential for traders to use it in conjunction with other tools and to be aware of potential delays.
- Complexity: The mathematical formula behind the Aroon Oscillator can be complex for beginners to understand. It’s important to fully grasp how it works before incorporating it into a trading strategy.
Coding it in Popular Trading Languages
Coding the Aroon Oscillator into your trading software can allow for more efficient and automated trading. Below, we’ll provide a basic guide on how to code this indicator in Python and R, two of the most popular languages for trading.
Before we start, ensure you have the necessary libraries installed, particularly pandas and yfinance for Python, and quantmod and TTR for R, to fetch financial data and perform data manipulation.
# Imports necessary libraries
import pandas as pd
import yfinance as yf
# Defines a function to calculate the Aroon Oscillator
def calculate_aroon(data, lookback):
aroon_up = 100 * ((lookback - data['High'].rolling(window=lookback).apply(lambda x: lookback - x.index.get_loc(x.idxmax()))) / lookback)
aroon_down = 100 * ((lookback - data['Low'].rolling(window=lookback).apply(lambda x: lookback - x.index.get_loc(x.idxmin()))) / lookback)
aroon_oscillator = aroon_down - aroon_up
return aroon_oscillator
# Fetch data
data = yf.download('NFLX', start='2022-07-20', end='2023-07-20')
# Define the period
period = 14
# Calculate Aroon Oscillator using the updated function
data['Aroon Oscillator'] = calculate_aroon(data, period)
# Add 0 line
data['0 Line'] = 0
# Ensure the index is a DatetimeIndex
data.index = pd.DatetimeIndex(data.index)
I give a more detailed breakdown and explanation of this code further down when we go to plot it.
Using R instead of Python it would be:
# Install and load necessary packages
install.packages(c("quantmod", "TTR"))
library(quantmod)
library(TTR)
# Fetch data
data <- getSymbols("NFLX", src = "yahoo", from = "2022-07-20", to = "2023-07-20", auto.assign = FALSE)
# Define the period
period <- 14
# Calculate Aroon Up and Down
aroon <- Aroon(HLC(data), n=period)
# Calculate Aroon Oscillator
data$Aroon_Oscillator <- aroon[, "aroondn"] - aroon[, "aroonup"]
# View the data
head(data)
In this code:
- The
getSymbols
function from thequantmod
package is used to fetch the data for Apple Inc. (AAPL) from Yahoo Finance. - The
Aroon
function from theTTR
package is used to calculate the Aroon Up and Aroon Down indicators. - The Aroon Oscillator is calculated as the difference between the Aroon Up and Aroon Down indicators.
Plotting it onto a Chart with Python
Let’s suppose we want to take the Python a bit further and see what this looks like plotted on a candlestick chart. We can do this using something like VSCode from Microsoft which is free software. Follow the instructions within it for installing and setting up Python, then create and save a new empty .py file and call it something appropriate such as ‘aroon_osc.py‘.
First install the necessary modules using the command pip install
in the Terminal:
pip install yfinance pandas mplfinance matplotlib numpy
Then follow the steps below and past each piece of code consecutively into your aroon_osc.py file not forgetting to save it at the end.
Section 1: Importing Libraries
import yfinance as yf
import pandas as pd
import mplfinance as mpf
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import numpy as np
This section is about importing the necessary libraries that will be used throughout the code.
yfinance
is used to download historical market data from Yahoo Finance.pandas
is used for data manipulation and analysis.mplfinance
is a matplotlib finance API that allows you to create financial charts easily.matplotlib.pyplot
is used for creating static, animated, and interactive visualizations in Python.Line2D
is a class inmatplotlib.lines
that represents a line in 2D space.numpy
is used for mathematical and logical operations on arrays.
Section 2: Defining the Aroon Oscillator Calculation Function
def calculate_aroon(data, lookback):
aroon_up = 100 * ((lookback - data['High'].rolling(window=lookback).apply(lambda x: lookback - x.index.get_loc(x.idxmax()))) / lookback)
aroon_down = 100 * ((lookback - data['Low'].rolling(window=lookback).apply(lambda x: lookback - x.index.get_loc(x.idxmin()))) / lookback)
aroon_oscillator = aroon_down - aroon_up
return aroon_oscillator
calculate_aroon(data, lookback)
: This function takes two parameters –data
, which is a DataFrame containing historical market data, andlookback
, which is the period for calculating the Aroon Oscillator.aroon_up
: The Aroon Up line is calculated in this line of code. It represents the number of periods since the highest high occurred within thelookback
period. To compute this, we use therolling
method to create a rolling window of lengthlookback
on the'High'
column of the DataFrame. Within each rolling window, we apply a lambda function to calculate the number of periods since the highest high. The lambda function subtracts the index of the highest high (x.idxmax()
) fromlookback
to get the number of periods since the highest high. We then subtract this value fromlookback
and multiply by 100 to obtain the Aroon Up values.aroon_down
: Similarly, the Aroon Down line is calculated in this line of code. It represents the number of periods since the lowest low occurred within thelookback
period. The rolling window is applied to the'Low'
column of the DataFrame, and the lambda function subtracts the index of the lowest low (x.idxmin()
) fromlookback
to get the number of periods since the lowest low. Again, we subtract this value fromlookback
and multiply by 100 to obtain the Aroon Down values.aroon_oscillator
: The Aroon Oscillator is computed by subtracting the Aroon Up values from the Aroon Down values. This calculation is done on a per-period basis, resulting in an Aroon Oscillator value for each data point in the DataFrame.return aroon_oscillator
: Finally, the function returns the Aroon Oscillator values, which will be used to plot the Aroon Oscillator on the candlestick chart.
Section 3: Fetching Data and Calculating the Aroon Oscillator
# Fetch the data
data = yf.download('NFLX', start='2022-07-20', end='2023-07-20')
# Calculate the Aroon Oscillator
data['Aroon Oscillator'] = calculate_aroon(data, 14)
# Add 0 line
data['0 Line'] = 0
# Ensure the index is a DatetimeIndex
data.index = pd.DatetimeIndex(data.index)
In this section, we download historical data for Netflix (NFLX) from Yahoo Finance using the yf.download
function. We then calculate the Aroon Oscillator with a 14-day lookback period by calling the calculate_aroon
function and storing the result in a new column named 'Aroon Oscillator'
in the DataFrame data
.
To plot the Aroon Oscillator on the chart, we need to ensure that the ‘Aroon Oscillator
‘ and ‘0 Line
‘ columns have the same datetime index as the OHLC (Open, High, Low, Close) data. For that, we set the index of the DataFrame to be a DatetimeIndex
using pd.DatetimeIndex(data.index)
.
Section 4: Preparing the Plot and Panel Sizes
# Define the additional plots as a list of dictionaries
apd = [
mpf.make_addplot(data['Aroon Oscillator'], panel=2, color='b', secondary_y=False, ylabel='Aroon Oscillator'),
mpf.make_addplot(data['0 Line'], panel=2, color='black', secondary_y=False, linestyle='dashed')
]
# Set the panel sizes. The first panel (candles) is 5 times the size of the second and third panels (volume and Aroon Oscillator)
panel_sizes = (5, 1, 3)
In this section, we prepare the additional plots that will be added to the candlestick chart using the mplfinance.make_addplot
function. The first plot is the Aroon Oscillator, displayed in blue with a label 'Aroon Oscillator'
. The second plot is a horizontal dashed line at 0, which serves as a reference line.
The panel sizes are specified as a tuple panel_sizes
, where the first element represents the size of the candlestick chart panel, the second element is the size of the volume panel, and the third element is the size of the Aroon Oscillator panel. The ratio of these sizes controls the relative heights of the panels in the final chart.
Section 5: Creating the Plot, Adding Legends and Displaying the Plot
# Create a subplot for the Aroon Oscillator and add the additional plot
fig, axes = mpf.plot(data, type='candle', style='yahoo', addplot=apd, volume=True, panel_ratios=panel_sizes, title='Netflix and Aroon Oscillator', returnfig=True)
# Create legend using dummy lines
legend_lines = [Line2D([0], [0], color=c, lw=1.5, linestyle=ls) for c, ls in zip(['b', 'black'], ['solid', 'dashed'])]
axes[2].legend(legend_lines, ['Aroon Oscillator', '0 Line'], loc='lower left')
# Show the plot
plt.show()
Finally, we use mplfinance to create a candlestick chart of the Netflix data with volume and the Aroon Oscillator. We add a legend to the Aroon Oscillator plot and display the plot using matplotlib’s show
function. The returnfig=True
argument in the mpf.plot
function call allows us to get the figure and axes objects, which we can use to add the legend.
Save the file once you have added the above blocks of code into it and hit the play icon in the top right ofVSCode to run the file. You will then end up with a chart looking like mine as shown below:
You can double check everything looks ok by comparing the same data to a Yahoo Finance chart with the same indicator enabled:
Comparison with Other Indicators
The Aroon Oscillator is just one of many technical indicators available to traders. Each indicator has its own strengths and weaknesses, and they can often provide more value when used together. Let’s see how the Aroon Oscillator compares to some other popular indicators:
- Relative Strength Index (RSI): Like the Aroon Oscillator, the RSI is a momentum oscillator used to identify overbought or oversold conditions. However, while the Aroon Oscillator focuses on identifying trends, the RSI is more commonly used to spot potential price reversals.
- Moving Average Convergence Divergence (MACD): The MACD is another trend-following momentum indicator. It’s used to identify potential buy and sell signals through crossovers of its MACD line and signal line. While both the MACD and Aroon Oscillator can identify trends, they do so in slightly different ways and can complement each other well.
- Bollinger Bands: Bollinger Bands are a volatility indicator that consists of a simple moving average (SMA) alongside upper and lower bands. While Bollinger Bands are excellent at identifying volatility and potential price reversals, the Aroon Oscillator can add value by confirming the strength and direction of the trend.
Remember, no single indicator should be used in isolation. A well-rounded trading strategy often involves using multiple indicators in conjunction. You may wish to check out our article on automatically identifying candlestick patterns and consider some sort of combination for bullish and bearish signals.
Frequently Asked Questions
- What does a value of 0 in the Aroon Oscillator indicate? A value of 0 in the Aroon Oscillator suggests that the market is in a consolidation phase, indicating that a clear trend is not present.
- Can the Aroon Oscillator be used for all types of trading? Yes, the Aroon Oscillator can be used for different types of trading, including swing trading, day trading, and long-term investing. However, the effectiveness may vary depending on the market conditions and the specific trading strategy.
- How can I reduce the number of false signals from the Aroon Oscillator? One way to reduce the number of false signals is to use the Aroon Oscillator in conjunction with other technical indicators. This can help confirm signals and improve the overall accuracy of your trading strategy.
Further Reading
- Tushar S. Chande “The New Technical Trader: Boost Your Profit by Plugging into the Latest Indicators” (Wiley Finance) 1994
- Tushar S. Chande “Beyond Technical Analysis: How to Develop and Implement a Winning Trading System” (Wiley Trading), 1996
Leave a Reply