# Sanguo VeighNa Docker 依赖(NAS 容器) # 基于 VeighNa 4.4.0,添加 Web 服务所需依赖 # # ⚠️ 版本源 = requirements-lock.txt(三机统一锁文件,VPS 生产快照=权威基线)。 # 本文件 = lock 的容器子集,全部 == 钉版;lock bump 时必须同步本文件。 # 容器专属差异(相对 lock 按设计省略): # - akshare:日线采集在 VPS,不在容器 # - pytest/pytest-asyncio:CI 在 Mac runner 跑,不在容器 # 2026-08-15 钉版根治:原 >= 浮动致容器系统性偏新 # (TA-Lib0.7.1/empyrical双装/pyarrow25 vs lock 0.6.8/0.5.12/24.0.0), # 产生「NAS 绿 ≠ VPS 版本」的等价性窗口。 # ============================================ # VeighNa 核心依赖 # ============================================ tzlocal==5.4.4 PySide6==6.8.2.1 pyqtgraph==0.14.0 qdarkstyle==3.2.3 numpy==2.2.6 pandas==2.3.3 TA-Lib==0.6.8 deap==1.4.4 pyzmq==27.1.0 plotly==6.8.0 tqdm==4.68.3 loguru==0.7.3 nbformat==5.10.4 requests==2.34.2 qrcode==8.2 PyYAML==6.0.3 # vnpy 策略/数据库扩展(项目必需,非可选) # vnpy_ctastrategy: CTA 策略引擎(sanguo_backtest/cta_engine·cta_optimizer·ashare_engine, sanguo_live 等广用) # vnpy_sqlite: vnpy sqlite 数据库驱动(vnpy trader/database.py 运行时动态加载,缺则 vnpy 无法持久化) vnpy_ctastrategy==1.4.1 vnpy_sqlite==1.1.3 # ============================================ # 组合策略框架(BulletTrade)—— 2026-08-01 补:此前只在容器层手动装,重建会丢 # ============================================ # bullet-trade: 多股票选股组合框架(sanguo_portfolio, 03/01/02 三策略; import 名 bullet_trade) # jqdatasdk: bullet_trade import 时默认 provider=jqdata 触发 import jqdatasdk,需可解析 # (实跑用 LocalUnifiedProvider 不调 jqdata online,但 import 链需要包存在,否则 import 崩) bullet-trade==0.9.2 jqdatasdk==1.9.8 # ============================================ # Web 服务依赖 # ============================================ fastapi==0.139.0 starlette==1.3.1 uvicorn[standard]==0.49.0 python-multipart==0.0.32 python-dotenv==1.2.2 websockets==16.0 pydantic==2.13.4 pydantic-settings==2.14.2 PyJWT==2.13.0 python-jose[cryptography]==3.5.0 passlib==1.7.4 bcrypt==5.0.0 SQLAlchemy==2.0.51 alembic==1.18.5 redis==8.0.1 aioredis==2.0.1 # ============================================ # Alpha 量化依赖 # ============================================ polars[rtcompat]==1.42.1 # 钉版+[rtcompat]:NAS CPU(Synology Celeron)无 AVX2,plain polars 即便 1.42.1 也 SIGILL(exit132);需 [rtcompat] 拉 polars-runtime-compat 兜底。pre-init-rebuild 实证(有 polars-runtime-compat 才跑得通)。勿改回 >= scipy==1.15.3 bottleneck==1.6.0 # ⚠️ peewee 不可在此钉版:vnpy_sqlite 声明 >=3.17.9,钉 3.17.3(VPS 生产实证版) # 会与之互斥致 ResolutionImpossible(2026-08-15 二次构建实证)。主清单由 resolver # 装 vnpy_sqlite 满足版,Dockerfile 末步再显式降级 peewee==3.17.3 对齐 VPS。 alphalens-reloaded==0.4.6 scikit-learn==1.7.2 lightgbm==4.6.0 torch==2.12.1 pyarrow==24.0.0 # ⚠️ empyrical-reloaded==0.5.12 不在本文件内装:其元数据伪依赖 peewee<3.17.4 与 # vnpy_sqlite 的 >=3.17.9 互斥,单一 pip install -r 必 ResolutionImpossible(三机 # 一直是分次安装掩盖)。empyrical 包体零引用 peewee(实测 grep)。 # 真依赖 numpy/pandas/scipy/bottleneck 上方已钉;由 Dockerfile 第二步 # pip install --no-deps empyrical-reloaded==0.5.12 单独装。 # (替代老 empyrical,根治 0.5.5+0.5.9 双装脏状态) statsmodels==0.14.6 matplotlib==3.10.9 seaborn==0.13.2 # ============================================ # 工具和监控 # ============================================ httpx==0.28.1 APScheduler==3.11.3 prometheus-client==0.25.0 structlog==26.1.0 # ============================================ # 数据层(容器内需要的部分) # ============================================ baostock==0.9.3