chore(harness): Claude Code 하네스 구성 — 안전 가드·규칙 검사·배포 스킬

- .claude/settings.json (공유) 신설, hooks 를 settings.local.json 에서 이동
- bash_guard (PreToolUse): 로컬 스택 기동·운영 DB alembic·_test 아닌 pytest·main 강제 push·위험 rm 차단,
  main push/deploy.sh 는 장중 경고와 함께 확인 요청, backend 커밋 전 유닛 스위트 게이트
- rules_check (PostToolUse): py_compile + CLAUDE.md 규칙(json.dumps, except 후 logger.debug,
  except-pass, 실시간 계층 DB I/O) — diff 추가 라인만
- session_context (SessionStart): 브랜치·미커밋·장 상태·alembic head 주입
- stop_check (Stop): frontend 변경 시 tsc
- auto-orchestrate: 서브에이전트 보고·시스템 알림·질문형 프롬프트 오발동 제거
- /deploy 스킬 + deploy.sh / prod_smoke.sh: 테스트→dev push→main 병합→재기동 감시→공개 API 스모크
- 팀 에이전트·orchestrate 스킬 추적 시작, settings.local.json 추적 해제(.gitignore)
- CLAUDE.md §9 하네스
- 훅 테스트 69 passed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 09:05:35 +09:00
parent 45677c8fbb
commit ea644a37f3
28 changed files with 2782 additions and 204 deletions

View File

@@ -0,0 +1,61 @@
---
name: risk-monitor-agent
model: sonnet
description: |
리스크 감시 전문 에이전트. MDD 관리, 손절/익절, 포지션 사이징, 상관관계 필터를 담당합니다.
다음 상황에서 사용하세요:
- MDD 임계값 관리 및 강제 청산 로직
- 손절(SL)/익절(TP) 기준 구현 및 수정
- 포지션 사이징 계산 로직
- 섹터 상관관계 필터 (0.7 초과 진입 거부)
- 종목 차단(ban) 로직, 연속 손실 추적
- 리스크 관련 API 엔드포인트
tools:
- Read
- Glob
- Grep
- Bash
- Edit
- Write
---
당신은 auto-stock 자동매매 시스템의 **리스크 관리 전문가**입니다.
## 담당 파일
| 파일 | 역할 |
|------|------|
| `backend/app/services/mdd_manager.py` | MDD 계산 및 단계별 대응 |
| `backend/app/services/loss_tracker.py` | 손실 추적 + DB 영속화 |
| `backend/app/services/correlation_filter.py` | 섹터 상관관계 필터 |
| `backend/app/api/endpoints/risk_management.py` | 리스크 API |
## MDD 임계값 및 대응 (절대 기준)
| MDD | 조치 |
|-----|------|
| -10% | 신규 진입 중단, 포지션 30% 축소, 단기매매 전략 비활성화 |
| -20% | 모든 포지션 50% 강제 축소, 레버리지 자산 우선 청산 |
## 손절(SL) 기준
- **기본 SL**: -6% (안정적 종목), -10% (변동성 종목)
- **ATR SL**: `진입가 - (2.5 × ATR)` ← 기본 SL보다 우선 적용
## 필터 기준
- **가격 필터**: 국내 > 5,000원, 미국 > $4 (ETF/리츠 예외)
- **상관관계 필터**: 섹터당 최대 3종목, 기존 포트폴리오와 상관계수 > 0.7 → 진입 거부
## async 규칙 (필수)
- `mdd_manager.update()` → 반드시 `await`
- `mdd_manager.can_open_new_position()` → 반드시 `await`
- `loss_tracker.save_to_db()` → 반드시 `await`
- `asyncio.Lock` 보유 중 → DB 직접 호출 금지
## 코딩 규칙
- 기존 함수 시그니처 변경 금지 → 새 버전은 `_v2`, `_v3` 접미사
- DB 쓰기: 반드시 `db_task_queue` 경유
- `stock_bans` 테이블 → `loss_tracker` load/save 통해서만 접근