Skip to content
cccskills
FreePublished on GitHub

pandas-ta

Technical analysis with 130+ indicators using pandas-ta for crypto market data

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (6)

  • SKILL.md8.9 KB
  • references/common_pitfalls.md9.0 KB
  • references/indicator_guide.md6.9 KB
  • references/strategy_patterns.md8.2 KB
  • scripts/compute_indicators.py16.4 KB
  • scripts/multi_indicator_scan.py17.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Event-driven backtesting with bar-by-bar execution, complex order types, multiple analyzers, and custom indicators

The English summary is being prepared. Showing the original description.

agiprolabs/claude-trading-skills436Updated Sep 3, 2026

Solana token market data via Birdeye — prices, OHLCV, trades, token metadata, security checks, and trader activity

The English summary is being prepared. Showing the original description.

agiprolabs/claude-trading-skills436Updated Sep 3, 2026

Broad crypto market data from CoinGecko covering 13,000+ tokens. Global market stats, historical price data going back years, exchange volumes, trending tokens, and category filters. Best for macro analysis and long-term historical data.

The English summary is being prepared. Showing the original description.

agiprolabs/claude-trading-skills436Updated Sep 3, 2026

Cointegration testing for pairs trading using Engle-Granger, Johansen, and rolling stability analysis

The English summary is being prepared. Showing the original description.

agiprolabs/claude-trading-skills436Updated Sep 3, 2026

Wallet evaluation, monitoring, and copy-trade strategy design for Solana DEX trading

The English summary is being prepared. Showing the original description.

agiprolabs/claude-trading-skills436Updated Sep 3, 2026

Cross-asset correlation analysis including rolling correlation, hierarchical clustering, tail dependence, and regime-dependent correlation

The English summary is being prepared. Showing the original description.

agiprolabs/claude-trading-skills436Updated Sep 3, 2026

See all skills by agiprolabs

Report a problem with this skill