feat: signal math upgrade — probabilistic, regime-aware scoring pipeline
Implement full probabilistic signal processing pipeline gated behind probabilistic_scoring_enabled feature flag in risk_configs: - Bayesian log-likelihood accumulator with Beta posterior and entropy - Regime detector (trend-following, panic, mean-reversion, uncertainty) - Source accuracy tracker with per-source historical prediction accuracy - Sigmoid confidence gate replacing binary gate - Information gain surprise weighting for rare events - Adaptive recency decay with event-specific half-lives - Regime multiplier replacing market context multiplier - Weighted disagreement entropy for contradiction detection - Multiplicative macro exposure with conditional integration - Graph-distance attenuated competitive signal propagation - Exponentially weighted momentum with volatility scaling - Expected value recommendation gate All changes backward-compatible: flag=false preserves exact current behavior. New outputs stored in existing JSONB columns (no schema changes except source_accuracy table via migration 034). Tests: 26 property-based tests (14 correctness properties), 99 unit tests, 1789 total tests passing with zero regressions.
This commit is contained in:
@@ -224,6 +224,15 @@ class TrendSummary(BaseModel):
|
||||
market_context: Optional[MarketContext] = None
|
||||
generated_at: datetime = Field(default_factory=lambda: datetime.now(tz=timezone.utc))
|
||||
|
||||
# New optional fields for probabilistic mode
|
||||
p_bull: Optional[float] = None # Bayesian bullish probability
|
||||
alpha: Optional[float] = None # Beta posterior α
|
||||
beta_param: Optional[float] = None # Beta posterior β (named to avoid shadowing)
|
||||
bayesian_confidence: Optional[float] = None # 1 - 4αβ/(α+β)²
|
||||
entropy: Optional[float] = None # Shannon entropy H
|
||||
regime: Optional[str] = None # Market regime classification
|
||||
pipeline_mode: str = "heuristic" # "heuristic" or "probabilistic"
|
||||
|
||||
|
||||
# --- Recommendation ---
|
||||
|
||||
@@ -246,6 +255,11 @@ class Recommendation(BaseModel):
|
||||
model_metadata: ModelMetadata = Field(default_factory=ModelMetadata)
|
||||
generated_at: datetime = Field(default_factory=lambda: datetime.now(tz=timezone.utc))
|
||||
|
||||
# New optional fields for probabilistic mode
|
||||
expected_value: Optional[float] = None # EV = P_bull·R_up - P_bear·R_down
|
||||
p_bull: Optional[float] = None # Bayesian bullish probability used
|
||||
pipeline_mode: str = "heuristic" # "heuristic" or "probabilistic"
|
||||
|
||||
|
||||
# --- Global News Interpolation ---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user