키움 API로 자동매매 하던 사람이
멀티계좌 ETF 관리 도구를 만드는 이유
스프레드시트의 기술적 한계를 직접 겪고 나서야, 자동매매 때 쌓은 구조가 여기서도 필요하다는 걸 알았습니다.
키움 OpenAPI로 자동매매 프로그램을 직접 만들어서 쓴 경험이 있습니다.
주문 로직 작성하고, 체결 통보 받고, 미체결 관리하고, 리밸런싱 타이밍에 맞춰 종목 교체하는 구조까지 직접 붙였습니다. 그러다 한동안 자동매매를 내려놓고 ETF 장기투자로 방향을 바꿨습니다. "변동성 대비 유지 비용이 너무 크다"는 판단이었습니다.
그리고 ETF 운용을 시작했더니, 예상하지 못했던 문제가 생겼습니다.
계좌가 이렇게 많아질 줄 몰랐습니다
ISA, 연금저축, IRP, 일반 계좌 — 세금 혜택 구조를 따라가다 보면 계좌가 금방 여러 개가 됩니다. 배우자 계좌, 자녀 계좌까지 포함하면 멀티계좌 관리 포인트는 단순 합산이 아닙니다.
자동매매를 할 때는 계좌가 한두 개였습니다. 주문 대상이 명확했고, 잔고 조회도 단순했습니다.
전략 자체는 단순합니다. 목표 비중 정하고, 분기에 한 번 리밸런싱. 그런데 계좌가 여러 개가 되는 순간 실행 복잡도가 올라갑니다. 계좌마다 목표 비중이 다르고, 투자 가능 ETF 범위도 다르고, 납입 여력도 제각각입니다.
스프레드시트로 해결하려 했고, 기술적으로 막혔습니다
구글 스프레드시트로 멀티계좌 관리 시트를 만들었지만, 한국 ETF 현재가 자동 연동과 키움 REST API 잔고 동기화에서 현실적인 한계를 만났습니다.
처음엔 구글 스프레드시트로 관리 시트를 만들었습니다. 계좌별 잔고 탭, 비중 계산 탭, 주문 계획 탭. 꽤 공들여 만들었고 처음엔 잘 됐습니다.
문제는 데이터 소스였습니다.
1. 제 시트 환경에서는 한국 ETF 현재가를 안정적으로 가져오기 어려웠습니다
ETF 현재가를 자동으로 끌어올 방법을 찾지 못했습니다. HTS 열고, 확인하고, 셀에 수동 입력. 계좌가 많아질수록 이 작업이 길어집니다.
2. 잔고를 REST API로 가져올 수는 있지만 시트에 붙이기가 귀찮습니다
키움 REST API로 계좌 잔고를 조회하는 로직은 만들 수 있습니다. 그런데 스프레드시트에 연동하려면 별도 작업이 필요하고, 그 귀찮음이 결국 수동 입력으로 고착됩니다.
3. 계좌 탭을 잘못 보고 주문을 낼 뻔했습니다
배우자 계좌에 넣어야 할 ETF를 내 계좌 주문 창에서 실행하려 했습니다. 주문 직전에 확인하고 멈췄지만, 그 순간 자동매매 시절 계좌 혼동 없이 주문 대상을 명확히 구분했던 구조가 여기서도 필요하다는 걸 느꼈습니다.
=GOOGLEFINANCE("KRX:069500") # → #N/A 반환 (제 시트 기준)
# 결국 이렇게 됩니다
# 1. HTS 켜기 → 2. ETF 현재가 확인 → 3. 셀에 수동 입력 → 4. 반복
자동매매에서 쌓은 구조가 여기서도 필요했습니다
키움 REST API 기반 자동매매에서 구현했던 계좌 분리·잔고 추적·주문 검토 흐름이, ETF 멀티계좌 리밸런싱에도 그대로 필요하다는 걸 깨달았습니다.
자동매매를 개발할 때 해결했던 문제들이 있습니다.
- 계좌별 잔고·주문/체결 상태 추적
- 계좌 혼동 없이 주문 대상 명확히 구분
- 실행 전 검토 → 확인 → 실행 흐름 분리
- 계좌별 잔고 자동 조회 (REST API)
- 계좌 소유자 명확히 표시된 주문 구분
- 리밸런싱 주기에 맞춘 검토 → 확인 → 실행
초단타처럼 실시간 판단이 핵심은 아닙니다. 다만 주문이 나간 뒤 체결/미체결 상태는 정확히 추적해야 합니다. 월 1회 또는 분기 1회 리밸런싱 타이밍에, 여러 계좌를 한 화면에서 검토하고 실행하는 구조가 필요합니다.
키움 REST API로 계좌별 잔고를 가져오고, 목표 비중과 현재 비중을 계산해서 주문 계획을 보여주고, 계좌 소유자가 명확히 표시된 상태에서 확인 후 실행하는 구조입니다. 자동매매 코드를 그대로 쓰지는 않지만, 그때 만들었던 API 연결 구조와 상태 관리 방식이 기반이 됐습니다. 아직 내부 검증 단계입니다.
💬 비슷한 상황을 겪은 분이 있다면
키움 API 경험이 있는데 ETF 장기투자로 넘어온 분,
또는 멀티계좌 관리 방법을 고민 중인 분이 있다면 어떻게 풀고 계신지 궁금합니다.
스프레드시트 이외의 방법을 쓰고 있거나, 비슷한 이유로 직접 도구를 만들어본 경험이 있으면
댓글이나 메일로 알려주세요.
댓글 없음:
댓글 쓰기