Celes Renata
f468e30af0
feat: implement dual-pipeline signal engine service
New service at services/signal_engine/ implementing concurrent heuristic
(deterministic scoring) and probabilistic (Bayesian inference) pipelines
that evaluate technical signals across 6 timeframes (M30-M) and produce
independent BUY/WATCH/SKIP verdicts per ticker per evaluation tick.
Components:
- Input Normalizer: multi-source data assembly with sentinel fallbacks
- Signal Library: Fibonacci, MA Stack, RSI, Cup & Handle, Elliott Wave
- Multi-Timeframe Confluence Engine: weighted scoring with D/W/M anchors
- Hard Filter Engine: macro_bias, valuation, earnings proximity gating
- Heuristic Pipeline: S_total scoring with confidence-gated verdicts
- Probabilistic Pipeline: Bayesian log-odds with regime priors, entropy
gating, EV_R calculation, and signal correlation penalty
- Exit Engine: stop-loss, targets, trailing ATR-based stops
- Delta Analyzer: pipeline agreement tracking with rolling Redis metrics
- Output Formatter: SignalOutput contract + Recommendation schema mapping
- Worker orchestrator: concurrent pipelines with failure isolation
- Main entry point: queue polling with fail-safe config loading
Infrastructure:
- Migration 039: signal_engine_outputs table with 3 indexes
- Helm chart: signalEngine service entry (processing tier)
- Redis key: QUEUE_SIGNAL_ENGINE constant
Tests: 390 tests (unit + property-based) covering all components
Config: dual_pipeline_enabled=false by default (safe rollout)
2026-05-02 07:32:26 +00:00
..
2026-04-21 03:08:49 +00:00
2026-04-11 11:59:45 -07:00
2026-04-11 03:25:08 -07:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-17 05:15:42 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-29 11:41:48 +00:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-29 11:41:48 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-23 08:17:23 +00:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-22 02:56:41 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-29 11:41:48 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-11 11:59:45 -07:00
2026-05-01 03:08:21 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-17 03:41:39 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-15 16:12:22 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-23 08:17:23 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-05-01 03:08:21 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-17 07:02:30 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-04-29 11:41:48 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-17 00:31:17 +00:00
2026-04-15 16:12:22 +00:00
2026-04-14 19:42:48 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-29 11:41:48 +00:00
2026-04-18 03:59:28 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-05-01 22:13:09 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-21 20:25:02 +00:00
2026-04-18 03:59:28 +00:00
2026-04-22 02:56:41 +00:00
2026-04-16 07:26:10 +00:00
2026-04-18 03:59:28 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-05-02 07:32:26 +00:00
2026-04-29 11:41:48 +00:00
2026-04-29 11:41:48 +00:00
2026-04-11 11:59:45 -07:00
2026-04-18 03:59:28 +00:00
2026-04-18 03:59:28 +00:00
2026-04-11 11:59:45 -07:00
2026-04-23 19:49:34 +00:00
2026-04-18 03:59:28 +00:00