2026-05-18 12:57:46 +09:00
|
|
|
|
# claude_morning — 장 전 분석
|
|
|
|
|
|
|
|
|
|
|
|
오늘 날짜 기준으로 장 전 분석을 수행하고 `data/daily_context.json`을 생성한다.
|
2026-06-04 10:24:36 +09:00
|
|
|
|
07:30에 스케줄러가 자동 실행. 봇 시작은 이 명령이 종료된 뒤 `scripts/run_morning.ps1`에서만 수행한다.
|
2026-05-18 12:57:46 +09:00
|
|
|
|
|
|
|
|
|
|
## 실행 순서
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 데이터 수집
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python app/ai/morning.py --print
|
|
|
|
|
|
```
|
2026-05-19 08:35:19 +09:00
|
|
|
|
위 명령을 실행해 다음 데이터를 수집한다:
|
2026-06-17 18:34:38 +09:00
|
|
|
|
- **글로벌 지표 (global_raw)**: 나스닥·S&P500·다우·SOX·달러/원·WTI·미국10년물
|
2026-05-19 08:35:19 +09:00
|
|
|
|
- **RSS 뉴스**: 한경증권·한경경제·파이낸셜뉴스·매경증권 4개 언론사 (~80건)
|
|
|
|
|
|
- **KIS 수급**: 거래량 상위 30종목, 외국인/기관 순매수 상위 10종목, 업종 동향
|
|
|
|
|
|
- **종목별 뉴스**: 네이버 검색 API로 거래량 상위 20종목 각 5건
|
2026-05-18 12:57:46 +09:00
|
|
|
|
|
2026-06-17 18:34:38 +09:00
|
|
|
|
### 2. 글로벌 분석 (global_raw → global_context)
|
|
|
|
|
|
수집된 `global_raw`를 바탕으로 글로벌 점수와 리스크를 산출한다.
|
|
|
|
|
|
|
|
|
|
|
|
**global_score 산출 기준 (0~100, 50=중립):**
|
|
|
|
|
|
- 나스닥·SOX 등락이 가장 큰 가중치 (한국 반도체·기술주 직접 영향)
|
|
|
|
|
|
- S&P500·다우 보조
|
|
|
|
|
|
- USD/KRW 상승(달러 강세)은 외국인 매도 압력 → 감점
|
|
|
|
|
|
- WTI 급등은 항공·운송 부담 → 소폭 감점
|
|
|
|
|
|
- 미국 10년물 금리 급등은 성장주 할인 → 감점
|
|
|
|
|
|
|
|
|
|
|
|
**global_risk 판단:**
|
|
|
|
|
|
- global_score >= 60 → 낮음
|
|
|
|
|
|
- global_score 40~59 → 보통
|
|
|
|
|
|
- global_score < 40 → 높음
|
|
|
|
|
|
|
|
|
|
|
|
**섹터 힌트 매핑 (hot/avoid 섹터에 반영):**
|
|
|
|
|
|
- SOX < -2% → 반도체·AI 관련 보수적, hot_sectors에서 제외 또는 주의 표시
|
|
|
|
|
|
- SOX > +1% → 반도체 hot_sectors 강화
|
|
|
|
|
|
- WTI > +2% → 항공 avoid, 정유/해운 관심
|
|
|
|
|
|
- WTI < -2% → 정유 보수적, 항공 우호
|
|
|
|
|
|
- USD/KRW > +0.5% → 전체 포지션 배율 축소 압력
|
|
|
|
|
|
- 미국장 전반 급락(나스닥 < -2%) → position_size_multiplier 하향
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 국내 분석
|
|
|
|
|
|
수집된 뉴스·수급 데이터를 바탕으로 다음 항목을 판단한다:
|
2026-05-18 12:57:46 +09:00
|
|
|
|
- **시장 분위기**: 강세 / 중립 / 약세
|
2026-06-17 18:34:38 +09:00
|
|
|
|
- **domestic_score**: 0~100 (50=중립, 70이상=강세, 30이하=약세)
|
2026-05-18 12:57:46 +09:00
|
|
|
|
- **리스크 레벨**: 낮음 / 보통 / 높음
|
2026-06-17 18:34:38 +09:00
|
|
|
|
- **주목 섹터**: 수급·뉴스 모두 긍정적인 섹터 (글로벌 힌트 반영)
|
|
|
|
|
|
- **회피 섹터**: 악재·수급 부진 섹터 (글로벌 힌트 반영)
|
2026-05-18 12:57:46 +09:00
|
|
|
|
- **boosted_tickers**: 거래량 상위 + 외국인 순매수 겹치는 종목코드
|
2026-05-19 08:35:19 +09:00
|
|
|
|
- **blacklist_tickers**: 종목별 뉴스에서 악재(횡령·소송·거래정지 등) 감지된 종목코드
|
2026-06-17 18:34:38 +09:00
|
|
|
|
- **sentiment_score**: domestic_score와 global_score를 6:4로 합산한 최종 점수
|
|
|
|
|
|
- **position_size_multiplier**: 0.5(약세) ~ 1.0(중립) ~ 1.5(강세), 글로벌 리스크 반영
|
2026-05-18 12:57:46 +09:00
|
|
|
|
- **trade_allowed**: sentiment_score < 40이면 false
|
|
|
|
|
|
|
2026-06-17 18:34:38 +09:00
|
|
|
|
### 4. daily_context.json 저장
|
2026-05-18 12:57:46 +09:00
|
|
|
|
분석 결과를 `data/daily_context.json`에 저장한다. 형식:
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "YYYY-MM-DD",
|
|
|
|
|
|
"generated_at": "HH:MM:SS",
|
|
|
|
|
|
"trade_allowed": true,
|
|
|
|
|
|
"market_sentiment": "중립",
|
2026-06-17 18:34:38 +09:00
|
|
|
|
"sentiment_score": 55,
|
|
|
|
|
|
"domestic_score": 62,
|
|
|
|
|
|
"global_context": {
|
|
|
|
|
|
"nasdaq_change": -1.15,
|
|
|
|
|
|
"sp500_change": -0.57,
|
|
|
|
|
|
"dow_change": 0.64,
|
|
|
|
|
|
"sox_change": -5.71,
|
|
|
|
|
|
"usdkrw_change": 0.0,
|
|
|
|
|
|
"wti_change": -1.21,
|
|
|
|
|
|
"us10y": 4.43,
|
|
|
|
|
|
"global_score": 32,
|
|
|
|
|
|
"global_risk": "높음"
|
|
|
|
|
|
},
|
|
|
|
|
|
"risk_level": "높음",
|
|
|
|
|
|
"hot_sectors": ["방산", "2차전지"],
|
|
|
|
|
|
"avoid_sectors": ["반도체", "항공"],
|
|
|
|
|
|
"boosted_tickers": [],
|
2026-05-18 12:57:46 +09:00
|
|
|
|
"blacklist_tickers": [],
|
2026-06-17 18:34:38 +09:00
|
|
|
|
"position_size_multiplier": 0.7,
|
2026-05-18 12:57:46 +09:00
|
|
|
|
"reason": "50자 이내 시장 요약"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-06-17 18:34:38 +09:00
|
|
|
|
**sentiment_score 계산 예시:**
|
|
|
|
|
|
- domestic_score=62, global_score=32 → sentiment_score = 62×0.6 + 32×0.4 = 50
|
|
|
|
|
|
|
|
|
|
|
|
### 5. Discord 알림 전송
|
2026-05-21 08:26:37 +09:00
|
|
|
|
아래 명령을 실행해 분석 결과를 Discord로 전송한다:
|
2026-05-18 12:57:46 +09:00
|
|
|
|
```bash
|
2026-05-21 08:26:37 +09:00
|
|
|
|
python app/ai/morning.py --send-discord
|
2026-05-18 12:57:46 +09:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-06-18 18:06:32 +09:00
|
|
|
|
### 6. Git commit & push
|
|
|
|
|
|
`data/daily_context.json`을 커밋하고 push한다:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add data/daily_context.json
|
|
|
|
|
|
git commit -m "[YYYY-MM-DD] 장전 분석 — <한 줄 시장 요약>"
|
|
|
|
|
|
git push origin master
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 7. 완료
|
2026-05-18 12:57:46 +09:00
|
|
|
|
분석 요약을 한 줄로 출력하고 종료한다.
|
2026-06-04 10:24:36 +09:00
|
|
|
|
이 명령 안에서는 `/start-bot` 또는 `python scripts/start_bot.py`를 실행하지 않는다.
|