본문 바로가기

자동매매

여러 시스템에 흩어진 같은 문제를 빠짐없이 닫는 법 문제 제기: '고쳤다'는 완료가 아니다여러 시스템이 같은 뼈대를 공유하면, 하나에서 발견한 문제는 대개 다른 곳에도 있다. 실제 개발 기록에서는 KR·US·코인 세 시장의 자동매매 시스템에서 같은 종류의 운영 위험이 여러 레포에 공통으로 흩어져 있었다. 원장 불일치, 시세 조회 실패 처리, 계정 동기화, 승인 인가 같은 문제들이 시장별로 다른 레포에 나뉘어 있었다.이때 흔한 착각은 "코드를 고쳤으니 끝났다"는 것이다. 하지만 멀티레포 환경에서 안전 수정은 발견 → 수정 → 배포 → 관찰이라는 사슬 전체가 이어져야 실제로 닫힌다. 커밋 하나가 머지됐다는 사실은 그 사슬의 두 번째 고리일 뿐이다. 세 번째, 네 번째 고리가 빠지면 문제는 조용히 남아 있다.왜 위험한가: 빠지는 시장이 생길 수 있다레포가 하나.. 더보기
테스트 자동화가 실제 계정 잔고를 참조하면 안 되는 이유 문제 제기: 테스트가 실계좌 잔고를 읽으면 무슨 일이 생기나자동매매나 백테스트, 전진검증(walk-forward)을 만들 때 흔히 저지르는 실수가 있다. 실행 권한만 분리하고 자본 기준은 실제 계좌를 그대로 참조하는 것이다. "어차피 주문은 안 나가니까 괜찮다"고 생각하기 쉽다.하지만 가상 자동매매가 실계좌 잔고를 참조하면 포지션 크기 계산이 운영 계좌 상태에 종속된다. 실계좌 잔고가 오르내릴 때마다 테스트의 가상 성과와 위험 규모가 함께 흔들린다는 뜻이다.왜 위험한가: 재현성과 위험 규모가 무너진다실제 개발 과정에서 국내주식 dry-run 자동매매를 추가하며 확인한 점은 이렇다. 가상 포지션 크기를 실계좌 잔고 기준으로 계산하면 다음 문제가 생긴다.재현 불가: 같은 전략을 같은 시점에 돌려도, 실계좌 .. 더보기
EP.24 스캘핑 섀도우 3종 하루 완성기: KR·US·Coin 동시 구현 들어가며: 왜 3종을 하루에 붙일 수 있었나이번 작업의 핵심은 새 전략을 짠 게 아니라, 이미 계약(contract)으로 분리해둔 장부 인프라 위에 전략만 얹은 것입니다. 기존 4장부 도구(book_report·equity_graph·reset·review_delivery)를 슬러그만 shadow_scalp로 바꿔 전면 재사용했고, 그 덕에 신규 코드가 전략(rules)·비용(engine)·데이터 어댑터에 집중될 수 있었습니다.결과적으로 설계 문서(SCALPING_SHADOW_DESIGN.md) 작성 → 3개 레포 병렬 구현 → 리뷰·테스트 → push까지를 하루에 마쳤습니다. 이 글은 그 과정을 시장별로 정리한 개발 기록입니다.설계: 각 시장 2,000만원 가상 장부 + 장마감 리뷰세 시장 모두 공통 .. 더보기
AI 자동화에 사람 검수 단계를 반드시 넣어야 하는 이유 문제 제기: '만드는 것'은 쉽고 '믿는 것'은 어렵다AI에게 자동화 시스템을 맡기면 결과물 자체는 만들어진다. 실제로 자동매매 시스템을 AI로만 개발했을 때도 시스템을 구축하는 것 자체는 어렵지 않았다. 정작 오래 걸린 것은 그다음이었다. 어떤 기준으로 동작할지 정하고, 그게 실제로 통하는지 검증하고 다듬는 과정 말이다.즉, AI 자동화의 진짜 난관은 '만들기'가 아니라 '이게 제대로 도는지 확인하기'다. 그리고 이 확인은 자동화 밖에 있는 사람이 해야 한다.왜 위험한가: 지시대로 됐다고 믿기 어렵다AI에게 그냥 '이렇게 해줘', '이렇게 만들어줘'라고만 지시했더니, 내가 생각했던 방향과 다르게 작업되는 경우가 많았다. 이게 핵심이다. 결과물이 나왔다고 해서 내가 의도한 대로 동작한다는 보장은 없다.의.. 더보기
EP.17 주도주 관찰 시스템을 shadow 단계로 만든 이유 이번에 한 일이번 회차에서는 주도주를 관찰하기 위한 시스템을 새로 붙였습니다. 핵심은 거래대금 강도, 상대강도, 신고가, 추세, 지속성 다섯 가지 신호를 조합해 종목별 점수를 매기고, 그 점수의 변화를 상태로 추적하는 것입니다.중요한 결정은 이 시스템을 shadow 단계로 격리했다는 점입니다. 실주문이나 기존 추천 로직에는 연결하지 않고, 오직 별도의 관찰 경로로만 돌아가도록 분리했습니다.왜 shadow 단계로 격리했나이번 시스템은 실주문이나 기존 추천에 연결하지 않고, 별도의 관찰 경로로 격리해 구축했습니다. 관찰만 하는 경로로 분리해 두면 새 신호 조합이 실전 로직과 뒤섞이지 않고 데이터를 쌓아볼 수 있습니다.종목별 점수와 상태 전이를 저장하는 저장 구조주도주 진입·유지·이탈을 관찰하는 실행기관찰 결.. 더보기
EP.15 shadow-only 모드에서 텔레그램 알림 분리하기 들어가며: 관찰만 하는데 왜 알림이 문제였나이번 글은 shadow-only 모드에서 겪은 알림 정책 문제와 그 해결 과정을 정리한 기록입니다. shadow-only 모드는 실제 주문을 내지 않고 전략의 동작만 관찰하는 실험 상태를 말합니다.문제는 단순했습니다. 가상 관찰을 돌리는 중에도 추천·스캔·수동매매 메시지가 진입·청산 알림과 함께 수신되었습니다. 그러다 보니 실제 행동을 요청하는 메시지와 실험 관찰 결과 알림을 눈으로 구분하기 어려웠습니다.무엇이 문제였는지shadow-only 모드의 취지는 '주문을 내지 않고 지켜보기'입니다. 그런데 가상 관찰 중에도 여러 유형의 메시지가 함께 수신되어 구분이 어려웠습니다.추천·스캔 메시지: 원래는 사람이 판단·행동하도록 유도하는 알림수동매매 메시지: 실제 주문 .. 더보기
EP.14 국내주식 dry-run 자동매매, 가상 자본을 실계좌와 분리한 이유 이번 작업에서 다룬 문제자동매매를 만들 때 실주문 실행은 조심스럽게 다루면서도, 가상 실행(dry-run)의 자본 기준은 소홀히 두기 쉽다. 이번 작업의 핵심은 국내주식 dry-run 자동매매를 추가하면서 가상 자본을 실계좌 자산과 분리한 것이다.가상 자동 실행이 실계좌 잔고를 참조하면, 검증 결과와 위험 규모가 운영 계좌 상태에 종속된다. 그래서 실행 권한만이 아니라 자본 기준까지 분리하는 방향으로 정리했다.실행 권한 분리: 가상과 실주문을 나누다먼저 가상 자동 실행 플래그와 실주문 자동 실행 플래그를 분리했다. 두 실행 경로가 하나의 스위치로 묶여 있으면, 가상 검증 중에 실주문이 나가는 사고 위험이 생긴다.가상 자동 실행: dry-run 경로로만 동작실주문 자동 실행: 별도 플래그로 통제실주문 쪽은.. 더보기
계좌에 돈이 있어도 주문이 안 되는 원인 체크리스트 문제 제기: 돈은 있는데 왜 안 사지나계좌 잔고는 분명히 충분한데 매수가 이뤄지지 않는 경우가 있습니다. 매수 조건에는 맞아떨어졌는데도 사지지 않으면 보통 '돈이 부족한가?'부터 의심하게 됩니다.하지만 잔고와 무관하게 매수가 되지 않는 상황도 있습니다. 자동매매 프로그램을 만들다가 실제로 겪은 사례를 예로 들면, 계좌에 돈이 있어도 한 주 가격이 잔고보다 비싼 종목은 조건이 맞아도 사지지 않았습니다.왜 위험한가: 시장마다 주문 단위가 다르다제가 겪은 원인은 단순했습니다. 프로그램을 한국 주식 기준으로 만들었는데, 미국 주식에 그대로 적용한 것이 문제였습니다.한국 주식은 보통 1주 단위(정수)로 매수합니다.미국 주식은 종목에 따라 소수점 단위로도 매수할 수 있습니다.제 프로그램은 '무조건 정수 단위'로만 .. 더보기

반응형