Early Warning Intelligence

Foresight is power.

htm-monitor is an unsupervised early-warning monitor for critical systems, built to stay quiet until something matters. Its power grid case studies are scored against documented emergencies under one published standard, with every alert shown.

3
Grid regions scored: ERCOT (Texas), CAISO (California), and TVA (Tennessee Valley), 6.2 years of hourly data each
4 of 5
Target events with an alert inside the declared window, 168 h before to 48 h after onset (103 h lead, 21 h lead, 9.7 h lag, 7.8 h lag)
29
Alerts outside every target window in 18.7 region-years. 5 fall in declared explanatory windows, 24 are unexplained.
0
Labels used and retraining cycles. Every model learns online, unsupervised.
Case Studies

Power grid monitoring, scored in the open.

Each case study replays about six years of public hourly grid data and scores every alert against emergencies with documented onset times. The engine itself takes any continuous numeric signal; results are published only where they have been scored.

Case study

Texas (ERCOT)

Six years of hourly ERCOT data, scored against Winter Storm Uri. 1 of 1 target event alerted inside the window (103 h lead). 17 alerts in 6.2 years, 11 unexplained.

Case study

California (CAISO)

Six years of hourly CAISO data, scored against three declared grid emergencies. 2 of 3 target events alerted inside the window (21 h lead, 9.7 h lag). 9 alerts in 6.2 years, 5 unexplained.

Case study

Tennessee Valley (TVA)

Six years of hourly TVA data, scored against Winter Storm Elliott, run with the Texas setup unchanged. 1 of 1 target event alerted inside the window (7.8 h lag). 10 alerts in 6.2 years, 8 unexplained.

See it on your data.

Send a 90-day telemetry sample and one past event you'd like scored. Preview audit within a week.

Use Cases

Scored Against
Real Grid Emergencies

htm-monitor has been replayed over about six years of public grid data per region and scored against documented emergencies. Here is what it found, including the alerts that matched nothing.

Power Grid Monitoring

Early warning of grid emergencies from hourly demand and generation data

Case studies
  • One standard for every event. An event is Predicted if the first alert falls within 168 hours before onset, Detected if it falls within 48 hours after onset, and Missed otherwise. The reasoning is in “Too early is the same as wrong”.
  • Onset has a source. Onset is the time the grid operator declared the highest emergency level the event reached, converted to UTC. Each event row links to the document that states the time.
  • Every alert is counted. Consecutive alerting hours count as one alert. A later alert inside a target window is a repeat: no credit, no penalty. An alert outside every target window is “explained” if it starts inside an explanatory window declared in the run config, and “unexplained” otherwise. Explained is a hindsight label and never counts as a catch, so both rates are shown.
  • Timing is a replay, not live operation. Alert times are the UTC hour-ending stamps of EIA-930 hourly data, and the replay treats each value as available at its stamp. EIA publishes demand about an hour later and net generation the next day, so live use at these lead times needs the operator’s own telemetry.
  • This is a case study. Five target events across three regions show how the detector behaves, not a detection rate.

Texas (ERCOT)

  • Winter Storm Uri (February 2021) forced ERCOT into rotating outages that peaked at 20,000 MW of load shed. More than 4.5 million customers lost power.
  • The run models three hourly signals: demand and net generation, each as its departure from the same hour over the previous four weeks, and forecast error (demand minus the day-ahead demand forecast).
  • Predicted 1 of 1 target event, alert before onset: Uri (103 h lead)
  • 0 missed target events
  • 17 alerts over 6.2 years of hourly data: 1 first alert on a target event, 1 repeat inside a target window, and 15 outside every target window
  • Explained 4 of those 15 start inside an explanatory window declared in the run config: COVID-19 demand shift, Apr to Jun 2020; Winter Storm Elliott, Dec 2022; Winter Storm Heather, Jan 2024; Winter Storm Kingston, Feb 2025. That is a hindsight label, not a catch.
  • 11 unexplained alerts (1.8 per year, or 2.4 per year counting the explained ones)
