주제 조사

260405 퀀트 2

the-rich 2026. 4. 12. 01:19

0. 독서를 하며 느끼는 점

어떻게 만들어야하지에 대한 의문 계속 남아있음.

그래서 유투브 탐색해서 참고

  • 퀀트 자동매매 시스템1단계: 시스템 구조 설계
    프로젝트/
    ├── config.py              # 전역 설정, 관심종목, 슬롯 설정
    ├── .env                   # API 키, 계좌정보, 텔레그램 토큰
    ├── stock_optimizer.py     # 핵심 백테스팅 엔진 (44개 전략)
    ├── optimization_results/  # 종목별 최적 전략 저장 (JSON)
    ├── collector.py           # 데이터 수집 (pykrx, yfinance)
    ├── kis_api.py             # 한국투자증권 API 연결
    ├── monitoring_runner.py   # 실시간 모니터링 + 자동매매
    ├── backtest_runner.py     # 관심종목 일괄 백테스트
    └── dashboard.py           # Streamlit 대시보드
    

    2단계: 관심종목 및 슬롯 설정
    # 국내 종목
    KR_STOCKS = ["005930", "035420", "051910", ...]
    # 삼성전자, 네이버, LG화학, 포스코홀딩스, 현대차, 카카오 등
    
    # 미국 종목
    US_STOCKS = ["AAPL", "GOOGL", "NVDA", "MSFT", "PLTR",
                 "AVGO", "UNH", "CEG", "JOBY", "NKE", "TTD", ...]
    
    # 슬롯 설정
    SLOT_COUNT = 5           # 슬롯 개수 (기본값)
    SLOT_USAGE_RATIO = 0.95  # 슬롯당 예수금의 95% 사용
    
    매매순서
    1. 매도 먼저 — 매도 시그널이 난 종목을 먼저 팔아서 슬롯을 비움
    2. 빈 슬롯 확인 — 몇 개의 슬롯이 비어있는지 파악
    3. 매수 실행 — 매수 시그널 종목 중 샤프레이시오 높은 순으로 빈 슬롯에 하나씩 채움
    슬롯 기반 분산투자 예시 (예수금 1,000만원 기준)
슬록 배분 금액
1 컨스텔레이션에너지 190만원 샤프레이시오 1위
2 팔란티어 190만원 샤프레이시오 2위
3 브로드컴 190만원 샤프레이시오 3위
4 SK하이닉스 190만원 샤프레이시오 4위
5 애플 190만원 샤프레이시오 5위

 

3단계: 44개 전략 구성 이해

① 평균회귀 전략 (RSI + 볼린저밴드)

  • 과매도 구간 매수 → 평균 회귀 시 매도
  • RSI : 최근 N일 동안 상승한 힘 vs 하락한 힘"을 0~100 사이 숫자로 압축한 것이에요. 100에 가까울수록 계속 올라온 것, 0에 가까울수록 계속 떨어진 것입니다. 70 이상은 "이미 너무 많이 올랐다(= 곧 내릴 수 있다)"는 과매수 신호, 30 이하는 "너무 많이 떨어졌다(= 곧 반등할 수 있다)"는 과매도 신호예요
  • 볼린저밴드 : 이동평균선(중간선) 위아래로 "변동성 띠"를 두른 것이에요. 주가가 이 띠 안에서 머무는 시간이 약 95%입니다. 하단을 이탈하면 "지금 비정상적으로 많이 떨어진 것", 상단을 돌파하면 "비정상적으로 많이 오른 것"으로 판단해요. 표준편차 배수를 높이면 띠가 넓어져서 신호가 덜 나오고, 낮추면 띠가 좁아져서 신호가 자주 납니다.
매수 조건: RSI < 과매도 기준 OR 가격 < 볼린저밴드 하단
매도 조건: RSI > 과매수 기준 OR 가격 > 볼린저밴드 상단

 

② 추세추종(Trend Following) 전략 (이동평균선 크로스)

  • 골든크로스 매수, 데드크로스 매도
  • MA : 최근 N일간 종가를 평균 낸 선이에요. 단기 MA(예: 20일)는 최근 흐름에 빠르게 반응하고, 장기 MA(예: 60일)는 큰 흐름을 느리게 따라갑니다. 골든크로스는 단기선이 장기선을 아래에서 위로 뚫는 것으로 "이제 상승 추세 시작"을 의미하고, 데드크로스는 반대로 위에서 아래로 뚫어 "하락 추세 시작"을 의미합니다.
매수 조건: 단기 MA > 장기 MA (골든크로스)
매도 조건: 단기 MA < 장기 MA (데드크로스)

 

