144 lines
4.2 KiB
Markdown
144 lines
4.2 KiB
Markdown
|
|
# 因子真实数据测试报告
|
|||
|
|
|
|||
|
|
## 1. 测试概述
|
|||
|
|
|
|||
|
|
本测试使用 `daily.h5` 文件中的真实A股市场数据,对 ProStock 因子框架进行验证。测试对比了因子框架计算结果与 Polars 原生计算结果,验证因子计算的正确性。
|
|||
|
|
|
|||
|
|
### 测试数据
|
|||
|
|
- **数据源**: `data/daily.h5`
|
|||
|
|
- **时间范围**: 2024-01-01 至 2024-04-30
|
|||
|
|
- **股票数量**: 20只
|
|||
|
|
- **数据量**: 1,560条记录
|
|||
|
|
|
|||
|
|
### 测试因子类型
|
|||
|
|
1. **时序因子 (TimeSeriesFactor)**: 移动平均线 (MA)
|
|||
|
|
2. **截面因子 (CrossSectionalFactor)**: PE排名 (PE_Rank)
|
|||
|
|
3. **结合因子 (CompositeFactor)**: 标量组合 (0.5 * MA) 和因子加法 (MA5 + MA10)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 测试结果
|
|||
|
|
|
|||
|
|
### 2.1 时序因子测试 - MA(5)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[时序因子 MA(5) 对比]
|
|||
|
|
样本股票: 000001.SZ
|
|||
|
|
有效数据点: 77
|
|||
|
|
最大差异: 0.000000000000000
|
|||
|
|
样本数据 (前5个):
|
|||
|
|
Polars: 10.022000, Factor: 10.022000, Diff: 0.000000000000000
|
|||
|
|
Polars: 10.046000, Factor: 10.046000, Diff: 0.000000000000000
|
|||
|
|
Polars: 10.056000, Factor: 10.056000, Diff: 0.000000000000000
|
|||
|
|
Polars: 10.072000, Factor: 10.072000, Diff: 0.000000000000000
|
|||
|
|
Polars: 10.078000, Factor: 10.078000, Diff: 0.000000000000000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**结论**: ✅ **通过** - 因子框架计算的 MA(5) 与 Polars 原生计算完全一致
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2.2 截面因子测试 - PE_Rank
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[截面因子 PE_Rank 对比]
|
|||
|
|
样本日期: 20240131
|
|||
|
|
股票数量: 20
|
|||
|
|
最大差异: 0.000000000000000
|
|||
|
|
样本数据 (前5个):
|
|||
|
|
000001.SZ: Polars: 0.050000, Factor: 0.050000
|
|||
|
|
000002.SZ: Polars: 0.550000, Factor: 0.550000
|
|||
|
|
000004.SZ: Polars: 0.300000, Factor: 0.300000
|
|||
|
|
000005.SZ: Polars: 0.100000, Factor: 0.100000
|
|||
|
|
000006.SZ: Polars: 0.400000, Factor: 0.400000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**结论**: ✅ **通过** - 因子框架计算的 PE_Rank 与 Polars 原生计算完全一致
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2.3 结合因子测试 - 0.5 * MA(5)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[结合因子 0.5*MA(5) 对比]
|
|||
|
|
公式: 0.5 * MA(5)
|
|||
|
|
有效数据点: 77
|
|||
|
|
最大差异: 0.000000000000000
|
|||
|
|
样本数据 (前5个):
|
|||
|
|
Polars: 5.011000, Factor: 5.011000, Diff: 0.000000000000000
|
|||
|
|
Polars: 5.023000, Factor: 5.023000, Diff: 0.000000000000000
|
|||
|
|
Polars: 5.028000, Factor: 5.028000, Diff: 0.000000000000000
|
|||
|
|
Polars: 5.036000, Factor: 5.036000, Diff: 0.000000000000000
|
|||
|
|
Polars: 5.039000, Factor: 5.039000, Diff: 0.000000000000000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**结论**: ✅ **通过** - 标量组合因子计算正确
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2.4 结合因子测试 - MA(5) + MA(10)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[结合因子 MA(5) + MA(10) 对比]
|
|||
|
|
有效数据点: 72
|
|||
|
|
最大差异: 0.000000000000000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**结论**: ✅ **通过** - 因子加法组合计算正确
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 综合测试汇总
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
============================================================
|
|||
|
|
因子测试汇总
|
|||
|
|
============================================================
|
|||
|
|
MA(5): 最大差异 = 0.00e+00 通过
|
|||
|
|
MA(10): 最大差异 = 0.00e+00 通过
|
|||
|
|
MA(20): 最大差异 = 0.00e+00 通过
|
|||
|
|
PE_Rank: 最大差异 = 0.00e+00 通过
|
|||
|
|
============================================================
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 测试结论
|
|||
|
|
|
|||
|
|
### 4.1 全部通过 ✅
|
|||
|
|
|
|||
|
|
所有5个测试用例均通过验证:
|
|||
|
|
|
|||
|
|
| 测试项目 | 因子类型 | 最大差异 | 状态 |
|
|||
|
|
|---------|---------|---------|------|
|
|||
|
|
| MA(5) | 时序因子 | 0.00e+00 | ✅ 通过 |
|
|||
|
|
| MA(10) | 时序因子 | 0.00e+00 | ✅ 通过 |
|
|||
|
|
| MA(20) | 时序因子 | 0.00e+00 | ✅ 通过 |
|
|||
|
|
| PE_Rank | 截面因子 | 0.00e+00 | ✅ 通过 |
|
|||
|
|
| 0.5 * MA(5) | 结合因子 | 0.00e+00 | ✅ 通过 |
|
|||
|
|
| MA(5) + MA(10) | 结合因子 | 0.00e+00 | ✅ 通过 |
|
|||
|
|
|
|||
|
|
### 4.2 关键发现
|
|||
|
|
|
|||
|
|
1. **计算精度**: 因子框架与 Polars 原生计算结果的差异为 0,表明计算精度完全一致
|
|||
|
|
2. **时序因子**: `TimeSeriesFactor` 基类正确实现了股票级别的时序计算
|
|||
|
|
3. **截面因子**: `CrossSectionalFactor` 基类正确实现了日期级别的截面计算
|
|||
|
|
4. **组合因子**: `ScalarFactor` 和 `CompositeFactor` 正确实现了标量运算和因子组合
|
|||
|
|
|
|||
|
|
### 4.3 验证结论
|
|||
|
|
|
|||
|
|
ProStock 因子框架的计算逻辑与 Polars 原生计算完全一致,框架设计正确,可以用于实际量化投资研究。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 测试环境
|
|||
|
|
|
|||
|
|
- Python: 3.13.2
|
|||
|
|
- Polars: 最新版本
|
|||
|
|
- Pytest: 9.0.2
|
|||
|
|
- 数据: daily.h5 (8,856,081 条记录)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*报告生成时间: 2026-02-22*
|