StockShaby Shanley AISign in

— StockSha · a personal auto-investor

A strategy
must earn its way to real money.

An automated investing system built end-to-end: an honest backtest engine, overfitting diagnostics, walk-forward validation gates, hard risk limits, and an unattended paper deployment — live right now, below. Every trade is decided by deterministic, tested code. No LLM ever makes a trading decision.

— Live paper deployment

Running right now

Last update Jul 28, 2026, 4:35 PM · runs unattended weekdays at 4:35pm ET · paper money, real market data

Paper equity

$100,000

+$0 vs $100k start

Positions held

0

ETF rotation universe

Kill-switch headroom

20.0%

drawdown 0.0% of 20% hard limit

Human interventions

0

by design — halts require a post-mortem

— Deployment equity vs SPY

2026-07-18 paper account same $ in SPY2026-07-28

Decisions are made after the close on completed bars and submitted as market-on-open orders — exactly the fill convention the backtests assume, so reality and the model stay comparable. A daily reconcile job measures the gap.

— The seven steps

How it's built

Each step must be earned before the next one unlocks. The interesting part is what the gates have refused to let through.

1Data & backtest engine

built

Split/dividend-adjusted bars, explicit universes, gap-aware stops, realistic costs. Decisions on completed bars, fills at the next open.

2Risk module

built

Position sizing plus a 20% drawdown kill-switch — the same code governs backtests, paper, and (one day) live, identically.

3Overfitting diagnostics

built

Parameter plateaus, in-sample vs out-of-sample gap, drop-best-trades. Built to distrust good-looking results.

4Strategy hypotheses

built

Dual momentum (GEM-style ETF rotation) and a mechanical CAN SLIM subset — each revised twice after the harness caught real flaws.

5Walk-forward validation — Gate A

built

Tune on train, freeze, trade unseen windows, stitched verdict. Built and run twice. No strategy has earned the gate — and that's the system working.

6Paper deployment

live now

Unattended launchd runs since July 2026: kill-switch check, strategy decision, capped orders, full audit log, published here daily.

7Real money

locked

Deliberately not built. Gated behind Gate A (validation) and Gate B (weeks of tracked paper trading). No shortcut exists in the code.

— The system that says no

Discipline is the feature

A research harness earns trust by what it rejects. These results are real, and they're the point.

Survivorship bias, caught red-handed

CAN SLIM appeared to beat the market — on a universe of hand-picked decade winners. Rebuilt with the mega caps actually selectable in 2016 (including GE, IBM, Intel), the alpha vanished entirely. The harness flagged it as overfit.

Crash risk, measured not wished away

In backtests, every hypothesis was halted by the 20% kill-switch — monthly rebalancing can't react to a COVID-speed crash. That finding shaped the revisions instead of being tuned away.

The honest conclusion

After two full validation cycles: nothing tested beats SPY buy-and-hold after costs. So the paper deployment runs explicitly labeled as a learning deployment — and the path to real money stays locked.

— Latest run · walk-forward · dual_momentum

SPY, EFA, IBIT, AGG vs SPY · 2026-07-20

CAGR

37.5%

B&H 19.6%

Sharpe

1.56

B&H 1.20

Max drawdown

15.2%

B&H 18.7%

Total return

88.7%

B&H 42.9%

— Equity vs buy & hold

2023-07-27 strategy buy & hold2025-07-30

— Walk-forward verdicts, straight from the database

dual_momentum2026-07-20OOS Sharpe 1.56 vs benchmark 1.20Gate A: not earned
dual_momentum2026-07-18OOS Sharpe 1.56 vs benchmark 1.20Gate A: not earned
can_slim2026-07-18OOS Sharpe 0.38 vs benchmark 0.77Gate A: not earned
dual_momentum2026-07-18OOS Sharpe 0.44 vs benchmark 0.77Gate A: not earned
can_slim2026-07-17OOS Sharpe 0.95 vs benchmark 0.77Gate A: not earned
dual_momentum2026-07-17OOS Sharpe 0.33 vs benchmark 0.77Gate A: not earned

— Engineering notes

Under the hood

No lookahead, structurally

Strategies see the market only through a view whose accessors cannot reach past the current bar — attempts raise an error. Tested, not trusted.

Backtest ↔ live parity

One execution convention everywhere: decide after the close, fill at the next open. The paper runner submits market-on-open orders to match it 1:1.

A kill-switch that stays tripped

A drawdown halt is sticky across runs and submits zero orders. Re-arming requires a human and a written post-mortem — no auto-recovery.

Unattended, audited operations

launchd agents run the daily trade and reconcile jobs; every decision, order, and alert is appended to an immutable audit log and published here.

A read-only window

This site renders published Supabase snapshots. There is no code path from the web to the broker; private data sits behind row-level security.

Claude explains, never trades

The owner's dashboard includes an AI analyst grounded in the published data — read-only by construction. Trading decisions stay deterministic.

Python 3.12 · pandas · Alpaca paper API · pytest · Supabase · Next.js · Tailwind · Vercel

— Ask Claude

Questions, answered from the live data

An AI analyst grounded in the published state and research verdicts. Read-only by construction — it cannot trade or change anything. Visitor questions are rate-limited; be nice to it.

Try one of these: