master
StockBot v3.0
KIS Open API를 이용한 한국 주식 단타 자동매매 프로젝트입니다. 현재는 실거래 전 검증 단계로, 모의투자와 DRY_RUN 중심으로 신호 품질과 운영 안정성을 확인하고 있습니다.
기획 의도
이 프로젝트의 목표는 사람이 매일 반복해서 하던 단타 후보 탐색, 시장 분위기 판단, 진입/청산 기록, 장후 복기를 자동화하는 것입니다. 다만 실시간 매매 판단을 AI에게 맡기지는 않습니다. AI는 장 전/장중/장후 시장을 분석하고 제안서를 만드는 역할만 하고, 실제 진입과 청산은 코드에 고정된 규칙이 결정합니다.
핵심 원칙은 세 가지입니다.
- 손절은 항상 최우선입니다.
14:50강제 청산은 변경하지 않습니다.- 실거래 전에는 충분한 모의투자 기간과 성과 조건을 통과해야 합니다.
전체 흐름
하루 운영은 다음 흐름으로 설계되어 있습니다.
| 시간 | 흐름 | 내용 |
|---|---|---|
| 08:15 | 장 전 분석 | 뉴스, 수급, 업종 분위기를 분석해 daily_context.json 생성 |
| 08:30 | 봇 시작/준비 | AI 컨텍스트 로드, 유니버스 선정 |
| 08:50 | 목표가 계산 | 전일 고저와 당일 시가 기반, open=0이면 계산 제외 |
| 09:00 | 오전 매매 | 변동성 돌파 조건과 AI 컨텍스트 필터를 함께 확인 |
| 09:00-15:05 | Watchdog | 5분마다 봇 생존 감시, 15:10 결산 직후 재시작 금지 |
| 11:20 | 장중 분석 | 오전 결과와 현재 시장을 비교해 midday_context.json 생성 |
| 14:00 | 신규 진입 종료 | 새 진입은 막고 보유 포지션 청산 감시만 계속 |
| 14:50 | 강제 청산 | 모든 포지션 정리 |
| 15:30 | 장후 복기 | 일일 리포트와 전략 제안서 작성 |
| 16:00 | 학습 파이프라인 | 거래 데이터와 외부 데이터를 모아 관찰용 모델 갱신 |
현재 운영 상태
- 현재 모드:
KIS_MOCK=true,DRY_RUN=true - 전략: 변동성 돌파(
K=0.5) - 진입 시작:
09:20 - 강제 청산:
14:50 - 일일 결산:
15:10 - Watchdog:
09:00-15:05, 5분 간격 - DB: SQLite (
data/stockbot.db) - 알림: Discord Webhook
- AI/ML: 시장 분석과 관찰용 점수 기록까지만 사용
운영 모드는 아래처럼 나뉩니다.
| KIS_MOCK | DRY_RUN | 의미 |
|---|---|---|
| true | true | 신호 확인만 수행, 주문 없음 |
| true | false | 모의투자 주문 수행 |
| false | false | 실거래 주문 수행 |
현재 실거래는 승인되지 않았습니다.
주요 구성
app/ 매매 봇, 전략, 리스크, KIS API, DB, 알림 코드
scripts/ 스케줄러, 봇 시작, 데이터 수집, 학습 스크립트
data/ 로컬 실행 데이터와 SQLite DB
logs/ 실행 로그
models/ 관찰용 ML 모델 산출물
reports/daily/ 장후 일일 리포트
reports/proposals/ 수동 승인이 필요한 전략 제안서
자주 쓰는 명령
python -m pip install -r requirements.txt
python test_connection.py
python app/main.py
python scripts\start_bot.py
powershell -ExecutionPolicy Bypass -File scripts\setup_scheduler.ps1
powershell -ExecutionPolicy Bypass -File scripts\run_training_pipeline.ps1
에이전트 운영 문서
AGENTS.md: Codex가 읽는 운영 지침CLAUDE.md: Claude Code가 읽는 운영 지침
두 파일은 에이전트가 정확하게 행동하기 위한 상세 규칙입니다. 일반적인 프로젝트 개요는 이 README만 보면 됩니다.
주의사항
.env, 토큰, DB, 로그 파일은 Git에 올리지 않습니다.- 전략 파라미터 변경은 원칙적으로 장후 제안서에 기록하고 사람이 승인합니다.
FORCE_EXIT = "14:50"은 절대 변경하지 않습니다.- 실거래 전에는 모의투자 결과, 손실 제한, 주문 안정성 검증이 필요합니다.
Description
Languages
Python
87.8%
PowerShell
10.1%
Shell
1.5%
Batchfile
0.3%
Dockerfile
0.3%