# NSPS 周K线量化交易系统 — Testing Plan
> Version: 1.0
> Created: 2026-07-30
> Status: Draft
---
## 一、测试原则
1. **独立测试**:每个模块独立测试,不影响现有系统
2. **步步为营**:测试通过后才进入下一阶段
3. **数据驱动**:用1300万行历史数据验证
4. **Paper Trading先行**:至少2周模拟交易,确认策略有效
---
## 二、单元测试
### 2.1 weekly_kline_layer.py
| 测试项 | 输入 | 预期输出 | 验证方法 |
|--------|------|----------|----------|
| 周线数据获取 | AAPL, 104周 | 104条周K线 | 数据完整性检查 |
| 锤子线识别 | 构造下影线>2倍实体的数据 | pattern="hammer", signal="BULLISH" | 形态匹配 |
| 吞没形态识别 | 构造本周包住上周的数据 | pattern="engulfing" | 形态匹配 |
| MACD金叉 | 构造EMA交叉数据 | cross="golden" | 数值验证 |
| RSI计算 | 14周数据 | 0-100范围 | 与TA-Lib对比 |
| 波浪阶段 | 已知1-2-3浪数据 | phase正确 | 人工标注对比 |
| 支撑/阻力 | 52周高低点 | 关键位正确 | 可视化验证 |
| RS排名 | 全市场数据 | 0-100百分位 | 排名验证 |
### 2.2 probability_engine.py
| 测试项 | 输入 | 预期输出 | 验证方法 |
|--------|------|----------|----------|
| 期望值计算 | win_rate=0.6, avg_win=15, avg_loss=8 | E=+7.6 | 数学验证 |
| 凯利公式 | win_rate=0.68, payoff=1.875 | kelly=31.4% | 数学验证 |
| 仓位计算 | capital=100万, stop=-10% | position=10万 | 1%原则验证 |
| 历史回测 | "hammer"形态, 520周 | 胜率/盈亏比 | 与人工统计对比 |
| 参数调整 | 胜率<40%的交易 | 收紧条件 | 逻辑验证 |
### 2.3 patient_trading_system.py
| 测试项 | 输入 | 预期输出 | 验证方法 |
|--------|------|----------|----------|
| 量化筛选 | 全市场 | A+B+C候选 | 条件验证 |
| 观察名单更新 | 新候选 | 名单更新 | 状态检查 |
| 触发条件检查 | 满足3/5的股票 | triggered=True | 条件计数 |
| 入场计划 | 触发信号 | 仓位/止损/目标 | 1%原则验证 |
| 持仓管理 | 盈利/亏损场景 | HOLD/ADD/EXIT | 规则验证 |
| 每周复盘 | 50笔交易 | 统计报告 | 数据验证 |
---
## 三、集成测试
### 3.1 端到端测试
```python
def test_full_pipeline():
"""完整流水线测试"""
# 1. 周K线分析
analysis = weekly_kline_analysis("AAPL", "US")
assert analysis["composite_score"] >= 0
# 2. 概率评估
assessment = probability_assessment("AAPL", analysis["patterns"], analysis["indicators"])
assert assessment["expected_value"] is not None
# 3. 触发条件
trigger = check_trigger_conditions("AAPL")
assert "conditions_met" in trigger
# 4. 入场计划(如果触发)
if trigger["triggered"]:
plan = calculate_entry_plan("AAPL", 1000000, trigger)
assert plan["position_size"] <= 1000000 * 0.01 / (plan["entry_price"] - plan["stop_loss"])
```
### 3.2 数据一致性测试
| 测试项 | 验证内容 |
|--------|----------|
| 周线数据一致性 | 日线resample结果 vs 直接获取周线 |
| 指标计算一致性 | 我们的MACD vs TA-Lib的MACD |
| 波浪识别一致性 | 自动识别 vs 人工标注 |
| RS排名一致性 | 我们的排名 vs 第三方数据 |
---
## 四、回测验证
### 4.1 历史数据回测
| 参数 | 值 |
|------|-----|
| 回测期间 | 2016-01-01 至 2026-07-30(10.5年) |
| 市场 | US + CN |
| 初始资金 | $100,000 |
| 单笔风险 | 1% |
| 最大仓位 | 50% |
| 交易频率 | ≤2次/周 |
### 4.2 回测指标
| 指标 | 目标 | 说明 |
|------|------|------|
| 年化收益 | >20% | 跑赢大盘 |
| 最大回撤 | <15% | 风险控制 |
| 夏普比率 | >1.5 | 风险调整收益 |
| 胜率 | >45% | 不需要很高 |
| 盈亏比 | >2.5:1 | 关键指标 |
| 交易次数 | 50-100次/年 | 低频交易 |
### 4.3 对比基准
| 基准 | 说明 |
|------|------|
| S&P 500 | US市场基准 |
| 沪深300 | CN市场基准 |
| 现有NSPS日K线 | 对比日K线 vs 周K线效果 |
---
## 五、Paper Trading测试
### 5.1 测试计划
| 阶段 | 时长 | 目标 |
|------|------|------|
| Phase 1 | 第1周 | 系统稳定运行,无bug |
| Phase 2 | 第2-3周 | 观察名单准确,触发条件合理 |
| Phase 3 | 第4周 | Paper Trading盈亏验证 |
| Phase 4 | 第5周+ | 参数微调,准备实盘 |
### 5.2 Paper Trading规则
- 初始资金:$100,000(虚拟)
- 单笔风险:≤1%
- 最大持仓:5只
- 每周最多交易:2次
- 必须记录:每笔交易的6个数据点
### 5.3 成功标准
| 指标 | 最低要求 |
|------|----------|
| 系统运行 | 4周无故障 |
| 交易次数 | ≥8笔 |
| 胜率 | ≥40% |
| 盈亏比 | ≥2:1 |
| 最大回撤 | <10% |
---
## 六、CLFA策略闭环测试
### 6.1 自动调整测试
| 场景 | 预期行为 |
|------|----------|
| 胜率<40%持续2周 | 自动收紧入场条件 |
| 盈亏比<1.5 | 自动调整止损/止盈 |
| 某形态连续失败3次 | 自动降权/禁用 |
| 市场状态切换 | 自动调整参数 |
### 6.2 复盘报告测试
| 测试项 | 验证内容 |
|--------|----------|
| 每周复盘报告 | 数据准确,建议合理 |
| 参数调整建议 | 基于数据,不是随机 |
| 策略进化记录 | 可追溯,可回滚 |
---
## 七、回归测试
### 7.1 不影响现有系统
| 测试项 | 验证方法 |
|--------|----------|
| 日K线Pipeline | 继续正常运行 |
| 现有12层模块 | 功能不受影响 |
| Dashboard | 现有页面正常 |
| Cron Jobs | 现有job不受影响 |
### 7.2 数据隔离
| 验证项 | 方法 |
|--------|------|
| 周K线数据 | 只读TimescaleDB,不修改 |
| 交易记录 | 独立存储,不污染现有数据 |
| 配置文件 | 独立config,不影响现有配置 |
---
## 八、测试时间表
| 时间 | 测试内容 | 通过标准 |
|------|----------|----------|
| 第1天 | 单元测试 | 100%通过 |
| 第2天 | 集成测试 | 端到端跑通 |
| 第3-4天 | 回测验证 | 达到回测指标 |
| 第5天-第4周 | Paper Trading | 达到成功标准 |
| 第5周 | CLFA闭环测试 | 自动调整正常 |
| 第6周 | 回归测试 | 不影响现有系统 |
---
## 九、测试数据
### 9.1 测试用例数据
```
# 已知的周线形态样本(人工标注)
test_samples = [
{"symbol": "AAPL", "date": "2025-03-15", "pattern": "hammer", "outcome": "win"},
{"symbol": "NVDA", "date": "2025-06-20", "pattern": "engulfing", "outcome": "win"},
{"symbol": "TSLA", "date": "2025-09-10", "pattern": "morning_star", "outcome": "loss"},
...
]
```
### 9.2 边界测试数据
```
# 极端情况
- 数据不足(<52周)
- 停牌股票
- 新股(<1年数据)
- 异常数据(价格=0,成交量=0)
```
---
*Last updated: 2026-07-30 14:55 PT*