Event Summary
Event Outcome Lead / Lag First Alert (UTC) Onset (UTC)
Winter Storm Uri
Rotating outages, up to 20,000 MW of load shed
Predicted 103 h lead 2021-02-11 00:00 2021-02-15 07:20
ERCOT entered Emergency Operations Level 3 (EEA 3) and began rotating outages · source

California (CAISO)

  • August 2020: CAISO ordered rotating outages on two consecutive evenings, the first in California since 2001, affecting about 813,000 customers.
  • September 2020 and September 2022: heat waves pushed CAISO to Stage 2 and EEA 3 emergencies. No outages were ordered by CAISO in either.
  • The run models five hourly signals: demand, net generation and imbalance (demand minus net generation), each as its departure from the same hour over the previous four weeks; imbalance itself; and forecast error.
  • Predicted 1 of 3 target events, alert before onset: Sep 2020 heat wave (21 h lead)
  • Detected 1 of 3 target events, alert within 48 h after onset: Sep 2022 record demand (9.7 h lag)
  • Missed 1 of 3 target events: Aug 2020 blackouts
  • Aug 2020 blackouts: Missed. The demand and generation models were strongly anomalous from about 25 hours before the Stage 3 declaration, but no residual signal (forecast error, imbalance) agreed, so the two-group rule did not fire. An earlier version caught this event only through an imbalance feature normalized with hour-of-day medians from the whole 2020-26 period, which used future data; with that feature made causal, the event is missed.
  • 9 alerts over 6.2 years of hourly data: 2 first alerts on target events, 1 repeat inside a target window, and 6 outside every target window
  • Explained 1 of those 6 starts inside an explanatory window declared in the run config: COVID-19 demand shift, Apr to May 2020. That is a hindsight label, not a catch.
  • 5 unexplained alerts (0.8 per year, or 1.0 per year counting the explained ones)
Event Summary
Event Outcome Lead / Lag First Alert (UTC) Onset (UTC)
August 2020 Rolling Blackouts
Stage 3 Emergency, rotating outages on Aug 14 and 15
Missed — — 2020-08-15 01:38
CAISO declared a Stage 3 Emergency · source
September 2020 Labor Day Heat Wave
Stage 2 Emergency, no outages ordered
Predicted 21 h lead 2020-09-06 04:00 2020-09-07 00:55
CAISO declared a statewide Stage 2 Emergency · source
September 2022 Record Demand
EEA 3 declared, no load shed ordered by CAISO
Detected 9.7 h lag 2022-09-07 10:00 2022-09-07 00:17
CAISO declared an EEA 3 · source

Tennessee Valley (TVA)

  • Winter Storm Elliott (December 2022) forced TVA into the first rolling blackouts in its history, with firm load shed of up to 3,000 MW on December 23 and 24.
  • The run models three hourly signals, the same as Texas: demand and net generation as departures from the same hour over the previous four weeks, and forecast error.
  • Detected 1 of 1 target event, alert within 48 h after onset: Elliott (7.8 h lag)
  • 0 missed target events
  • 10 alerts over 6.2 years of hourly data: 1 first alert on a target event, 1 repeat inside a target window, and 8 outside every target window
  • 8 unexplained alerts (1.3 per year)
Event Summary
Event Outcome Lead / Lag First Alert (UTC) Onset (UTC)
Winter Storm Elliott
EEA 3, first rolling blackouts in TVA's history
Detected 7.8 h lag 2022-12-23 19:00 2022-12-23 11:12
TVA declared EEA 3 · source

Each detector below replaces HTM as the per-signal model. Everything else is identical: the same inputs, the same grouped alert rule and threshold, and the same scoring. All are online, run with library or textbook defaults, and were not tuned on these events.

DetectorUri (TX)Aug 2020 (CA)Sep 2020 (CA)Sep 2022 (CA)Elliott (TVA)CaughtAlerts / yr / region
HTM (htm-monitor)Predicted
103 h ahead
MissedPredicted
21 h ahead
Detected
9.7 h after
Detected
7.8 h after
4 of 51.9
Robust z-score control chartPredicted
85 h ahead
MissedMissedMissedMissed1 of 50.9
NAB windowedGaussianDetected
3.7 h after
MissedMissedMissedDetected
21 h after
2 of 50.8
Half-Space TreesMissedMissedMissedMissedMissed0 of 50.2
Robust Random Cut ForestMissedMissedMissedMissedMissed0 of 50.9

