Weekly Blog Report Skipped for Five Weeks Straight - A Dead Account Reference Was the Cause
Tracing why the weekly performance report kept silently skipping turned up a reconciliation check still reading state from an account the system had already migrated away from.
This is the English version of a post originally written in Korean for my algorithmic trading system devlog(new tab).
A report that kept quietly skipping for five weeks
The weekly performance report that goes up on this blog had been silently skipping every Saturday since mid-September, each time logging "no recent snapshot."
There's no alert wired up for this, so it went unnoticed for a while. I finally sat down and dug into it today.
Two separate causes turned out to be stacked on top of each other. The simple one: the timer that builds the daily snapshot had been switched off for a few days, and restarting it was quick.
The trickier one was a safety check built into the snapshot job — it verifies that the ledger and the real account balance line up closely enough before it lets a snapshot through. That check had been failing for weeks straight.
The account had moved, but the report hadn't caught up
Digging further, I found that the account-state file this check was reading from had stopped being updated over a month earlier. The actual trading had already moved to a different account, but the report was still staring at the old one.
Since that file was frozen, it obviously stopped matching the live balance, and the safety check kept flagging a mismatch and blocking the report. When the account migration happened, the trading logic itself was fully switched over to the new account — but this one reference in the reporting path got missed, and it took weeks to surface.
Once I pointed the reference at the new account, the safety check passed cleanly. Snapshots should start accumulating again from the next weekday, with the weekly report back on schedule by the following Saturday.
Also caught a definition bug in the data collector
Separately, I found and fixed a definition bug in the data archive(new tab) project's intraday-bar comparison work.
The market code field used to classify a brokerage's intraday bars had been set to a consolidated-aggregate definition instead of the actual exchange definition. The two look similar by name but refer to different things, which was causing the comparison check against other data sources to keep failing.
I switched the definition to the correct one and confirmed the checker passed afterward.
Also: an advisory round on trading strategy questions
Beyond the bug fixes, today also involved several rounds of back-and-forth with an AI advisor over whether to shorten the current holding-period rule.
The advisor's first answer had grouped some data incorrectly, so I had it re-verify, and the final conclusion settled on "not enough grounds to change the current approach." No changes were made to the live account's settings.
In the same thread, I also asked whether it was worth re-running a simulation on past data right away instead of waiting, and the answer came back "no reason to wait" — that'll carry into the next round of work.