α
Live since 15 March 2026 · 877 signals resolved

Autonomous trading intelligence,
built for an honest track record.

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.

Actionable Accuracy
54.8%
829 resolved signals
Stocks Tracked
366
US · UK · EU markets
Expected Value
+10 bps
per signal, out-of-sample
Autonomous Agents
6
monitoring 24/7
Rust  core engine
7-model  ensemble per asset
84  engineered features
Walk-forward  validation
0  lookahead bias
The signal pipeline

From raw market data
to a calibrated decision.

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.

01 · DATA Ingest Polygon · Yahoo FRED · NewsAPI 02 · FEATURES Engineer 84 features technical · macro · cross 03 · ENSEMBLE Predict Ridge · LightGBM GRU · Stacker 04 · CONFIDENCE Score 0–26 scale Platt-calibrated 05 · SIGNAL Emit BUY · SELL SHORT · HOLD 06 · RESOLVE Verify 4hr later vs real prices SIGNAL PIPELINE · END-TO-END Every signal logged with timestamp · Resolved against real market data · No re-runs, no edits
Fig. 01 · Signal pipeline. Data flows left-to-right through six validated stages. Stage 03 (ensemble) and stage 06 (resolution) are highlighted as the two places where the system either commits to a prediction or commits to scoring itself honestly.
01 — DATA

Free, public market data.

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.

02 — FEATURES

84 engineered features.

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.

03 — ENSEMBLE

Three architectures, one decision.

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.

04 — CONFIDENCE

A 0–26 score, not a probability.

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.

05 — SIGNAL

Four outputs. HOLD is honest.

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.

06 — RESOLVE

Scored against real prices.

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.

The ensemble

Three model families.
Combined by a meta-learner.

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.

M1 · LINEAR

Ridge Regression

closed-form solution

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.

M2 · TREES

LightGBM

gradient-boosted trees

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.

M3 · NEURAL

GRU Network

recurrent · 5-day sequence

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.

META-LEARNER

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.

Validation

Walk-forward only.
No lookahead, no theatre.

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.

2020 time → 2026 EXPANDING WINDOW · TRAIN GROWS, TEST MOVES FORWARD FOLD 1 TRAIN TEST FOLD 2 TRAIN (expanded) TEST FOLD 3 TRAIN (expanded) TEST LIVE TRAIN (full history, recent 6mo weighted 3×) LIVE
  • 1
    Models train on history, test on the future. The training window expands forward through time. Each test window is data the model has never seen.
  • 2
    Per-fold normalisation. Statistics like means and standard deviations are computed within each training window only — never across train/test boundaries.
  • 3
    Recent data weighted 3×. The most recent six months of training data is weighted heavily so the model adapts to evolving regime, without ignoring deeper history.
  • 4
    The live track record is 100% out-of-sample. Since 15 March 2026, every signal has been generated by a model trained only on data older than the prediction. Nothing else is acceptable.
The agent fleet

Six rules-based agents.
Always watching.

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.

Data Quality Sentinel
30 min

Monitors data freshness across all 366 assets. Flags stale prices (>24h) for refresh. No signal is ever generated from stale data without explicit approval.

Risk Guardian
60 min

Watches drawdown, concentration and correlation. Triggers a global risk halt if drawdown exceeds 15%. While active, all BUY signals downgrade to HOLD.

Drift Detector
6 hr

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.

Signal Arbitrator
4 hr

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.

Portfolio Rebalancer
3 hr

Monitors weight drift across the portfolio. Proposes rebalances when drift exceeds 5%. Applies position caps to prevent any single asset dominating.

Performance Analyst
12 hr

Tracks rolling accuracy per asset. Detects accuracy collapse and recommends model suspension when win rate falls below threshold. Computes profit factor and EV continuously.

Deterministic, not black-box. Every agent is rules-based. No agent makes a risk decision via a generative model. Every action is logged with timestamp, reasoning and status (proposed / approved / executed / rejected) for a full audit trail.
System architecture

One stack.
From data to decision.

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.

LAYER 1 · DATA SOURCES Polygon.io Yahoo Finance FRED · BoE · ECB News (Claude) LAYER 2 · FEATURE ENGINEERING (84 FEATURES) Technical · Momentum · Volatility · Volume · Macro · Cross-Asset LAYER 3 · ML ENSEMBLE (PER ASSET) Ridge Regression linear baseline LightGBM gradient boosting GRU Network recurrent (5d) Stacker + Platt meta-learner LAYER 4 · CONFIDENCE + SIGNAL EMISSION Confidence (0–26) → BUY · SELL · SHORT · HOLD PORTFOLIO MANAGEMENT Inverse-volatility sizing 15% cap · 5% rebalance trigger · 10bps tx cost AGENT FLEET (24/7) Six rules-based agents Data · Risk · Drift · Arbitrator · Rebalancer · Analyst REST API · 46+ ENDPOINTS · DASHBOARD · POSTGRES STORAGE

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.

The track record

45 days live.
Numbers, unedited.

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.

Actionable accuracy 54.8%
BUY accuracy (829 signals) 57.9%
Expected value per signal +10 bps
Profit factor 1.38
Annualised Sharpe 2.06
Max drawdown 5.5%
Total signals (resolved + pending) 877
Portfolio return (45 days) +4.67%
$108k $106k $104k $102k $100k $98k Mar 15 Mar 29 Apr 12 Apr 29 $107,225 $104,669 Alpha Signal SPY buy & hold
Portfolio value vs SPY benchmark. $100,000 starting capital, 15 March → 29 April 2026. Alpha Signal at +4.67%; SPY buy & hold at +7.22%. The Alpha Signal line tracks the benchmark with a smoother profile through the early-period drawdown — the trade-off the system is deliberately set up to make.

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.

What's different

Built for scrutiny,
not for the demo.

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
The stack

A single binary,
doing real work.

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.

CORE ENGINE
Rust
Memory-safe, zero-cost abstractions, parallel training across cores.
ML FRAMEWORK
Candle + LightGBM
Native neural networks plus gradient-boosted trees, no Python bridge.
DATABASE
PostgreSQL
Single source of truth for live signals, agent actions and audit trail.
WEB API
Axum
46+ REST endpoints for signals, portfolio, agent state, history.
FRONTEND
React + TS
Internal dashboard with charts, signal explorer and live status.
DATA
Polygon · Yahoo
Free public market data tiers. No paid feeds or institutional access.
INFRA
Linux + systemd
Self-hosted on bare metal. Single binary deployed as a service.
AUTH
OAuth 2.0
Google and Microsoft sign-in for the dashboard. No user passwords stored.
Built to be honest · Designed to compound

A hobby project, run with the discipline of a system that needs to last.

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.