At up to 3 alerts per year per region, HTM catches 5 of 5 (2.7 alerts per year); the best baseline catches 2 of 5. The chart sweeps the alert threshold for every method, so the comparison does not rest on one setting.

Emergencies caught against alerts per year for HTM and four other detectors

Five events is a case study. The inputs and alert rule were developed with HTM; the baselines inherit them unchanged.

Technology

Sequence Learning,
Not Thresholds

The engine is Hierarchical Temporal Memory — a biologically-inspired sequence-learning algorithm extended with a grouped-consensus decision layer.

Online Temporal Learning

Each signal model learns its temporal patterns continuously and adapts to drift without a retraining cycle. No static limits on the raw signal values. No supervised labels.

Grouped Consensus

A system alert fires only when several signal groups are hot at the same time and stay that way for consecutive hours. The consensus layer is there to keep single-signal noise from becoming an alarm.

Fully Auditable

Every alert is traceable to specific signal anomalies at specific timesteps. Per-model, per-group visibility lets operators understand exactly what triggered and why.

Lightweight Deployment

Runs single-process in Python on a CPU. Scoring needs no external services, so it can run on a small VPS or inside an air-gapped VM.

Architecture

Signal Flow

Raw Telemetry
Any numeric time series
→
Per-Signal HTM
Sequence learning
→
Group Consensus
Cross-signal agreement
→
System Alert
Email today, other routes by integration
  • Shared across all three regions: the HTM model parameters, the encoder shape, a one-week warm-up, and one alert rule (likelihood threshold 0.995, 8-hour warmth window, both signal groups hot within 3 hours of each other, for at least 3 hours).
  • Set by rule, not by hand: each encoder’s value range is the 0.1st–99.9th percentile of that region’s 2019 data, the year before every run starts. Demand and generation are modeled as their departure from the same hour over the previous four weeks, so the model never sees future data.
  • Set per region: only which residual signals are available (forecast error everywhere; imbalance as well in California). Each findings report lists the values used for that run.
Mission

Provide rare and useful warnings
to prevent losses.

Most anomaly detection systems generate noise. htm-monitor is built for the opposite: say nothing until something genuinely matters, then say it early enough to act. Foresight is power.

We believe the same unsupervised temporal learning engine can serve any system that produces continuous numeric data: learn what normal looks like, and flag when reality departs from it. That is a design goal, not yet a result. The scored case studies on this site are power grids.

Principles

What We Believe

Silence Is a Feature

A system that cries wolf loses trust. htm-monitor is designed for rare, high-confidence alerts — not dashboard noise.

Unsupervised by Default

No labeled training data required. The system learns from the structure of normal operations and flags departures automatically.

Transparency Over Blackbox

Every alert is fully auditable, traceable to specific signals and timesteps. Operators can see exactly what the system sees.

Domain Agnostic by Design

The engine takes any continuous numeric time series and makes no grid-specific assumptions. Published results cover only what has been scored.

About

Built by DataGrip LLC

htm-monitor is developed and operated by DataGrip LLC. We're focused on making unsupervised temporal anomaly detection practical and accessible for critical infrastructure operators.

Get In Touch

See it on your data.

Whether you want a free technical preview, a paid pilot, or just want to learn more — we'd love to hear from you.

Technical Preview — Free

Send a 90-day telemetry sample and one past event you'd like scored. You get a preview audit within a week: lead/lag timing, false-positive rate, per-signal analysis. No commitment.

Paid Pilot — $2,500

Full historical replay against your event catalog, with a written per-event audit. The fee credits in full against your first subscription month.

Send a Message

Thank you! We'll get back to you within 1-2 business days.
HTM-Monitor
—
—
All times are UTC. The current service delivers alerts by email; other routes are integration work.
Signal Traces
Group Warmth
⚠ Learning period — model is warming up, alerts suppressed
Click to jump →
✕