Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
agiprolabs avatar

Pandas Ta

  • 305 installs
  • 257 repo stars
  • Updated June 24, 2026
  • agiprolabs/claude-trading-skills

pandas-ta is a Claude Code skill that computes 130+ technical analysis indicators on crypto OHLCV data using the pandas-ta library.

About

pandas-ta is a Claude Code skill for computing technical analysis indicators on crypto market data. It uses the pandas-ta library to add 130+ trend, momentum, volatility, and volume indicators to an OHLCV DataFrame, and provides Strategy definitions for scalping, trend-following, mean-reversion, and momentum. A developer uses it to generate trading signals from candle data.

  • Adds 130+ technical indicators (RSI, MACD, Bollinger, ATR, VWAP, SuperTrend) to OHLCV data
  • Named Strategy presets for scalping, trend, mean-reversion, and momentum
  • Ships compute_indicators.py and multi_indicator_scan.py with Birdeye and demo data

Pandas Ta by the numbers

  • 305 all-time installs (skills.sh)
  • Ranked #333 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

pandas-ta capabilities & compatibility

Free skill; optional Birdeye API key only for live data, demo mode needs none.

Capabilities
technical analysis · indicator computation · signal generation · strategy scanning
Use cases
data analysis
Pricing
Bring your own API key
From the docs

What pandas-ta says it does

pandas-ta is a Python library that extends pandas DataFrames with 130+ technical analysis indicators accessible via `df.ta`.
SKILL.md
It covers trend, momentum, volatility, volume, and overlap indicator categories — all callable with a single method on any OHLCV DataFrame.
SKILL.md
npx skills add https://github.com/agiprolabs/claude-trading-skills --skill pandas-ta

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs305
repo stars257
Last updatedJune 24, 2026
Repositoryagiprolabs/claude-trading-skills

What it does

Compute technical analysis indicators on crypto OHLCV data using the pandas-ta library.

Who is it for?

Adding technical indicators and generating signals from crypto candle data.

Skip if: Data cleaning (use ohlcv-processing) or order execution.

When should I use this skill?

You have clean OHLCV data and need indicators like RSI, MACD, or Bollinger Bands computed.

What you get

An OHLCV DataFrame enriched with indicator columns and scored strategy signals.

  • Indicator columns on the OHLCV DataFrame
  • Strategy signal summary
  • Multi-strategy alignment score

By the numbers

  • 130+ technical indicators
  • 3 named strategy patterns (trend, mean reversion, momentum)

Files

SKILL.mdMarkdownGitHub ↗

pandas-ta — Technical Analysis for Crypto Markets

pandas-ta is a Python library that extends pandas DataFrames with 130+ technical analysis indicators accessible via df.ta. It covers trend, momentum, volatility, volume, and overlap indicator categories — all callable with a single method on any OHLCV DataFrame.

Installation

uv pip install pandas-ta pandas httpx

Quick Start

import pandas as pd
import pandas_ta as ta

# Assume df is a DataFrame with columns: open, high, low, close, volume
# All lowercase column names required

# Single indicator
df["rsi"] = df.ta.rsi(length=14)
df["atr"] = df.ta.atr(length=14)

# Multiple indicators via strategy
df.ta.strategy(ta.Strategy(
    name="Quick Check",
    ta=[
        {"kind": "rsi", "length": 14},
        {"kind": "macd", "fast": 12, "slow": 26, "signal": 9},
        {"kind": "bbands", "length": 20, "std": 2.0},
    ]
))

OHLCV DataFrame Format

pandas-ta expects a DataFrame with lowercase column names:

import pandas as pd

df = pd.DataFrame({
    "open": [...],
    "high": [...],
    "low": [...],
    "close": [...],
    "volume": [...]
}, index=pd.DatetimeIndex([...]))

Important: Set the index to a DatetimeIndex for time-aware indicators like VWAP. Column names must be lowercase (close, not Close).

Handling Missing Data

# Drop rows with NaN in OHLCV columns
df = df.dropna(subset=["open", "high", "low", "close", "volume"])

# Forward-fill small gaps (1-2 bars max)
df = df.ffill(limit=2)

# Verify no zero-volume bars for volume indicators
df = df[df["volume"] > 0]

