diff --git a/README.md b/README.md index 6b25e3b..dff11ef 100644 --- a/README.md +++ b/README.md @@ -106,26 +106,12 @@ docker compose logs -f cointrader 봇은 모델 파일이 없으면 ML 필터 없이 동작합니다. 최초 실행 전 또는 수동 재학습 시 아래 순서로 진행합니다. -### 최초 실행 (데이터 초기화) - -`data/combined_15m.parquet`가 없을 때 1회만 실행합니다. 이후 매일 크론탭이 `train_and_deploy.sh`를 실행하면 35일치 신규 데이터가 자동으로 Upsert됩니다. - -```bash -# 최초 1회: 1년치 캔들 전체 수집 (OI/펀딩비는 최근 30일만 실제 값, 나머지 0.0) -python scripts/fetch_history.py \ - --symbols XRPUSDT BTCUSDT ETHUSDT \ - --interval 15m \ - --days 365 \ - --no-upsert \ - --output data/combined_15m.parquet -``` - -> 이후 매일 `train_and_deploy.sh` 실행 시 35일치 신규 데이터를 기존 parquet에 Upsert하여 OI/펀딩비 0.0 구간이 야금야금 채워집니다. 시간이 지날수록 실제 OI/펀딩비 값이 있는 학습 구간이 1달 → 2달 → 반년으로 늘어납니다. - ### 전체 파이프라인 (권장) 맥미니에서 데이터 수집 → 학습 → LXC 배포까지 한 번에 실행합니다. +> **자동 분기**: `data/combined_15m.parquet`가 없으면 1년치(365일) 전체 수집, 있으면 35일치 Upsert로 자동 전환합니다. 서버 이전이나 데이터 유실 시에도 사람의 개입 없이 자동 복구됩니다. + ```bash # LightGBM + Walk-Forward 5폴드 (기본값) bash scripts/train_and_deploy.sh diff --git a/scripts/train_and_deploy.sh b/scripts/train_and_deploy.sh index 44f6a4a..6428334 100755 --- a/scripts/train_and_deploy.sh +++ b/scripts/train_and_deploy.sh @@ -27,15 +27,27 @@ WF_SPLITS="${2:-5}" # 두 번째 인자: Walk-Forward 폴드 수 (0이면 건 cd "$PROJECT_ROOT" -echo "=== [1/3] 데이터 수집 (XRP + BTC + ETH 3심볼, 35일치 Upsert + OI/펀딩비) ===" -# OI/펀딩비 API 제한(30일) + 버퍼 5일 = 35일치 신규 수집 후 기존 parquet에 Upsert -# 최초 실행 시 data/combined_15m.parquet 없으면 35일치로 시작 -# 이후 매일: 35일치 신규 데이터로 기존 파일의 0.0 구간을 채우고 최신 행 추가 +mkdir -p data + +PARQUET_FILE="data/combined_15m.parquet" + +echo "=== [1/3] 데이터 수집 (XRP + BTC + ETH 3심볼 + OI/펀딩비) ===" +if [ ! -f "$PARQUET_FILE" ]; then + echo " [최초 실행] 기존 데이터 없음 → 1년치(365일) 전체 수집 (--no-upsert)" + FETCH_DAYS=365 + UPSERT_FLAG="--no-upsert" +else + echo " [일반 실행] 기존 데이터 존재 → 35일치 Upsert (OI/펀딩비 0.0 구간 보충)" + FETCH_DAYS=35 + UPSERT_FLAG="" +fi + python scripts/fetch_history.py \ --symbols XRPUSDT BTCUSDT ETHUSDT \ --interval 15m \ - --days 35 \ - --output data/combined_15m.parquet + --days "$FETCH_DAYS" \ + $UPSERT_FLAG \ + --output "$PARQUET_FILE" echo "" echo "=== [2/3] 모델 학습 (23개 피처: XRP 13 + BTC/ETH 8 + OI/펀딩비 2) ==="