feat: Add DART strategy and related configurations

ㅇ
Changes:
- Introduced the DART strategy to the trading system, including its configuration and integration into the existing framework.
- Updated the database schema to include DART-specific tables for disclosures and watchlists.
- Enhanced the backtesting and parameter search functionalities to support the DART strategy.
- Implemented new rules for browser verification and API interactions to ensure compliance with the updated DART strategy.

Impact:
- These additions expand the trading capabilities of the system, allowing for more comprehensive analysis and execution of DART-related strategies, while maintaining system integrity and performance.
This commit is contained in:
Your Name
2026-07-21 07:50:24 +09:00
parent 74db49149f
commit 61bec4bd1d
86 changed files with 4811 additions and 297 deletions

182
docs/계정.md Normal file
View File

@@ -0,0 +1,182 @@
# 계정 · 슬롯 · 스케일업
> **대화 정리 (2026-07-19)** — 시드/복리 가정, 슬롯 한도, 전략별 자본 격리, **계정 2개 운용** 시 슬리피지·용도 분리.
> 세금·수수료·슬리피지는 표에 미반영(순수익 가정이면 Gross는 더 높게 잡아야 함).
관련: [정합성.md](./정합성.md)
---
## 0. 한 줄 결론
| 주제 | 결론 |
|------|------|
| 같은 로직·같은 종목·계정 2개 동시 매수 | 시장엔 **슬롯×2 한 방**과 같음 → 중소형주 **슬리피지·자가당착** |
| 슬롯 올리기 (1천~20만 원대) | **30만 → 60만은 먼지**, 안전 상한 대략 **슬롯당 ~300만** |
| 시드 더 키울 때 | 계정 복제보다 **20만~100만 원대 전용 전략**으로 유동성 확보 |
| 비율 슬롯 | **전략 ON 개수로 N빵/뻥튀기 금지**. 슬롯% + **전략별 격벽(Cap)** |
| 복리 표 | `총수익 = P × ((1+r)^n 1)`, 두 시드 차이 = `(P2P1) × ((1+r)^n 1)` |
---
## 1. 계정 두개 — 용도 (왜 나누나)
대화에서 말한 **봇/계정 2대** 목적 정리. “같은 전략을 두 배로 긁기”가 목적이면 **비추천**.
| 구분 | 용도 예시 | 비고 |
|------|-----------|------|
| **A 계정 (운영)** | 실매 메인. 4전략, 슬롯 Hard-Cap 준수 | IP·앱키·WS 구독(41) 한도 본진 |
| **B 계정 (고액·테스트·분리)** | 파라미터 실험 / 대형주 전용 / 고액 시드 격리 | **가능하면 VM·IP·앱키 분리** (같은 집 동시 → 차단·레이트리밋 위험) |
| 하지 말 것 | 동일 타점·동일 종목에 A·B가 거의 동시 시장가 | 호가 = **합산 체결**. 후행 계정이 1~2틱 불리 |
**인프라 메모**
- WS 구독·REST 초당한도·429는 **계정 수만큼** 부담이 늘 수 있음 (공유 IP면 더 위험).
- HTS 접속 OK ≠ OpenAPI 건강. 모의/실전 도메인·토큰 분리 유지.
- 스케일업 정석: **자본 통합 + 슬롯 Cap** 또는 **유동성 다른 유니버스(대형주) 전략 추가**.
---
## 2. 복리 계산식 (임의 원금 대입용)
거래일 `n` (주식 1년 ≈ **250**), 일 수익률 `r`.
```
잔고 = P × (1+r)^n
총수익금 = P × ((1+r)^n 1)
시드 차이 = (P2 P1) × ((1+r)^n 1)
```
### 2.1 참고 승수 (매일 동일 r 가정)
| 일 수익률 r | 20거래일 (월) | 250거래일 (년) | 대략 연 누적 수익률 |
|-------------|---------------|----------------|---------------------|
| 1.0% (0.01) | ×1.220 → **+22.0%** | ×12.03 → **+~1103%** | 대회급·비현실 고정 |
| 0.2% (0.002) | — | ×1.647 → **+~64.7%** | 보수 목표 가정 |
| 0.4% (0.004) | — | ×2.714 → **+~171.4%** | 전략 Gross 가정이면 순은 더 낮음 |
**단리 vs 복리:** 단리면 0.2%→50%, 0.4%→100%(정확히 2배). 복리면 **0.4%가 0.2%의 2배가 아니라 ~171%**로 벌어짐.
**고정 슬롯 금액(예: 항상 100만)** = 실질 **단리**. 표의 복리 숫자는 **잔고 비율로 슬롯이 커질 때**만 해당.
---
## 3. 시드별 1년 표 (참고)
### 3.1 일 0.2% · 250일
| 시작 원금 | 1년 뒤 잔고 | 누적 총수익 |
|-----------|-------------|-------------|
| 100만 | ~164.7만 | ~64.7만 |
| 200만 | ~329.4만 | ~129.4만 |
| 500만 | ~823.4만 | ~323.4만 |
| 1,000만 | ~1,646.8만 | ~646.8만 |
### 3.2 일 0.4% · 250일 (슬롯 100만 가정 시 “풀가동 복리” 예시)
| 운용 기준 | 시작 | 1년 뒤 | 누적 수익 |
|-----------|------|--------|-----------|
| 슬롯 1개 | 100만 | ~271.4만 | ~171.4만 |
| 전략 1 · 동시 5슬롯 | 500만 | ~1,356.9만 | ~856.9만 |
| 4전략 · 총 20슬롯 | 2,000만 | ~5,427.5만 | ~3,427.5만 |
> **주의:** “전략당 0.4%” ≠ 계좌 일 0.4% 자동. 동시 슬롯·현금비중·손절·수수료에 따라 계좌 일 수익률은 훨씬 작아질 수 있음.
> 월 20%·일 1% 고정은 **소액·무제약 대회 상위** 스케일 이야기지, 기관·버핏 체급 비교용이 아님.
---
## 4. 슬롯 · 주가대 · 시장 충격
운영 유니버스: **주가 1,000원 ~ 200,000원**, 현재 슬롯 **~30만**(60만도 스텔스).
| 주가대 | 슬롯 60만 체감 | 슬리피지 없이 대략 상한(정상 유동성) |
|--------|----------------|--------------------------------------|
| 1천~5천 | 120~600주 | **~300만~500만** |
| 1만~5만 | 소수 십주 | **~500만~1,000만** |
| 5만~20만 | 소수 주 | 더 넉넉 (단, **틱% 왜곡** 주의) |
**실무 합의:** 이 유니버스에서 **슬롯 Hard-Cap ≈ 300만**. 그 이상은 1호가 소진·부분체결 위험.
### 4.1 20만 ~ 100만 원대 (대형·대장 전용으로 추가할 때)
| 주가대 | 틱 | 대략 슬롯 상한(참고) |
|--------|----|----------------------|
| 20만~50만 미만 | 500원 | **~3,000만~5,000만** |
| 50만~100만 미만 | 1,000원 | **~5,000만~1억** |
함정: 유동성은 크지만 **0.4% 파동 빈도↓**, 틱당 %가 커서 손절/익절 틱 수가 달라짐 → **중소형 파라미터 복붙 금지**, 타임프레임·돌파 가중치 튜닝 필요.
---
## 5. 전략당 한도 (후보 20개 ≠ 20슬롯 매수)
후보 실시간 20개여도 **동시 보유 상한**으로 자본을 잡음.
| 동시 보유 | 슬롯 300만 기준 전략당 한도 | 4전략 총시드(참고) |
|-----------|------------------------------|---------------------|
| 3 | 900만 | 3,600만 |
| **5 (권장)** | **1,500만** | **6,000만** |
| 10 | 3,000만 | 1.2억 |
| 20 무제한 | 6,000만 | 2.4억 — 현금잠김·429·동조 손절 위험 |
동시 타점 다수 → **상위 N개만 큐 정렬 후 매수**(점수·수급·호가잔량 등). 전량 매수 금지.
---
## 6. 비율 슬롯 · 전략별 격리 (질문 답)
### 6.1 “켜진 전략 수에 따라 슬롯이 4배/2배?”
**아니요.** ON 전략이 1개라고 남은 3전략 몫을 몰아주면 **집중 리스크** (한 번 손절이 계좌에 증폭).
시장이 조용해서 3전략이 쉬는 날 = 오히려 보수적으로 현금 유지하는 쪽이 맞음.
### 6.2 추천 구조 (이중 잠금)
| 단계 | 무엇 | 예시 (총자본 2,000만) |
|------|------|------------------------|
| 1 | **1슬롯** = `min(총잔고 × 고정%, Cap)` | 5% → 100만, Cap 300만 |
| 2 | **전략별 Cap** | 총자본의 25% → 전략당 최대 500만(≈5슬롯) |
| 3 | (선택) **계좌 최소 현금** | 예: 20% 락 |
→ “이 전략 더 쓰고 저 전략 덜 쓰기” = **시장이 아니라 전략 Cap 안에서만** 허용.
→ 유연한 오버플로우(유휴 자본 일부 대출)는 **나중에**. 당장은 **독립 비율 + Hard-Cap + 전략 격벽**이면 충분.
### 6.3 의사코드
```text
slot = min(int(total_balance * SLOT_PCT), SLOT_MAX_CAP) # 예: 5%, 300만
if strategy_invested + slot > total_balance * STRATEGY_CAP_PCT: # 예: 25%
reject buy
else:
allow buy
```
---
## 7. 계정 2개 × 슬롯 300만 = 600만?
| 질문 | 답 |
|------|----|
| 시차 있으면 괜찮은가? | **짧은 시차면 더 나쁨** — 선주문 소진 → 후주문이 2호가 |
| 언제 괜찮은가? | **종목·시간·전략이 겹치지 않을 때**, 또는 호가가 수억인 대형주 |
| 대안 | 한 계정 Cap 유지 / **20만+ 전용 전략**으로 용량 확장 |
IOC/FOK·부분체결 시 잔량 취소 여부는 실매 주문 모듈에 명시해 둘 것.
---
## 8. 체크리스트 (스케일업 전)
- [ ] 슬롯 `min(잔고×%, Cap)` — Cap은 유니버스별(중소형 ~300만 / 대형 별도)
- [ ] 전략별 투자금 Cap (N빵 금지)
- [ ] 동시 보유 상한 ≤ 후보 수
- [ ] 계정 2대면 **용도 분리** 문서화 (운영 vs 테스트/대형) — 동일 타점 동시 금지
- [ ] VM·앱키·IP 분리 여부 / 429·WS 41 한도 점검
- [ ] “일 0.4%”가 **슬롯 Gross**인지 **계좌 순**인지 구분해서 기록
---
## 9. 변경 이력
| 날짜 | 내용 |
|------|------|
| 2026-07-19 | 대화(시드·0.2/0.4% 복리·슬롯300·전략격벽·계정2·대형주) → 본 MD 최초 정리 |