Fast path signatures
Project description
chen-signatures
Fast rough path signatures for Python, powered by a high-performance Julia backend.
chen-signatures brings the speed and numerical stability of Julia’s ChenSignatures.jl to Python via juliacall, offering a modern, actively maintained alternative to existing signature libraries.
It has been benchmarked against both iisignature and pysiglib, showing:
- Comparable performance to pysiglib, a modern C++/Python implementation
- Consistently faster performance than iisignature across typical configurations
Full benchmark notebooks and articles will be published separately.
Installation
pip install chen-signatures
On first import, juliacall will automatically install a lightweight Julia runtime.
This happens once per environment.
Quick Start
import chen
import numpy as np
path = np.random.randn(1000, 10)
# Compute signature
signature = chen.sig(path, m=5)
# Compute log-signature (requires prepare step)
basis = chen.prepare_logsig(d=10, m=5) # d must match path dimension
logsignature = chen.logsig(path, basis)
# Path augmentations (time/lead–lag) with convenience wrappers
augmented = chen.time_augment(path, Tspan=1.0)
leadlag = chen.lead_lag(path)
sig_time = chen.sig_time(path, m=5)
sig_leadlag = chen.sig_leadlag(path, m=5)
API
sig(path, m)
Compute a truncated signature up to level m.
signature = chen.sig(path, m=3)
Args:
path: (N, d) array-like where N is path length, d is dimensionm: truncation level (positive integer)
Returns: 1D numpy array of signature coefficients
prepare_logsig(d, m)
Precompute and cache the Lyndon basis for log-signature computation.
basis = chen.prepare_logsig(d=10, m=5)
Args:
d: path dimension (positive integer)m: truncation level (positive integer)
Returns: Basis cache object (reusable across multiple paths)
logsig(path, basis)
Compute log-signatures using a precomputed Lyndon basis.
basis = chen.prepare_logsig(d=10, m=5)
logsig = chen.logsig(path, basis)
Args:
path: (N, d) array-like where N is path length, d is dimensionbasis: Basis object fromprepare_logsig(d, m)
Returns: 1D numpy array of log-signature coefficients (Lyndon basis projection)
Note: The basis object should match the dimension of your path. Prepare it once and reuse for multiple paths of the same dimension.
Path Augmentations
augmented = chen.time_augment(path, Tspan=1.0) # add time as first coordinate
leadlag = chen.lead_lag(path) # standard lead–lag transform
sig_time = chen.sig_time(path, m=3) # = chen.sig(time_augment(path), 3)
sig_leadlag = chen.sig_leadlag(path, m=3) # = chen.sig(lead_lag(path), 3)
Supported Types
float32,float64- Any NumPy array-like input
- Contiguous arrays recommended (handled automatically)
Use Cases
- Financial time series and derivatives pricing
- Neural CDEs and machine learning
- Feature engineering and representation learning
Limitations
- First import is slow (Julia installation)
- CPU-only execution
- Uses more memory than minimal C++ libraries
Requirements
- Python ≥ 3.9
- NumPy ≥ 1.20
- ~500MB disk space for Julia runtime
Citation
@software{chen_signatures,
author = {Combi, Alessandro},
title = {chen-signatures: Fast rough path signatures for Python},
year = {2025},
url = {https://github.com/aleCombi/ChenSignatures.jl}
}
Contributing
Issues and feedback are welcome at https://github.com/aleCombi/ChenSignatures.jl/issues
However, pull requests are not being accepted at this time.
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 chen_signatures-0.4.0.tar.gz.
File metadata
- Download URL: chen_signatures-0.4.0.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f9ce9098573464025395ef3e1d41fb10c5af50f15f4520d0f04991581ca6c14
|
|
| MD5 |
7534dfe01d659b346b5c249f1c1b21da
|
|
| BLAKE2b-256 |
dce810cf072e5e83c80695c54af3a28387fe2e099e76b9387a25b607f71d8411
|
File details
Details for the file chen_signatures-0.4.0-py3-none-any.whl.
File metadata
- Download URL: chen_signatures-0.4.0-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef15aa689d6892843fcdae12b3a55dee98ee97ed120d1ac2629a3e968d4a1f16
|
|
| MD5 |
2ef561c4ea76d8d24aa5b356632b6907
|
|
| BLAKE2b-256 |
d088d77bc8a1c7c81550e96379424139ceac66a5d298774f5805a9f01bff2f89
|