Core Indicator Categories

Trend Indicators

Identify market direction and trend strength.

IndicatorCallKey Signal
SMAdf.ta.sma(length=20)Price above = bullish
EMAdf.ta.ema(length=20)Faster than SMA, less lag
SuperTrenddf.ta.supertrend(length=10, multiplier=3)Direction column: 1=bull, -1=bear
Ichimokudf.ta.ichimoku()Returns tuple of (span, lines) DataFrames
VWMAdf.ta.vwma(length=20)Volume-weighted price trend
HMAdf.ta.hma(length=20)Minimal lag, smooth trend
ADXdf.ta.adx(length=14)>25 = trending, <20 = ranging

Momentum Indicators

Measure speed and magnitude of price changes.

IndicatorCallKey Signal
RSIdf.ta.rsi(length=14)>70 overbought, <30 oversold
MACDdf.ta.macd(fast=12, slow=26, signal=9)Histogram crossover = entry
Stochasticdf.ta.stoch(k=14, d=3, smooth_k=3)>80 overbought, <20 oversold
CCIdf.ta.cci(length=20)>100 overbought, <-100 oversold
Williams %Rdf.ta.willr(length=14)>-20 overbought, <-80 oversold
ROCdf.ta.roc(length=10)Positive = upward momentum
MFIdf.ta.mfi(length=14)Money flow version of RSI

Volatility Indicators

Measure price dispersion and expected range.

IndicatorCallKey Signal
Bollinger Bandsdf.ta.bbands(length=20, std=2)Squeeze = breakout pending
ATRdf.ta.atr(length=14)Position sizing, stop placement
Keltner Channelsdf.ta.kc(length=20, scalar=1.5)BB inside KC = squeeze
Donchian Channelsdf.ta.donchian(lower_length=20, upper_length=20)Breakout detection

Volume Indicators

Confirm price moves with volume analysis.

IndicatorCallKey Signal
OBVdf.ta.obv()Divergence from price = reversal
VWAPdf.ta.vwap()Intraday fair value (needs DatetimeIndex)
CMFdf.ta.cmf(length=20)>0 accumulation, <0 distribution
ADdf.ta.ad()Accumulation/Distribution line

Strategy Class

Run multiple indicators in a single call using ta.Strategy:

import pandas_ta as ta

# Built-in "All" strategy runs every indicator
df.ta.strategy(ta.AllStrategy)

# Custom strategy
my_strategy = ta.Strategy(
    name="Crypto Scalp",
    description="Fast indicators for crypto scalping",
    ta=[
        {"kind": "ema", "length": 9},
        {"kind": "ema", "length": 21},
        {"kind": "rsi", "length": 7},
        {"kind": "stoch", "k": 5, "d": 3, "smooth_k": 3},
        {"kind": "atr", "length": 7},
        {"kind": "bbands", "length": 10, "std": 2.0},
        {"kind": "obv"},
    ]
)
df.ta.strategy(my_strategy)

Named Strategy Patterns

# Trend following
trend_strategy = ta.Strategy(
    name="Trend",
    ta=[
        {"kind": "ema", "length": 20},
        {"kind": "ema", "length": 50},
        {"kind": "adx", "length": 14},
        {"kind": "supertrend", "length": 10, "multiplier": 3},
        {"kind": "atr", "length": 14},
    ]
)

# Mean reversion
reversion_strategy = ta.Strategy(
    name="Mean Reversion",
    ta=[
        {"kind": "rsi", "length": 14},
        {"kind": "bbands", "length": 20, "std": 2.0},
        {"kind": "stoch", "k": 14, "d": 3, "smooth_k": 3},
        {"kind": "cci", "length": 20},
    ]
)

# Momentum
momentum_strategy = ta.Strategy(
    name="Momentum",
    ta=[
        {"kind": "macd", "fast": 12, "slow": 26, "signal": 9},
        {"kind": "rsi", "length": 14},
        {"kind": "obv"},
        {"kind": "roc", "length": 10},
        {"kind": "mfi", "length": 14},
    ]
)

Crypto-Specific Considerations

24/7 Markets

  • No session gaps — indicators that rely on open/close of sessions behave differently
  • VWAP resets at midnight UTC by default; consider anchored VWAP for custom periods
  • Weekend data is continuous — no Monday gap effects

