# A股因子分析平台 - 项目更新日志

> 更新日期：2026-10-07
> 项目目标：基于53因子模型搭建A股个股分析平台，预测次日/下周走势

---

## 一、平台架构（4个核心模块）

| 文件 | 作用 |
|---|---|
| `factor_model.py` | 因子模型：53个因子的完整目录，含分类、权重、频率、采集状态、数据源 |
| `data_collector.py` | 数据采集层：数据源路由表 + akshare/东方财富/交易所采集函数框架 |
| `analysis_engine.py` | 分析引擎：因子标准化打分(-1~+1) → 加权汇总 → 涨跌概率输出 |
| `web_server.py` | Web服务：FastAPI后端 + 前端页面，提供分析API和交互界面 |

### 分析引擎逻辑

每个因子映射到 `[-1, +1]` 分数（+1强烈看多），再按权重加权：

```
综合分 = Σ(因子分 × 权重) / Σ权重
上涨概率 = sigmoid(综合分 × 4)
综合分 > 0.15 → 看涨；< -0.15 → 看跌；否则震荡
```

---

## 二、53因子清单

### 2.1 新增行业板块因子（10个）

| 字段名 | 因子名称 | 适用预测窗口 |
|---|---|---|
| `ind_1d_ret` | 行业指数当日涨跌幅 | 次日优先 |
| `ind_3d_ret` | 行业指数近3日累计收益 | 次日+一周 |
| `ind_20d_ret` | 行业指数近20日累计收益 | 一周优先 |
| `ind_60d_ret` | 行业指数近60日累计收益 | 一周优先 |
| `ind_5y_rel` | 行业5年窗口归一相对收益 | 周维度参考 |
| `ind_vol_20d` | 行业指数20日波动率 | 次日+一周 |
| `ind_momentum` | 行业动量打分 | 次日+一周 |
| `ind_rank_all` | 行业当日全行业收益排名 | 次日优先 |
| `ind_up_ratio` | 板块内成分股上涨家数占比 | 次日优先 |
| `excess_ret_1d` | 个股当日相对行业超额收益 | 次日优先 |

### 2.2 原有个股因子（分类整理）

**量价类**：收盘价/开盘价/最高价/最低价、涨跌幅、成交量、成交额、换手率、量比、RSI6/RSI14、MA5/10/20/60、BIAS、MACD、KDJ、振幅

**资金类**：主力资金净流入、北向资金净流入、融资余额、融券余额

**筹码&股本类**：筹码获利盘比例、筹码套牢盘比例、股东户数、股东户数变动率、解禁标签

**事件&舆情类**：公告事件标签(LLM)、舆情情感得分(LLM)、龙虎榜标记、大宗交易标记

**股性&日历标签**：历史波动率、历史涨停概率、月度/星期/财报窗口期标记

### 2.3 宏观全局因子（5个）

A50夜盘涨跌幅、美股指数涨跌幅(纳指/道指)、人民币汇率、DR007、股指期货IF升贴水

---

## 三、云平台部署

| 项目 | 详情 |
|---|---|
| 云服务器 | 124.222.86.130:2281 (Ubuntu) |
| 服务端口 | **8199**（未被占用的空闲端口） |
| 反向代理 | Caddy（监听 80/443） |
| 域名 | stock.moyudaka.top |
| 进程管理 | tmux session `stock` |
| 项目目录 | /home/ubuntu/stock_analysis/ |

### 服务状态
- ✅ FastAPI 服务运行中 (tmux: stock)
- ✅ Caddy 路由 stock.moyudaka.top → localhost:8199
- ✅ 首页正常返回 "A股因子分析平台"
- ✅ API 正常返回分析结果
- ✅ 公网可访问

### DNS 配置
在域名服务商添加 A 记录：
- 主机记录：`stock`
- 记录类型：A
- 记录值：`124.222.86.130`

### 项目目录结构

**路径：** `/home/ubuntu/stock_analysis/`（总大小 184KB）

| 文件 | 大小 | 说明 |
|---|---|---|
| `factor_model.py` | 17KB | 因子模型：53因子目录、分类、权重、采集状态 |
| `analysis_engine.py` | 16KB | 分析引擎：因子打分→加权汇总→涨跌概率输出 |
| `data_collector.py` | 9KB | 数据采集层框架（数据源路由表） |
| `real_collector.py` | 12KB | 真实数据采集器（akshare多源降级策略） |
| `llm_sentiment.py` | 4KB | LLM情感分析（Qwen Plus公告标签+舆情得分） |
| `web_server.py` | 11KB | Web服务（FastAPI后端+前端页面） |
| `backtest_0930.py` | 8KB | 9/30回测验证脚本 |
| `analyze_600352.py` | 5KB | 浙江龙盛实例分析脚本 |
| `requirements.txt` | 63B | Python依赖清单 |
| `项目更新日志_20261007.md` | 7KB | 项目更新日志（可下载） |
| `回测验证报告_20260930.md` | 10KB | 回测验证报告 |

### 运行状态
- 服务进程：tmux session `stock` 运行 `python3 web_server.py`
- 监听端口：8199
- 反向代理：Caddy → stock.moyudaka.top
- 下载入口：`/api/report`（项目更新日志MD）

