Quant Trading Bot Devlog

한국어로 보기

First Week of Live Trading — Prep, Launch, and Follow-Up Fixes

Monday was one last checkup, Tuesday I started live trading, and over the following two days I fixed problems that only surfaced under real operation

This is the English version of a post originally written in Korean for my algorithmic trading system devlog(new tab).

Writing again after a few days. Monday was a quiet checkup day, Tuesday live trading started, and over the two days that followed I fixed problems that only show up under real operation.

Monday — one last checkup

After sorting through the issues found last weekend, Monday was about one final confirmation that the newly patched safety guards and reference values were actually working. Rather than adding new code, I spent the time running the pre-market checkup routine one more time, carefully.

Tuesday — live trading started

Live trading finally began. Once I judged that paper-account validation was sufficient and last weekend's issues were all resolved, the decision came quickly.

The first round went through the usual Telegram approval flow. But right after the order went out, the question came up: "why am I still pressing approve every single time?" So I removed the approval step then and there — instead of human approval every round, orders now proceed automatically once a set of mechanically checkable conditions are met, with results always reported afterward.

That same afternoon brought an unexpected scare. I manually closed out one position directly in the account to free up some cash, and the system mistook this for an "unapproved fill" — the safety guard force-stopped trading twice. The root cause was that it couldn't distinguish a manual human trade from a trade it simply didn't know about.

I unblocked it on the spot as a temporary fix, then built a proper channel for formally notifying the system about manually executed trades, so the same thing wouldn't happen again. The overall kill-switch and fill-reconciliation design is covered in an earlier post(new tab). Around the same time, I also found and fixed a balance-reconciliation check that was still referencing the old brokerage's format.

Wednesday — volume picked up, and a deploy quietly failed to land

Wednesday saw higher trading volume but passed without major incident. I also polished the daily live-trading summary notification to be easier to read — buy/sell labeling, showing time as round number, less ticker-code clutter, and sending at least once a day even on days with no trades.

There was a small deploy incident too. I fixed one piece of code and restarted it, but that particular process was missing from the watch list, so the restart quietly didn't take effect. I noticed only when the afternoon report failed to arrive, and added it to the watch list so this specific failure mode can't recur.

The same day, I found that the reference value for calculating drawdown from the account's peak had been wrong from the start. The balance at the moment live trading began had accidentally been stored as the "all-time peak," so the intended rule — "the guard can be manually reset within the same day" — wasn't actually working. Fixed it right away, and while at it, cleaned up the policy so that circuit breakers and risk kill-switches auto-reset on the next trading day. Since unattended operation without someone watching continuously was starting the next day, this was something that needed to be wrapped up beforehand.

Also this week


Looking back over the three days, this was less about new features and more about chasing down things that only become visible once real money starts moving. I think that's exactly why starting cautiously with a small amount made sense.