High Volatility Adjustments

  • Bollinger Bands: Use 2.5-3x standard deviation instead of the default 2x
  • RSI periods: Shorter periods (7-10) capture faster crypto cycles
  • ATR: Use for dynamic stop-losses; crypto ATR is typically 2-5x equity ATR
  • SuperTrend multiplier: 3-4x for crypto vs 2-3x for equities

Low-Cap Token Considerations

  • Volume indicators (OBV, CMF, MFI) are unreliable with thin order books
  • Prefer price-based indicators (RSI, BBands, SuperTrend) for low-liquidity tokens
  • ATR-based position sizing is critical — wide spreads amplify losses
  • Wash trading inflates volume; cross-reference with on-chain data

Timeframe Selection

TimeframeUse CaseRecommended Indicators
1m-5mScalping, PumpFunRSI(5-7), EMA(5,13), ATR(5)
15m-1hDay tradingMACD, RSI(14), BBands, EMA(20,50)
4h-1dSwing tradingSuperTrend, ADX, EMA(50,200)
1wPosition tradingSMA(20,50), RSI(14), monthly VWAP

Common Indicator Combinations

Trend Following

# EMA crossover + ADX confirmation + SuperTrend direction
ema_fast = df.ta.ema(length=20)
ema_slow = df.ta.ema(length=50)
adx_df = df.ta.adx(length=14)
st_df = df.ta.supertrend(length=10, multiplier=3)

bullish = (
    (ema_fast > ema_slow) &
    (adx_df["ADX_14"] > 25) &
    (st_df["SUPERTd_10_3.0"] == 1)
)

Mean Reversion

# RSI oversold + price at lower BB + Stochastic oversold
rsi = df.ta.rsi(length=14)
bb = df.ta.bbands(length=20, std=2.5)
stoch = df.ta.stoch(k=14, d=3, smooth_k=3)

buy_signal = (
    (rsi < 30) &
    (df["close"] <= bb["BBL_20_2.5"]) &
    (stoch["STOCHk_14_3_3"] < 20)
)

Momentum Confirmation

# MACD histogram positive + RSI above 50 + OBV rising
macd = df.ta.macd(fast=12, slow=26, signal=9)
rsi = df.ta.rsi(length=14)
obv = df.ta.obv()

momentum_bull = (
    (macd["MACDh_12_26_9"] > 0) &
    (rsi > 50) &
    (obv > obv.shift(1))
)

Volatility Breakout (BB Squeeze)

# Bollinger Band width contracting + volume spike
bb = df.ta.bbands(length=20, std=2.0)
atr = df.ta.atr(length=14)
vol_sma = df["volume"].rolling(20).mean()

bb_width = (bb["BBU_20_2.0"] - bb["BBL_20_2.0"]) / bb["BBM_20_2.0"]
squeeze = bb_width < bb_width.rolling(120).quantile(0.1)
vol_spike = df["volume"] > (vol_sma * 2.0)

breakout_setup = squeeze & vol_spike

Integration with Other Skills

  • birdeye-api: Fetch OHLCV data → feed into pandas-ta for indicator computation
  • vectorbt: Use pandas-ta indicators as signal inputs for backtesting
  • trading-visualization: Plot indicator overlays on price charts
  • slippage-modeling: Combine ATR with slippage estimates for realistic execution modeling
  • position-sizing: Use ATR-based sizing from pandas-ta output

Files

References

  • references/indicator_guide.md — Top 20 crypto indicators with syntax, parameters, and interpretation
  • references/strategy_patterns.md — Pre-built strategy combinations for scalping, day trading, and swing trading
  • references/common_pitfalls.md — Common mistakes with technical indicators in crypto markets

Scripts

  • scripts/compute_indicators.py — Fetch OHLCV data and compute standard indicator set with signal summary
  • scripts/multi_indicator_scan.py — Run multiple strategy profiles and score current signal alignment

Related skills

FAQ

How many indicators are available?

pandas-ta exposes 130+ indicators across trend, momentum, volatility, volume, and overlap categories via df.ta.

What DataFrame format is required?

Lowercase column names (close, not Close) and a DatetimeIndex for time-aware indicators like VWAP.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.