③ 모멘텀 전략 (ROC 활용)

  • 상승 모멘텀 포착 후 추종
  • ROC : ROC는 "N일 전보다 현재 가격이 몇 % 올랐냐"를 나타냅니다. 예를 들어 20일 전 가격이 100원이고 지금 107원이면 ROC = +7%예요. 임계값(threshold)은 "ROC가 이 수치 이상일 때만 모멘텀이 있다고 판단하겠다"는 기준선입니다. 임계값을 높게 잡으면 정말 강한 상승세만 잡고, 낮게 잡으면 작은 상승에도 반응합니다. 시스템이 종목마다 최적 임계값을 자동으로 찾아주는 것이 바로 그리드 서치예요.
매수 조건: ROC > 임계값 (상승 모멘텀 확인)
매도 조건: ROC < 임계값 (모멘텀 소멸)

 

④ 기타 전략 (MACD, 스토캐스틱, CCI, DMI/ADX, 이격도, 투자심리도, 매물대 등)


4단계: Stock Optimizer 백테스트 실행

파라미터 그리드 서치 범위

RSI 기간 14일 7 ~ 20일
과매도 기준 30 25 ~ 35
과매수 기준 70 65 ~ 80
볼린저밴드 기간 20일 15 ~ 25일
볼린저밴드 표준편차 2.0 1.5 ~ 2.5
모멘텀 기간 - 10 ~ 60일
ROC 임계값 0.05 0.1 ~ 0.3

 

백테스트 실행 흐름

1. 종목 선택 (단일 or 전체 관심종목)
2. 백테스트 기간 설정 (기본 10년)
3. 44개 전략 × 다양한 파라미터 조합 그리드 서치
4. 각 조합별 백테스트 실행
5. 샤프레이시오 기준 최적 전략 선정
6. optimization_results/{종목코드}.json 저장

 

성과 지표 해석

  • 샤프레이시오: 위험 대비 수익률 (2 이상=매우 좋음, 1~2=좋음)
  • MDD(Max DrawDown): 최대 낙폭 비율 (낮을수록 안정적)
  • 승률: 매매 중 수익 거래 비율
  • 총수익률: 백테스트 기간 누적 수익

 

 

5단계: API 연동 설정

한국투자증권 API 설정 (.env)

KIS_APP_KEY=발급받은_앱키
KIS_APP_SECRET=발급받은_시크릿
KIS_ACCOUNT=계좌번호
KIS_ACCOUNT_SUFFIX=계좌번호_뒷자리

텔레그램 봇 설정

1. 텔레그램에서 @BotFather 검색
2. /newbot 입력
3. 봇 이름 및 username 설정
4. 발급된 Token을 .env에 저장
5. 채팅방 Chat ID 확인 후 .env에 저장

.env 최종 구성

TELEGRAM_BOT_TOKEN=xxx
TELEGRAM_CHAT_ID=xxx
KIS_APP_KEY=xxx
KIS_APP_SECRET=xxx
KIS_ACCOUNT=xxx
AUTO_TRADE=true   # 자동매매 on/off
SLOT_COUNT=5      # 환경변수로 슬롯 수 오버라이드 가능

6단계: 모니터링 러너 실행

동작 흐름

[60분 주기 반복]
    │
    ├─ 1. 각 종목 현재가 수집 (collector.py)
    ├─ 2. optimization_results에서 최적 전략 로드
    ├─ 3. 매수/매도 시그널 계산
    ├─ 4. 장 운영 시간 확인
    │      ├─ 한국: 09:00 ~ 15:30
    │      └─ 미국: 23:30 ~ 06:00 (서머타임 22:30~)
    ├─ 5. 매도 시그널 먼저 실행 (슬롯 비우기)
    ├─ 6. 매수 시그널을 샤프레이시오 순으로 빈 슬롯에 매수
    └─ 7. 텔레그램으로 결과 전송

자동매매 실행 코드 흐름 (kis_api.py)

from kis_api import KisAPI

api = KisAPI()
price = api.get_current_price("035420")  # 현재가 조회
api.buy_stock("035420", quantity=1)       # 매수 실행
api.sell_stock("035420", quantity=1)      # 매도 실행

7단계: 대시보드 확인

streamlit run dashboard.py

대시보드에서 확인 가능한 항목들입니다.

  • 관심종목 전체 백테스트 결과 (샤프레이시오 순 정렬)
  • 종목별 수익률, 승률, 거래수, MDD
  • 전략 분포 차트 (평균회귀 / 추세추종 / 모멘텀 비율)
  • 샤프레이시오 vs 수익률 산점도
  • 종목별 매수/매도 시그널 차트
  • 현재 시그널 현황 (매수 / 매도 / 홀드)

 

