feat: implement 15-minute timeframe upgrade for model training and data processing
- Introduced a new markdown document detailing the plan to transition the entire pipeline from a 1-minute to a 15-minute timeframe, aiming to improve model AUC from 0.49-0.50 to over 0.53. - Updated key parameters across multiple scripts, including `LOOKAHEAD` adjustments and default data paths to reflect the new 15-minute interval. - Modified data fetching and training scripts to ensure compatibility with the new timeframe, including changes in `fetch_history.py`, `train_model.py`, and `train_and_deploy.sh`. - Enhanced the bot's data stream configuration to operate on a 15-minute interval, ensuring real-time data processing aligns with the new model training strategy. - Updated training logs to capture new model performance metrics under the revised timeframe.
This commit is contained in:
@@ -113,9 +113,9 @@ def main():
|
||||
)
|
||||
parser.add_argument("--symbols", nargs="+", default=["XRPUSDT"])
|
||||
parser.add_argument("--symbol", default=None, help="단일 심볼 (--symbols 미사용 시)")
|
||||
parser.add_argument("--interval", default="1m")
|
||||
parser.add_argument("--days", type=int, default=90)
|
||||
parser.add_argument("--output", default="data/xrpusdt_1m.parquet")
|
||||
parser.add_argument("--interval", default="15m")
|
||||
parser.add_argument("--days", type=int, default=365)
|
||||
parser.add_argument("--output", default="data/combined_15m.parquet")
|
||||
args = parser.parse_args()
|
||||
|
||||
# 하위 호환: --symbol 단독 사용 시 symbols로 통합
|
||||
|
||||
@@ -26,20 +26,19 @@ cd "$PROJECT_ROOT"
|
||||
echo "=== [1/3] 데이터 수집 (XRP + BTC + ETH 3심볼, 1년치) ==="
|
||||
python scripts/fetch_history.py \
|
||||
--symbols XRPUSDT BTCUSDT ETHUSDT \
|
||||
--interval 1m \
|
||||
--interval 15m \
|
||||
--days 365 \
|
||||
--output data/xrpusdt_1m.parquet
|
||||
# 결과: data/combined_1m.parquet (타임스탬프 기준 병합)
|
||||
--output data/combined_15m.parquet
|
||||
|
||||
echo ""
|
||||
echo "=== [2/3] 모델 학습 (21개 피처: XRP 13 + BTC/ETH 상관관계 8) ==="
|
||||
DECAY="${TIME_WEIGHT_DECAY:-2.0}"
|
||||
if [ "$BACKEND" = "mlx" ]; then
|
||||
echo " 백엔드: MLX (Apple Silicon GPU), decay=${DECAY}"
|
||||
python scripts/train_mlx_model.py --data data/combined_1m.parquet --decay "$DECAY"
|
||||
python scripts/train_mlx_model.py --data data/combined_15m.parquet --decay "$DECAY"
|
||||
else
|
||||
echo " 백엔드: LightGBM (CPU), decay=${DECAY}"
|
||||
python scripts/train_model.py --data data/combined_1m.parquet --decay "$DECAY"
|
||||
python scripts/train_model.py --data data/combined_15m.parquet --decay "$DECAY"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
@@ -146,7 +146,7 @@ def train_mlx(data_path: str, time_weight_decay: float = 2.0) -> float:
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--data", default="data/combined_1m.parquet")
|
||||
parser.add_argument("--data", default="data/combined_15m.parquet")
|
||||
parser.add_argument(
|
||||
"--decay", type=float, default=2.0,
|
||||
help="시간 가중치 감쇠 강도 (0=균등, 2.0=최신이 ~7.4배 높음)",
|
||||
|
||||
@@ -53,7 +53,7 @@ def _cgroup_cpu_count() -> int:
|
||||
return cpu_count()
|
||||
|
||||
|
||||
LOOKAHEAD = 60
|
||||
LOOKAHEAD = 24 # 15분봉 × 24 = 6시간 (dataset_builder.py와 동기화)
|
||||
ATR_SL_MULT = 1.5
|
||||
ATR_TP_MULT = 3.0
|
||||
MODEL_PATH = Path("models/lgbm_filter.pkl")
|
||||
@@ -357,7 +357,7 @@ def walk_forward_auc(
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--data", default="data/combined_1m.parquet")
|
||||
parser.add_argument("--data", default="data/combined_15m.parquet")
|
||||
parser.add_argument(
|
||||
"--decay", type=float, default=2.0,
|
||||
help="시간 가중치 감쇠 강도 (0=균등, 2.0=최신이 ~7.4배 높음)",
|
||||
|
||||
Reference in New Issue
Block a user