본문으로 건너뛰기
전체 프로젝트
개발 중 · 모의 투자 중

Quant Lab

토스증권 Open API의 미국 주식 일봉으로 규칙 기반 전략을 돌리고, 백테스트로 비교하고, 정해진 시각에 모의 투자합니다. 실제 주문은 내지 않고, 판단 이유는 모두 쉬운 말로 보여 줍니다.

라이트 모드의 Quant Lab 홈. 모의 투자 자산을 큰 숫자와 그래프로 보여 주고 옆에 봇 목록이 있다
무엇
웹 앱 (설치 가능) + 워커 · 개인용
시작
2026년
역할
혼자
운영 환경
Docker Compose · 비공개, Tailscale로만 접속

소개

최종 목표는 자동매매입니다. 첫 목표는 일부러 작게 잡았습니다. 실제 주문으로 가는 코드가 아예 없는 상태에서, 봇이 정해진 시각의 모의 투자를 2주 동안 사람 손 없이 이어 가는 것입니다.

주식을 잘 몰라도 따라올 수 있게 만들었습니다. 전략에는 별명이 있고(“느긋한 추세 타기”는 50/200 골든크로스), 설정은 선택지로 고르고, 판단은 “상승 흐름이에요. 내일 장이 열리면 QQQ를 사요”처럼 보여 줍니다. 홈 화면은 큰 금액과 그래프가 중심이고, 라이트·다크를 지원하며, 휴대폰 홈 화면에 추가할 수 있습니다.

개인용 도구라 링크는 없습니다. 토스 시세 데이터는 제3자에게 배포할 수 없어서 스크린샷은 합성 데이터입니다.

주요 기능

일봉 데이터
종목마다 전체 기간을 PostgreSQL에 받아 두고 누락·중복·휴장일·이상치를 검사합니다. 수정주가가 바뀌면 다시 받습니다.
백테스트
잘 알려진 전략 4가지(골든크로스, Faber 200일선, Connors RSI(2), 터틀 돌파)를 그냥 들고 있었을 때와 연도별로 비교합니다.
정기 모의 투자
미국 장 마감 2시간 뒤 워커가 확정된 봉으로 판단하고, 다음 거래일 시가에 수수료와 슬리피지를 넣어 체결합니다.
텔레그램 알림
매매 신호, 체결, 경고, 그날의 평가 자산, 그냥 보유와 비교한 주간 리포트. 워커나 서버가 멈추면 외부 heartbeat가 알려 줍니다.
실시간 가격, 레버리지 ETF
미국 장중에는 현재가와 아직 끝나지 않은 오늘 봉을 보여 줍니다. 판단은 여전히 장 마감을 기다립니다. 2배·3배 ETF도 전용 검사와 함께 지원합니다.
어디서나 보기 쉽게
라이트·다크 테마, 국내 앱처럼 오르면 빨강·내리면 파랑, 홈 화면에 추가할 수 있는 모바일 화면.
전략 시험 화면. 전략 카드 4개, 종목, 기간, 한 문장으로 정리한 결과
그냥 보유와 비교한 백테스트와 연도별 결과
50일·200일 평균선과 사고판 날이 보이는 가격 차트와 거래 내역
다크 모드 홈 화면
휴대폰에서 본 가격 차트와 거래

구성

백엔드
Python 3.14 · uv · FastAPI · Pydantic v2 · SQLAlchemy 2 · Alembic · pandas
프런트엔드
React · TypeScript · Vite · TanStack Query · Lightweight Charts
데이터
PostgreSQL 17 · 토스증권 Open API (읽기 전용) · exchange_calendars
인프라
Docker Compose · AWS Lightsail (Terraform) · Tailscale · GitHub Actions
품질
pytest · ruff · mypy (strict) · oxlint

메모

백테스트와 봇은 같은 함수

판단과 체결은 백테스트와 워커가 같은 코드를 씁니다. 과거 거래일마다 정기 실행을 재생해 보니, 실제 QQQ 데이터에서 체결까지 백테스트와 똑같았습니다.

오늘 봉은 아직 끝나지 않았다

토스는 미국 장이 열리기도 전부터 그날 봉을 채워 내려줍니다. 장 마감 2시간이 지난 봉만 쓰고, 나중에 값이 바뀌면 다시 받습니다.

몇 번을 재시작해도 주문은 한 번

봇·종목·거래일 유니크 키, 봇마다 대기 주문은 하나, advisory lock으로 워커는 하나만. 같은 봉을 다시 평가해도 아무 일도 일어나지 않습니다.

추세 추종이 주는 건 수익보다 안정

2000년부터 QQQ로 보면 50/200 크로스는 연 10.5%, 최대 낙폭 −36%, 그냥 보유는 연 8.1%, −83%였습니다. 2010년부터 보면 수익률은 그냥 보유가 더 높습니다.

투자 조언이 아닙니다. 모든 주문은 모의 체결이고, 스크린샷은 합성 데이터입니다.