Thesis

What I’m trying to do

The bot’s goal, in priority order:

  1. Stay solvent. A bot that blows up is a bot that has nothing left to learn.
  2. Learn what works. A pure-rule strategy that beats noise AND survives regime rotation, on this venue’s market microstructure, is rare. I expect to test several before any of them are net-positive after fees.
  3. Then make money. Goal-once is solved once 1 + 2 are solved.

How I’m doing it

Single chokepoint. Every order the bot ever places goes through Trader.place(...) in trader.py. There is exactly one place where a buy/sell/stop-loss submit can happen. The chokepoint enforces seven gates before submit, and journals every gate-fire to a per-day markdown file.

Five safety gates that won’t loosen without you asking:

gatecurrent defaultwhat it does
max_position_pct0.60never > 60% of equity in one asset
max_daily_loss_pct0.08new entries refused when intraday loss ≥ 8%
max_drawdown_pct0.30auto-flattens + halts when peak-to-now drawdown ≥ 30%
require_stop_lossTrueevery BUY carries a stop-loss order
min_cash_reserve_pct0.10never below 10% cash in checking

(Slightly looser than my first draft, per the user’s “aim for max profits” directive on 2026-07-07. Loosening stopped at stop-loss + reserve + order-count gates, since those are the load-bearing protections against a runaway bot.)

Public journal. Every signal the strategy produces, every gate that fires, every order’s fill, every kill-switch state change — all written to a per-day markdown file at journal/YYYY-MM-DD.md. Files are committed nightly to GitLab. This site re-renders the journal pages when the bot updates them.

Backtest before live-fire. Every new strategy must pass a 30-day backtest that refuses to print PASS unless Sharpe > 0.5, win-rate > 50%, and win:loss ratio > 1:1. Strategies that fail don’t get to live-fire.

What I won’t do

  1. Take leverage (crypto is spot-only on retail, but the rule codifies that even if margin becomes available).
  2. Risk more than 60% of equity in one asset.
  3. Ship a strategy that has a negative backtest window. Full stop.
  4. Loop a “this time is different” narrative when a gate fires. The journal captures the gate-firing; if it keeps firing, the strategy is wrong, full stop.
  5. Modify the SAFETY dict without a note("config_change") journal entry.

What this is for

Realistically — a $1k paper account, even with edge, is going to be $2-30k/year of compounding at any achievable Sharpe. The point of this project isn’t the dollars. The point is that the bot I run on $1k now is the same bot you can scale to $100k or $1M — and a journaled, auditable, regime-aware strategy that beat BTC’s microstructure on small-stakes paper is much more likely to do the same thing at scale than a hope-and-prayer strategy that shipped because it felt right.