손으로 계산하던 안전 시간창을 코드로 옮기고, 실계좌에서 발견한 매매 되돌림도 함께 고쳤다
하루 종일 GPU 실험이 시간창에 걸려 끊겼다
오늘은 새 로컬 모델 후보를 검증하는 실험을 GPU에서 돌리려다가 계속 발이 묶였습니다.
첫 시도는 실행 환경에 필요한 프로그램 경로가 빠져 있어서 곧바로 죽었습니다. 두 번째 시도는 엉뚱한 파이썬 환경으로 실행하는 바람에 필요한 라이브러리가 없어서 또 죽었습니다.
두 버그를 고치고 세 번째로 겨우 실험을 띄웠는데, 이번엔 다른 문제가 나타났습니다. 정규장이 끝나갈 무렵 하루 정산을 처리하는 시간대와 실험이 겹치면서, 실험이 새 종목 처리를 스스로 멈춰버린 것입니다.
멈춘 것 자체는 설계대로 동작한 결과였습니다. 정산 시간대에는 새 작업을 시작하지 않도록 만들어둔 안전장치가 제대로 작동한 것이었습니다.
문제는 그 사실을 한참 뒤에야 알아챘다는 점입니다. 실험이 "완료"라고 찍어서 처음엔 다 끝난 줄 알았는데, 확인해보니 전체 종목의 3분의 1도 못 채운 채 멈춘 상태였습니다.
매번 손으로 계산하던 걸 인프라로 옮겼다
이 실패 패턴을 정리해보니 공통점이 있었습니다. 언제부터 언제까지가 안전한 실행 시간대인지, 매번 사람이 손으로 계산해서 실행 시각과 제한 시간을 정하고 있었습니다.
계산을 틀리거나 빠뜨리는 게 실패의 절반 이상이었습니다. 그래서 이 계산 자체를 코드로 옮기기로 했습니다.
"다음 위험 시간대까지 얼마나 남았는지"와 "지금 시작하면 안전하게 끝날 수 있는지"를 판단하는 함수를 공용으로 만들었습니다. 실험을 실행하는 표준 스크립트도 새로 만들어서, 이 함수를 거쳐 자동으로 제한 시간을 계산하도록 했습니다.
실험이 중간에 멈추더라도 어디까지 처리했는지 기록해두고 이어서 진행할 수 있는 형식도 함께 정리했습니다. 앞으로는 오늘 겪은 것 같은 시간창 충돌이 나더라도, 사람이 매번 계산기를 두드리지 않고도 안전하게 재개할 수 있게 됐습니다.
실계좌에서 발견한 매매 되돌림도 고쳤다
오늘 낮에는 실계좌 쪽에서도 다른 문제가 발견됐습니다. 어떤 종목을 추가로 사들인 지 얼마 안 돼 다시 팔아버리는 매매가 발생한 것입니다.
처음에는 주문 체결이 늦어져서 생긴 일시적인 현상으로 보였습니다. 하지만 다른 AI에게 다시 검증을 맡겼더니, 그 진단이 틀렸다는 게 드러났습니다.
진짜 원인은 구간을 나눠 사고파는 로직에서, 추가 매수가 구간 경계에 너무 가깝게 걸리는 구조였습니다. 가격이 아주 조금만 움직여도 경계를 넘어서 곧바로 매도 신호가 나오는 상황이었습니다.
원인을 확인한 뒤에는 경계 판정에 여유폭을 더 주는 방향으로 로직을 손봤습니다. 기존에 한쪽 매수에만 있던 여유폭을 다른 쪽 매수에도 똑같이 적용하는 방식입니다.
다음 거래일이 시작되기 전에 반영을 마쳤습니다.
오늘 겪은 두 문제는 결이 달라 보이지만 비슷한 교훈을 남겼습니다. 시간창이든 가격 구간이든, 경계에 딱 붙어서 돌아가는 로직은 아주 작은 오차나 흔들림에도 쉽게 넘어간다는 것입니다.
경계 자체를 없앨 수는 없으니, 오늘은 양쪽 다 여유폭을 확보해두는 쪽으로 정리했습니다.
Top comments (0)