Skip to main content
skill CX Codex

ta-lib — Claude Code skill: what it does, how to install

Provides C-optimized technical analysis with 150+ indicators and 61 candlestick patterns via TA-Lib. Essential for high-performance trading pipelines on large price datasets.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add agiprolabs/claude-trading-skills --skill ta-lib -a claude-code
Open on GitHub

What ta-lib does

This skill brings C-optimized financial computations into your AI agent using the Python wrapper for TA-Lib. It covers over 150 indicators across momentum, volume, and volatility groups, alongside 61 candlestick pattern detectors. All inputs and outputs rely directly on NumPy arrays, executing 10 to 100 times faster than pure-Python libraries on large datasets.

You can work through either the standard function API or the dictionary-based abstract API. Keep in mind that Python packages will fail with an ImportError if the underlying C library is missing from the operating system. You must run brew install ta-lib on macOS or sudo apt-get install -y ta-lib on Debian and Ubuntu before installing the Python package. Also, continuous 24/7 crypto markets degrade gap-based candlestick patterns like morning star, while body-ratio patterns stay dependable.

What it helps with

  • Compute RSI, MACD, Bollinger Bands, and ATR directly on NumPy arrays
  • Scan historical price bars for 61 distinct candlestick formations
  • Accelerate backtest indicator calculations by 10 to 100 times over pure Python
  • Run dynamic indicator selection using the TA-Lib abstract dictionary API

Example prompts for the agent

  • Compute RSI(14) and MACD on my close price array using talib
  • Detect doji and engulfing candlestick patterns on OHLC bars with CDLDOJI and CDLENGULFING
  • Pass OHLCV data into the TA-Lib abstract API and calculate Bollinger Bands

How to install ta-lib

1Skills CLI (Vercel)

npx skills add agiprolabs/claude-trading-skills --skill ta-lib -a claude-code

2Manually: put the files in place

~/.claude/skills/ta-lib/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/ta-lib/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about ta-lib

How to install ta-lib in Claude Code?

Run npx skills add agiprolabs/claude-trading-skills --skill ta-lib -a claude-code. Make sure the underlying C library ta-lib is already installed on your system.

What does the ta-lib skill do?

It provides access to 150+ technical indicators and 61 candlestick pattern recognition routines using C-optimized calculations over NumPy arrays.

Why does talib throw an ImportError during execution?

The Python wrapper requires the compiled C library installed in the OS. Install it first with brew install ta-lib on macOS or sudo apt-get install -y ta-lib on Ubuntu.

Source text

SKILL.md · MIT
---
name: ta-lib
description: C-optimized technical analysis with 150+ functions and 61 candlestick pattern recognition functions via TA-Lib
---

# ta-lib — C-Optimized Technical Analysis

TA-Lib (Technical Analysis Library) is a C library with a Python wrapper providing 150+ technical analysis functions and 61 candlestick pattern recognition functions. It is the industry standard for performance-critical indicator computation, used in production trading systems where pandas-ta or pure-Python alternatives are too slow.

## What TA-Lib Is

TA-Lib was originally written in C for financial market data analysis. The Python wrapper (`TA-Lib` on PyPI, imported as `talib`) provides:

- **150+ indicator functions** across overlap, momentum, volume, volatility, cycle, and math categories
- **61 candlestick pattern recognition functions** — the most comprehensive pattern library available
- **C-speed computation** — 10-100x faster than pure-Python equivalents on large datasets
- **Two APIs**: a function API (pass arrays directly) and an abstract API (pass dict of arrays)
- **NumPy native** — all inputs and outputs are NumPy arrays

## Installation

TA-Lib requires the underlying C library to be installed first:

```bash
# macOS
brew install ta-lib
uv pip install TA-Lib numpy pandas

# Ubuntu/Debian
sudo apt-get install -y ta-lib
uv pip install TA-Lib numpy pandas

# From source (any platform)
wget https://github.com/ta-lib/ta-lib/releases/download/v0.6.4/ta-lib-0.6.4-src.tar.gz
tar -xzf ta-lib-0.6.4-src.tar.gz
cd ta-lib-0.6.4
./configure --prefix=/usr/local
make && sudo make install
uv pip install TA-Lib numpy pandas
```

If the C library is not installed, `import talib` will fail with an `ImportError`. The scripts in this skill include fallback logic for environments without TA-Lib installed.

## When to Use TA-Lib vs pandas-ta

