Skip to main content

Neural network and RL extension for signalflow (torch/lightning/SB3).

Project description

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

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

signalflow_labs-0.8.5.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

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

signalflow_labs-0.8.5-py3-none-any.whl (78.9 kB view details)

Uploaded Python 3

File details

Details for the file signalflow_labs-0.8.5.tar.gz.

File metadata

  • Download URL: signalflow_labs-0.8.5.tar.gz
  • Upload date:
  • Size: 60.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for signalflow_labs-0.8.5.tar.gz
Algorithm Hash digest
SHA256 f2782b9c5a434ac708156be3a0db8a536eea04269eed4217522d7ab5ed206124
MD5 9518a1ee1b6a819107622e2b666fbd39
BLAKE2b-256 2366cc26a2be693a740eda28bea41a61b2da083404f17aba54899ce9ac5ea564

See more details on using hashes here.

File details

Details for the file signalflow_labs-0.8.5-py3-none-any.whl.

File metadata

File hashes

Hashes for signalflow_labs-0.8.5-py3-none-any.whl
Algorithm Hash digest
SHA256 adbd2bf2c2747a759b917aa224c99f8a09024080aff03865f6f78dae3811575e
MD5 6d45d3633360a713c8d7f4ecbc7bafda
BLAKE2b-256 057b6b6189647d09cfaa0c0a87cdab43a1ceb3dd133900383965d93951cfc3f3

See more details on using hashes here.

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