"""
AkDevz AI Market Intelligence — Continuous Research & Idle-Time Learning Engine
Analyzes strategy efficacy, detects regime-based performance degradation,
and proposes research hypotheses without modifying production code.
"""
from typing import Dict, Any, List
from python.research.backtester import Backtester
from python.research.walk_forward import WalkForwardValidator

class LearningEngine:
    def __init__(self):
        self.backtester = Backtester()
        self.validator = WalkForwardValidator()

    def review_strategy_degradation(
        self,
        strategy_name: str,
        recent_candles: List[Dict[str, Any]],
        historical_benchmark_win_rate: float = 55.0
    ) -> Dict[str, Any]:
        """
        Detects whether a quantitative strategy is experiencing degradation in current market regime.
        Generates research review without altering production rules.
        """
        backtest = self.backtester.run_backtest(recent_candles, strategy_name=strategy_name)
        recent_win_rate = backtest.get("win_rate_pct", 0.0)
        total_trades = backtest.get("total_trades", 0)

        degradation_detected = (recent_win_rate < (historical_benchmark_win_rate - 10.0)) and (total_trades >= 5)

        hypothesis = "Strategy performance is within acceptable statistical variance."
        if degradation_detected:
            hypothesis = (
                f"Strategy '{strategy_name}' recent win rate ({recent_win_rate}%) is lagging benchmark ({historical_benchmark_win_rate}%). "
                "Recommendation: Increase confirmation threshold or restrict execution to high-ADX trending regimes."
            )

        return {
            "strategy": strategy_name,
            "sample_size": total_trades,
            "benchmark_win_rate": historical_benchmark_win_rate,
            "recent_win_rate": recent_win_rate,
            "net_pnl": backtest.get("net_pnl", 0.0),
            "profit_factor": backtest.get("profit_factor", 0.0),
            "degradation_flag": degradation_detected,
            "research_hypothesis": hypothesis,
            "production_impact": "STRICTLY_ISOLATED — Production strategies remain unmodified pending manual sign-off."
        }

    def evaluate_multi_regime_matrix(
        self,
        candles_by_regime: Dict[str, List[Dict[str, Any]]],
        strategy_name: str = "VWAP_PULLBACK"
    ) -> Dict[str, Any]:
        """
        Compares strategy performance across all 12 market regimes to identify optimal execution environments.
        """
        regime_results = {}
        for regime, candles in candles_by_regime.items():
            if len(candles) >= 30:
                res = self.backtester.run_backtest(candles, strategy_name=strategy_name)
                regime_results[regime] = {
                    "win_rate": res.get("win_rate_pct", 0.0),
                    "net_pnl": res.get("net_pnl", 0.0),
                    "profit_factor": res.get("profit_factor", 0.0),
                    "total_trades": res.get("total_trades", 0)
                }

        return {
            "strategy": strategy_name,
            "regimes_analyzed": len(regime_results),
            "breakdown": regime_results
        }
