Stock research · Paper trading
Signal Desk
A stock research experiment that began with daily forecasts and now runs a $100 simulated account, deciding every five minutes on SPY, QQQ and AAPL. No real orders, ever.
The objective
The question is whether a transparent, evidence-based process can produce better forecasts than simple market baselines. It is an experiment, not an income plan, so the system is built to make every decision reconstructable and every limit impossible to exceed.
It started as a daily forecaster with a $5 paper ledger. The current stage is an intraday paper account: $100 of simulated cash, small positions and strict exits, with its results published here as it runs.
What it does
- 01
Strict limits on every trade
$100 of simulated cash, $5 per position, at most five positions and $25 exposed. Each position exits at a 1% gain, a 0.5% loss or after 30 minutes, followed by a 10-minute cooldown.
- 02
Results you can watch
The trading computer sends a sanitized snapshot to this website about every 30 seconds. The page shows the account, trades and the reason for each exit, and says plainly when updates have stopped.
- 03
Daily scans that refuse bad data
After each session closes, it fetches daily bars, checks for duplicates, inconsistent prices and missing sessions, and blocks the scan if anything is stale.
- 04
A forecast you can read
A shrunk momentum baseline estimates a five-session return and an uncalibrated probability, and writes its reasoning in a sentence.
- 05
An audit trail
Each forecast keeps an immutable snapshot of its inputs with a SHA-256 hash. Fills are kept as first observed; a provider revision stops scanning for review.
- 06
Honest evaluation
Backtests report drawdown, turnover, Brier score and calibration bins, and state their own biases.
- 07
Dashboards that only read
A local page shows balances, signals, entries and exits, and a minute-data collector for SPY, QQQ and AAPL. Neither it nor this website has any trading controls.
From price bar to paper ledger
Follow one signal through the pipeline. The numbers in this visualisation are demonstration data, not market data or results.
◇ Demonstration data. Not market data, not a result
- 01
Fetch
Daily bars and the exchange calendar, after the close + 15 min
- 02
Validate
No duplicates, consistent OHLC, every session present
- 03
Forecast
Shrunk 20-session momentum → 5-session estimate
- 04
Risk gate
Limits, then the minimum edge plus costs
- 05
Paper ledger
Append-only record with a hashed input snapshot
Signal · DEMO
- 20-session return
- +12.8%
- Shrunk 5-session estimate
- …
- 5-session volatility
- …
- P(up), uncalibrated
- …
0.25 × +12.8% ÷ 20 × 5 = +0.80%
Risk gate
- Data fresh and complete: not evaluated
- One open position per symbol: not evaluated
- Position ≤ $0.10: not evaluated
- Open exposure ≤ $1.00: not evaluated
- Loss halt ($0.50) not triggered: not evaluated
- Expected +0.80% > 0.50% edge + 0.20% costs: not evaluated
Outcome
Running…
How it's built
Python 3.11 with only the standard library: SQLite for the append-only ledger and minute-data store, and a single-file HTML dashboard served on 127.0.0.1.
Timing follows the exchange calendar, including early closes. A forecast made before the open can enter at that open; one made after waits for the next session; a missing entry bar expires the signal instead of filling it days later.
Ten regression tests cover overnight and after-open signals, early closes and weekends, exposure and cash limits, missing data, loss halts, frozen inputs and repeat execution.
The live feed runs on this site: an authenticated ingest route validates each snapshot against a versioned schema, drops anything outside it, and stores it in Redis with a sequence check so a retried or out-of-order update can never overwrite newer data.
Verified technologies
- Python 3.11
- SQLite
- Alpaca market data
- HTML / JS dashboard
- unittest
- Next.js API routes
- Upstash Redis
- Zod
Worth knowing
- No live trading is implemented, and live execution cannot be enabled by a setting or a model output.
- All balances on this page are simulated. Nothing on this page is a prediction.
- Not investment advice.
