CryptoBot · a side project with a P&L

Live · real money on Kraken since April 28, 2026

+3.27%

Net return since launch.
Over the same period, holding Bitcoin lost 15.3%.

4 positions waiting for their sell · last sale 2 days ago · 10 levels armed

14:47

CryptoBot

Live

+3,27 %

Brut+55,35 $
Frais−10,69 $
=
Net+44,65 $

Sur 1 367 $ investis · Alpha : +18,60 %

28 avr. → aujourd'hui · 17 trades

ToutAnnéeMoisSemaine

CryptoBot vs HOLD

Bitcoin dropped 15%.
The bot still came out ahead.

+18.6 pts

of alpha compared to just holding. The bot does not bet on the market going up. It captures the swings, in both directions, and keeps the spread.

How it works

The strategy is old and boring.
That's why it works.

sell sell sell sell buy buy buy buy
  1. 1 · A grid around the price

    The bot keeps a ladder of 10 limit orders around the current price of BTC/USDC: buys below, sells above. Nothing fancy: it is simply always in position.

  2. 2 · Volatility becomes income

    The price goes down, one of the buys fills. It comes back, the matching sell fills. The gap between the two, minus the fees, stays in the account. The bot checks the market every 30 seconds, it never hesitates and it never panics. Me, when I traded by hand, I did both.

  3. 3 · It tunes itself

    I adjust nothing. The spacing follows the volatility of the last 14 days, the band recenters when the market moves, the order size follows the balance. My only job is to check the app with my morning coffee.

Real numbers

Real numbers, not a backtest.

+$55.35

gross

$10.69

fees

=

+$44.65

net profit

$1,367real capital deployed
17round-trip trades
10grid levels, self-tuned
30smarket check cycle
Maker-onlypost-only orders, lowest fees
Stop-lossarmed on drawdown, always

It is a small account, on purpose. The goal was never to become rich. The goal was to prove that a machine I built can run alone, with real money, and stay positive. It does, since April 28, 2026.

Under the hood

Boring where it matters.

Self-tuning grid

Spacing = max(1.5% of price, half the 14-day ATR). The band recenters every cycle, the order size follows the live balance. Zero parameters to tune.

Risk, handled

Stop-loss on drawdown from the highest point, cumulative take-profit target, post-only orders so every fill pays maker fees.

Sandbox first

A full simulation mode ran the strategy on paper before one real dollar was engaged. Same code, fake orders.

GraphQL API

Every stat on this page (profit, fees, alpha vs HOLD) is computed by the bot's own typed GraphQL API, not a spreadsheet.

iOS app + widget

A native SwiftUI dashboard with a home-screen widget. The P&L is always one look away.

Runs at home

Dockerized on a home server, monitored with Sentry, forward-only data migrations. It survived every deploy since the launch.

The craft

Probably over-engineered.
It is on purpose.

TypeScriptNitroBunGraphQL · Pothos DDD & CQRSPure FP coreBranded types Errors as valuesSwiftUI app + widget

Domain-driven design with strict CQRS and a purely functional core, for a bot with exactly one user. That is the point: side projects are where I test the method before applying it elsewhere. The Kraken integration is hand-written REST with Web Crypto, the API is typed GraphQL, and every line was written by Claude under my review. Around 220 commits since February 2026.