- backend/app/models/chronos.py: amazon/chronos-t5-small (env CHRONOS_MODEL
override 가능). lazy singleton, cuda + bf16 자동, q10/median/q90 + raw
samples 반환 (앙상블 가중평균용).
- backend/app/models/features.py: 종목별 학습/추론 피처 DataFrame.
OHLCV + TA(rsi/macd/atr/bb/sma/ema/vol_z) + 외인기관거래대금 + macro
(kospi/kosdaq/usdkrw/us10y + r1) + sentiment(v_sentiment_daily, 3d rolling).
학습용은 with_targets=True 로 y_close_h{1,3,5}, y_ret_h*, y_dir_h*
(±0.3% flat band) 추가.
- pyproject.toml: chronos-forecasting 1.4.1, accelerate 0.30.1, joblib 1.4.2.
이 단계까지는 코드만. 실제 모델 다운로드는 첫 ping/predict 호출 시점에.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
69 lines
1.3 KiB
TOML
69 lines
1.3 KiB
TOML
[project]
|
|
name = "stock_chart_site_backend"
|
|
version = "0.0.1"
|
|
description = "Stock chart + prediction backend (FastAPI + Chronos + LightGBM + KR-FinBERT)"
|
|
requires-python = ">=3.11,<3.13"
|
|
|
|
dependencies = [
|
|
# web
|
|
"fastapi==0.111.0",
|
|
"uvicorn[standard]==0.30.0",
|
|
"pydantic==2.7.1",
|
|
"pydantic-settings==2.3.0",
|
|
|
|
# db
|
|
"sqlalchemy==2.0.30",
|
|
"psycopg[binary]==3.1.19",
|
|
"alembic==1.13.1",
|
|
|
|
# data
|
|
"pandas==2.2.2",
|
|
"numpy==1.26.4",
|
|
"pykrx==1.0.45",
|
|
"yfinance==0.2.40",
|
|
"feedparser==6.0.11",
|
|
"requests==2.32.3",
|
|
"httpx==0.27.0",
|
|
"beautifulsoup4==4.12.3",
|
|
"lxml==5.2.2",
|
|
|
|
# ml
|
|
"transformers==4.41.2",
|
|
"tokenizers==0.19.1",
|
|
"sentencepiece==0.2.0",
|
|
"accelerate==0.30.1",
|
|
"chronos-forecasting==1.4.1",
|
|
"scikit-learn==1.5.0",
|
|
"lightgbm==4.3.0",
|
|
"ta==0.11.0",
|
|
"joblib==1.4.2",
|
|
|
|
# scheduler
|
|
"apscheduler==3.10.4",
|
|
"pytz==2024.1",
|
|
|
|
# utils
|
|
"python-dotenv==1.0.1",
|
|
"loguru==0.7.2",
|
|
"tenacity==8.3.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest==8.2.1",
|
|
"ruff==0.4.7",
|
|
"mypy==1.10.0",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["app*"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|