Changelog¶
All notable changes to SignalFlow are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.5.0] - 2026-02-14¶
Added¶
-
Fluent Builder API:
sf.Backtest()with method chaining for intuitive backtest configuration. Multi-component support with named data sources, detectors, validators, entries, and exits. Signal aggregation modes: merge, majority, weighted, unanimous, any, meta_labeling. Cross-referencing between components (e.g., link entries to specific detectors). -
One-liner shortcuts:
sf.backtest()andsf.load()convenience functions for quick prototyping without full builder configuration. -
BacktestResult: Rich result container with
.summary(),.plot(),.metrics,.metrics_df, and Jupyter HTML rendering via_repr_html_(). -
CLI Interface: Command-line tools for backtest management:
sf init-- scaffold a sample YAML configurationsf validate <config.yaml>-- validate configuration without runningsf run <config.yaml>-- execute backtest from YAML with optional--plotand-ooutput-
sf list detectors|metrics|features|all-- discover available components -
YAML Configuration: Full backtest configuration via YAML files with component registration, cross-referencing, and validation.
-
Pipeline Visualization: Interactive D3.js HTML visualization of backtest pipelines. Mermaid diagram export for documentation. Local development server via
sf.viz.serve(). Graph extractors for BacktestBuilder, FeaturePipeline, and multi-source data flows. -
OHLCV Resampling: Unified timeframe resampling module (
signalflow.data.resample): resample_ohlcv()-- resample OHLCV data between timeframesalign_to_timeframe()-- auto-detect source TF and resampledetect_timeframe()-- detect timeframe from timestamp intervalsselect_best_timeframe()-- find best exchange-supported timeframecan_resample()-- check if resampling between two TFs is possible-
Support for 12 standard timeframes across 8 exchanges
-
Auto-resampling:
RawDataFactory.from_stores()andfrom_duckdb_spot_store()accepttarget_timeframeparameter for automatic resampling during data loading. -
Funding Rate Detector:
FundingRateDetectorfor perpetual futures that detects long entry opportunities when funding rate transitions from sustained positive to negative. Registered as"funding/rate_transition". -
Custom Exception Hierarchy:
SignalFlowErrorbase with specialized exceptions (DetectorNotFoundError,MissingDataError,InvalidParameterError, etc.) providing actionable error messages with fix suggestions. -
Lazy imports:
sf.Backtest,sf.BacktestBuilder,sf.BacktestResult,sf.backtest,sf.load, andsf.vizare lazy-loaded to reduce import overhead. -
New exchange data sources: Deribit, Kraken, Hyperliquid, WhiteBIT (spot & futures), Bybit inverse futures. Total: 7 exchanges with 15 loaders.
-
Multi-source data access:
RawDatasupports hierarchical multi-source access.RawDataLazycontainer for efficient deferred data loading. -
Aggregated Open Interest: Features for total OI, OI change, and OI z-score across single and multi-source data.
-
Signal & strategy analytics: Classification, profile, distribution, and result metrics for signals and strategy performance analysis.
Changed¶
- Standardized signal type naming and generalized signal handling across detectors and strategy components.
[0.4.1] - Previous release¶
See GitHub releases for earlier versions.