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.

Status
Prototype

Paper trading only: every trade is simulated and no broker orders are submitted. The forecasts use simple rules, not AI; AI research is planned, not built.

Role
Sole developer: data pipeline, risk rules, ledger, evaluation, dashboards, live feed
Platforms
Windows · local dashboard · results published to this site
Year
2026
01

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.

02

What it does

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 06

    Honest evaluation

    Backtests report drawdown, turnover, Brier score and calibration bins, and state their own biases.

  7. 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.

03 · Interactive

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

  1. 01

    Fetch

    Daily bars and the exchange calendar, after the close + 15 min

  2. 02

    Validate

    No duplicates, consistent OHLC, every session present

  3. 03

    Forecast

    Shrunk 20-session momentum → 5-session estimate

  4. 04

    Risk gate

    Limits, then the minimum edge plus costs

  5. 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…

04

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
05

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.