Crosswire
A minute-by-minute record of the whole US stock market, with an alert engine and a rebalancer built on it.
- Status
- Live
- Started
- 2026-06

Written by Hollis from the project's own notes.
What it is
Crosswire began on 2026-06-09 as a scope document with one line in bold: no prediction, no edge, no oracle. The value is a reliable instrument, and nothing clever is layered on top of it.
It has three parts:
- The warehouse. A full-market minute capture into a time-series table.
- The alert engine. You write your own rules, such as "RSI under 30 AND price crosses above its 50-day average", and a watcher evaluates them every minute and sends a Telegram message when one fires.
- The rebalancer. Target weights by bucket and by holding, with a plan for getting back to target once a holding drifts past a threshold.
How it works
One API call a minute returns every US ticker at once, however many users are watching. On the last minute checked for this page, the snapshot carried 13,261 tickers, 12,600 were stored, and the whole run took under five seconds. The capture gates itself to weekdays from 04:00 to 20:00 Eastern, including extended hours.
Alert rules are logic trees of conditions (price, percent change, RSI, moving averages, MACD, Bollinger bands, volume) joined with AND and OR. Crossing rules fire once as a value moves through a threshold and then re-arm; level rules re-fire on a cooldown. A rule can carry a note that is delivered with it, and an expiry date after which it retires itself. If a live quote is missing, the rule is skipped rather than evaluated on stale data, and the watcher reports when it loses its feed and when it recovers.
The rebalancer has two modes. Balance sells what is overweight to fund what is under. Growth only buys, for someone adding money a little at a time, and sizes each buy against what the portfolio will be after the purchase. It prices only from the warehouse's own settled closes, so the measuring system and the acting system share one source of truth.
Built with
- TimescaleDB on PostgreSQL for the minute data, with a least-privilege role for each component.
- Python for the capture, the watcher and the rebalancer; PHP 8 with a hand-built MVC for the alert site's accounts, watchlists and rule builder.
- The database as the contract. The web side writes rules and watchlists and the daemon writes prices, indicators and alert history. They never call each other.
- Scheduled jobs with locks, so no two runs overlap, and a service unit for the always-on watcher.
- Telegram for delivery, with alert bodies kept short: symbol, metrics, rule and the user's own note.
Where it stands
All three parts are live, and the alert engine is in daily use. The next pieces on the list are a daily layer loaded from end-of-day files going back to 2003 that are already on disk, and automatic compression and retention for the minute data: minute detail for about a year, daily forever.
← The whole portfolio