An easy to use Python 3 Pandas Extension with 80+Technical Analysis Indicators
PythonMIT
Technical Analysis Library in Python 3.7
Technical Analysis (TA) is an easy to use library that is built upon Python's Pandas library with more than 80 Indicators. These indicators are comminly used for financial time series datasets with columns or labels similar to: datetime, open, high, low, close, volume, et al. Many commonly used indicators are included, such as: Moving Average Convergence Divergence (MACD), Hull Exponential Moving Average (HMA), Bollinger Bands (BBANDS), On-Balance Volume (OBV), Aroon Oscillator (AROON) and more.
This version contains both the orignal code branch as well as a newly refactored branch with the option to use Pandas DataFrame Extension mode.
All the indicators return a named Series or a DataFrame in uppercase underscore parameter format. For example, MACD(fast=12, slow=26, signal=9) will return a DataFrame with columns: ['MACD_12_26_9', 'MACDH_12_26_9', 'MACDS_12_26_9'].
Features
Over 80 indicators.
Example Jupyter Notebook under the examples directory.
Abbreviated Indicator names as listed below.
Extended Pandas DataFrame as 'ta'. See examples below.
Parameter names are more consistent.
Refactoring indicators into categories similar to TA-lib.
Recent Changes
Updated the example notebook.
Trend Return, ta.trend_return(), has a proper index. More consistent with the module.
Added an 'adjusted' property to the 'ta' extension so you can override the default 'close' column. By default, df.ta.adjusted = None. If the adjusted close column is 'adj_close' for example, then set df.ta.adjusted = 'adj_close'.
What is a Pandas DataFrame Extension?
A Pandas DataFrame Extension, extends a DataFrame allowing one to add more functionality and features to Pandas to suit your needs. As such, it is now easier to run Technical Analysis on existing Financial Time Series without leaving the current DataFrame. This extension by default returns the Indicator result or, inclusively, it can append the result to the existing DataFrame by including the parameter
'append=True' in the method call. See examples below.
importpandasaspdimportpandas_taasta# Load datadf=pd.read_csv('symbol.csv', sep=',')
# Calculate Returns and append to the df DataFramedf.ta.log_return(cumulative=True, append=True)
df.ta.percent_return(cumulative=True, append=True)
# New Columns with resultsdf.columns# Take a peekdf.tail()
# vv Continue Post Processing vv
Module and Indicator Help
importpandasaspdimportpandas_taasta# Help about this, 'ta', extensionhelp(pd.DataFrame().ta)
# List of all indicatorspd.DataFrame().ta.indicators()
# Help about the log_return indicatorhelp(ta.log_return)
# Help about the log_return indicator as a DataFrame Extensionhelp(pd.DataFrame().ta.log_return)
New ta DataFrame Property: adjusted
# Set ta to default to an adjusted column, 'adj_close', overriding default 'close'df.ta.adjusted='adj_close'df.ta.sma(length=10, append=True)
# To reset back to 'close', set adjusted back to Nonedf.ta.adjusted=None
Technical Analysis Indicators (by Category)
Momentum (21)
Awesome Oscillator: ao
Absolute Price Oscillator: apo
Balance of Power: bop
Commodity Channel Index: cci
Center of Gravity: cg
Chande Momentum Oscillator: cmo
Coppock Curve: coppock
Fisher Transform: fisher
KST Oscillator: kst
Moving Average Convergence Divergence: macd
Momentum: mom
Percentage Price Oscillator: ppo
Rate of Change: roc
Relative Strength Index: rsi
Relative Vigor Index: rvi
Slope: slope
Stochastic Oscillator: stoch
Trix: trix
True strength index: tsi
Ultimate Oscillator: uo
Williams %R: willr
Moving Average Convergence Divergence (MACD)
Overlap (24)
Double Exponential Moving Average: dema
Exponential Moving Average: ema
Fibonacci's Weighted Moving Average: fwma
High-Low Average: hl2
High-Low-Close Average: hlc3
Commonly known as 'Typical Price' in Technical Analysis literature
Hull Exponential Moving Average: hma
Kaufman's Adaptive Moving Average: kama
Ichimoku Kinkō Hyō: ichimoku
Use: help(ta.ichimoku). Returns two DataFrames.
Linear Regression: linreg
Midpoint: midpoint
Midprice: midprice
Open-High-Low-Close Average: ohlc4
Pascal's Weighted Moving Average: pwma
William's Moving Average: rma
Simple Moving Average: sma
Sine Weighted Moving Average: sinwma
Symmetric Weighted Moving Average: swma
T3 Moving Average: t3
Triple Exponential Moving Average: tema
Triangular Moving Average: trima
Volume Weighted Average Price: vwap
Volume Weighted Moving Average: vwma
Weighted Moving Average: wma
Zero Lag Moving Average: zlma
Simple Moving Averages (SMA) and Bollinger Bands (BBANDS)
Performance (3)
Use parameter: cumulative=True for cumulative results.
Log Return: log_return
Percent Return: percent_return
Trend Return: trend_return
Percent Return (Cumulative) with Simple Moving Average (SMA)