Quant Trading Automation
전략을 새로 만드는 일보다, 그 전략에 우위가 있는지 검증하고 안전하게 켜고 끄고 기록하는 데 시간을 더 썼습니다. tqt가 검증과 실행을, Fleet이 운영 대시보드를 맡습니다.
프로젝트 흐름
먼저 흐름을 잡으면 이렇습니다.
질문
처음 잡은 문제
처음 문제의식은 단순했습니다. 전략이 맞는지 보기 전에, 그 전략을 안전하게 켜고 끄고 지켜볼 수 있어야 했습니다.
근거
확인한 자료
Fleet에서 브로커 인터페이스, 봇 상태, 설정값, 주문 이력, 로그를 한 흐름으로 묶고 FastAPI와 대시보드로 제어했습니다.
판단
생각이 정리된 부분
다음 질문은 ‘그래서 이 전략에 우위가 있는가’였습니다. tqt에서는 인샘플 성과 대신 walk-forward 아웃오브샘플로만 결과를 보고하도록 백테스트를 다시 설계했습니다.
범위
아직 선을 그은 부분
그 결과 가장 좋은 전략도 매수보유보다 CAGR이 낮다는 사실을 먼저 적게 됐습니다. 지금은 모의 계좌와 함께 소액 실계좌에서도 봇이 돌아가고 /lab에 계좌 구분이 표시되지만, 수익률은 주장하지 않습니다.
01 · 시작
처음 잡은 질문
매매 규칙을 서비스처럼 운영하려면 전략 코드 말고 무엇이 더 필요하고, 그 전략에 우위가 있다는 건 어떻게 확인할 수 있을까?
02 · 근거
제가 확인한 자료
03 · 전개
분석은 이렇게 진행했습니다
- 01
전략과 broker 로직 분리
거래소별 데이터와 주문 처리 차이를 분리하기 위해 브로커 추상화 계층을 설계했습니다.
- 02
상태와 이력의 가시화
봇 상태, 설정, 실행 이력과 운영 로그를 저장하고 FastAPI 서비스와 React 대시보드로 제어했습니다.
- 03
비용을 실측한 백테스트
추정 수수료 대신 계좌의 실제 요율을 API에서 읽어오고, 슬리피지와 익일 시가 체결을 반영해 비용 가정을 실제에 맞췄습니다.
- 04
아웃오브샘플 검증, 페이퍼 트레이딩, 소액 실계좌
5년 학습 · 2년 검증 walk-forward로만 성과를 보고하고, 실제 호가창에 체결시키는 페이퍼 트레이딩으로 운영을 먼저 검증한 뒤 소액 실계좌 운용을 더했습니다.
04 · 결론
숫자에서 읽은 것
walk-forward 아웃오브샘플에서 Faber 이동평균은 CAGR 7.36%, Sharpe 1.01, 최대낙폭 −14.1%였고 decay는 ×1.28이었습니다. 인샘플보다 성과가 낮아지지 않아 과최적화 흔적은 확인되지 않았습니다.
다만 매수보유가 CAGR로는 더 높습니다(8.94%). 전술적 배분이 사는 것은 수익률이 아니라 낙폭입니다. 최대낙폭 −20.1%가 −14.5%로 줄어듭니다.
토스 Open API는 1분봉을 약 4일치만 제공합니다. 인트라데이 전략은 백테스트 자체가 불가능해, 저빈도 일봉 전략은 취향이 아니라 제약에서 나온 선택입니다.
자동매매는 전략 개발뿐 아니라 운영 설계의 문제입니다. 상태 확인, 로그, 파라미터 관리, 킬 스위치, 복구 절차가 함께 있어야 켜둘 수 있습니다.
주장하지 않는 것
- 수익률과 승률을 주장하지 않습니다. 소액 실계좌의 결과도 성과 기록으로 제시하지 않습니다.
- 전략에 우위가 있다고 말하지 않습니다. 가장 좋은 전략도 매수보유보다 CAGR이 낮았습니다.
- 실서비스라고 말하지 않습니다. 소액 실계좌와 모의 계좌에서 봇을 돌리는 개인 프로젝트입니다.
05 · 적용
어디에 활용할 수 있나
수익률을 주장하는 대신, 어떤 조건에서 전략을 켤 수 있고 무엇을 보면 꺼야 하는지를 숫자와 운영 장치로 정리했습니다.
06 · 경계
아직 단정하지 않는 부분
- •실자금 운용은 모의 계좌와 병행하는 소액 계좌 단계이며, 이 포트폴리오는 그 실거래 결과를 성과 근거로 쓰지 않습니다.
- •백테스트 유니버스가 현재 상장된 종목으로 구성돼 생존 편향이 일부 남아 있습니다.
- •2022년에는 검증한 전략 대부분이 손실이었습니다. 주식과 장기채가 함께 빠지는 구간은 이 설계로 방어되지 않습니다.
- •장시간 가동, 주문 실패 처리, 재시작 시나리오는 별도 운영 기준으로 관리해야 합니다.
07 · 근거 화면
표와 그래프로 확인하기
운영 시스템 구조
원자료 확인전략, 브로커 추상화 계층, 실행 데이터, 제어 API와 모니터링의 연결을 보여줍니다. 구조가 구현되어 있다는 근거이며, 수익률·승률·수익성을 증명하지 않습니다.
근거 · Current FastAPI/React architecture and portfolio codebase
모의·실계좌 운영 범위
원자료 확인- 라이브 서버 모의투자모의
- 소액 실계좌 운용 · /lab에 계좌 구분 표시실계좌
- 봇 상태·설정 제어구현
- 실행 이력·운영 로그구현
- 사람이 멈출 수 있는 제어 흐름구현
- 모의 계좌와 소액 실계좌 병행 · 수익률·승률·자본 증가를 주장하지 않습니다.
현재 구현된 운영 기능만 간단히 정리했습니다. 소액 실계좌가 돌고 있지만, 이 표는 실거래 성과나 수익률을 보여주는 자료가 아닙니다.
근거 · Implemented controls in the current FastAPI/React project
walk-forward 아웃오브샘플 결과
보고서 근거| 전략 | 인샘플 CAGR | OOS CAGR | Sharpe | 최대낙폭 | Decay |
|---|---|---|---|---|---|
| Faber | 5.73% | 7.36% | 1.01 | -14.1% | ×1.28 |
| 듀얼 모멘텀 | 7.60% | 7.57% | 0.49 | -30.5% | ×1.00 |
| 매수보유 | 8.94% | 11.10% | 0.97 | -20.1% | ×1.24 |
인샘플이 아닌 아웃오브샘플 결과만 옮긴 표입니다. decay가 1.0 이상이면 검증 구간에서 성과가 무너지지 않았다는 뜻이며, 미래 수익을 보장하지 않습니다. 매수보유의 CAGR이 더 높다는 점도 그대로 남겼습니다.
근거 · tqt project · five-year train, two-year test · 2011–2026 daily bars