# 0.18.0 — PDAT→PET 链路补全大版本（37 → 42 工具）

## 目标
对 PDAT→PET 全链路做补全审计后的七个缺口，一个版本全部补齐。

## 新增（按域）
- dsh-data：quant_market_fetch 新增 A 股 provider
  - sina：免费日线/分钟线（getKLineData，无凭据，需 Referer 头，对象行解析）
  - tencent：前复权（qfq）日线——顺带解决复权缺口
  - 代码校验 sh/sz/bj+6 位数字；provider 语义分离（加密大写 / A股小写）
- dsh-alpha：
  - factorEvaluate 扩展 rankIc（Spearman 平均秩）+ icDecay（horizon 1..N 衰减）
  - quant_factor_neutralize：group 组内 z-score（行业中性化简化）/ ols 风格因子
    回归残差 / 纯 zscore；高斯消元（列主元）解正规方程，共线抛错
- dsh-ml：quant_walk_forward——滚动 OLS 训练/样本外预测，OOS IC/RankIC、
  逐窗口权重、trainR2；features[t] 预测 returns[t+1]，无未来函数
- dsh-risk：quant_drawdown——underwater 对齐序列、最大/当前回撤、
  每新高一段（峰/谷/恢复/深度/时长）、ongoing 未恢复段
- dsh-execution：
  - quant_execute_sim——订单信号后一根收盘成交、滑点 bps、双边费、
    latencyBars、多头现货语义、按 fillIndex 重放生成正确权益曲线
  - quant_research_pipeline——数据→质量→统计→指标→回测→指标库→风控→
    回撤→基金→因子→报告→图表 一键全链路（含三所容错链）

## 质量
- 单元测试 113 → 149（+36 手算），loader 组合 4，实时验证含
  sina/tencent 真实 A 股行情 + 全链路管线（BTC 120 根）
- 修复过程中发现并修掉：executeSim 权益曲线被末轮循环覆盖的 bug；
  sina 响应为对象行（非数组）且需 Referer 头

## 发布
- v0.18.0 tag → CI + release 自动 npm 发布（第 23 次自动发布）
- 42 工具 · 6 域 · 149 单元测试 · 零外部依赖

## 教训
- 手算测试必须含「浮点 -0 vs 0（Object.is 语义）」边界：drawdown 无回撤
  时 maxDrawdownPct 输出 -0，node strict assert 视为不相等 → `|| 0` 归一
- 外部接口探测要带与 Node fetch 完全一致的 header 复测（curl 与 fetch 行为不同）
