Anomaly detection has a failure mode worse than missing an event: flagging so many that everyone stops looking. Every operator has muted a system that cried wolf, and every muted system has then missed the one alarm that mattered. So the goal was never maximum sensitivity. It was a detector an operator would still trust at month three.

Two things make detectors cry wolf: fragile statistics, and self-deception. Vastvic’s approach fixes both.

Robust, because the mean lies

A single spike drags the mean and inflates the standard deviation — so a classic z-score can hide the very outliers it’s meant to catch, and flag innocent points around them. The generation detectors use robust statistics instead: median-absolute-deviation outlier removal, which a couple of spikes can’t corrupt, and a Hampel rolling filter that adapts to the daily solar arc — so a legitimate midday peak isn’t mistaken for an anomaly, but a mid-morning collapse is.

A detector that uses the mean to find outliers is asking the outliers where they are.

Don’t let the spike set its own bar

The streaming detector compares each value to the window before it, not to a window that already contains it. That one choice — scoring against the prior window’s mean and spread — stops a spike from inflating its own threshold and slipping through. Flatlines get their own check, because a stuck sensor reporting a constant is an anomaly a variance test would happily call “calm.”

From flag to reason

A flag on its own generates a ticket; a reason resolves one. When generation underperforms, a rule-based diagnostic uses context — performance ratio, irradiance, capacity — to attribute the anomaly: a fault or shading, a passing cloud, or inverter clipping. On the grid side, telemetry is checked against physical thresholds (voltage within band, current under rating, temperature and power factor in range) and violations flow straight into the operator queue, with a time-series history retained so today’s alarm can be read against last month’s.


The measure of an anomaly detector isn’t how much it catches on day one. It’s whether anyone still listens to it on day ninety. Robust statistics and a refusal to let events set their own thresholds are what keep it worth listening to.

Key takeaways

  • Robust statistics (MAD, a diurnal-aware Hampel filter) resist the spikes classic z-scores hide.
  • Prior-window scoring stops an anomaly from inflating its own detection threshold.
  • Flatline checks catch stuck sensors that variance tests call “calm.”
  • Rule-based diagnostics turn a flag into a cause — fault, cloud, or clipping — and feed the operator queue.