운영 팁

우선순위 판단 기준

  1. 샤프레이시오 1.0 이상 종목 우선
  2. MDD가 낮은 종목 우선
  3. 백테스트 승률 높은 전략 우선

주의사항

  • 백테스트 결과가 미래 수익을 보장하지 않음
  • 초기엔 AUTO_TRADE=false로 시그널만 모니터링
  • 충분한 검증 후 자동매매 활성화 권장

so 독서와 Youtube 병행 필요

  • 책은 투자 알고리즘 설정 시 어떤 요소들을 고려해야하는지 인사이트를 주는데 도움.
  • Youtube는 실질적으로 시스템을 만드는 데 도움.

 

1. Claude Code vs. Open Claw

1. Claude Code: 프로그램 '개발'에 특화된 AI 파트너

  • 역할: 터미널이나 에디터(VS Code 등)에 내장되어 직접 코드를 짜주는 수석 개발자
  • 특징: 증권사 API 연동, 복잡한 매매 알고리즘 작성, 백테스트 환경 구축 등 실제 코드를 작성하고 버그를 잡는 데 특화되어 있습니다. 프로젝트 전체의 파일 구조와 맥락을 이해하고 코드를 수정하기 때문에, 백지상태에서 주식 매매 프로그램의 뼈대를 만들고 기능을 구현하는 데 가장 좋은 선택입니다.

2. Open Claw: 24시간 '운영과 자동화'에 특화된 에이전트

  • 역할: 내 컴퓨터나 서버에 상주하며 끊임없이 백그라운드에서 작업을 수행하는 자율형 AI 비서
  • 특징: 텔레그램, 디스코드 등 메신저와 연동하는 프레임워크에 강점이 있습니다. 프로그램 자체를 바닥부터 코딩하기보다는, 완성된 매매 로직을 24시간 구동하면서 "현재 수익률을 텔레그램으로 보고해 줘"라거나 외부에서 메신저로 "지금 보유 종목 전량 매도해 줘" 같은 운영 및 통제 시스템으로 쓰기에 좋습니다.

추천하는 개발 전략: 두 도구의 조합

주식 자동 매매 프로그램은 '안전하고 정확한 코드'와 '안정적인 24시간 구동 환경'이 모두 필요하므로, 두 도구의 장점을 모두 살리는 방향을 추천합니다.

  1. 제작 (Claude Code): 먼저 Claude Code에게 지시하여 파이썬이나 Node.js로 주식 데이터 수집, 조건 검색, 매수/매도 로직 등의 핵심 코드를 완성합니다.
  2. 운영 (Open Claw): 완성된 코드를 Open Claw 환경에 올려 24시간 구동시키고, 텔레그램 등으로 봇의 상태를 실시간으로 모니터링하거나 원격 지시를 내리는 시스템을 구축합니다.

2. 어느 API를 쓸까?

1. 개발 편의성 1위: 한국투자증권 (KIS Developers)

현재 개발자들 사이에서 가장 추천을 많이 받는 API입니다.

  • 장점: 최신 트렌드에 맞게 REST API와 WebSocket(웹소켓) 방식을 지원합니다. HTTP 요청으로 데이터를 주고받기 때문에 파이썬, Node.js 등 어떤 언어로든 쉽게 개발할 수 있습니다. 특히 맥(Mac)이나 리눅스 환경에서도 아무 문제 없이 돌아간다는 것이 엄청난 강점입니다.
  • 단점: 키움증권에 비해 개인 개발자들의 예제 코드나 커뮤니티 자료가 상대적으로 조금 적은 편입니다. (하지만 최근 몇 년 새 자료가 아주 많아졌습니다.)

2. 전통의 강자 & 방대한 데이터: 키움증권 (Open API+)

국내 주식 자동 매매 생태계의 '고인물'이자 표준 같은 존재입니다.

  • 장점: 검색하면 나오는 거의 모든 주식 자동 매매 튜토리얼이나 유튜브 강의가 키움증권을 기준으로 되어 있습니다. 참고할 소스코드가 무궁무진하고, 제공되는 데이터의 양과 질이 뛰어납니다.
  • 단점: 개발 환경이 굉장히 까다롭습니다. 반드시 윈도우(Windows) OS를 써야 하고, 파이썬도 32비트 버전을 설치해야만 구동되는 구형 방식(COM/OCX)을 사용합니다. 맥북을 주력으로 쓰신다면 가상머신을 돌려야 하는 번거로움이 있습니다.

