Case A02핀테크 · 전략 검증과 운영

Quant Trading Automation

전략을 새로 만드는 일보다, 그 전략에 우위가 있는지 검증하고 안전하게 켜고 끄고 기록하는 데 시간을 더 썼습니다. tqt가 검증과 실행을, Fleet이 운영 대시보드를 맡습니다.

기간 · 2025년~현재

역할 · 개인 프로젝트 · tqt(토스 Open API) · Quant Trading Fleet

원본 · GitHub 저장소

라이브 · 운영 콘솔 보기

프로젝트 흐름

먼저 흐름을 잡으면 이렇습니다.

질문

처음 잡은 문제

처음 문제의식은 단순했습니다. 전략이 맞는지 보기 전에, 그 전략을 안전하게 켜고 끄고 지켜볼 수 있어야 했습니다.

근거

확인한 자료

Fleet에서 브로커 인터페이스, 봇 상태, 설정값, 주문 이력, 로그를 한 흐름으로 묶고 FastAPI와 대시보드로 제어했습니다.

판단

생각이 정리된 부분

다음 질문은 ‘그래서 이 전략에 우위가 있는가’였습니다. tqt에서는 인샘플 성과 대신 walk-forward 아웃오브샘플로만 결과를 보고하도록 백테스트를 다시 설계했습니다.

범위

아직 선을 그은 부분

그 결과 가장 좋은 전략도 매수보유보다 CAGR이 낮다는 사실을 먼저 적게 됐습니다. 지금은 모의 계좌와 함께 소액 실계좌에서도 봇이 돌아가고 /lab에 계좌 구분이 표시되지만, 수익률은 주장하지 않습니다.

01 · 시작

처음 잡은 질문

매매 규칙을 서비스처럼 운영하려면 전략 코드 말고 무엇이 더 필요하고, 그 전략에 우위가 있다는 건 어떻게 확인할 수 있을까?

02 · 근거

제가 확인한 자료

국내상장 글로벌 ETF 8종과 국고채 2종, 2011~2026년 일봉 백테스트
계좌의 실제 수수료율(API 조회), 슬리피지 10bp, 익일 시가 체결을 반영한 비용 가정
walk-forward 아웃오브샘플(5년 학습 · 2년 검증) 성과표와 파라미터 민감도 스윕
KIS와 Binance/CCXT broker interface, 봇 상태·전략 설정·주문 이력·로그
PythonpandasFastAPIReactTypeScriptSQLiteSQLAlchemyDockerToss Open API

03 · 전개

분석은 이렇게 진행했습니다

  1. 01

    전략과 broker 로직 분리

    거래소별 데이터와 주문 처리 차이를 분리하기 위해 브로커 추상화 계층을 설계했습니다.

  2. 02

    상태와 이력의 가시화

    봇 상태, 설정, 실행 이력과 운영 로그를 저장하고 FastAPI 서비스와 React 대시보드로 제어했습니다.

  3. 03

    비용을 실측한 백테스트

    추정 수수료 대신 계좌의 실제 요율을 API에서 읽어오고, 슬리피지와 익일 시가 체결을 반영해 비용 가정을 실제에 맞췄습니다.

  4. 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이 낮았습니다.
  • 실서비스라고 말하지 않습니다. 소액 실계좌와 모의 계좌에서 봇을 돌리는 개인 프로젝트입니다.
해석 시 유의사항: 모의 계좌와 소액 실계좌를 함께 운용하며, 계좌 구분은 /lab에 봇마다 표시됩니다. 백테스트 수치는 과거 데이터 기반 시뮬레이션이지 실거래 기록이 아니며, 수익률·승률·자본 증가를 주장하지 않습니다.

05 · 적용

어디에 활용할 수 있나

수익률을 주장하는 대신, 어떤 조건에서 전략을 켤 수 있고 무엇을 보면 꺼야 하는지를 숫자와 운영 장치로 정리했습니다.

06 · 경계

아직 단정하지 않는 부분

  • •실자금 운용은 모의 계좌와 병행하는 소액 계좌 단계이며, 이 포트폴리오는 그 실거래 결과를 성과 근거로 쓰지 않습니다.
  • •백테스트 유니버스가 현재 상장된 종목으로 구성돼 생존 편향이 일부 남아 있습니다.
  • •2022년에는 검증한 전략 대부분이 손실이었습니다. 주식과 장기채가 함께 빠지는 구간은 이 설계로 방어되지 않습니다.
  • •장시간 가동, 주문 실패 처리, 재시작 시나리오는 별도 운영 기준으로 관리해야 합니다.

07 · 근거 화면

표와 그래프로 확인하기

운영 시스템 구조

원자료 확인
전략 봇
KIS·CCXT broker
실행·상태 저장
FastAPI 제어
React 모니터링

전략, 브로커 추상화 계층, 실행 데이터, 제어 API와 모니터링의 연결을 보여줍니다. 구조가 구현되어 있다는 근거이며, 수익률·승률·수익성을 증명하지 않습니다.

근거 · Current FastAPI/React architecture and portfolio codebase

모의·실계좌 운영 범위

원자료 확인
  • 라이브 서버 모의투자모의
  • 소액 실계좌 운용 · /lab에 계좌 구분 표시실계좌
  • 봇 상태·설정 제어구현
  • 실행 이력·운영 로그구현
  • 사람이 멈출 수 있는 제어 흐름구현
  • 모의 계좌와 소액 실계좌 병행 · 수익률·승률·자본 증가를 주장하지 않습니다.

현재 구현된 운영 기능만 간단히 정리했습니다. 소액 실계좌가 돌고 있지만, 이 표는 실거래 성과나 수익률을 보여주는 자료가 아닙니다.

근거 · Implemented controls in the current FastAPI/React project

walk-forward 아웃오브샘플 결과

보고서 근거
전략인샘플 CAGROOS CAGRSharpe최대낙폭Decay
Faber5.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