Skip to main content

A modular library for synthetic time series generation.

Project description

tsg – Modular Time Series Generator Library

tsg is a lightweight Python library for generating synthetic time series data using modular and composable generators.
It is designed for research, simulation, and testing of sequential decision-making algorithms, especially in finance and machine learning.


🚀 Features

  • 📈 Core generators: linear trend, periodic trend, constant value
  • 🎲 Noise wrappers: add Gaussian noise or build your own modifiers
  • 🔁 Stateful generators with reset() support
  • 🧱 Easy to extend with your own generator or modifier classes

📦 Installation

Install through GitHub from any location:

pip install git+https://github.com/MSCA-DN-Digital-Finance/tsg.git

Install through PyPi from any location:

pip install tsg-lib

🛠️ Example Usage

Here’s how to generate a noisy linear trend time series using tsg:

from tsg.generators import LinearTrendGenerator
from tsg.modifiers import GaussianNoise

# Create a linear trend generator (increasing by +1 each step)
linear_generator = LinearTrendGenerator(start_value=100, slope=1)

# Wrap it with Gaussian noise (mean=0, std=1)
noisy_generator = GaussianNoise(linear_generator, mu=0.0, sigma=1.0)

# Generate a few data points
values = []
for _ in range(10):
    value = noisy_generator.generate_value(None)
    values.append(value)

print(values)

🧠 API Overview

Core Generators (tsg.generators)

Class Description Parameters
LinearTrendGenerator Linearly increases or decreases the value at each step start_value, slope
ConstantGenerator Returns a fixed value (e.g., simulates cash) None (uses last_value in generate_value)
PeriodicTrendGenerator Generates a sinusoidal time series with set amplitude and frequency start_value, amplitude, frequency
RandomWalkGenerator Simulates Brownian motion: a drifting random walk with optional noise start_value, mu, sigma
OrnsteinUhlenbeckGenerator Simulates mean-reverting noise with drift toward a long-term mean mu, theta, sigma, dt, start_value
CoxIngersollRossGenerator Square-root mean-reverting process with non-negativity and Feller condition mu, theta, sigma, dt, start_value
GeometricBrownianMotionGenerator Simulates geometric Brownian motion for stock-like multiplicative noise start_value, mu, sigma, dt

Modifier Wrappers (tsg.modifiers)

Class Description Parameters
GaussianNoise Adds Gaussian noise (N(mu, sigma)) to any base generator mu, sigma
PoissonNoiseModifier Adds Poisson-distributed noise to each step lam, direction

Notes

  • direction can be 'positive', 'negative', or 'both' for both jump modifiers.
  • PoissonNoiseModifier samples a new Poisson value at every step.
  • CompoundPoissonJumpModifier samples N ∼ Poisson(λ) at reset and applies exactly N jumps randomly across T steps.
  • All modifiers are compatible with any BaseGenerator.

Meta-Generators (tsg.meta_generators)

Class Description Parameters
RegimeSwitchGenerator Switches between generators at predefined time steps generator_classes, generator_params_list, switch_times
MarkovSwitchGenerator Switches between generators using a Markov transition matrix generator_classes, generator_params_list, transition_matrix, initial_state

All components implement the BaseGenerator interface with:

  • generate_value(last_value) – returns the next value in the sequence
  • reset() – resets any internal state (optional for stateless generators)

Acknowledgments

Funded by the European Union. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or European Research Executive Agency (REA). Neither the European Union nor the granting authority can be held responsible for them.

EU Logo

License

MIT — 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

tsg_lib-0.2.2.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

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

tsg_lib-0.2.2-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file tsg_lib-0.2.2.tar.gz.

File metadata

  • Download URL: tsg_lib-0.2.2.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for tsg_lib-0.2.2.tar.gz
Algorithm Hash digest
SHA256 589213bf3559051f914292fff92ac7dbdfad84406a6cb3a35750d8aeada82e6f
MD5 3ad42017e31f914c6b6c6573e3272145
BLAKE2b-256 5ebb1cf5972ea08d26aec5784873727d167540e4de80ac12d468f7bcac02f21e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tsg_lib-0.2.2.tar.gz:

Publisher: pypi-publish.yml on MSCA-DN-Digital-Finance/tsg

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tsg_lib-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: tsg_lib-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for tsg_lib-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 29c4425eae7bd6d225cd8457ccc1c42cf1b9f8dd1436988fef921350fe7abeb5
MD5 eaa8b9a880563a3c0b511e331cb7d5a7
BLAKE2b-256 c5ce3c34e0d32b90a61b8b47ce33ac5981c73f4a72403f17d8ac2249576959ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for tsg_lib-0.2.2-py3-none-any.whl:

Publisher: pypi-publish.yml on MSCA-DN-Digital-Finance/tsg

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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