Installation
Requirements
Pandas TA Classic requires:
Python (the latest stable version plus the prior 4 minor versions)
pandas
numpy
Note
Python version support follows a rolling policy: the latest stable Python version plus 4 preceding minor versions. When new Python versions are released, support is automatically updated via CI/CD workflows. Check the CI workflow for the current supported versions.
Optional Dependencies
For enhanced functionality, consider installing:
TA-Lib: Optional — all 62 CDL patterns work natively without it (see Installing TA-Lib below)
yfinance: For downloading stock data with
df.ta.ticker()vectorbt: For backtesting integration
Installation Methods
Pandas TA Classic supports both modern uv and traditional pip package managers.
Stable Release (Recommended)
Install the latest stable release from PyPI:
Using uv (recommended - faster):
uv pip install pandas-ta-classic
Using pip:
pip install pandas-ta-classic
Latest Development Version
Install the most recent version with all latest features and bug fixes:
Using uv:
uv pip install git+https://github.com/xgboosted/pandas-ta-classic
Using pip:
pip install -U git+https://github.com/xgboosted/pandas-ta-classic
Development Installation
For contributing to the project or testing unreleased features:
Using uv:
# Clone the repository
git clone https://github.com/xgboosted/pandas-ta-classic.git
cd pandas-ta-classic
# Install in editable mode with all dependencies
uv pip install -e ".[all]"
# Or install specific dependency groups:
uv pip install -e ".[dev]" # Development tools
uv pip install -e ".[optional]" # Optional features like TA-Lib
uv pip install -e ".[oracle]" # Oracle parity libs: TA-Lib + tulipy
Using pip:
# Clone the repository
git clone https://github.com/xgboosted/pandas-ta-classic.git
cd pandas-ta-classic
# Install in editable mode with all dependencies
pip install -e ".[all]"
# Or install specific dependency groups:
pip install -e ".[dev]" # Development tools
pip install -e ".[optional]" # Optional features like TA-Lib
pip install -e ".[oracle]" # Oracle parity libs: TA-Lib + tulipy
Note
Development Installation Requirements:
Full git repository with history and tags (not a shallow clone)
setuptools-scm is automatically installed as a build dependency
Git tags determine the package version (e.g.,
0.3.36.dev1for development,0.3.35for releases)See the Version Management section in CONTRIBUTING.md for details
Oracle Libraries (TA-Lib and tulipy)
Both TA-Lib and tulipy are fully optional. They serve different roles:
Library |
Role |
Effect when installed |
|---|---|---|
TA-Lib |
Acceleration backend + oracle |
34 core indicators use TA-Lib’s C implementation by default; also used by |
tulipy |
Oracle only |
Never used as computation backend; only |
TA-Lib has a dual role: acceleration backend for 34 core indicators, and parity oracle. The two behavioural areas affected are:
- Candlestick patterns (CDL family)
All 62 CDL patterns have native Python implementations that are always used. TA-Lib is never invoked for CDL patterns — the TA-Lib fallback code path in
cdl_pattern()is only retained for hypothetical future patterns without a native implementation.- 34 core indicators (
ema,sma,rsi,macd,obv,atr, etc.) When TA-Lib is installed, these indicators use TA-Lib’s implementation by default for numerical consistency with TA-Lib-based workflows. Pass
talib=Falseto any call to force the native implementation instead.import pandas_ta_classic as ta # Uses TA-Lib EMA (if TA-Lib installed) — default behaviour ema = df.ta.ema(length=20) # Force native implementation regardless of TA-Lib ema = df.ta.ema(length=20, talib=False) # CDL patterns — always native, talib= kwarg has no effect here df = df.ta.cdl_pattern(name="engulfing") # native result = df.ta.cdl_pattern(name="hammer") # native
Installing TA-Lib:
Using uv:
uv pip install TA-Lib
Using pip:
pip install TA-Lib
Note: If you encounter installation issues with TA-Lib, refer to the TA-Lib installation guide.
tulipy is an oracle-only library. It is never used as a computation backend — its sole purpose is test_oracle_tulipy.py, which verifies that native indicator output matches tulipy’s reference values.
Note
Installing tulipy has no effect on indicator behaviour or performance at runtime. It only enables the tulipy oracle test suite.
Using uv:
uv pip install tulipy
Using pip:
pip install tulipy
Or install both oracle libraries at once:
# uv
uv pip install pandas-ta-classic[oracle]
# pip
pip install pandas-ta-classic[oracle]
Both oracle test suites (test_oracle_talib.py, test_oracle_tulipy.py) are guarded with @unittest.skipUnless and skip automatically when the respective library is not installed.
Installing Optional Dependencies
For complete functionality:
Using uv:
# For stock data download
uv pip install yfinance
# For backtesting
uv pip install vectorbt
# For enhanced performance (optional — provides 6–230× speedups on hot-loop indicators)
uv pip install pandas-ta-classic[performance]
# Or install numba directly
uv pip install numba
# Install all optional dependencies at once
uv pip install pandas-ta-classic[optional]
Using pip:
# For stock data download
pip install yfinance
# For backtesting
pip install vectorbt
# For enhanced performance (optional — provides 6–230× speedups on hot-loop indicators)
pip install pandas-ta-classic[performance]
# Or install numba directly
pip install numba
# Install all optional dependencies at once
pip install pandas-ta-classic[optional]
Verification
Verify your installation:
import pandas_ta_classic as ta
import pandas as pd
# Create a simple DataFrame
df = pd.DataFrame({'close': [100, 101, 102, 101, 100]})
# Test an indicator
sma = df.ta.sma(length=3)
print(sma)
# List all available indicators
print(f"Available indicators: {len(df.ta.indicators())}")
If this runs without errors, you’re ready to use Pandas TA Classic!