Your question is Sliding Window Anomaly Detector. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
Given a list of real-valued metrics metrics, an integer window size k, and a non-negative real threshold t, process the stream from left to right. For each index i, once at least k values are available, compute the moving average and standard deviation of the last k values. Mark metrics[i] as anomalous if abs(metrics[i] - mean) > t * std for that current window. Return a list of window averages and a list of anomaly flags for each position where a full window exists.
def detect_moving_average_anomalies(metrics, k, t):