# 量化分析工程模块

## 功能介绍

这个模块主要用于A股量化分析，包括：

1. **财务数据采集** - 自动从东方财富网采集上市公司财务报表数据
2. **数据存储** - 将数据结构化存储到MongoDB数据库
3. **量化分析** - 基于财务数据进行量化分析和策略开发

## 目录结构

```
quantitative_analysis/
├── __init__.py                    # 模块初始化文件
├── financial_data_collector.py    # 财务数据采集器
├── README.md                     # 使用说明
└── examples/                     # 使用示例
```

## 财务数据采集器

### 功能特点

- **全面的财务数据**：采集资产负债表、利润表、现金流量表、杜邦分析等
- **批量处理**：支持单只股票和批量股票数据采集
- **数据完整性**：2019-2024年完整的季度和年度财务数据
- **智能存储**：自动去重，使用股票代码+报告日期作为唯一标识
- **错误处理**：完善的异常处理和日志记录

### 使用方法

#### 1. 单只股票采集

```python
from src.quantitative_analysis.financial_data_collector import FinancialDataCollector

# 创建采集器实例
collector = FinancialDataCollector()

# 采集单只股票财务数据
success = collector.collect_financial_data('300750.SZ')  # 宁德时代

if success:
    print("财务数据采集成功")
else:
    print("财务数据采集失败")

# 关闭连接
collector.close_connection()
```

#### 2. 批量股票采集

```python
from src.quantitative_analysis.financial_data_collector import FinancialDataCollector

# 创建采集器实例
collector = FinancialDataCollector()

# 股票代码列表
stock_list = [
    '300750.SZ',  # 宁德时代
    '000858.SZ',  # 五粮液
    '002415.SZ',  # 海康威视
    '000001.SZ',  # 平安银行
    '600519.SH'   # 贵州茅台
]

# 批量采集
results = collector.batch_collect_financial_data(stock_list)
print(f"采集结果: {results}")

# 关闭连接
collector.close_connection()
```

### 数据结构

采集的数据会以以下结构存储到MongoDB：

```json
{
  "stock_code": "300750.SZ",
  "report_date": "2024-06-30",
  "collect_time": "2024-07-15T10:30:00",
  "dupont_analysis": {
    "roe": 15.2,
    "dupont_assetstoequity": 1.8,
    "assetsturn": 0.9,
    "dupont_np": 8.5,
    "profittogr": 12.3
  },
  "balance_sheet": {
    "property": {
      "monetary_cap": 1000000000,
      "tot_assets": 5000000000,
      ...
    },
    "liabilities": {
      "tot_liab": 2000000000,
      ...
    },
    "owner_equity": {
      "tot_equity": 3000000000,
      ...
    }
  },
  "profit_statement": {
    "tot_oper_rev": 800000000,
    "net_profit_is": 100000000,
    ...
  },
  "cash_flow_statement": {
    "net_cash_flows_oper_act": 150000000,
    ...
  }
}
```

### 配置说明

- 使用 `src/valuation_analysis/config.py` 中的 `MONGO_CONFIG2` 配置
- MongoDB服务器：192.168.20.110:27017
- 数据库：judge
- 集合：wind_financial_analysis

### 注意事项

1. **请求频率控制**：代码中已添加请求间隔，避免被东方财富网限制
2. **数据完整性**：会检查四类财务数据是否都获取成功
3. **错误处理**：单个股票失败不会影响其他股票的采集
4. **日志记录**：详细的日志记录，便于排查问题

### 运行测试

直接运行财务数据采集器进行测试：

```bash
cd src/quantitative_analysis
python financial_data_collector.py
```

这将测试采集宁德时代(300750.SZ)的财务数据。

## 扩展开发

后续可以在此模块基础上开发：

1. **财务指标计算** - 基于原始财务数据计算各类财务指标
2. **估值模型** - DCF、PE、PB等估值模型
3. **量化策略** - 基于财务数据的选股策略
4. **风险分析** - 财务风险评估模型
5. **回测框架** - 策略回测和绩效分析

## 联系方式

如有问题或建议，请联系开发团队。 