claude_dev b7ce364b11
CI/CD / test (push) Successful in 37s
CI/CD / nas-deploy (push) Successful in 7s
CI/CD / nas-verify (push) Successful in 7s
feat(factor): 归因批挂月度首班 stage4——attribution_batch 新模块(截面增量前置+双跑+cp 双投递) [vps]
10-04 首班起挂 NAS 月度批评链第四段(run_factor_monthly_standalone.sh):
- 15 截面增量前置: 12 quant 源+size_log+在位者 composite_quant12_v2a_szneul
  +挑战者 composite_quant12_szneul, 各跑 daily_section 220 历日短窗幂等
  merge——NAS 截面无每日班(09-25/26 手动快照起点), 批前必然新鲜
- as_of(自然月末)撞周末/节假日: latest_bar_date 归一 ≤as_of 最近日线
  bar 日(000001 走 symbol 索引秒回), 防 daily_section sanity raise
- 归因双跑同窗同参(全窗锚 2021-07-01 与首跑件一致, 挑战者受其截面
  自然窗限制; 挑战者落工作区 challenger/ 子目录=端点 glob 非递归防顶掉)
- cp 双投递生效位(--effective-dir): 在位者件→data/attribution/ 根
  glob 取最新; 挑战者件→challenger/attribution_<end>_<因子名>.json
  带因子名防顶掉; #69 影子 A/B 四周对照的归因侧供给
- fail loud: 截面断供/归因挂/投递缺任一→容器非零→班次 final=1
  (静默旧件=红线); 生效位目录容器挂 rw /effective-data, 代码卷恒 :ro
- 档随码走: 因子档归因行拆两行(独立 CLI+归因批)+runbook 三段链→四段
  (VPS 侧批评三段不镜像 stage4, 归因双跑落 NAS, VPS 归因件=infra
  偏差日报链另行供给)
- 测试 428→438(归一日/编排序/同窗断言/挑战者子目录/双投递文件名/
  fail loud/CLI 冒烟共 10 件)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-27 15:38:49 +08:00
feat(strategy): TODO#68-#75八项全做+导航自测——#68灯职责拆分:实走/影子在跑=直达/paper/live/{aid}监控页,实盘在跑=/live/monitor/{aid},未跑=发起;回放灯done=直达/paper/result/{aid}(run_meta.replay.account_id);#69回测任务按实例过滤:backtest_stats加instance_id列(ALTER迁移)+_write_back落列+GET /task?instance=N+任务中心过滤条+策略库「回测历史」按钮;回测灯done=直达最新结果页(run_meta.backtest.task_id按前缀分流),跑过无结果=任务中心过滤;#70模拟盘创建后直接跳列表(不跳结果/监控页);列宽重排(策略/实例150模式96频率60操作250,折行实测消除);#71列内容对齐实盘:策略/实例列显示实例名(instances映射,#id退化)+持仓数列(list_papers顺带count volume>0)+删创建时间列(净值日期已含);#72实盘名自动生成={实例名}_v{YYYYMMDD}{minor}(同实例同日递增,listLives计数);模拟盘名={实例名}·{模式};#73术语统一档案→实例(全局8文件UI文案+后端409提示,精确短语防误伤,spec比喻保留文档);#74MonacoDiff v4:优先monaco原生diff(差异高亮),挂载450ms自检original栏占比<30%自动降级双只读编辑器(滚动联动)——全屏模态下大概率吃到原生diff;#75收益标签与数值同源(retInfoOf:运行ret优先含kind,fallback run_returns,标签跟随数值来源,根治影子1044%实为回测收益挂影子标签);927绿+build绿+dev浏览器自测:策略库6入口(回测历史/模拟历史/实盘历史/回测灯/实走灯直达监控/组合无回放)与模拟盘列表新列全过 [vps]
2026-08-16 09:34:39 +08:00

Sanguo VeighNa 量化交易平台 v2.0

⚠️ 本 README 内容截至 2026-07,架构已大幅迁移(Web 入口=sanguo_api 单进程 8000+Vue 前端、三环境部署、因子体系/流水线/监控均已上线)。当前权威文档:

  • 部署/运维:docs/deployment/vps-production-runbook.md
  • 发布/晋升:docs/three-env-code-promote.md
  • Agent 工作入口:.claude/CLAUDE.md

下方内容仅作历史参考,按其操作(端口/凭据/安装步骤)会失败。

基于 VeighNa 4.4.0 的二次开发量化交易平台,支持 Web 界面和 Docker 容器化部署。

特性

  • 🚀 基于 VeighNa 4.4.0 - 最新稳定版本
  • 🌐 Web 界面 - FastAPI + WebSocket 实时数据推送
  • 🐳 Docker 部署 - 支持 Synology NAS 等容器环境
  • 📊 完整功能 - 行情订阅、交易下单、策略管理
  • 🔐 安全认证 - JWT Token 认证机制
  • 📡 实时推送 - WebSocket 行情、成交、持仓实时更新

