Quant Bot Goes Live - Clearing the First Gate With Small Money, and What Broke in Week One
After months of validating the system entirely on a paper account, it finally opened an account with real money. I started small and careful, and the first week still had some surprises
This is the English version of a post originally written in Korean for my algorithmic trading system devlog(new tab).
This week, I finally started automated trading on a live account with real money. It's been a while since I started this project, and up to now I'd only ever validated the system on paper. Now, with a small amount, trades started going through on an account with real money on the line for the first time.
The road here
I prepared along two tracks to get here. One was running the fully-automatic, no-human-approval track on paper first(new tab). The other was designing the safety mechanisms(new tab) that real money going out the door would need. Both came from the same instinct — doubt everything and verify as much as possible before going live.
Last weekend, ahead of expanding into live trading, I did one final full review, and found and fixed a few genuinely important issues there. Only after that review wrapped up did it actually feel like "okay, this is ready to start."
The decision happened the same day
Going live wasn't some elaborately staged event. Once the review was done, I decided to just start that same day.
The first round ran the usual way — a Telegram trade proposal, approved by me directly. But right after tapping approve, I found myself thinking "why am I still tapping this every single time," and decided on the spot to drop the approval step entirely. Instead of a human checking every time, the system now proceeds automatically once its own self-check conditions are satisfied, and always reports the outcome afterward.
Afternoon chaos on day one — the system doubted even my own trade
There was one surprise on the afternoon of day one. I manually cleared out a position myself, directly on the account, to free up some cash. The system flagged that fill as one it didn't recognize, treated it as an "unapproved trade," tripped its safety mechanism, and halted trading entirely. Twice, not just once.
It was funny and reassuring at the same time. A system that can't even tell my own trade apart and defaults straight to suspicion might sound overly jumpy, but that was exactly the intended behavior. Afterward I built a proper procedure for formally notifying the system whenever I trade manually myself, so the system doesn't get confused even when I step in directly.
Among the names it actually held this week were familiar large-cap names — nothing exotic, mostly recognizable blue chips, filled in carefully rather than chasing hot themes.
A moment my own judgment was right, twice
The moment from this week that stuck with me most personally was a disagreement with my AI advisor over the timing of increasing exposure to KOSDAQ names. The AI suggested waiting, being more cautious about timing. I overruled it both times and went with my own judgment.
Looking back, both calls turned out right. It was a good reminder that going automated doesn't mean handing every decision to the machine — the big calls are still mine to make.
Day two — a deploy that quietly didn't take, and a stale baseline found late
The second day saw more trading volume but nothing went wrong there. Instead, I spent time making the daily trade summary notification a bit friendlier — clearer buy/sell labeling, showing round number instead of clock time, and a daily "quiet day, nothing happened" message even on days with no trades.
There was a small deploy mishap that day, though. I fixed some code and restarted, but the process itself had fallen off the monitoring list, so the restart never actually took effect. I only noticed when the afternoon report didn't arrive and I went checking why it was late.
The same day, I also found that the baseline used to calculate drawdown from the account's peak had been wrong from the very start. The balance on day one of live trading had accidentally been stored as the "all-time high," which meant the intended rule — that the circuit breaker could be manually reset intraday if needed — wasn't actually functioning. I fixed it immediately, and while I was at it, cleaned up the policy so that a circuit breaker or risk kill switch automatically resets on the next trading day. That was something I needed to nail down before moving to unattended operation without someone watching over it constantly.
Going forward
Looking back at the first week, what stands out most is relief that nothing broke badly. Most of the issues were the kind that only surface once real money is actually moving — things a paper account would never have exposed.
I'm starting small, and I plan to scale up very slowly, only after stacking up enough incident-free days. I'll keep writing about what comes up along the way in future devlogs, so feel free to follow along if you're interested.