7 Sprints 全部完成: Sprint 0: 基础设施 (DataManager + MariaDB) Sprint 1: 因子引擎 (34因子/12分类) Sprint 2: VectorBT 回测 (5策略+截面) Sprint 3: Optuna 优化 (+Walk-Forward) Sprint 4: ML 模型 (LightGBM+CatBoost) Sprint 5: Qwen 情绪因子 (三源新闻+日期对齐) Sprint 6: Agent 系统 (4Agent+日报.md/.html) 生产加固 (15项): Tushare双源fallback, SSH自动恢复, pool_pre_ping, save_daily先删后插, load_dotenv绝对路径, 日报5d/20d修复, RiskAgent改上证指数, 昨日对比+数据截止, mac_report utf8mb4, CLAUDE-*.md 9条已知Bug, demo全参数化, djapi数据源归一化, indexDatas API修正 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
676 lines
5.5 KiB
Markdown
676 lines
5.5 KiB
Markdown
我认真看了你的目标和现有环境,我认为有一个关键点需要调整:
|
||
|
||
**不要把 Claude Code Plugin 当成系统主体。**
|
||
|
||
对于你的项目:
|
||
|
||
```text
|
||
Claude Code
|
||
MCP-Hub
|
||
Django API
|
||
AkShare
|
||
MariaDB
|
||
VectorBT
|
||
Optuna
|
||
LightGBM
|
||
Qwen
|
||
```
|
||
|
||
Claude Code 应该只是:
|
||
|
||
```text
|
||
AI开发助手
|
||
AI研究助手
|
||
```
|
||
|
||
而不是:
|
||
|
||
```text
|
||
系统运行时核心
|
||
```
|
||
|
||
真正的核心应该是:
|
||
|
||
```text
|
||
finance/
|
||
```
|
||
finance 目录下python虚拟环境位于 finance/.venv/,在项目根目录下 可用 source finance/.venv/bin/activate激活
|
||
这个目录未来即使你不用 Claude、换成 Cursor、Codex、OpenHands、Aider,都应该能独立运行。
|
||
|
||
---
|
||
|
||
# 推荐总体架构
|
||
|
||
未来你的根目录:
|
||
|
||
```text
|
||
/Users/summer/Downloads/cc-cursor
|
||
|
||
├── djapi/
|
||
│
|
||
├── finance/
|
||
│
|
||
├── mcp-servers/
|
||
│
|
||
├── shared/
|
||
│
|
||
├── docs/
|
||
│
|
||
└── .claude/
|
||
```
|
||
|
||
---
|
||
|
||
# 各目录职责
|
||
|
||
## djapi
|
||
|
||
仅负责:
|
||
|
||
```text
|
||
数据库
|
||
用户管理
|
||
任务管理
|
||
API接口
|
||
报告管理
|
||
```
|
||
|
||
类似:
|
||
|
||
```text
|
||
Quant Platform Backend
|
||
```
|
||
|
||
---
|
||
|
||
## finance
|
||
|
||
核心量化引擎
|
||
|
||
未来90%的代码都在这里。
|
||
|
||
---
|
||
|
||
结构:
|
||
|
||
```text
|
||
finance/
|
||
|
||
├── config/
|
||
│
|
||
├── data/
|
||
│
|
||
├── factors/
|
||
│
|
||
├── models/
|
||
│
|
||
├── strategy/
|
||
│
|
||
├── optimizer/
|
||
│
|
||
├── backtest/
|
||
│
|
||
├── portfolio/
|
||
│
|
||
├── execution/
|
||
│
|
||
├── reports/
|
||
│
|
||
├── scheduler/
|
||
│
|
||
└── cli/
|
||
```
|
||
|
||
---
|
||
|
||
# 第一阶段(V1)
|
||
|
||
目标:
|
||
|
||
```text
|
||
数据获取
|
||
因子计算
|
||
回测
|
||
参数优化
|
||
```
|
||
|
||
技术栈:
|
||
|
||
```text
|
||
AkShare
|
||
MariaDB
|
||
VectorBT
|
||
Optuna
|
||
```
|
||
|
||
---
|
||
|
||
## 实施周期
|
||
|
||
### Week 1
|
||
|
||
基础设施
|
||
|
||
---
|
||
|
||
目录:
|
||
|
||
```text
|
||
finance/
|
||
|
||
config/
|
||
data/
|
||
database/
|
||
```
|
||
|
||
---
|
||
|
||
完成:
|
||
|
||
### DataManager
|
||
|
||
```python
|
||
class DataManager:
|
||
```
|
||
|
||
统一管理:
|
||
|
||
```text
|
||
股票列表
|
||
日线
|
||
分钟线
|
||
财务数据
|
||
```
|
||
|
||
---
|
||
|
||
不要让策略直接调用:
|
||
|
||
```python
|
||
ak.stock_zh_a_hist()
|
||
```
|
||
|
||
而是:
|
||
|
||
```python
|
||
data_manager.get_daily()
|
||
```
|
||
|
||
这样以后换 TuShare 不改策略。
|
||
|
||
---
|
||
|
||
### Week 2
|
||
|
||
因子引擎
|
||
|
||
建立:
|
||
|
||
```text
|
||
factors/
|
||
|
||
technical/
|
||
fundamental/
|
||
```
|
||
|
||
---
|
||
|
||
例如:
|
||
|
||
```text
|
||
MomentumFactor
|
||
RSIFactor
|
||
ROEFactor
|
||
PEFactor
|
||
```
|
||
|
||
统一接口:
|
||
|
||
```python
|
||
factor.calculate(df)
|
||
```
|
||
|
||
---
|
||
|
||
### Week 3
|
||
|
||
VectorBT回测层
|
||
|
||
建立:
|
||
|
||
```text
|
||
backtest/vectorbt/
|
||
```
|
||
|
||
---
|
||
|
||
统一接口:
|
||
|
||
```python
|
||
engine.run(strategy)
|
||
```
|
||
|
||
以后:
|
||
|
||
```text
|
||
VectorBT
|
||
Backtrader
|
||
Zipline
|
||
```
|
||
|
||
都能替换。
|
||
|
||
---
|
||
|
||
### Week 4
|
||
|
||
Optuna优化层
|
||
|
||
建立:
|
||
|
||
```text
|
||
optimizer/
|
||
```
|
||
|
||
---
|
||
|
||
统一接口:
|
||
|
||
```python
|
||
optimizer.optimize(strategy)
|
||
```
|
||
|
||
实现:
|
||
|
||
```text
|
||
MA
|
||
RSI
|
||
MACD
|
||
```
|
||
|
||
自动寻优。
|
||
|
||
---
|
||
|
||
# 第二阶段(V2)
|
||
|
||
目标:
|
||
|
||
```text
|
||
机器学习选股
|
||
```
|
||
|
||
技术:
|
||
|
||
```text
|
||
LightGBM
|
||
CatBoost
|
||
```
|
||
|
||
---
|
||
|
||
## 新增目录
|
||
|
||
```text
|
||
models/
|
||
|
||
├── lightgbm/
|
||
└── catboost/
|
||
```
|
||
|
||
---
|
||
|
||
建立统一模型接口:
|
||
|
||
```python
|
||
class BaseModel:
|
||
```
|
||
|
||
---
|
||
|
||
例如:
|
||
|
||
```python
|
||
fit()
|
||
|
||
predict()
|
||
|
||
save()
|
||
|
||
load()
|
||
```
|
||
|
||
---
|
||
|
||
所有模型遵循:
|
||
|
||
```python
|
||
BaseModel
|
||
```
|
||
|
||
接口。
|
||
|
||
---
|
||
|
||
# 第三阶段(V3)
|
||
|
||
目标:
|
||
|
||
```text
|
||
新闻因子
|
||
公告因子
|
||
研报因子
|
||
```
|
||
|
||
技术:
|
||
|
||
```text
|
||
Qwen
|
||
```
|
||
|
||
---
|
||
|
||
新增:
|
||
|
||
```text
|
||
factors/sentiment/
|
||
|
||
models/qwen/
|
||
```
|
||
|
||
---
|
||
|
||
Qwen职责:
|
||
|
||
```text
|
||
文本转因子
|
||
```
|
||
|
||
例如:
|
||
|
||
```text
|
||
公告
|
||
↓
|
||
Qwen
|
||
↓
|
||
sentiment_score
|
||
↓
|
||
feature_101
|
||
```
|
||
|
||
---
|
||
|
||
注意:
|
||
|
||
Qwen不是策略。
|
||
|
||
Qwen是:
|
||
|
||
```text
|
||
因子生产工具
|
||
```
|
||
|
||
---
|
||
|
||
# 第四阶段(V4)
|
||
|
||
Agent化
|
||
|
||
新增:
|
||
|
||
```text
|
||
finance/agents/
|
||
```
|
||
|
||
---
|
||
|
||
结构:
|
||
|
||
```text
|
||
research_agent
|
||
selection_agent
|
||
risk_agent
|
||
report_agent
|
||
```
|
||
|
||
---
|
||
|
||
例如:
|
||
|
||
### ResearchAgent
|
||
|
||
负责:
|
||
|
||
```text
|
||
发现新因子
|
||
```
|
||
|
||
---
|
||
|
||
### SelectionAgent
|
||
|
||
负责:
|
||
|
||
```text
|
||
股票打分
|
||
```
|
||
|
||
---
|
||
|
||
### RiskAgent
|
||
|
||
负责:
|
||
|
||
```text
|
||
仓位控制
|
||
```
|
||
|
||
---
|
||
|
||
# Claude Code 接入时间点
|
||
|
||
很多人一开始就写 Skill。
|
||
|
||
我建议:
|
||
|
||
### 不要现在写大量 Skill
|
||
|
||
第一阶段只保留:
|
||
|
||
```text
|
||
.claude/
|
||
|
||
skills/
|
||
|
||
factor-research
|
||
backtest
|
||
stock-selection
|
||
```
|
||
|
||
三个就够。
|
||
|
||
---
|
||
|
||
等 V2 完成以后再扩展。
|
||
|
||
---
|
||
|
||
# 数据流设计(必须遵守)
|
||
|
||
未来所有代码都遵守:
|
||
|
||
```text
|
||
Data
|
||
↓
|
||
|
||
Factor
|
||
↓
|
||
|
||
Model
|
||
↓
|
||
|
||
Strategy
|
||
↓
|
||
|
||
Backtest
|
||
↓
|
||
|
||
Report
|
||
```
|
||
|
||
---
|
||
|
||
禁止:
|
||
|
||
```text
|
||
Strategy
|
||
↓
|
||
直接访问AkShare
|
||
```
|
||
|
||
---
|
||
|
||
禁止:
|
||
|
||
```text
|
||
Model
|
||
↓
|
||
直接访问数据库
|
||
```
|
||
|
||
---
|
||
|
||
全部通过 Service 层。
|
||
|
||
---
|
||
|
||
# 推荐实施顺序
|
||
|
||
## Sprint 1(1~2周)
|
||
|
||
完成:
|
||
|
||
```text
|
||
finance/
|
||
DataManager
|
||
MariaDB
|
||
AkShare
|
||
```
|
||
|
||
目标:
|
||
|
||
```text
|
||
获取任意股票历史数据
|
||
```
|
||
|
||
---
|
||
|
||
## Sprint 2(1周)
|
||
|
||
完成:
|
||
|
||
```text
|
||
Factor Engine
|
||
```
|
||
|
||
目标:
|
||
|
||
```text
|
||
计算10个基础因子
|
||
```
|
||
|
||
---
|
||
|
||
## Sprint 3(1周)
|
||
|
||
完成:
|
||
|
||
```text
|
||
VectorBT
|
||
```
|
||
|
||
目标:
|
||
|
||
```text
|
||
回测单因子策略
|
||
```
|
||
|
||
---
|
||
|
||
## Sprint 4(1周)
|
||
|
||
完成:
|
||
|
||
```text
|
||
Optuna
|
||
```
|
||
|
||
目标:
|
||
|
||
```text
|
||
自动参数优化
|
||
```
|
||
|
||
---
|
||
|
||
## Sprint 5(2周)
|
||
|
||
完成:
|
||
|
||
```text
|
||
LightGBM
|
||
CatBoost
|
||
```
|
||
|
||
目标:
|
||
|
||
```text
|
||
训练未来5日收益预测模型
|
||
```
|
||
|
||
---
|
||
|
||
## Sprint 6(2周)
|
||
|
||
完成:
|
||
|
||
```text
|
||
Qwen情绪因子
|
||
```
|
||
|
||
目标:
|
||
|
||
```text
|
||
新闻情绪打分
|
||
```
|
||
|
||
---
|
||
|
||
## Sprint 7
|
||
|
||
完成:
|
||
|
||
```text
|
||
Agent
|
||
Dashboard
|
||
自动日报
|
||
```
|
||
|
||
---
|
||
|
||
按照这个路线,你的代码会从:
|
||
|
||
```text
|
||
Mac Mini 单机量化研究平台
|
||
```
|
||
|
||
平滑演进到:
|
||
|
||
```text
|
||
多因子 + ML + LLM + Agent
|
||
量化研究平台
|
||
```
|
||
|
||
中间不会出现“推倒重写”的情况。最关键的是先把 **DataManager → Factor Engine → Backtest Engine → Model Engine** 四个基础引擎设计好,后面的 LightGBM、Qwen、Agent 都只是插件式增加能力。
|
||
|