Files
myquant/docs/development.md
T
Simon 6acf938caf docs: 文档重构 — 清理 AI agent 残留,整合 docs/ 目录结构
- 删除 11 个残留文件: continuation.md, init_plan.md, reasonix.toml, djapi/continuation.md, djapi/.serena/, djapi/.claude/, djapi/.mcp.json, .claude/skills/, docs/usage.html, docs/db_schema.md, docs/report_db_design.md
- 7 个 CLAUDE-*.md 移入 docs/ 并重命名去 CLAUDE- 前缀
- 新增 4 个文档: architecture.md, development.md, api.md, deployment.md
- 重写 usage.md, README.md
- 修复所有过时引用和交叉链接
2026-08-22 11:56:40 +08:00

271 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# cc-cursor 开发指南
## 环境搭建
### 1. 克隆项目
```bash
git clone https://github.com/Simon2046/myquant.git
cd cc-cursor
```
### 2. Python 环境
```bash
conda activate quant # Python 3.11.13
```
### 3. 数据库 SSH 隧道
```bash
bash shared/script/autossh.sh
# host: 127.0.0.1:13306 user: myquant database: myquant
```
### 4. 环境变量配置
复制并编辑 `finance/.env`(参考 `finance/.env.example`):
```bash
TUSHARE_TOKEN=your_token_here
QWEN_API_KEY=sk-your-key-here
MAC_DB_PASSWORD=your_password_here
```
### 5. 验证环境
```bash
python finance/cli/demo_data_manager.py
```
## 项目结构
```
finance/ # 核心量化引擎(代码实际位置)
├── config/ # 全局配置
│ └── settings.py # .env 加载 + 路径配置
├── database/ # 数据库层
│ ├── connection.py # SQLAlchemy 引擎 + SSH 自动恢复
│ ├── models.py # ORM 模型(mac_ 前缀表)
│ └── dao.py # 数据访问对象
├── data/ # 数据层
│ ├── data_manager.py # 统一数据入口
│ └── sources/ # 数据源实现
│ ├── tushare_source.py
│ └── akshare_source.py
├── factors/ # 因子引擎
│ ├── base.py # 因子基类
│ ├── engine.py # 因子计算引擎
│ ├── registry.py # 因子注册表
│ ├── technical/ # 技术因子(10 类)
│ ├── fundamental/ # 基本面因子
│ └── sentiment/ # 情绪因子
│ ├── sentiment_engine.py
│ ├── sentiment_factor.py
│ ├── news_source.py # 三源新闻聚合
│ └── qwen_client.py # Qwen API 客户端
├── backtest/ # 回测引擎
│ ├── base.py # 策略基类
│ ├── report.py # 回测报告
│ ├── signal.py # 信号工具
│ ├── vectorbt/ # VectorBT 引擎
│ └── strategies/ # 内置策略
├── optimizer/ # 参数优化
│ ├── engine.py # Optuna 引擎
│ ├── space.py # 搜索空间
│ ├── objectives.py # 优化目标
│ └── result.py # 优化结果
├── models/ # ML 模型
│ ├── base.py # 模型基类
│ ├── features.py # 特征工程
│ ├── backtest_integration.py # ML 策略
│ ├── lightgbm/
│ └── catboost/
├── agents/ # Agent 系统
│ ├── base.py # Agent 基类
│ ├── orchestrator.py # 编排器
│ ├── research_agent.py # 因子研究
│ ├── selection_agent.py # 股票打分
│ ├── risk_agent.py # 风险评估
│ └── report_agent.py # 日报生成
├── cli/ # 命令行
│ ├── agent_cli.py # Agent CLI 入口
│ └── demo_*.py # 验证脚本
└── reports/ # 日报输出
└── storage.py # 报告持久化
```
## 开发约定
### 代码组织
- 代码内 import 用顶层名 `data.*`/`factors.*` 等 — CLI 自动把 `finance/` 加入 sys.path
- 文件路径为 `finance/data/xxx.py` 等
### 数据流约束
```
Data → Factor → Model → Strategy → Backtest → Report
```
**必须遵守**:
- 策略层禁止直接访问 AkShare/Tushare → 全部通过 `DataManager`
- 模型层禁止直接访问数据库 → 全部通过 `DataManager`
- 指数代码规则:`.SH`=指数, `.SZ` 开头非 399=个股
- 数据源优先级:Tushare → AkShare (fallback)
### 接口规范
#### 因子接口
```python
class BaseFactor:
def calculate(self, df: pd.DataFrame) -> pd.Series:
"""接收 OHLCV 数据,返回因子值序列"""
```
#### 策略接口
```python
class BaseStrategy:
def generate_signals(self, factor_df: pd.DataFrame) -> pd.Series:
"""接收因子数据,返回交易信号: 1=buy, 0=sell, -1=hold"""
```
#### 模型接口
```python
class BaseModel:
def fit(self, X, y): ...
def predict(self, X) -> np.ndarray: ...
def save(self, path): ...
@classmethod
def load(cls, path): ...
```
### 多步任务规则
复杂任务(涉及 3+ 文件或 2+ 模块)执行前:
1. 输出执行计划清单(步骤 + 每步验证方法)
2. 每步完成后验证通过才继续
3. 遇到失败先定位根因,不跳过
### 修改多文件前
先说明:文件清单、原因、影响;优先小范围修改。
## 模块说明
### 数据层 (`finance/data/`)
双数据源架构:Tushare(优先)→ AkShare(fallback),DB 缓存优先。
```python
from data.data_manager import DataManager
dm = DataManager()
dm.init_db() # 首次建表(幂等)
stocks = dm.get_stock_list() # → 5,524 只
daily = dm.get_daily("000001.SZ") # → 日线
fina = dm.get_financial("000001.SZ") # → 财务
n = dm.sync_daily("000001.SZ") # → 增量同步
```
### 因子引擎 (`finance/factors/`)
34 个注册因子,12 个分类:动量、RSI、MACD、量价、布林、ATR、均线、波动率、换手率、振幅、基本面、情绪。
```python
from factors.registry import get_factor, list_factors
from factors.engine import FactorEngine
fe = FactorEngine(dm)
factor_df = fe.compute("000001.SZ", [get_factor("momentum_20"), get_factor("rsi_14")])
```
### 回测引擎 (`finance/backtest/`)
VectorBT 1.0,只做多,10 万/万三。5 个内置策略 + 自定义策略接口。
```python
from backtest.vectorbt.engine import VectorBTEngine
engine_bt = VectorBTEngine(initial_capital=100_000, commission=0.0003)
report = engine_bt.run(strategy, price_df, factor_df)
```
### 参数优化 (`finance/optimizer/`)
Optuna 4.9 + Walk-Forward 滚动验证。
```python
from optimizer.engine import OptunaEngine
opt = OptunaEngine(engine_bt)
result = opt.optimize(StrategyClass, space, price_df, factor_df, metric="sharpe", n_trials=200)
```
### ML 模型 (`finance/models/`)
LightGBM 4.6 + CatBoost 1.2,统一接口,特征工程防前视偏差。
```python
from models.features import FeatureEngine
from models.lightgbm.model import LightGBMModel
fe = FeatureEngine(lookahead=5)
X, y = fe.build(factor_df, price_df, fit=True)
model = LightGBMModel(params={"n_estimators": 200}).fit(X_train, y_train)
```
### 情绪因子 (`finance/factors/sentiment/`)
三数据源聚合(AkShare 个股新闻 + 新闻联播 DB + MCP trendradar-news),Qwen DashScope + Ollama 双后端。
```python
from factors.sentiment.sentiment_engine import SentimentEngine
sent = SentimentEngine(dm)
sent_df = sent.compute("000001.SZ", max_news=20)
```
### Agent 系统 (`finance/agents/`)
4 个 Agent(Research/Selection/Risk/Report)+ 编排器 + CLI。
```bash
python finance/cli/agent_cli.py daily # 完整流程
python finance/cli/agent_cli.py picks 15 # 选股
python finance/cli/agent_cli.py risk # 风险评估
```
## 安全规范
### 禁止提交
- `.env`(含真实 key)
- API Key(`sk-*`、`TUSHARE_TOKEN` 等)
- Cookie / Session / Token / 密钥
- 个人隐私数据(手机号、身份证、密码)
### 必须提供
- `.env.example` — 仅含占位符的示例配置
### 提交前检查
```bash
grep -r "sk-\|token\|password" --include="*.py" --include="*.md" --include="*.yaml" | grep -v ".example\|your_token\|your_password"
```
## 已知 Bug 速查
详见 [data-layer.md](data-layer.md) 和 [agents.md](agents.md) 中的 Bug 列表。
## 文档索引
| 文档 | 内容 |
|------|------|
| [使用指南](usage.md) | 各模块使用方法和代码示例 |
| [架构说明](architecture.md) | 项目架构、数据流、设计原则 |
| [因子与表结构速查](reference.md) | 34 因子注册表、DB 表结构、数据源接口 |
| [数据层详解](data-layer.md) | DataManager、数据库、缓存策略、已知 Bug |
| [因子引擎详解](factors.md) | 因子计算、情绪引擎、新闻源 |
| [回测引擎详解](backtest.md) | VectorBT、策略、信号工具、Optuna |
| [ML 模型详解](ml-models.md) | 特征工程、LightGBM/CatBoost、ML 策略 |
| [Agent 系统详解](agents.md) | Agent 架构、CLI、日报 |
| [部署说明](deployment.md) | 本地环境、服务器、uWSGI、rsync 部署 |
| [DJAPI 接口](api.md) | Django API 端点参考 |