项目概述
“零成交量市场”(Zero Volume Market, ZVM)是我开发的一个基于 AI 的股票分析和模拟交易系统。这个项目尝试使用大语言模型(LLM)进行股票分析,生成投资策略,并通过虚拟盘系统验证策略效果。
项目地址:github.com/jifanchn/zero-volume-market
在线演示:
- 管理后台:s.jifan.space
- 虚拟盘:vs.jifan.space
当前状态:亏损中 😅
系统架构
技术栈
后端:
- Go 1.24+ - 高性能的静态类型语言
- Gin - 轻量级 HTTP 框架
- SQLite - 轻量级数据库
- Docker - 容器化部署
前端:
- React 18 + TypeScript
- Vite - 快速的构建工具
- Tailwind CSS + shadcn/ui - 现代化 UI 组件
- pnpm - 包管理器
AI 分析:
- 智谱 AI (GLM) - 通过 Claude Code MCP 集成
核心功能模块
1 | zero-volume-market/ |
核心功能
1. 股票管理
支持 A 股市场的股票基本信息管理,包括:
- 股票代码、名称、交易所
- 实时价格同步
- PE、PS 等估值指标
- 默认分析渠道配置
2. 多渠道 AI 分析
系统支持为每只股票配置多个分析渠道,每个渠道可以:
- 使用不同的分析方法(如基本面分析、技术面分析、新闻分析)
- 调用不同的 LLM 模型
- 设置独立的参数和提示词
分析器类型
目前实现的分析器:
cc_stock_analyze - 综合股票分析
- 分析基本面、技术面、市场情绪
- 输出目标价和买入评级
cc_stock_news - 新闻分析
- 获取最新新闻
- 分析新闻对股票的影响
cc_all_glm - 全市场分析
- 综合多个维度的分析
- 生成更全面的评估
3. 综合分析
当所有渠道分析完成后,系统会调用综合分析 LLM,将各渠道的分析结果整合:
- 汇总各渠道观点
- 生成综合投资建议(买入/持有/卖出)
- 评估风险等级
4. 策略生成
基于所有股票的分析结果,系统可以生成投资组合配置策略:
- 资产配置建议(各股票权重)
- 预期收益率
- 风险等级评估
- 策略说明
5. 虚拟盘交易系统
这是项目的核心创新点——一个完全独立实现的虚拟盘服务。
功能特点
组合管理:
- 初始资金设置(默认 100 万)
- 现金和持仓管理
- 实时总资产计算
- 盈亏统计
交易执行:
- 自动应用策略生成买卖指令
- 支持部分调仓(不是全部卖出后再买入)
- 交易记录完整保存
交易成本模拟:
系统精确模拟真实的 A 股交易成本:
1 | // 买入成本计算 |
A 股交易规则:
- 最小交易单位:100 股(1 手)
- 买入必须是 100 股的整数倍
- 卖出可以包含零股
- 满仓策略下的整手再分配逻辑
6. 定时任务调度
系统内置了 Cron 定时任务功能:
- 自动同步市场数据
- 定时触发股票分析
- 自动更新虚拟盘价格
- 自动应用最新策略
AI 分析流程
完整的工作流
1 | graph TD |
任务队列系统
所有分析任务都通过任务队列管理:
- 防止重复分析(同一股票同一时间只能有一个分析任务)
- 支持任务重试
- 任务日志记录
- 实时进度更新
LLM 提示词工程
系统精心设计了各类提示词模板:
渠道分析提示词:
1 | 你是一个专业的金融分析师。请分析股票 {STOCK_SYMBOL} ({STOCK_NAME})。 |
综合分析提示词:
1 | 你是一个高级投资顾问。请综合以下各渠道的分析结果, |
策略生成提示词:
1 | 你是一个组合投资策略师。请基于以下股票池的分析结果, |
为什么会亏损?
这是最有趣的部分。让我分析一下可能的亏损原因:
1. AI 分析的局限性
市场是不可预测的:
- LLM 基于历史数据训练,但市场在不断变化
- 黑天鹅事件无法预测
- 羊群效应和情绪波动难以量化
分析质量的波动:
- 不同模型的分析质量差异大
- 提示词微调可能导致完全不同的结论
- 数据来源的准确性和及时性
2. 交易成本的侵蚀
虽然系统已经精确计算了交易成本,但频繁交易的累积成本不容忽视:
例子:
- 买入 100 万股票:佣金 100 元 + 过户费 10 元 = 110 元
- 卖出 100 万股票:印花税 5000 元 + 佣金 100 元 + 过户费 10 元 = 5110 元
- 一轮完整交易成本:5220 元(0.522%)
如果策略频繁调仓,这些成本会快速累积。
3. 整手交易的限制
A 股的 100 股整数倍规则导致:
- 高价股(如茅台 1800 元)一手需要 18 万
- 100 万资金最多只能买 5 手
- 剩余资金无法充分利用
- 实际仓位可能低于目标配置
系统实现了”满仓整手再分配”逻辑来缓解这个问题,但无法完全解决。
4. 策略参数不当
可能的问题:
- 风险偏好设置不合适
- 调仓频率过高或过低
- 选择的股票池质量不佳
- 权重分配逻辑有缺陷
5. 市场环境因素
- 整体市场下跌(系统性风险)
- 行业轮动
- 风格切换(价值↔成长)
项目亮点
1. 完整的系统设计
从数据获取、AI 分析、策略生成到虚拟盘验证,形成了一个完整的闭环。
2. 精确的成本计算
交易成本的精确模拟让虚拟盘结果更接近真实交易。
3. 灵活的架构
- 分析器可插拔设计
- 支持多个 LLM 提供商
- 渠道配置灵活
4. 完善的测试
- 单元测试覆盖核心逻辑
- E2E 测试验证完整流程
- 边界情况测试
5. 现代化的技术栈
- Go 后端保证高性能
- React + TypeScript 前端体验良好
- Docker 容器化部署方便
未来改进方向
1. 策略优化
- 增加止损止盈逻辑
- 实现动态仓位管理
- 加入市场情绪指标
- 优化调仓触发条件
2. 风险控制
- 最大回撤控制
- 单股持仓上限
- 行业分散度要求
- 波动率目标
3. 数据增强
- 接入更多数据源
- 增加技术指标计算
- 新闻情感分析
- 机构持仓追踪
4. 回测系统
- 历史数据回测
- 参数优化
- 策略对比
- 绩效归因
5. 监控告警
- 实时盈亏告警
- 异常交易告警
- 系统健康监控
- 定期生成报告
技术难点与解决方案
1. LLM 输出的结构化
问题: LLM 输出的 JSON 格式不稳定
解决:
- 设计严格的提示词模板
- 实现输出解析和重试机制
- 添加输出格式验证
2. 并发控制
问题: 多个分析任务同时运行可能导致资源耗尽
解决:
- 实现 LLM 级别的并发控制
- 任务队列去重机制
- 依赖检测(综合分析等待渠道分析完成)
3. 数据一致性
问题: 虚拟盘和主系统的价格同步
解决:
- 实现价格同步 API
- 定时自动更新
- 缓存机制减少调用
4. 浮点数精度
问题: 金额计算需要精确到分
解决:
- 使用四舍五入函数
- 统一精度处理
- 增加单元测试验证
部署架构
Docker Compose 部署
1 | services: |
反向代理配置
使用 Nginx 反向代理:
s.jifan.space→ 后端服务vs.jifan.space→ 虚拟盘服务
开源协议
MIT License
欢迎交流和建议!
总结
“零成交量市场”是一个将 AI 应用于金融投资领域的尝试。虽然目前还在亏损,但这个项目让我学到了:
- AI 不是万能的 - 金融市场的复杂性远超 LLM 的理解能力
- 系统设计的重要性 - 完整的闭环系统能够快速验证想法
- 交易成本的威力 - 频繁交易的成本是策略盈利的重要障碍
- 持续迭代的必要性 - 需要不断优化策略和系统
最重要的教训: 即使是 AI,也无法战胜市场均值回归的规律。投资仍然需要谨慎和理性。
项目地址:github.com/jifanchn/zero-volume-market
在线体验:
- 管理后台:s.jifan.space
- 虚拟盘:vs.jifan.space
欢迎 Star 和 Fork!







