A 7-model machine-learning ensemble paired with six rules-based agents, generating daily signals across 366 stocks in the US, UK and EU. Every prediction logged. Every result resolved. No backtesting theatre.
Every Alpha Signal prediction follows the same path. Six discrete stages, each with its own validation. The first model generation produced 36% accuracy. Honest measurement and small, compounding refinements brought it to where it is now.
Daily OHLCV from Polygon.io and Yahoo Finance. Macro from FRED, BoE, ECB. News sentiment via Claude. No Bloomberg terminal. No paid feeds. The point was always to see how far you can get on the public layer alone.
Technical (RSI, MACD, Bollinger), momentum across five horizons, volatility ratios, volume dynamics, sector context, macro indicators (yield curve, HY spreads, breakevens), and cross-asset signals like gold-dollar ratios.
Ridge for a stable linear baseline. LightGBM for non-linear interactions. GRU for temporal patterns over 5-day windows. A stacking meta-learner combines them, then Platt scaling calibrates the probabilities.
Combines ensemble probability, model agreement, and historical walk-forward accuracy per-asset. Confidence determines eligibility to trade. Position size is set separately, by inverse-volatility weighting.
BUY, SELL, SHORT, or HOLD. HOLDs are excluded from accuracy maths because the system saying "I don't know" should not be counted as either right or wrong.
Every signal is resolved 4+ hours later against actual market prices. A 0.5% minimum movement threshold prevents noise from being counted as correctness. The result is stored and never re-touched.
No single model wins on every market regime. The ensemble is built on the idea that different architectures capture different patterns — and that learning which model to trust when is itself a model worth training.
A fast, stable baseline. Closed-form so it trains in milliseconds. Catches the linear slice of the signal that any sensible system has to capture before it claims anything fancier.
Non-linear feature interactions. Handles mixed feature types and missing values gracefully. The workhorse for capturing the bulk of the predictive structure in the data.
Reads the last five days as an ordered sequence rather than a flat feature vector. Picks up momentum and reversal patterns that aggregate features alone tend to flatten out.
A logistic regression stacker trained on out-of-fold predictions from each base model. It learns which models to weight in which conditions, then a final Platt scaling step ensures the output probability matches real-world frequency.
The most common failure mode of trading systems is models that have already seen the test data during development. Alpha Signal's training is structured to make that impossible.
The ensemble produces signals. The agent fleet decides whether to trust them. Each agent runs on its own cadence, with its own audit trail. Every action — proposed, approved, executed, or rejected — is logged.
Monitors data freshness across all 366 assets. Flags stale prices (>24h) for refresh. No signal is ever generated from stale data without explicit approval.
Watches drawdown, concentration and correlation. Triggers a global risk halt if drawdown exceeds 15%. While active, all BUY signals downgrade to HOLD.
Detects when input feature distributions shift outside training range. Flags assets for retraining when drift score > 0.3. Stops the system predicting in unfamiliar conditions.
Checks inter-model consensus. Overrides any signal where fewer than 50% of models agree. Forces HOLD when disagreement is too high. Filters noise out of the pipeline.
Monitors weight drift across the portfolio. Proposes rebalances when drift exceeds 5%. Applies position caps to prevent any single asset dominating.
Tracks rolling accuracy per asset. Detects accuracy collapse and recommends model suspension when win rate falls below threshold. Computes profit factor and EV continuously.
Built as a single Rust binary with three modes: train,
signal, and
serve.
No Python orchestration, no microservices, no Kubernetes. Just a binary and a database.
Fig. 03 · System architecture. Single Rust binary deployed via systemd on bare-metal Linux. PostgreSQL is the single source of truth. SQLite handles historical archival. Inference latency: <50ms per asset, ~2s for the full 366-asset batch on six CPU cores.
Live since 15 March 2026. Every signal generated by a model trained only on data older than the prediction. Below is what the system has actually produced — alongside what the benchmark did over the same period.
What 54.8% accuracy actually means. In financial markets, a consistent edge of 4–6 percentage points above random (50%) is meaningful when paired with disciplined position sizing and risk management. It produces positive expected value per signal. The point is consistency across hundreds of signals, not any single trade. The system is currently more conservative than buy & hold in a strong-trend market, by design.
| Dimension | Backtest-only systems | Typical "AI trading" | Alpha Signal |
|---|---|---|---|
| Track record | Historical fits | Cherry-picked windows | Live since 15 Mar 2026 |
| Model architecture | Single model | Black-box ensemble | 3 families + stacker + Platt |
| Monitoring | None | Manual oversight | 6 autonomous agents |
| Coverage | Small basket | One market | 366 stocks · US/UK/EU |
| Position sizing | Fixed lot | "By feel" | Inverse-volatility weighted |
| Audit trail | Final P&L only | Vague claims | Every signal logged + resolved |
No microservices, no orchestration tier, no Python. Rust trains, predicts, serves and stores. The agent fleet runs as part of the same binary on a different cadence.
Alpha Signal is a personal research project. Not financial advice. Not for sale. If you'd like to talk about the architecture, the methodology, or what it took to get here, I'd love to hear from you.