File size: 718 Bytes
7f632a8
453b8b2
 
 
 
 
7f632a8
453b8b2
 
 
 
 
 
 
7f632a8
 
453b8b2
 
 
7f632a8
453b8b2
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class VolumeSurgeAgent:
    """
    Detects volume surges compared to recent average volume.
    Returns a structured object with surge status and ratio.
    """

    def run(self, df, threshold=1.8):
        if len(df) < 21:
            return {
                "volume_surge": False,
                "ratio": 0,
                "status": "⚠️ Insufficient data"
            }

        recent_avg = df['Volume'].iloc[-20:-1].mean()
        latest_volume = df['Volume'].iloc[-1]
        ratio = latest_volume / recent_avg

        surge = ratio > threshold

        return {
            "volume_surge": surge,
            "ratio": round(ratio, 2),
            "status": "βœ… Spike" if surge else "Normal"
        }