Skip to main content

Python bindings for tacuda: full TA-Lib coverage (161 functions) on CUDA, incl. MACDEXT and 19 vector math kernels, device pipeline support, structured OHLCV inputs, batched multi-symbol execution, and runtime dtype selection (float16/float32/float64)

Project description

TaCuda — Python Bindings

Python package for the native tacuda CUDA library. Full TA-Lib coverage (161 functions): indicators, MACDEXT, 19 vector math kernels, candlestick patterns, plus typed core APIs with runtime dtype selection and the zero-copy device API.

Prerequisites

  • NVIDIA GPU (Compute Capability >= 6.0)
  • CUDA Toolkit 11.x or 12.x
  • Built tacuda shared library (tacuda.dll / libtacuda.so / libtacuda.dylib)
  • Python >= 3.8, NumPy >= 1.20

Package Scope

  • High-level NumPy wrappers for indicator functions
  • Precision-aware core indicators (sma, ema, rsi, macd, atr, bbands) via dtype="float16|float32|float64"
  • OHLCV convenience container and input validation helpers

Installation

pip install tacuda

Note: The tacuda native library must be built separately and placed where the Python bindings can find it. See "Library Location" below.

Quick Start

import numpy as np
from tacuda import sma, ema, rsi, macd, bbands, OHLCV

# Generate sample data
prices = np.random.randn(100_000).cumsum().astype(np.float32) + 100

# Moving averages
sma20 = sma(prices, 20)
ema12 = ema(prices, 12)

# RSI
rsi14 = rsi(prices, 14)

# MACD (returns macd_line, signal, histogram)
macd_line, signal, hist = macd(prices, 12, 26, 9)

# Bollinger Bands (returns upper, middle, lower)
upper, middle, lower = bbands(prices, 20, 2.0, 2.0)

# OHLCV container
ohlcv = OHLCV.from_columns(open_arr, high_arr, low_arr, close_arr, volume_arr)

MACDEXT and vector math

import tacuda

# Independent MA types per line (0=SMA 1=EMA 2=WMA ... 8=T3)
ext_macd, ext_signal, ext_hist = tacuda.macdext(
    prices, fastPeriod=12, fastType=1, slowPeriod=26, slowType=0,
    signalPeriod=9, signalType=2)

# Element-wise GPU kernels
log_prices = tacuda.ln(prices)
spread = tacuda.sub(high_arr, low_arr)

Zero-copy device pipeline

n = len(prices)
d_in = tacuda.device_alloc(n)
d_out = tacuda.device_alloc(n)
try:
    tacuda.device_upload(prices, d_in, n)   # 1 PCIe transfer in
    tacuda.sma_d(d_in, d_out, n, 20)        # compute on GPU
    tacuda.sin_d(d_out, d_out, n)           # chain kernels, zero copies
    tacuda.device_sync()
    result = tacuda.device_download(d_out, n)  # 1 PCIe transfer out
finally:
    tacuda.device_free(d_in)
    tacuda.device_free(d_out)

Available Indicators (full TA-Lib coverage)

Category Indicators
Moving Averages SMA, EMA, WMA, DEMA, TEMA, TRIMA, KAMA, T3, MAMA, MAVP, MA
Momentum RSI, MACD, MACDEXT, MACDFIX, Stochastic, StochF, StochRSI, CCI, CMO, ROC, ROCP, ROCR, ROCR100, MOM, WILLR, APO, PPO, PVO, TRIX, ULTOSC, BOP
Volatility ATR, NATR, TRANGE, BBANDS, ACCBANDS, StdDev, VAR
Trend ADX, ADXR, DX, +DI, -DI, +DM, -DM, SAR, SAREXT, Aroon, AroonOsc
Volume AD, ADOSC, OBV, MFI, IMI, NVI, PVI
Statistical LINEARREG, SLOPE, INTERCEPT, ANGLE, TSF, CORREL, BETA, AVGDEV, SUM, MAX, MIN
Price Transform AVGPRICE, MEDPRICE, TYPPRICE, WCLPRICE, MIDPRICE
Hilbert Transform HT_DCPERIOD, HT_DCPHASE, HT_PHASOR, HT_SINE, HT_TRENDLINE, HT_TRENDMODE
Vector Math (19) SIN, COS, TAN, ASIN, ACOS, ATAN, SINH, COSH, TANH, EXP, LN, LOG10, SQRT, CEIL, FLOOR, ADD, SUB, MULT, DIV
Candlestick 63 patterns (Doji, Hammer, Engulfing, MorningStar, etc.)
Device API ct_*_d variants of the above + device_alloc/upload/download/sync/free and buffer-pool controls

Library Location

The bindings search for the native library in this order:

  1. TACUDA_LIBRARY environment variable (full path to shared library)
  2. TACUDA_LIBRARY_PATH / TACUDA_LIBRARY_DIR + library name
  3. System library path (ctypes.util.find_library)
  4. Common build directories relative to the package

Regenerating Metadata

When the C header changes, regenerate from the repository root:

python bindings/generate_bindings.py

Build & Publish (PyPI)

cd bindings/python
python -m build
python -m twine check dist/*
python -m twine upload dist/*

Changelog

Canonical release history is maintained in CHANGELOG.md.

License

Apache License 2.0 — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tacuda-0.7.1.tar.gz (32.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tacuda-0.7.1-py3-none-win_amd64.whl (28.1 MB view details)

Uploaded Python 3Windows x86-64

tacuda-0.7.1-py3-none-manylinux_2_35_x86_64.whl (5.5 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

File details

Details for the file tacuda-0.7.1.tar.gz.

File metadata

  • Download URL: tacuda-0.7.1.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for tacuda-0.7.1.tar.gz
Algorithm Hash digest
SHA256 5291ef71b1246eaa6162a63b748f4300d9e6bcf8110156654f730ffb49d19fe9
MD5 1985045c58387756e2ab673f59d13989
BLAKE2b-256 dd85a8cb47ae3899b60a6f875f3f03ff94f5752787c8f6d7a6a1325c49ece211

See more details on using hashes here.

File details

Details for the file tacuda-0.7.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: tacuda-0.7.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 28.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for tacuda-0.7.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 44e32efdf55cff03c886e411e260f3efbd40d8e742f1c07c11fdd2659fa816a2
MD5 de9d3edc6d0e2fec515cdf8608cd5e95
BLAKE2b-256 196d4fc56c19c4670a73479911da20becdfc63a49b059ca58648d070cc88a6a0

See more details on using hashes here.

File details

Details for the file tacuda-0.7.1-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tacuda-0.7.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 6f50f7f9016bbddbab701f1543f26a773366df86b4f3a7344a61d5463bd5cc1b
MD5 59a17810e57f4c6dcfdcad9da06ba880
BLAKE2b-256 11553ef80d767923beb0779a95db270531ab659fd0461cb423508d8b8eab591f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page