| Criterion | TA-Lib | pandas-ta |
|---|---|---|
| Speed | C-optimized, 10-100x faster | Pure Python, slower on large data |
| Candlestick patterns | 61 built-in patterns | Limited pattern support |
| Installation | Requires C library | `pip install` only |
| API style | NumPy arrays | DataFrame `.ta` accessor |
| Indicator count | 150+ | 130+ |
| Streaming | Single-value update possible | Recompute entire series |
| Dependencies | C lib + numpy | pandas only |

**Use TA-Lib when:**
- Processing millions of bars or running backtests at scale
- You need candlestick pattern recognition (TA-Lib is unmatched here)
- You are building a production pipeline where latency matters
- You need cycle indicators (Hilbert Transform family)

**Use pandas-ta when:**
- You want DataFrame-native convenience
- Installation simplicity matters (no C dependency)
- You need indicators not in TA-Lib (pandas-ta has some extras)

## Quick Start

```python
import numpy as np
import talib

# Create sample data
close = np.random.randn(100).cumsum() + 50
high = close + np.abs(np.random.randn(100))
low = close - np.abs(np.random.randn(100))
open_ = close + np.random.randn(100) * 0.5
volume = np.random.randint(1000, 10000, 100).astype(float)

# Function API — pass arrays directly
rsi = talib.RSI(close, timeperiod=14)
macd, signal, hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
upper, middle, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2)
atr = talib.ATR(high, low, close, timeperiod=14)

# Candlestick patterns — return +100 (bullish), -100 (bearish), or 0
doji = talib.CDLDOJI(open_, high, low, close)
hammer = talib.CDLHAMMER(open_, high, low, close)
engulfing = talib.CDLENGULFING(open_, high, low, close)
```

## Function API vs Abstract API

### Function API (Recommended)

Call functions directly with NumPy arrays:

```python
import talib

rsi = talib.RSI(close, timeperiod=14)
sma = talib.SMA(close, timeperiod=20)
upper, mid, lower = talib.BBANDS(close)
```

### Abstract API

Pass a dictionary of arrays and get results by name:

```python
from talib import abstract

inputs = {"open": open_, "high": high, "low": low, "close": close, "volume": volume}

# Call by function name
rsi = abstract.RSI(inputs, timeperiod=14)
macd = abstract.MACD(inputs)  # returns (macd, signal, hist)
```

The abstract API is useful for dynamic indicator selection (e.g., looping over a list of indicator names).

## Function Groups

TA-Lib organizes functions into these groups:

### Overlap Studies
Moving averages and envelope indicators that overlay price charts.

```python
sma = talib.SMA(close, timeperiod=20)
ema = talib.EMA(close, timeperiod=12)
upper, mid, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2)
sar = talib.SAR(high, low, acceleration=0.02, maximum=0.2)
mama, fama = talib.MAMA(close, fastlimit=0.5, slowlimit=0.05)
```

### Momentum Indicators
Oscillators and trend-strength measures.

```python
rsi = talib.RSI(close, timeperiod=14)
macd, signal, hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
slowk, slowd = talib.STOCH(high, low, close)
cci = talib.CCI(high, low, close, timeperiod=14)
willr = talib.WILLR(high, low, close, timeperiod=14)
adx = talib.ADX(high, low, close, timeperiod=14)
mfi = talib.MFI(high, low, close, volume, timeperiod=14)
```

### Volume Indicators
Volume-based analysis functions.

```python
obv = talib.OBV(close, volume)
ad = talib.AD(high, low, close, volume)
adosc = talib.ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10)
```

### Volatility Indicators
Measures of price variability.

```python
atr = talib.ATR(high, low, close, timeperiod=14)
natr = talib.NATR(high, low, close, timeperiod=14)
trange = talib.TRANGE(high, low, close)
```

### Pattern Recognition (Candlestick)
61 functions that detect candlestick patterns. All return integer arrays:
- `+100` = bullish pattern detected
- `-100` = bearish pattern detected
- `0` = no pattern

```python
# Single patterns
doji = talib.CDLDOJI(open_, high, low, close)
hammer = talib.CDLHAMMER(open_, high, low, close)
engulfing = talib.CDLENGULFING(open_, high, low, close)

# Scan all 61 patterns at once
candle_names = talib.get_function_groups()["Pattern Recognition"]
for name in candle_names:
    func = getattr(talib, name)
    result = func(open_, high, low, close)
    hits = np.nonzero(result)[0]
    if len(hits) > 0:
        print(f"{name}: {len(hits)} detections")
```

See `references/candlestick_patterns.md` for the full list of 61 patterns with reliability ratings and crypto relevance.

### Math Transform & Math Operators
Mathematical functions (sin, cos, ln, etc.) and operators (add, sub, mult, div) on arrays. Rarely used directly but available.

## Crypto Considerations

