基于 nof1.ai 的 AI 交易系统实现,采用多模型对比模式,包含完整的战报系统。
- ✅ New Baseline Strategy: 交易股票,整合新闻/情绪数据,反思式自我改进
- ✅ 多模型对比: 4个AI模型(DeepSeek, Qwen, Claude, GPT-4)独立交易,完全隔离账户
- ✅ 反思机制: T+N 天自动复盘,生成经验教训存入记忆库
- ✅ AI 选股: 用户可触发 AI 从市场中智能筛选股票池
- ✅ 每日战报: 自动生成详细的交易战报,多维度分析模型表现
- Runtime: Node.js + TypeScript
- Framework: Express
- ORM: Prisma (SQLite)
- 实时通信: WebSocket (socket.io)
- 定时任务: node-cron
- API 调用: axios
- Framework: Vue 3 (Composition API) + TypeScript
- 构建工具: Vite
- 状态管理: Pinia
- 路由: Vue Router
- 样式: Tailwind CSS
- 图表: ECharts
- 实时通信: socket.io-client
``` AITrading/ ├── server/ # Node.js 后端 │ ├── src/ │ │ ├── adapters/ # 适配器层 │ │ │ ├── llm/ # LLM 提供商 (DeepSeek, Qwen) │ │ │ │ ├── interface.ts │ │ │ │ ├── deepseek.adapter.ts │ │ │ │ └── qwen.adapter.ts │ │ │ └── data/ # 数据提供商 (Market, News) │ │ │ ├── interface.ts │ │ │ ├── market.adapter.ts │ │ │ └── news.adapter.ts │ │ ├── services/ # 业务逻辑 │ │ │ ├── brain.service.ts # AI 决策引擎 │ │ │ ├── reflection.service.ts # 反思机制 │ │ │ ├── portfolio.service.ts # 仓位管理 │ │ │ ├── report.service.ts # 战报生成 │ │ │ └── stockpicker.service.ts # AI 选股 │ │ ├── cron/ # 定时任务 │ │ │ └── trading.cron.ts │ │ ├── websocket/ # WebSocket 服务 │ │ │ └── server.ts │ │ ├── routes/ # API 路由 │ │ │ └── index.ts │ │ ├── utils/ # 工具函数 │ │ └── app.ts # 应用入口 │ ├── prisma/ │ │ ├── schema.prisma # 数据库模型 │ │ └── seed.ts # 种子数据脚本 │ ├── scripts/ # 辅助脚本 │ │ ├── generate-test-report.ts # 生成测试战报 │ │ ├── seed-history.ts # 生成历史数据 │ │ └── verify-data.ts # 数据验证 │ ├── package.json │ └── tsconfig.json │ ├── client/ # Vue 3 前端 │ ├── src/ │ │ ├── components/ # UI 组件 │ │ │ ├── layout/ │ │ │ │ ├── Navbar.vue │ │ │ │ └── Sidebar.vue │ │ │ ├── trading/ │ │ │ │ ├── ModelChat.vue │ │ │ │ ├── TradesList.vue │ │ │ │ ├── Positions.vue │ │ │ │ └── CompDetails.vue │ │ │ ├── charts/ │ │ │ │ └── PerformanceChart.vue │ │ │ └── modals/ │ │ │ └── StockPicker.vue │ │ ├── views/ # 页面 │ │ │ ├── Home.vue # 排行榜主页 │ │ │ ├── Live.vue # 实时交易 │ │ │ ├── Reports.vue # 战报列表 │ │ │ └── ReportDetail.vue # 战报详情 │ │ ├── stores/ # Pinia 状态管理 │ │ │ └── trading.store.ts │ │ ├── composables/ # 组合式函数 │ │ │ └── useWebSocket.ts │ │ ├── types/ # TypeScript 类型 │ │ ├── App.vue │ │ └── main.ts │ ├── package.json │ ├── vite.config.ts │ └── tailwind.config.js │ ├── 快速开始指南.md # 安装运行指南 ├── 项目总结.md # 项目架构总结 ├── 数据库设置说明.md # 数据库文档 ├── 测试数据脚本说明.md # 测试工具文档 ├── 战报功能说明.md # 战报系统文档 ├── 持仓分布功能说明.md # 持仓分布功能 ├── 当日交易展示功能说明.md # 交易展示功能 └── README.md # 项目说明(本文档) ```
- Node.js >= 18
- npm 或 yarn
详细步骤请查看:快速开始指南.md
```bash
cd server npm install
npx prisma migrate dev npx prisma generate
cd ../client npm install ```
在 `server/.env` 中配置 API Keys:
```env
DEEPSEEK_API_KEY=your_deepseek_api_key DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions
QWEN_API_KEY=your_qwen_api_key QWEN_API_URL=https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
MARKET_API_KEY=
NEWS_API_KEY=
PORT=3000 DATABASE_URL="file:./dev.db" ```
```bash
cd server npm run dev
cd client npm run dev ```
访问 http://localhost:5173 查看应用。
- 用户输入筛选条件(如 "寻找最近一周新闻热度高的科技股")
- AI 从市场中分析并推荐 10 只股票,附带推荐理由
- 用户可接受、调整或取消推荐
- DeepSeek 和 Qwen 各自拥有独立的 $100,000 虚拟账户
- 每天盘前 9:00 AM (美东时间),两个模型同时:
- 获取股票池中所有标的的最新行情和新闻
- 读取各自的历史 Reflection (经验教训)
- 独立做出交易决策
- 输出详细的 Rationale (决策理由)
- AI 自主决定每只股票的仓位比例
- 硬性约束:单只股票 ≤ 20%,总仓位 ≤ 80%
- 保留至少 20% 现金用于风险控制
- 每笔交易执行后的 T+5 天自动触发复盘
- 系统将以下信息发送给 LLM:
- 当时的决策理由 (Rationale)
- 实际盈亏结果 (P&L)
- 期间发生的市场事件
- LLM 生成"经验教训",存入该模型的记忆库
- 下次决策时,相关经验会被检索并加入 Prompt
- WebSocket 推送交易状态更新
- 资产曲线对比图表
- 模型"思考过程"实时流式展示 (ModelChat)
- 持仓、已完成交易、策略详情等多维度数据
参考 nof1.ai 的布局风格:
- 顶部导航:LIVE | LEADERBOARD | AI选股 | MODELS
- 策略切换:New Baseline | Monk Mode | ...
- 主图表区:双模型资产曲线对比
- 侧边栏:可折叠,展示 COMPLETED TRADES | MODELCHAT | POSITIONS | COMP DETAILS
系统包含三个自动定时任务:
- 获取股票池中所有标的的最新数据
- 并行触发所有AI模型(DeepSeek, Qwen, Claude, GPT-4)的决策流程
- 生成交易计划并执行交易
- 检查所有 T+5 天的已平仓交易
- 触发 Reflection 流程
- 将生成的经验教训存入数据库
- 统计当日所有模型的表现
- 计算排名变化和持仓分布
- 生成完整的每日战报
- 推送WebSocket通知
配置说明: 可在 .env 文件中自定义定时任务时间,详见快速开始指南
- 项目架构设计
- 后端基础框架搭建
- Prisma Schema 实现(12张表)
- LLM 适配器实现(DeepSeek + Qwen + Claude + GPT-4)
- 数据适配器实现(Mock 版本)
- 核心业务逻辑(Brain + Portfolio + Reflection + Report)
- WebSocket 实时通信
- 定时任务(交易 + 反思 + 战报)
- 前端基础框架搭建
- UI 布局实现(Cyberpunk风格)
- AI 选股界面
- 排行榜页面
- 战报列表页面
- 战报详情页面(仪表盘风格)
- 侧边栏详情面板
- 前后端集成测试
- 测试数据脚本工具
- 完整文档系统
- 资产曲线图表(ECharts集成)
- AI文字总结(LLM生成战报总结)
- 数据导出功能(PDF/CSV)
- 真实API接入(Yahoo Finance / News API)
- 更多交易策略(Monk Mode / Situational Awareness)
项目完成度: 约 95%(核心功能全部完成)
-
完整的战报系统
- 仪表盘风格设计,信息层次清晰
- 多维度视角(模型维度 + 股票维度)
- 决策透明化,展示AI原始理由
- 自动化洞察生成
-
真正的反思机制
- AI自我学习和持续改进
- 经验教训存入记忆库
- 避免重复犯错
-
多模型公平对比
- 4个主流LLM同台竞技
- 完全独立的账户
- 清晰的性能对比
-
生产级架构
- 清晰的分层设计
- TypeScript全栈类型安全
- 易于扩展和维护
-
完善的文档和工具
- 详细的中文文档
- 测试数据生成工具
- 数据验证工具
MIT