项目结构

sanguo_vnpy_v2/
├── vnpy_v4.4.0/              # VeighNa 上游源码
├── sanguo_trader/             # 核心交易模块
├── sanguo_research/           # 量化投研模块
├── sanguo_data/               # 数据管理模块
├── sanguo_common/             # 公共模块
├── sanguo_web/                # Web 服务模块
│   ├── api/                   # REST API
│   ├── websocket/             # WebSocket 服务
│   └── services/              # 业务服务
├── docker/                    # Docker 配置
│   ├── Dockerfile             # 镜像构建
│   ├── docker-compose.yml     # 容器编排
│   ├── entrypoint.sh          # 启动脚本
│   └── deploy-synology.sh     # NAS 部署脚本
├── tests/                     # 测试代码
├── docs/                      # 文档
└── examples/                  # 示例代码

快速开始

方式 1: Docker 部署(推荐)

本地开发

# 构建镜像
cd docker
docker-compose build

# 启动服务
docker-compose up -d

# 访问 Web 界面
open http://localhost:8000

Synology NAS 部署

  1. 开启 SSH 服务
  2. 上传部署包到 NAS
  3. 运行部署脚本:
cd /volume1/docker/containers/sanguo_vnpy_v2/docker
sudo bash deploy-synology.sh

详细说明请参考 Synology NAS 部署指南

方式 2: 本地开发

环境要求

  • Python 3.10+
  • 推荐 Python 3.13

安装步骤

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate   # Windows

# 安装依赖
pip install -r requirements/base.txt

# 启动 Web 服务
python run_web.py

Web 服务启动

# 开发模式(端口 8002)
python run_web.py

# 生产模式
uvicorn sanguo_web.api:app --host 0.0.0.0 --port 8000 --workers 2

API 文档

启动服务后访问:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

认证

默认登录凭据:

  • 用户名: admin
  • 密码: admin123

⚠️ 重要: 首次登录后请立即修改密码!

WebSocket 连接

// 连接 WebSocket
const ws = new WebSocket('ws://localhost:8080');

// 订阅行情
ws.send(JSON.stringify({
    type: 'subscribe',
    data: { subscription: ['tick', 'order', 'trade'] }
}));

// 接收消息
ws.onmessage = (event) => {
    const message = JSON.parse(event.data);
    console.log('Received:', message);
};

测试

# 运行 API 测试
pytest tests/test_api.py -v

# 运行 WebSocket 测试
python tests/test_websocket.py

# 运行所有测试
pytest tests/ -v

开发指南

详细开发指南请查看:

主要功能模块

1. 认证系统 (/api/v1/auth)

  • 用户登录/登出
  • Token 验证
  • 用户信息获取

2. 网关管理 (/api/v1/gateway)

  • 可用网关列表
  • 网关连接/断开
  • 网关配置管理

3. 行情数据 (/api/v1/market)

  • 实时行情查询
  • 行情订阅/取消订阅
  • 合约信息查询

4. 交易功能 (/api/v1/trading)

  • 账户信息查询
  • 持仓查询
  • 订单管理(下单、撤单)
  • 成交记录查询

5. 策略管理 (/api/v1/strategy)

  • 策略列表
  • 策略启动/停止
  • 策略参数配置

环境变量

主要环境变量(见 docker/.env.example):

# 数据目录
DATA_DIR=/volume1/docker/stock/sanguo_vnpy

# 端口配置
HTTP_PORT=8000
WS_PORT=8080

# 时区
TZ=Asia/Shanghai

# JWT 密钥
JWT_SECRET_KEY=your-secret-key-here

# 数据库
DB_TYPE=sqlite
DB_PATH=/app/data/vnpy.db

分支策略

  • master - 主分支,保持稳定可部署
  • develop - 开发分支,日常开发合并
  • feature/* - 功能分支
  • hotfix/* - 热修复分支

版本历史

查看 CHANGELOG.md

技术栈

  • 后端框架: FastAPI 0.100+
  • WebSocket: websockets 12.0+
  • 数据库: SQLite (可扩展 PostgreSQL)
  • 缓存: Redis 7+
  • 容器: Docker + Docker Compose
  • 认证: JWT (python-jose)
  • 测试: pytest + httpx

许可证

MIT License

致谢

基于 VeighNa 框架开发

联系方式

  • 问题反馈: GitHub Issues
  • 文档: docs/ 目录
S
Description
sanguo_vnpy_v2
Readme 250 MiB
Languages
Jupyter Notebook 82.9%
Python 13.9%
Vue 1.5%
TypeScript 0.5%
JavaScript 0.4%
Other 0.7%