3. 익숙함과 수수료 혜택: 미래에셋증권 등 주거래 증권사

  • 기존에 미래에셋증권의 MTS를 사용하시거나 CMA 계좌를 통한 수수료 혜택 등을 염두에 두고 계셨다면, 해당 증권사의 API(m.Club 등)를 활용하는 것도 좋은 접근입니다.
  • 계좌 개설이나 자금이체 같은 번거로운 초기 세팅을 줄일 수 있고, 익숙한 환경에서 실거래를 모니터링하기 좋다는 장점이 있습니다.

3. 어느 라이브러리를 쓸까?

1. 미국 주식 및 글로벌 ETF 데이터

  • yfinance (야후 파이낸스 기반 파이썬 라이브러리):
    • 야후 파이낸스의 데이터를 코드 몇 줄로 쉽게 가져올 수 있는 전 세계적 표준 라이브러리입니다.
    • 용도: 미국 주식과 ETF의 과거 가격 데이터(일봉, 분봉 등)를 수집하고 백테스트(과거 데이터로 수익률 검증)를 돌려보는 데 가장 완벽합니다.
  • Financial Modeling Prep (FMP) 또는 Alpha Vantage:
    • 무료 할당량을 제공하는 강력한 REST API 서비스들입니다.
    • 용도: 단순 가격뿐만 아니라 기업의 재무제표(PER, PBR, 매출액 등), 실적 발표 데이터 등을 가져올 때 매우 유용합니다.
  • FRED (미국 연방준비은행 경제 데이터):
    • 용도: ETF 투자 전략을 짤 때 필수적인 거시경제 지표(금리, 환율, 인플레이션율 등)를 API로 제공합니다.

2. 국내 주식 데이터

  • FinanceDataReader (FDR):
    • 한국 주식 시장을 위해 만들어진 강력한 파이썬 오픈소스 라이브러리입니다. 한국거래소(KRX), 네이버 금융 등의 데이터를 알아서 수집해 줍니다.
    • 용도: 국내 주식 및 ETF의 가격 데이터와 종목 코드(티커) 목록을 한 번에 정리해서 가져올 때 필수적으로 사용됩니다.
  • pykrx:
    • 용도: 단순 가격을 넘어 외국인/기관의 순매수 데이터, 공매도 현황, 투자자별 거래 실적 등 국내 시장 특유의 디테일한 수급 데이터를 긁어올 때 강력합니다.

3. 실시간 시세 및 매매 실행 (가장 중요)

  • 증권사 API (예: 한국투자증권 Open API):
    • 앞서 언급된 외부 데이터들은 주로 '과거 데이터 분석'이나 '종목 발굴'에 쓰입니다.
    • 하지만 실제로 프로그램이 켜져서 "지금 당장 얼마인가?"를 확인하고 "지금 이 가격에 매수/매도 주문을 넣어라"라고 지시할 때는 무조건 증권사 API에서 제공하는 웹소켓(WebSocket) 실시간 데이터를 활용해야 속도 지연과 오류를 막을 수 있습니다. 한국투자증권의 경우 국내와 미국 주식 실시간 시세를 모두 API로 제공합니다.

추천하는 데이터 설계 구조

  1. 분석 및 백테스트: yfinance와 FinanceDataReader를 사용해 과거 데이터를 모아 매매 로직을 검증합니다.
  2. 실전 자동 매매: 검증된 로직을 바탕으로, 실제 장이 열렸을 때는 증권사 API 하나만 연결하여 실시간 시세를 받고 매매 주문을 처리합니다.

4. 한국투자증권 API 연결부터 시작

https://apiportal.koreainvestment.com/intro

한국투자증권 홈페이지에 GITHUB와 SWAGGER같은 TESTBED도 제공해주는데 아주 친절히 나와있음

 

 

※ 이 글은 개인적인 공부 및 정보 공유 목적에서 작성된 내용으로, 투자 권유나 재정적 조언이 아닙니다.

※  시장 상황은 언제든 변할 수 있으며 글의 내용은 작성자의 주관적 해석이 포함되어 있습니다.

※  투자에 따른 모든 결과와 책임은 투자자 본인에게 있으니, 반드시 본인의 판단과 추가적인 검토를 거쳐 결정하시기 바랍니다.

'주제 조사' 카테고리의 다른 글

260412_주간 현황  (1) 2026.04.12
260412_퀀트 3  (0) 2026.04.12
260405_브라질 경제 현황 종합 분석 (2023~2026년)  (0) 2026.04.05
260328_K-콘텐츠 시장 개요  (0) 2026.03.28
260328_퀀트1  (0) 2026.03.28