"""
=========================================
CV6 AI Trading OS
Risk Engine
=========================================
"""


class RiskEngine:

    def calculate(
        self,
        capital: float,
        risk_percent: float,
        entry_price: float,
        stop_loss: float,
        target_price: float
    ):

        max_risk_amount = capital * (risk_percent / 100)

        risk_per_share = abs(entry_price - stop_loss)

        if risk_per_share == 0:
            return {
                "max_risk_amount": 0,
                "quantity": 0,
                "risk_per_share": 0,
                "reward_per_share": 0,
                "risk_reward_ratio": 0,
                "valid_trade": False,
                "message": "Invalid Stop Loss"
            }

        quantity = int(max_risk_amount / risk_per_share)

        reward_per_share = abs(target_price - entry_price)

        risk_reward_ratio = round(
            reward_per_share / risk_per_share,
            2
        )

        valid_trade = risk_reward_ratio >= 2

        return {
            "max_risk_amount": round(max_risk_amount, 2),
            "quantity": quantity,
            "risk_per_share": round(risk_per_share, 2),
            "reward_per_share": round(reward_per_share, 2),
            "risk_reward_ratio": risk_reward_ratio,
            "valid_trade": valid_trade,
            "message": "Trade Accepted" if valid_trade else "Risk Reward Too Low"
        }