### 24/7 Markets
- Candlestick patterns designed for traditional markets with opening/closing gaps may behave differently on crypto's continuous markets
- Gap-based patterns (morning star, evening star) are less reliable without session gaps
- Body-ratio patterns (doji, hammer, engulfing) still work well on any timeframe

### Timeframe Selection
- **1m-5m**: Patterns are noisy; combine with volume confirmation
- **15m-1h**: Good for intraday signals on high-cap tokens
- **4h-1d**: Most reliable for pattern recognition
- **Tip**: Higher timeframes produce fewer but more reliable pattern signals

### NaN Handling
TA-Lib returns `NaN` for the initial lookback period of each indicator. Always account for this:

```python
rsi = talib.RSI(close, timeperiod=14)
# First 14 values will be NaN
valid_rsi = rsi[~np.isnan(rsi)]
```

### Solana Token Data
When using TA-Lib with Solana token OHLCV data:
- Ensure arrays are `float64` dtype — TA-Lib requires this
- Sort by timestamp ascending before passing to TA-Lib
- Handle gaps in low-liquidity token data before computing indicators

```python
# Convert to float64 for TA-Lib compatibility
close = df["close"].values.astype(np.float64)
high = df["high"].values.astype(np.float64)
low = df["low"].values.astype(np.float64)
```

## Integration with Other Skills

### With pandas-ta
pandas-ta can use TA-Lib as a backend when installed, getting C-speed through the pandas-ta API:

```python
import pandas_ta as ta
# pandas-ta auto-detects TA-Lib and uses it for supported indicators
# Set explicitly:
ta.Imports["talib"] = True  # Force TA-Lib backend
df.ta.rsi(length=14)  # Uses TA-Lib under the hood if available
```

### With vectorbt
vectorbt integrates with TA-Lib for fast backtesting:

```python
import vectorbt as vbt

# Use TA-Lib indicators in vectorbt
rsi = vbt.talib("RSI").run(close, timeperiod=14)
entries = rsi.real_crossed_below(30)
exits = rsi.real_crossed_above(70)
```

### With Birdeye/DexScreener Data
Fetch OHLCV data from API skills, then process with TA-Lib:

```python
# After fetching OHLCV from birdeye-api or dexscreener-api
close = np.array(ohlcv_data["close"], dtype=np.float64)
rsi = talib.RSI(close, timeperiod=14)
```

## Listing Available Functions

```python
import talib

# All function groups
groups = talib.get_function_groups()
for group, funcs in groups.items():
    print(f"{group}: {len(funcs)} functions")

# All function names
all_funcs = talib.get_functions()
print(f"Total: {len(all_funcs)} functions")

# Info about a specific function
info = talib.abstract.Function("RSI").info
print(info["display_name"], info["group"])
```

## Files

| File | Description |
|---|---|
| `references/function_reference.md` | Most useful functions by category with syntax and parameters |
| `references/candlestick_patterns.md` | All 61 candlestick patterns grouped by type with reliability ratings |
| `scripts/compute_indicators.py` | Computes common indicators with TA-Lib/fallback comparison |
| `scripts/pattern_scanner.py` | Scans OHLCV data for all 61 candlestick patterns |

© agiprolabs · MIT · agiprolabs/claude-trading-skills

Similar skills

Everything for Finance and business →

From the same set55

exit-strategies Provides systematic exit rules, ATR stop-loss logic, and trailing stop strategies for crypto and Solana trading. Useful for automating disciplined position management. CX Codex +1 505installs strategy-framework Gives you one template for writing a trading strategy down: entry and exit rules, position sizing, risk limits, performance criteria. Useful when the idea exists but the document does not. CX Codex +1 500installs backtrader A skill that teaches your agent to write backtests with the Python backtrader framework: bar-by-bar execution, bracket orders, commission and slippage. CX Codex +1 498installs volatility-modeling Estimates crypto volatility, constructs volatility cones, and forecasts regimes via GARCH and EWMA. Useful for position sizing and stop placement. CX Codex +1 494installs vectorbt Runs vectorized backtests for trading strategies using NumPy and pandas array operations. It executes parameter grid searches and analyzes portfolio risk. CX Codex +1 492installs whale-tracking Tracks large Solana wallets on-chain: accumulation, distribution and smart money signals before they show up in price. CX Codex +1 493installs mean-reversion Statistical toolkit for mean-reversion trading strategies. Validates stationarity with ADF and Hurst tests, calculates half-life, and generates z-score trade signals. CX Codex +1 490installs portfolio-analytics Computes return, risk and risk-adjusted metrics from an equity curve and trade log. Useful after a backtest when you need to compare strategies or ship a report. CX Codex +1 489installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor