GPU-accelerated quantitative time-series feature extraction for financial data
Project description
ts-quant ๐
GPU-Accelerated Quantitative Feature Extraction for Financial Time Series
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ts_quant-0.1.8.tar.gz.
File metadata
- Download URL: ts_quant-0.1.8.tar.gz
- Upload date:
- Size: 56.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
548eed9dba085a0fa5f7e67c804cf96d18dff8184aa67d48f1af39eae3955b0b
|
|
| MD5 |
3354ff7b6b37706e33f8fd44f3a5265e
|
|
| BLAKE2b-256 |
8fe177093e28c4a56958cce71c0db1533d1d6d1a6d5fd4a9eff0bb4ccf2ae58d
|
File details
Details for the file ts_quant-0.1.8-py3-none-any.whl.
File metadata
- Download URL: ts_quant-0.1.8-py3-none-any.whl
- Upload date:
- Size: 50.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
284bb582101856bb4b1c892f9691ab3a2efb0ad8153e26d316492661ef63f933
|
|
| MD5 |
050683d09875b7a8ad0a2c31111f59ab
|
|
| BLAKE2b-256 |
0bba4935505f816df633542d3fa3c4ce099e193798bd67e92772c00456f55aff
|