---

## 四、akshare 真实数据采集

### 数据源适配方案（云端环境特殊处理）

服务器在云端，**东方财富和新浪A股接口被限流**，因此采用多源降级策略：

| 因子类别 | 数据源 | 接口 | 状态 |
|---|---|---|---|
| 个股K线+技术指标 | 腾讯 | `stock_zh_a_hist_tx` | ✅ |
| 行业指数历史 | 同花顺 | `stock_board_industry_index_ths` | ✅ |
| 行业排名/涨跌家数 | 同花顺 | `stock_board_industry_summary_ths` | ✅ |
| 美股指数 | 新浪 | `index_us_stock_sina` | ✅ |
| 人民币汇率 | 中行 | `currency_boc_sina` | ✅ |
| 市场利率 | 货币网 | `rate_interbank` | ✅ |
| 融资融券 | 交易所 | `stock_margin_detail_sse` | ✅ |
| 主力资金流 | 东方财富 | `stock_individual_fund_flow` | ❌ 被墙 |

### 技术指标自动计算
通过K线序列自动计算：MA5/10/20/60、RSI6/14、MACD、KDJ、BIAS、量比、波动率、涨停概率

---

## 五、Qwen Plus LLM 接入（公告标签+舆情得分）

### 配置来源
复用云端已有项目（moyu-library）的通义千问配置：
- 模型：`qwen-plus`
- 接口：DashScope 兼容 OpenAI 模式
- 文件：`llm_sentiment.py`

### 工作流程

```
akshare.stock_news_em(个股新闻) → 拼接最近15条 → Qwen Plus 分析 → JSON输出
```

### Qwen 输出格式

```json
{
  "sentiment_score": 0.42,
  "announcement_tag": 1,
  "summary": "染料涨价持续，龙盛提价创年度新高..."
}
```

### 实测结果（浙江龙盛 600352）

| LLM 因子 | 值 | 信号 |
|---|---|---|
| 舆情情感得分 | 0.42 | 舆情偏多 |
| 公告事件标签 | 1 | 利好公告 |

---

## 六、数据覆盖度演进

| 阶段 | 覆盖因子 | 说明 |
|---|---|---|
| 硬编码示例 | 40/53 | 含估算值 |
| akshare 真实采集 | 36/53 | 全部真实数据 |
| + Qwen Plus LLM | **38/53** | 公告标签+舆情得分 |

---

## 七、15个缺失因子的爬虫可行性

### ✅ 可通过爬虫获取（8个）

| 因子 | 数据来源 | 难度 |
|---|---|---|
| 北向资金日度净流入 | 东方财富数据中心 | ⭐ 低 |
| A50夜盘涨跌幅 | 新浪财经期货 | ⭐ 低 |
| 股指期货IF升贴水 | 新浪/中金所 | ⭐ 低 |
| 龙虎榜标记 | 东方财富龙虎榜 | ⭐ 低 |
| 大宗交易标记 | 东方财富大宗交易 | ⭐ 低 |
| 解禁标签（30日内） | 东方财富解禁数据 | ⭐ 低 |
| 股东户数/变动率 | 同花顺F10 | ⭐⭐ 中 |
| 筹码获利/套牢盘比例 | 东财/同花顺筹码分布 | ⭐⭐⭐ 高 |

### 🔢 无需爬虫，用已有数据计算（3个）

| 因子 | 计算方式 |
|---|---|
| 行业5年窗口归一相对收益 | 同花顺行业指数5年收益率归一化 |
| 行业动量打分 | 行业指数N日动量/RSI打分 |
| 财报窗口期标记 | 日期规则：1/4/8/10月为财报季 |

### ❌ 难以精确获取（1个）

| 因子 | 原因 | 替代方案 |
|---|---|---|
| 筹码精确分布（每价位） | 需Level-2逐笔数据 | 历史K线+成交量加权估算 |

---

## 八、浙江龙盛(600352) 分析实例

**基准日：2026-09-30**

| 预测窗口 | 综合分 | 上涨概率 | 方向判断 |
|---|---|---|---|
| 次日 (10/8) | +0.05 | 62.1% | 震荡偏多 |
| 下周 | +0.02 | 57.6% | 震荡 |

### 关键看多驱动
1. 当日涨跌幅 +4.05%（强势上涨）
2. 公告事件标签 = 利好（染料涨价）
3. 相对行业超额收益 +2.55%
4. 舆情情感得分 +0.42（偏多）

### 关键风险
1. 行业近60日累计收益 -2.9%（行业下跌）
2. 行业近20日累计收益 -2.5%
3. 行业近3日累计收益 -1.2%

---

## 九、下一步计划

1. **实现第二类计算因子**（3个）：行业5年相对收益、行业动量、财报窗口期
2. **实现第一类低难度爬虫**（6个）：北向资金、A50夜盘、IF升贴水、龙虎榜、大宗交易、解禁
3. 目标覆盖度：**47/53 = 88.7%**
4. 配置 DNS 解析，启用 HTTPS

---

*免责声明：本平台基于公开数据与因子模型量化输出，不构成投资建议。*
