Skip to main content

chen-signatures

Fast rough path signatures for Python, powered by a high-performance Julia backend.

PyPI Python

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 dimension
  • m: 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 dimension
  • basis: Basis object from prepare_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.

Metadata

Release files for chen-signatures 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chen-signatures 0.4.0
File Size Uploaded
chen_signatures-0.4.0.tar.gz 14.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chen-signatures 0.4.0
File Interpreter ABI Platform
chen_signatures-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.9 kB

Release files / chen_signatures-0.4.0.tar.gz

Download URL chen_signatures-0.4.0.tar.gz
Size 14.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7f9ce9098573464025395ef3e1d41fb10c5af50f15f4520d0f04991581ca6c14
BLAKE2b-256 checksum
How to use checksums
dce810cf072e5e83c80695c54af3a28387fe2e099e76b9387a25b607f71d8411
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / chen_signatures-0.4.0-py3-none-any.whl

Download URL chen_signatures-0.4.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ef15aa689d6892843fcdae12b3a55dee98ee97ed120d1ac2629a3e968d4a1f16
BLAKE2b-256 checksum
How to use checksums
d088d77bc8a1c7c81550e96379424139ceac66a5d298774f5805a9f01bff2f89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page