Skip to main content

GPU-accelerated quantitative time-series feature extraction for financial data

Project description

ts-quant ๐Ÿš€

GPU-Accelerated Quantitative Feature Extraction for Financial Time Series

PyPI Python 3.9+ PyTorch License: MIT

Extract 2000+ quantitative features from OHLCV stock data using 5 powerful engines โ€” all running on GPU via PyTorch.

๐ŸŽฏ Why ts-quant?

Feature tsfresh (CPU) ts-quant (GPU)
Speed ~60s per stock ~0.3s per stock
Memory OOM on large data VRAM-managed, crash-proof
Features 794 (statistical only) 2000+ (statistical + wavelets + rocket + signatures)
GPU โŒ โœ… PyTorch/CUDA

๐Ÿ“ฆ Installation

pip install ts-quant

Requirements: Python 3.9+, PyTorch 2.0+ (with CUDA for GPU acceleration)

๐Ÿš€ Quick Start

import pandas as pd
from ts_quant import generate_features

# Load your OHLCV data
df = pd.read_csv('stocks.csv')
# Expected columns: symbol, date, close, volume, open, high, low

# Extract features (GPU)
df_features = generate_features(
    df,
    device='cuda',              # 'cpu' for CPU-only
    tsfresh_mode='comprehensive',
    window_sizes=[20],
)

print(f"New features: {df_features.shape[1] - df.shape[1]}")

๐Ÿ”ง 5 Feature Engines

Engine A: MultiRocket ๐ŸŽฏ

Random convolutional kernels with multi-scale dilations.

from ts_quant import RocketEngine

engine = RocketEngine(n_kernels=250)
features, names = engine.extract(x)  # x: [B, T]
# โ†’ 1000 features (250 kernels ร— 4 pooling ops)

Engine B: Catch22 ๐Ÿ“Š

22 canonical time-series features (ACF, DFA, entropy, etc.).

from ts_quant import Catch22Engine

engine = Catch22Engine()
features, names = engine.extract(x)
# โ†’ 22 features per window

Engine C: Path Signatures โœ๏ธ

Ordered interaction features via iterated integrals.

from ts_quant import SignaturesEngine

engine = SignaturesEngine(depth=3, channels=['close', 'volume'])
features, names = engine.extract(x_multivariate)  # [B, T, d]
# โ†’ d + dยฒ + dยณ features

Engine D: Wavelets ๐ŸŒŠ

Discrete wavelet transform (Haar, db4, db2, sym4).

from ts_quant import WaveletsEngine

engine = WaveletsEngine(wavelet_types=['haar', 'db4'])
features, names = engine.extract(x)
# โ†’ 62 features (energy, entropy, mean, std, max per level)

Engine E: Tsfresh Complete ๐Ÿ“ˆ

63 mathematical functions, 361 features in comprehensive mode.

from ts_quant import TsfreshEngine

engine = TsfreshEngine(mode='comprehensive')
features, names = engine.extract(x)
# โ†’ 361 features (statistics, ACF, FFT, entropy, trend, ...)

โšก VRAM Management

ts-quant automatically manages GPU memory to prevent OOM crashes:

# Works on any GPU size (8GB - 80GB)
df_features = generate_features(
    df,
    device='cuda',
    max_vram_gb=8,  # Optional: manual VRAM limit
)

๐Ÿ”ฌ Feature Selection

Built-in redundancy removal:

from ts_quant import auto_select_features

selected, names = auto_select_features(
    features_tensor,
    feature_names,
    correlation_threshold=0.95,  # Remove highly correlated
)

๐Ÿ“ Input Format

Your DataFrame should have this structure:

symbol date open high low close volume
BBCA 2024-01-02 9500 9600 9400 9550 1000000
BBRI 2024-01-02 5200 5300 5100 5250 2000000

๐Ÿ—๏ธ Architecture

ts-quant/
โ”œโ”€โ”€ ts_quant/
โ”‚   โ”œโ”€โ”€ api.py              # Orchestrator โ€” generate_features()
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ memory_manager.py   # Dynamic VRAM management
โ”‚   โ”‚   โ”œโ”€โ”€ tensor_utils.py     # DataFrame โ†” Tensor conversion
โ”‚   โ”‚   โ””โ”€โ”€ windowing.py        # GPU sliding windows
โ”‚   โ”œโ”€โ”€ engines/
โ”‚   โ”‚   โ”œโ”€โ”€ rocket.py           # Engine A: MultiRocket
โ”‚   โ”‚   โ”œโ”€โ”€ catch22.py          # Engine B: Catch22
โ”‚   โ”‚   โ”œโ”€โ”€ signatures.py       # Engine C: Path Signatures
โ”‚   โ”‚   โ”œโ”€โ”€ wavelets.py         # Engine D: Wavelets
โ”‚   โ”‚   โ””โ”€โ”€ tsfresh_core.py     # Engine E: Tsfresh Complete
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ”œโ”€โ”€ config.py           # Default configurations
โ”‚       โ”œโ”€โ”€ validation.py       # Input validation
โ”‚       โ””โ”€โ”€ feature_selection.py # Redundancy removal
โ””โ”€โ”€ tests/

๐Ÿ“„ License

MIT 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

ts_quant-0.1.5.tar.gz (55.2 kB view details)

Uploaded Source

Built Distribution

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

ts_quant-0.1.5-py3-none-any.whl (50.1 kB view details)

Uploaded Python 3

File details

Details for the file ts_quant-0.1.5.tar.gz.

File metadata

  • Download URL: ts_quant-0.1.5.tar.gz
  • Upload date:
  • Size: 55.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ts_quant-0.1.5.tar.gz
Algorithm Hash digest
SHA256 5d9222b5b84052e894ffa399e68548326adc3a5b48014e496318a59e3211ddf0
MD5 1200e13417b582b40ec19dc6d8b538a3
BLAKE2b-256 9b56604c56d7a176263b45e8350d3683068af9562ed7c648bb0cec0fed6ae164

See more details on using hashes here.

File details

Details for the file ts_quant-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: ts_quant-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 50.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ts_quant-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 6f48f04090c47d2dd2e94f3205da755a8a92a0cbc2c2cfc830e4fef25de40185
MD5 3bb878a0fa642ab82808f48c2aee0645
BLAKE2b-256 ab49f791a9feb9ec846ef722ead1ec118281774c3ada387297ba635b10f9adb0

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