v0.1.16 - Four-Stage Transformation Pipeline & Proportional Position Sizing
Major Features
Four-Stage Transformation Pipeline - Complete signal composition architecture with explicit transformation stages (Security → Indicator → Score → Signal). Includes new signal_transformation.json catalog, stage inspection functions, and three-stage runtime overrides for flexible signal development.
Proportional Position Sizing - Signal-proportional position sizing (position = signal × position_size_mm) with linear scaling for nuanced risk exposure. Now the default sizing mode with proper transaction costs, P&L calculation, and risk management integration.
Added
- Four-Stage Transformation Pipeline (004-four-stage-transform)
- New
signal_transformation.jsoncatalog for trading rules (floor, cap, neutral_range, scaling) SignalTransformationRegistryfor signal transformation metadata managementapply_signal_transformation()function for trading rule application- Stage inspection functions:
compute_indicator_stage(),compute_score_stage(),compute_signal_stage() - Runtime overrides:
indicator_transformation_override,score_transformation_override,signal_transformation_override include_intermediatesparameter incompose_signal()for debugging intermediate stages- CLI list support for
score-transformationsandsignal-transformationscategories CatalogValidationErrorfor structured error messages across all registries
- New
- Proportional Position Sizing Mode (006-proportional-position-sizing)
- Signal-proportional position sizing:
position = signal × position_size_mm - Linear position scaling with signal magnitude for nuanced risk exposure
- Transaction costs proportional to position change delta
- Daily P&L calculation using prior day's actual notional
- Risk management (stop-loss/take-profit) evaluated against current notional
- Correct trade tracking and metadata for variable position sizes
- NaN/Infinity handling with warning logs for invalid signals
- Proportional sizing now the default mode (binary available via override)
- Signal-proportional position sizing:
- Package Distribution Enhancements
- Included all transformation JSON files in package distribution
- Added
synthetic_params.jsonto package data - Complete four-stage pipeline fully accessible in installed package
Changed
- Signal Composition Architecture (Breaking)
- Refactored
compose_signal()for explicit 4-stage pipeline: Security → Indicator → Score → Signal - Signal catalog structure changed:
indicator_dependencies/transformations→indicator_transformation/score_transformation/signal_transformation - All 3 signals migrated to new structure (cdx_etf_basis, cdx_vix_gap, spread_momentum)
- Renamed
indicator_catalog.json→indicator_transformation.json - Renamed
transformation_catalog.json→score_transformation.json - Split
TransformationRegistryintoScoreTransformationRegistryandSignalTransformationRegistry
- Refactored
- Backtest Strategy System (Breaking) (005-backtest-strategy-cleanup)
- Removed threshold-based position entry/exit in favor of signal-based triggers
- Non-zero signal = enter position, zero signal = exit position
- Removed
entry_threshold,exit_threshold,position_sizefromBacktestConfig - Added
position_size_mm,sizing_mode,stop_loss_pct,take_profit_pct,max_holding_days - Implemented
PositionStateenum (NO_POSITION, IN_POSITION, COOLDOWN) for state management - Added
exit_reasontracking (signal, stop_loss, take_profit, max_holding_days, reversal) - Cumulative P&L tracking per position for risk threshold calculation
- Cooldown state after PnL-based exits (prevents re-entry until signal resets)
- Signal sign reversal without cooldown enables responsive trading
- Migrated all 4 strategies to new schema (conservative, balanced, aggressive, experimental)
- Proportional sizing is now the default (changed from binary)
- Removed 4
_proportionalstrategy variants (8 → 4 strategies) - Binary sizing available via
sizing_mode_override='binary'
- Data Provider Interface (Breaking)
- Unified
FileSourceandBloombergSourceinterfaces for interchangeability FileSourcenow usesbase_dir + registry.jsoninstead of single file path- Auto-load
security_mappingfrom registry.json inFileSource.__post_init__ - File provider signature unified:
(source, ticker, instrument, security, ...) - Security column enrichment for multi-security instruments
- Removed
bloomberg_tickerparameter fromfetch_cdx()andfetch_etf() - All Bloomberg ticker resolution via
get_bloomberg_ticker(security) - Removed obsolete
find_raw_file()andconcat_multi_security()functions
- Unified
Fixed
- Type Safety
- Fixed type cast for
iterrows()date parameter in backtest engine (mypy compliance) - Added
Anyimport to backtest protocols for proper type hints - Enhanced date handling in position tracking logic
- Fixed type cast for
- Error Handling
- Suppress division by zero warnings in Sharpe ratio calculation (zero std edge case)
- Wrap quantstats metric calls to suppress expected RuntimeWarnings
- Data Flow
- Fixed
SuitabilityStepandBacktestStepto get spread data from workflow context - Resolved fresh registry data flow issue (no longer reloads from DataRegistry)
- Removed dead code in loaders.py (unreachable block after return)
- Fixed
Breaking Changes
- Signal catalog schema changed - signals now require
indicator_transformation,score_transformation, andsignal_transformationfields compose_signal()signature updated with renamed registries and three override parameters- Backtest config schema changed - removed thresholds, added position sizing and risk management fields
- Strategy catalog schema changed - all strategies migrated to signal-based triggers
FileSourcenow requiresbase_dirwithregistry.jsoninstead of single file pathfetch_cdx()andfetch_etf()requiresecurityparameter (removedbloomberg_ticker)- CLI list
transformationssplit intoscore-transformationsandsignal-transformations - YAML workflow config requires
score_transformationandsignal_transformationinstead oftransformation - Proportional position sizing is now the default (binary available via override)
- Report command no longer accepts
--outputflag
Test Coverage
- 755 total tests passing (increased from 681)
- 30+ new backtest tests for signal-based triggers and PnL risk management
- 59 backtest engine tests (20+ new proportional sizing tests)
- All governance tests updated for new schema
- Complete test coverage for four-stage transformation pipeline