Skip to main content
SignalFlow

signalflow-labs

Neural-network & RL extension for SignalFlow - 14 encoders, 7 heads, 4 losses, RL strategy

Version Python 3.12+ PyTorch Lightning


Part of the SignalFlow ecosystem.

A plugin: a PyTorch/Lightning library for financial time-series classification (modular encoders, classification heads, loss functions) plus a reinforcement-learning strategy. Installing it auto-registers its components with the core signalflow registry via entry points.

Installation

pip install signalflow-labs           # core: torch + lightning
pip install "signalflow-labs[rl]"     # + stable-baselines3, gymnasium (RL strategy)
# or, from the core:
pip install "signalflow-trading[labs]"

Requires: Python ≥ 3.12, signalflow-trading ≥ 0.8.0, PyTorch ≥ 2.2, Lightning ≥ 2.5.

Quick Start

from signalflow.labs.encoder import TransformerEncoder
from signalflow.labs.head import MLPClassifierHead
from signalflow.labs.model import TemporalClassificator
from signalflow.labs.data import SignalDataModule
import lightning as pl

# Create model
model = TemporalClassificator(
    encoder_type="encoder/transformer",
    encoder_params={"d_model": 64, "nhead": 4, "num_layers": 2},
    head_type="head/cls/mlp",
    head_params={"hidden_sizes": [32]},
    num_classes=3,  # fall, neutral, rise
)

# Create data module
dm = SignalDataModule(
    data=df,
    window_size=60,
    batch_size=32,
    split_strategy="temporal",
)

# Train
trainer = pl.Trainer(max_epochs=50, accelerator="auto")
trainer.fit(model, dm)

Encoders (14)

Encoder Architecture Best For
LSTMEncoder Bidirectional LSTM Sequential patterns
GRUEncoder Gated Recurrent Unit Faster training
TCNEncoder Temporal Convolutional Network Long-range dependencies
TransformerEncoder Self-attention + positional encoding Complex relationships
PatchTSTEncoder Patch-based Transformer Multivariate time series
TSMixerEncoder All-MLP (Google 2023) Efficient mixing
InceptionTimeEncoder Multi-scale convolutions Multi-resolution features
ResNet1dEncoder 1D ResNet Deep representations
XceptionTimeEncoder Depthwise separable conv Efficient computation
Conv1dEncoder 1D CNN Local patterns
XCMEncoder Cross-Channel Mixing Channel interactions
gMLPEncoder Gating MLP Spatial/channel gating
OmniScaleCNNEncoder Multi-scale CNN Scale-invariant features
ConvTranEncoder Conv + Transformer hybrid Combined strengths

Classification Heads (7)

Head Use Case
LinearClassifierHead Simple baseline
MLPClassifierHead Non-linear classification
ResidualClassifierHead Deep with skip connections
AttentionClassifierHead Attention-weighted pooling
OrdinalRegressionHead Ordered classes (fall < neutral < rise)
DistributionHead Probability distributions
ClassificationWithConfidenceHead Class + confidence score

Loss Functions (4)

Loss Purpose
FocalLoss Class imbalance - down-weights easy examples
DiceLoss Imbalanced multi-class
LDAMLoss Large margin for rare classes
SymmetricCrossEntropyLoss Noisy labels

SignalFlow Integration

Importing signalflow.labs registers its components. The RL strategy plugs into a Flow as the strategy slot (needs the [rl] extra):

import signalflow as sf
import signalflow.labs as labs               # registers neural + RL components
from stable_baselines3 import PPO

base = sf.Flow(name="rl", detectors=[sf.SmaCrossDetector()])
env = labs.make_env(base, ds)                # gymnasium env over an Engine replay
policy = PPO("MlpPolicy", env).learn(10_000)

flow = base.replace(strategy=labs.RLStrategy(model=policy, size_pct=0.1))
run = flow.backtest(ds, capital=50_000)
print(run.scorecard())

The neural TemporalClassificator can also back a ForecastModel for signal validation; see signalflow.labs.validator.

Package Structure

Module Description
signalflow.labs.data Data loading, windowing, temporal splitting
signalflow.labs.encoder 14 feature encoding architectures
signalflow.labs.head 7 output head architectures
signalflow.labs.layer Custom neural network layers
signalflow.labs.loss 4 specialized loss functions
signalflow.labs.model TemporalClassificator - complete model
signalflow.labs.validator SignalFlow validator integration
signalflow.labs.strategy RLStrategy + make_env (RL)
signalflow.labs.backend TorchMLPBackend for ForecastModel

License: MIT  ·  Part of SignalFlow

Metadata

Release files for signalflow-labs 0.8.5

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

Source distribution (sdist)

Source distribution for signalflow-labs 0.8.5
File Size Uploaded Provenance Actions
signalflow_labs-0.8.5.tar.gz 60.6 kB Without provenance Details for signalflow_labs-0.8.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for signalflow-labs 0.8.5
File Interpreter ABI Platform Actions
signalflow_labs-0.8.5-py3-none-any.whl Python 3 none any Details for signalflow_labs-0.8.5-py3-none-any.whl

Total release size: 139.5 kB

Release files / signalflow_labs-0.8.5.tar.gz

Download URL signalflow_labs-0.8.5.tar.gz
Size 60.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f2782b9c5a434ac708156be3a0db8a536eea04269eed4217522d7ab5ed206124
BLAKE2b-256 checksum
How to use checksums
2366cc26a2be693a740eda28bea41a61b2da083404f17aba54899ce9ac5ea564
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / signalflow_labs-0.8.5-py3-none-any.whl

Download URL signalflow_labs-0.8.5-py3-none-any.whl
Size 78.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
adbd2bf2c2747a759b917aa224c99f8a09024080aff03865f6f78dae3811575e
BLAKE2b-256 checksum
How to use checksums
057b6b6189647d09cfaa0c0a87cdab43a1ceb3dd133900383965d93951cfc3f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Security for signalflow-labs 0.8.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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