Skip to content

Filter tuning — win ratio improvement mission

Primary KPI : win_ratio lift via post-inference filter chain optimization Status : not started Scope : the 9-filter chain following the canonical preset order (Filter Funnel target), individual filter parameters + decision threshold per regime — no new reordering behavior introduced by this mission

What this mission covers

The target architecture is a strict post-inference filter chain (per Filter Funnel) :

CUSUM → Trend → Inference + Confidence → Meta-Label → Regime → Cost → Kelly → Confirmation → Quality

Each filter has parameters that can drop or accept a candidate trade. Tuning these parameters is independent of the underlying model — same model can produce wildly different win_ratio depending on which filters are aggressive vs lenient.

This mission scope : 1. Per-filter parameter sweep (independent : confidence threshold, regime sensitivity, cooldown, etc.) 2. Cross-filter interaction sweep (joint variants between adjacent filters — without changing the global chain order) 3. Per-regime threshold optimization (Track 9 of the F1 plan partially overlaps here)

Current runtime caveat : the order is not locked at runtime — it is configurable via presets in src/commun/filters/registry.py (FILTER_PRESETS dict) and overridable via the include=[...] argument on FilterRegistry.build_chain ; FilterChainExecutor applies whatever order it receives without enforcement. This mission must not introduce new reordering behavior — it sweeps parameters within the canonical preset only. Any change to runtime enforcement (locking the order against accidental reordering) requires an ADR amendment + its own Story, not a filter-tuning Story.

Status

No active Story yet. The mission is gated behind the ML Boost mission delivering at least one stable model improvement (f1_buy ≥ baseline + 0.02 with CI95 excluding 0). Without a stable upstream signal, filter tuning is premature.

Stories landing area

When this mission opens, Stories will be created under a new Epic (likely CVN-N002-EA — Filter tuning quick wins) and indexed here. Each Story will follow the same protocol as ML Boost (plan dossier → committee → implementation → FTF sweep → gate decision → results dossier).

Tests covering this mission

See the tests index "Filter chain" section for the canonical list. Existing relevant unit tests today (will grow as Stories land here) :

  • tests/unit/test_filter_chain_executor.py — chain mechanics
  • tests/unit/test_filter_contracts.py — filter input/output contracts
  • tests/unit/test_filter_diagnostics.py — per-filter diagnostic events
  • tests/unit/test_filter_plugins.py — registered filter plugins
  • tests/unit/test_filter_gateway_client.py + tests/unit/test_filter_gateway_service.py — filter gateway runtime

Cross-references