# 🤖 AI Automated Trading System (Windows Server Edition)

이 프로젝트는 **Python, PyTorch (Deep Learning), Ollama (LLM)**을 활용하여 한국 주식 시장(KIS)에서 자동으로 매매를 수행하는 고성능 AI 트레이딩 봇입니다.
**ProcessPoolExecutor 기반의 병렬 처리**와 **독립된 텔레그램 봇 프로세스**를 통해 높은 안정성과 응답 속도를 보장합니다.

## 🚀 Key Features

*   **Multi-Process Architecture**: 메인 서버, 트레이딩 봇, 텔레그램 봇이 각각 독립된 프로세스로 실행되어 상호 간섭을 최소화합니다.
*   **Advanced AI Analysis**: **RTX 5070 Ti (16GB VRAM)** 하드웨어 가속을 활용한 **Attention-LSTM** 모델이 주가를 예측합니다.
*   **Process Management System**:
    *   **Zombie Killer**: 서버 시작 시 이전에 종료되지 않은 좀비 프로세스를 자동으로 감지하고 제거합니다.
    *   **PID Tracking**: 실행 중인 모든 프로세스의 ID를 `pids.txt` 파일에 실시간으로 기록하여 식별을 돕습니다.
*   **Reliable Telegram Bot**:
    *   **HTML Parsing**: 마크다운 에러를 방지하기 위해 안정적인 HTML 포맷을 사용하여 메시지를 전송합니다.
    *   **Interactive Commands**: `/status`, `/portfolio`, `/exec` 등 다양한 명령어로 봇을 실시간 제어할 수 있습니다.
*   **Auto-Recovery**: `ProcessPoolExecutor`의 워커 프로세스가 충돌(OOM 등)할 경우 자동으로 감지하고 재시작합니다.

---

## 🏗️ System Architecture & Directory Structure

```plaintext
/
├── main_server.py          # [Entry Point] 프로세스 매니저 및 FastAPI 서버
├── pids.txt                # [Runtime] 실행 중인 프로세스 ID 목록 (자동 관리)
├── modules/
│   ├── bot.py              # [Core] 메인 트레이딩 봇 (스케줄러 & 상태 머신)
│   ├── config.py           # [Config] 환경 변수 및 상수 관리
│   ├── analysis/           # [Brain] AI 분석 모듈
│   │   ├── deep_learning.py  # PyTorch 기반 Attention-LSTM 모델
│   │   ├── technical.py      # RSI, 볼린저밴드 등 보조지표 계산
│   │   └── macro.py          # 거시경제(환율, 유가, 지수) 분석
│   ├── services/           # [I/O] 외부 서비스 연동
│   │   ├── kis.py            # 한국투자증권 API (Throttling 적용)
│   │   ├── telegram_bot/     # [Independent] 독립 프로세스 텔레그램 봇
│   │   ├── news.py           # 네이버 뉴스 크롤링
│   │   └── ollama.py         # Local LLM (Llama 3) 인터페이스
│   ├── strategy/           # [Logic] 매수/매도 의사결정 프로세스
│   │   └── process.py        # 워커 프로세스용 분석 함수 (병렬 처리)
│   └── utils/              # [Util] 유틸리티
│       ├── process_tracker.py # PID 추적 및 좀비 프로세스 정리
│       ├── ipc.py            # 프로세스 간 통신 (IPC)
│       └── monitor.py        # 시스템 리소스 모니터링
└── ...
```

---

## 🧠 AI Learning Structure (Deep Learning)

본 시스템은 단순한 알고리즘 매매를 넘어, **Deep Learning**을 통해 시장의 패턴을 실시간으로 학습합니다.

### 1. Model: Attention-LSTM (High Capacity)
*   **Architecture**: LSTM(Long Short-Term Memory) + **Attention Mechanism**
*   **Input**: 최근 60일(약 3개월)간의 주가(종가) 시계열 데이터
*   **Core Logic**:
    *   **Feature Extraction**: 4-Layer Stacked LSTM (Hidden Size: 512)이 시계열 특징 추출.
    *   **Attention Layer**: 과거 60일 중 현재 예측에 가장 중요한 시점에 가중치를 부여.
    *   **Adaptive Training**: 종목별로 매일 실시간 학습(Online Learning)을 수행하여 최신 트렌드 반영.

### 2. Hardware Acceleration (RTX 5070 Ti)
*   **CUDA Optimization**: PyTorch를 통해 GPU 가속 활성화.
*   **Specs**: Batch Size 64, Epochs 200, Precision FP32.
*   서버 시작 시 `High Performance Mode`가 자동으로 감지 및 활성화됩니다.
*   **OOM Protection**: GPU 메모리 보호를 위해 병렬 워커 수를 2개로 제한하고, 워커 충돌 시 자동 재시작합니다.

---

## 🛠️ Usage & Troubleshooting

### 1. Installation
```bash
# Clone & Install
git clone <repository-url>
pip install -r requirements.txt

# Start Server
python main_server.py
```

### 2. Process Management (`pids.txt`)
서버가 실행되면 `pids.txt` 파일에 현재 실행 중인 프로세스 목록이 기록됩니다.
```text
58360: Main Server (Uvicorn Worker)
72028: Trading Bot Main
66488: Telegram Bot Standalone
16372: Trading Bot Worker
...
```
*   **CPU 사용량이 비정상적으로 높을 때**: 작업 관리자나 `Get-Process python`으로 확인한 PID가 `pids.txt`에 없다면 **좀비 프로세스**입니다.
*   **자동 정리**: `main_server.py`를 다시 실행하면 시작 시 자동으로 좀비 프로세스를 찾아 종료합니다.

### 3. Telegram Commands
*   `/start`: 봇 시작 및 명령어 안내
*   `/status`: 현재 봇 상태, 시장 지수, AI 모델 상태 조회
*   `/portfolio`: 현재 보유 종목 및 수익률 조회
*   `/system`: CPU/GPU 사용량 및 프로세스 상태 확인
*   `/restart`: 봇 프로세스 재시작 (업데이트 반영 시 유용)
*   `/stop`: 봇 종료

---

## ⚠️ Disclaimer
본 소프트웨어는 투자를 보조하는 도구이며, 투자의 결과에 대한 책임은 전적으로 사용자에게 있습니다. AI의 예측은 100% 정확하지 않으며, 시장 상황에 따라 손실이 발생할 수 있습니다. 모의투자 환경에서 충분한 테스트 후 사용하시기 바랍니다.
