—
—It screens, decides, sizes and places its own orders — no human in the loop. 233 recommendations, 32 filled orders. The code froze on 22 June, so nothing was tuned mid-flight to flatter the record.
Because it logs what it skipped, it can be graded against itself — and its confidence ran backwards. The cause was concentration: 25 companies, two names it kept re-entering. Only the stops kept a bad quarter from being a wipeout.
Its own books claimed a $91.46 loss; the broker said $43.86. It was overstating the damage by more than the damage. Every figure here comes from the broker, not the app.
Rebuilt as a Python backend. The scheduler runs, auto-trading is off — recommendations pile up, no orders. Day 0, no money at risk.
The pivot: the screener becomes a portfolio that places its own orders. First real fill lands the same day. Trailing stops and the memory layer switch on together — from here, most exits are a stop firing.
Its own backtest finds the scoring model has no durable edge. A momentum rewrite ships hours later, and every fill after this belongs to it. The lots ledger is created the same day — the component that later drifts from the broker.
The allocator goes live and rebuilds the book in one pass — six positions liquidated. A one-whole-share minimum makes sizing chunky: a single share could be a fifth of the account.
Code freeze. Everything after this date is one unchanged build running unattended — which is what makes the record worth reading.
Two positions exit and the ledger records neither — $378.09 of proceeds it never saw. The drift starts here.
Last broker exit. The book has been static since; the numbers above are what the frozen build left behind.
37 days, 15 round trips, one $1,500 account — far too small to separate a bad strategy from bad luck. Figures are broker-sourced; the equity curve replays every fill in FIFO order against daily closes, benchmarked to SPY over the identical window. Not investment advice.