盘中基金实时估值与逻辑审计系统
拒绝黑箱,拒绝情绪化叙事。基于透明的持仓穿透 + 实时行情加权计算 + 硬核数学模型,让基金估值回归数学事实。
试用网址:https://fund.jasxu.dpdns.org/
警告:试用环境请勿使用真实持仓数据和 API Key
服务器内存和 CPU 性能较低,仅做使用演示
问题排查手册 — 涵盖注册、部署、数据源、持仓计算等常见问题的完整排查指南
整个项目分为服务端 客户端两部分
服务端可以使用 Docker 或手动部署
# 下载 docker-compose.yml
curl -O https://raw.githubusercontent.com/Ye-Yu-Mo/FundVal-Live/main/docker-compose.yml
# 下载环境变量模板
curl -O https://raw.githubusercontent.com/Ye-Yu-Mo/FundVal-Live/main/.env.example
# 复制为 .env 并修改配置
cp .env.example .env编辑 .env 文件,自定义配置:
# 数据库配置
POSTGRES_DB=fundval
POSTGRES_USER=fundval
POSTGRES_PASSWORD=change_me_in_production # ⚠️ 生产环境请修改
POSTGRES_PORT=5432
POSTGRES_IMAGE=postgres:16-alpine # 数据库镜像版本
# Django 配置
SECRET_KEY=change_me_in_production_use_random_string # ⚠️ 生产环境请修改
DEBUG=false
ALLOWED_HOSTS=localhost,127.0.0.1 # 生产环境添加你的域名
# Redis 配置
REDIS_IMAGE=redis:7-alpine # Redis 镜像版本
REDIS_URL=redis://redis:6379/0
# 应用配置
ALLOW_REGISTER=false # 是否允许用户注册
# 前端配置
FRONTEND_PORT=21345 # 前端访问端口
FRONTEND_IMAGE=jasamine/fundval-frontend:latest # 前端镜像版本
# 后端配置
BACKEND_IMAGE=jasamine/fundval-backend:latest # 后端镜像版本
GUNICORN_WORKERS=4 # Gunicorn 工作进程数(根据 CPU 核心数调整)
# Celery 配置
CELERY_LOGLEVEL=info # 日志级别:debug, info, warning, error性能调优建议:
GUNICORN_WORKERS:推荐设置为(CPU 核心数 × 2) + 1CELERY_LOGLEVEL:生产环境建议使用warning减少日志输出- 高负载场景可使用
POSTGRES_IMAGE=postgres:16替代 alpine 版本
docker-compose up -d访问 http://localhost:21345(或你在 .env 中配置的端口)
首次启动:
- 系统会自动运行数据库迁移
- 自动同步基金数据(需要等待几分钟)
- 控制台会显示 Bootstrap Key,用于初始化管理员账户
查看日志:
docker-compose logs -f backend # 查看后端日志和 Bootstrap Key- Python: 3.13+
- Node.js: 20+
- npm: 9+
- uv: Python 包管理器
- 数据库: SQLite 3.x 或 PostgreSQL 16+
- Redis: 用于 Celery 任务队列(可选)
- Nginx: 生产环境反向代理(推荐)
git clone https://github.com/Ye-Yu-Mo/FundVal-Live.git
cd FundVal-Live运行构建脚本
chmod +x build.sh
./build.sh依次选择 构建前端,端口号设定,数据库初始化,静态文件收集
chmod +x start.sh stop.sh
./start.sh启动之后,需要在日志中获取 Bootstrap Key
- Docker 用户:
docker-compose logs backend | grep 'BOOTSTRAP KEY' - 手动部署用户:运行
./start.sh即可看到
然后访问 http://localhost:21345/initialize(需要换成你自己的 IP + 端口)进行初始化
填入 BOOTSTRAP KEY,配置管理员账户和密码,是否开通注册功能
如果开启注册功能,需要重新启动后端
- 实时估值:基于持仓穿透 + 实时行情加权计算,支持东方财富、养基宝双数据源
- AI 分析:接入任意 OpenAI 协议大模型,自定义提示词模板,支持基金和持仓两个维度分析
- 养基宝集成:扫码登录、一键导入持仓、实时估值同步
- 持仓管理:多账户、父子账户结构,支持买入/卖出流水,自动重算持仓
- 历史净值:净值走势图,支持 1W / 1M / 3M / 6M / 1Y / ALL 时间范围
- 估值准确率:记录每日估值误差,统计各数据源准确率
- 自选列表:自定义基金自选分组
- 数据源偏好:用户级别数据源切换,偏好持久化
- Frontend: React 19 + Vite + Ant Design + ECharts
- Backend: Django 6 + DRF + Celery
- Database: PostgreSQL 16
- Cache: Redis 7
- Platform: Web + Desktop (Tauri) + Android (Capacitor)
可以通过Web页面直接访问使用,无需客户端
其他版本客户端,需前往 Releases 下载最新版本:
目前支持
- 安卓客户端
- macOS (ARM64)
- macOS (x86_64)
- Windows
- Linux
graph TD
subgraph Clients["客户端层"]
Browser["Web Browser"]
Desktop["Desktop · Tauri"]
Android["Android · Capacitor"]
end
subgraph FE["前端容器 · Nginx"]
React["React 19 · Ant Design · ECharts"]
end
subgraph BE["后端容器 · Gunicorn"]
Django["Django 6 + DRF\nAPI · Auth · 业务逻辑"]
end
subgraph Queue["任务队列 · Celery"]
Beat["Beat · 定时调度"]
Worker["Worker · 异步执行"]
end
subgraph Store["存储层"]
PG[("PostgreSQL 16")]
Redis[("Redis 7")]
end
subgraph Ext["外部数据源"]
EM["东方财富"]
YJB["养基宝"]
end
Browser & Desktop & Android -->|HTTP| FE
FE -->|静态文件| React
FE -->|"/api/*"| BE
BE <-->|读写| PG
BE <-->|缓存 / Broker| Redis
Beat -->|任务入队| Redis
Redis -->|任务分发| Worker
Worker -->|数据抓取| EM & YJB
Django -->|按需请求| EM & YJB
前端通过 Nginx 反向代理 /api/ 到后端。Celery Beat 定时触发净值同步,Worker 并发抓取多数据源后写入 PostgreSQL。
Docker 容器启动时,backend/entrypoint.sh 会自动执行:
- 等待数据库就绪
- 运行数据库迁移 (
migrate) - 收集静态文件 (
collectstatic) - 检查系统初始化状态 (
check_bootstrap) - 自动同步基金数据(仅在数据库为空时,
sync_funds --if-empty) - 启动应用
如需手动同步基金数据:
# Docker 环境
docker-compose exec backend python manage.py sync_funds
# 手动部署
cd backend && uv run python manage.py sync_fundsfundval/
├── frontend/ # React 前端
├── backend/ # Django 后端
│ ├── api/
│ │ ├── sources/ # 数据源(东方财富、养基宝)
│ │ └── services/ # 业务逻辑(持仓计算、养基宝导入)
│ └── entrypoint.sh # Docker 启动脚本(自动迁移)
├── docker-compose.yml # Docker 编排
├── start.sh # 手动部署启动脚本(自动迁移)
└── .github/workflows/ # CI/CD
本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 开源协议。
这意味着:
- 你可以自由使用、修改、分发本软件
- 个人使用无需开源你的修改
- 如果你用本项目代码提供网络服务(SaaS),必须开源你的修改
- 衍生作品必须使用相同协议
为什么选择 AGPL-3.0?
- 金融工具需要透明度,用户有权知道估值逻辑
- 防止闭源商业化,确保改进回流社区
- 保护开源生态,避免"拿来主义"
详见 LICENSE 文件。
本项目提供的数据与分析仅供技术研究使用,不构成任何投资建议。市场有风险,代码无绝对,交易需谨慎。