Files

208 lines
9.2 KiB
Markdown
Raw Permalink 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.
# 中短期A股选股辅助系统 — 项目计划
## 一、项目定位
基于 opencode + Skill/Custom Tool 机制构建的 **A股选股分析辅助工具**。利用 AI 辅助多维度分析,
帮助用户做出更有信息量的选股决策。**不涉及自动交易,仅做分析推荐,人工下单。**
## 二、核心原则
1. **验证优先** — 任何策略上线前必须经过历史回测,不依赖未经数据验证的经验法则
2. **辅助决策,而非替代决策** — 输出结构化分析报告,给出评分和依据,最终决策权归用户
3. **数据驱动** — 所有分析基于可量化的数据指标,避免主观模糊的语言
4. **增量迭代** — 先建回测引擎,再建选股工具,最后补舆情分析
## 三、技术架构
```
┌──────────────────────────────────────────────┐
│ opencode TUI │
│ │
│ ┌──────────┐ ┌──────────┐ ┌────────────┐ │
│ │ Skills │ │ Skills │ │ Skills │ │
│ │ Screener │ │ Analyzer │ │ Overview/ │ │
│ │ │ │ │ │ Backtest │ │
│ └────┬─────┘ └────┬─────┘ └──────┬──────┘ │
│ │ │ │ │
│ ┌────▼──────────────▼───────────────▼──────┐ │
│ │ Custom Tools (TypeScript) │ │
│ │ stock-data / stock-screen / backtest │ │
│ └──────────────────┬───────────────────────┘ │
└─────────────────────┼─────────────────────────┘
│ Bun.$ `python3 ...`
┌─────────────────────▼─────────────────────────┐
│ Python Scripts │
│ ┌───────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ AKShare │ │ Screener │ │ Backtest │ │
│ │ Data │ │ Engine │ │ Engine │ │
│ └───────────┘ └──────────┘ └──────────────┘ │
└───────────────────────────────────────────────┘
```
### 数据源
| 数据类别 | 来源 | 说明 |
|----------|------|------|
| 日K/周K行情 | AKShare | `stock_zh_a_hist` |
| 实时行情 | AKShare | `stock_zh_a_spot_em` |
| 财务报表 | AKShare | `stock_financial_analysis_indicator` |
| 资金流向 | AKShare | `stock_individual_fund_flow` |
| 龙虎榜 | AKShare | `stock_sina_lhb_detail_daily` |
| 新闻舆情 | AKShare + 自建爬虫 | `stock_news_em` |
| 板块数据 | AKShare | `stock_board_industry_*` |
## 四、分阶段实施计划
### 阶段 0:环境与框架搭建 ✅
- [x] 初始化项目目录结构
- [ ] 安装 Python 环境与依赖
- [x] 编写 AGENTS.md 供 opencode 理解项目
- [x] 搭建 Custom Tool 骨架(TypeScript → Python 桥接)
- [x] 搭建 Skill 文件骨架
- [x] 适配小资金(5万)场景约束
### 阶段 1:回测引擎(高优先级)
**目标:** 任何策略可以输入规则 + 参数,输出回测报告。
- [ ] 实现回测引擎核心 `backtest_engine.py`
- 模拟交易(按收盘价成交)
- 计算收益曲线、胜率、最大回撤、夏普比率
- 支持多策略对比
- [ ] 实现 `stock-backtest` 工具(TypeScript 包装)
- [ ] 实现回测 Skill(指导 LLM 如何设计、运行、解读回测)
- [ ] 用历史数据跑几个经典策略验证引擎正确性
**验证标准:** 能跑出 60日均线上穿120日均线 这个经典策略在沪深300上的回测结果。
### 阶段 2:选股引擎
**目标:** 多因子打分,输出 Top N 推荐列表。
- [ ] 实现选股筛选器 `stock_screener.py`
- 技术因子:趋势强度、均线排列、量价配合、RSI、MACD
- 资金因子:主力净流入(3/5/10日)、北向资金变化
- 基本面因子:PE 分位、ROE、营收/利润增速
- 消息因子:近期新闻数量、机构评级变化(后续补充)
- 加权打分公式
- [ ] 实现 `stock-screen` 工具
- [ ] 实现选股 Skill(工作流:大盘评估 → 多因子筛选 → 排序输出)
### 阶段 3:单股深度分析
**目标:** 对任意股票生成结构化分析报告。
- [ ] 实现个股分析器 `stock_analyzer.py`
- 技术面:趋势定位、均线状态、支撑/阻力位、技术形态识别
- 资金面:近期主力资金行为模式
- 基本面:PE/PB 历史分位、杜邦分析摘要
- 消息面:近30天关键公告、新闻情绪评分
- [ ] 实现 `stock-analyzer` Skill
### 阶段 4:大盘环境评估
**目标:** 每次选股前判断当前是否适合操作。
- [ ] 实现大盘分析 `market_overview.py`
- 主要指数趋势判断
- 市场宽度(上涨/下跌家数比)
- 成交量趋势
- 板块轮动热力图
- 仓位建议(轻仓/中等/重仓)
- [ ] 实现 `market-overview` Skill
### 阶段 5:舆情分析增强
- [ ] 新闻爬取与解析
- [ ] 关键词/情绪评分
- [ ] 机构研报监控
## 五、因子体系设计(初版)
### 多因子打分权重
| 维度 | 权重 | 子因子 |
|------|------|--------|
| 技术面 | 35% | 趋势强度、均线排列、量价配合、RSI位置 |
| 资金面 | 30% | 主力净流入趋势、北向资金、大单占比 |
| 基本面 | 25% | PE分位、ROE、利润增速、营收增速 |
| 消息面 | 10% | 新闻热度、机构评级方向 |
### 每个因子标准化为 0-100 分,加权求和得综合分。
## 六、风险与应对
| 风险 | 应对方案 |
|------|----------|
| AKShare 接口变动 | 封装统一数据层,多数据源 fallback |
| LLM 分析幻觉 | 所有数据由 Python 脚本计算,LLM 仅做解读和呈现 |
| 策略过拟合 | 回测引擎支持样本外检验(滚动窗口) |
| 市场风格切换 | 多因子框架允许动态调整权重 |
## 七、目录结构
```
stock/
├── .opencode/
│ ├── tools/ # Custom Tools (LLM 可调用的函数)
│ │ ├── stock-data.ts # 数据获取工具组
│ │ ├── stock-screen.ts # 选股筛选工具组
│ │ └── stock-backtest.ts # 回测工具组
│ └── skills/ # Agent Skills (工作流指令)
│ ├── stock-screener/ # 选股工作流
│ ├── stock-analyzer/ # 单股分析工作流
│ ├── market-overview/ # 大盘评估工作流
│ └── stock-backtest/ # 回测工作流
├── scripts/ # Python 实现
│ ├── market_data.py # 数据获取 (AKShare)
│ ├── stock_screener.py # 多因子选股引擎
│ ├── stock_analyzer.py # 个股深度分析
│ ├── backtest_engine.py # 回测引擎
│ └── sentiment.py # 舆情分析
├── docs/
│ └── PLAN.md # 本文件
├── requirements.txt
├── AGENTS.md # opencode 项目理解
└── README.md
```
## 八、小资金(5万)场景适配
### 约束条件
| 约束 | 影响 | 设计调整 |
|------|------|----------|
| 每股单价限制 | 股价 >500 元直接买不起1手 | 选股池自动过滤高价股,优先 10-50 元区间 |
| 集中持仓 | 5万只能分散到 2-4 只 | 选股输出 Top 3-5,附带仓位分配建议 |
| 手续费敏感 | 单次交易 ~60 元(0.12%) | 每次推荐附带交易成本估算,避免过度拆分 |
| 心理因素 | 5% = 2500 元,感受强烈 | 所有风控指标同时用百分比和绝对金额展示 |
| 收益预期 | 年化 20% = 10000 元 | 目标定位为学习验证,非财富增长 |
### 仓位分配参考
| 大盘环境 | 总仓位 | 单只最大 | 持有数量 |
|----------|--------|----------|----------|
| 强势(重仓) | 3.5-4万(70-80% | 1-1.5万/只 | 3-4只 |
| 中性(中等) | 1.5-2.5万(30-50% | 0.5-1万/只 | 2-3只 |
| 弱势(轻仓) | <1.5万(<30% | <0.5万/只 | 1-2只 |
### 价格可买性校验
每只推荐股票前校验:`股价 × 100 ≤ 计划仓位`
## 九、里程碑时间线
| 阶段 | 预计可交付 | 里程碑 |
|------|-----------|--------|
| 阶段 0 | ✅ 框架搭建 | 项目骨架可运行,上下文齐全 |
| 阶段 1 | 回测引擎 | 可验证任意策略历史表现 |
| 阶段 2 | 选股引擎 | 每天可生成 Top N 推荐 |
| 阶段 3 | 单股分析 | 可对任意股票出详细分析报告 |
| 阶段 4 | 大盘评估 | 判断市场可操作性 |
| 阶段 5 | 舆情分析 | 消息面因子补充 |
---
*最后更新:2026-07-01*