docs(tasks): rectification backtest repro package and paired rerun
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DbBXozsiu43ob7B8UZCmDM
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# 生时纠正回测复验包与配对重跑(2026-11-14,Claude)
|
||||
|
||||
## 背景
|
||||
|
||||
占星师 11-14 审了 #260 的回测,认可负面结论,但指出三件事:
|
||||
|
||||
1. 我们只给了汇总表,她无法复现;
|
||||
2. 77 例每人只分到一种偏差,偏差分组里混着人物差异;
|
||||
3. 随机基线的口径要写清。
|
||||
|
||||
她要一份「最小复验包」,并定了下一轮回测的方案(见下文「她定的方案」)。本任务只做**在现有 77 人上能做的部分**。
|
||||
|
||||
- **不改评分公式,不调参数。**
|
||||
- 77 人已被 11-06 和 11-14 两轮分析用过,一律称「开发 / 诊断集」,不再叫 holdout。
|
||||
- 新留出集要另外收人,不在本任务内。
|
||||
|
||||
## 要交的东西
|
||||
|
||||
全部放在 `references/real_case_calibration/rect_repro_20261114/` 下,并写一份说明 `docs/research/rect-repro-20261114.md`。
|
||||
|
||||
### 1. 运行快照
|
||||
|
||||
- 网站代码 commit(#260 最终 commit);
|
||||
- 每个运行文件的 sha256;
|
||||
- Python 依赖锁(`pip freeze`)和一条可直接跑的命令。
|
||||
|
||||
### 2. 数据
|
||||
|
||||
- `minute_rectification_holdout_v5.json` 的 sha256;
|
||||
- 人物数和试验数,明确写出;
|
||||
- 每人一行:
|
||||
- AA 来源说明(source notes 原文或链接);
|
||||
- 记录时间的分辨率(到分钟 / 到 5 分钟 / 整点 / 半点);
|
||||
- 时区和夏令时;
|
||||
- 坐标;
|
||||
- 数据集里有没有标「已被纠正过」。
|
||||
- 都是公开名人数据,不含网站用户。
|
||||
|
||||
### 3. 映射表
|
||||
|
||||
- **事件到答题:** 原始事件事实 → 领域 → 模拟答案 → 日期精度(日 / 月 / 年)。答不了的标 unknown,不当「没有发生」。重复链(毕业→入职→搬家)要标出来。
|
||||
- **题目到计分:** 每个题目类别实际调用的分盘、宫位、事件星层,和 upstream 的对照(她核出的 upstream 映射:education D24 / 4、5、9;relocation D4 / 4、12;relationship D9 / 7;career D10 / 10;finance D2+D11 / 2、11;parent D12 / 4、9;sibling D3 / 3、11;health D6+D8+D30 / 6、8、12)。有出入的逐条列出,不修。
|
||||
- **中文标签:** 网站把握标签和源枚举的对应(含「倾向」= `tendency_only` 的来历)。
|
||||
|
||||
### 4. 配对重跑
|
||||
|
||||
- **试验设计:** 每人跑全部 8 个有符号偏差(±1、±2、±5、±10),共 616 次试验,窗口 ±15 分钟不变。
|
||||
- **每次试验输出一行 JSONL:**
|
||||
- 每题出题前后的候选集合、题目、回答来源;
|
||||
- 规则贡献(Vimshottari MD/AD/PD、Narayana MD/AD、功能吉凶加减分各自的分数);
|
||||
- 缺失层、停止原因;
|
||||
- 最终返回的集合:多段就保留多段和所有并列项,不填补间隙;
|
||||
- 是否命中,以及「原窗口包含真值却被排除」。
|
||||
- **基线:** 按分钟网格枚举合法起点,逐例算覆盖概率再求和。不抽样,所以不需要 seed。
|
||||
- 多段候选按集合覆盖和总长度算。
|
||||
- 同宽中心基线用同一套窗口截断规则。
|
||||
- 另加「不操作」(原窗口)基线。
|
||||
- 公式和端点约定写进说明文档。46.5(我早先的估计)和 49.49(连续口径)这两个数也要在文档里解释清楚。
|
||||
- **报告:**
|
||||
- 问卷对同宽中心的人物级配对差异,用按人物聚类的 bootstrap 给 95% 区间;
|
||||
- 按偏差分组;
|
||||
- 覆盖—宽度曲线和固定宽度曲线;
|
||||
- 伤害率(原窗口包含真值、结果把它排除的比例);
|
||||
- 弃权率(停在「没有可区分的问题」的比例)。
|
||||
- **消融:** 在同一 616 次试验上,按以下固定顺序各跑一次,不增不减:
|
||||
1. 去掉 PD;
|
||||
2. 去掉 Narayana;
|
||||
3. 去掉功能吉凶加减分。
|
||||
|
||||
事件日期按区间处理(不再取 15 日 / 7 月 1 日)要改引擎,留到下一轮,这次只在文档里标为未做。
|
||||
|
||||
### 5. 源码差异(只列,不改)
|
||||
|
||||
- 网站 `narayana_rath` 和 upstream 5fb8379c(`calc_narayana_mahadasha` / 365.2425)、HEAD 8aaf6099(`narayana_report_with_variants` / 365.25)逐项比较:种子、方向、余数、共主、年长、AD、缺失传播。
|
||||
- upstream 5fb8379c → 8aaf6099 在 `active_rectification_questions.py` 和 `active_rectification_selector.py` 上的改动,逐条说明对网站的影响。
|
||||
- upstream 仓库在 `/workspace/yinduzhanxing`。
|
||||
|
||||
## 她定的方案(下一轮才全做,这里只记录)
|
||||
|
||||
1. 人物级划分开发 / 验证 / 最终留出,新收的人作最终留出。
|
||||
2. 按记录分辨率保留标签区间。
|
||||
3. 固定 profile 和代码哈希;模拟器只读事件事实。
|
||||
4. 配对偏差,加整点舍入、时辰不明两种来源情景。
|
||||
5. 完整轨迹。
|
||||
6. 消融次序固定。
|
||||
7. 报覆盖—宽度曲线和伤害率。
|
||||
8. 用途稳定性另测。
|
||||
|
||||
## 验收
|
||||
|
||||
- 一条命令从干净 checkout 复现全部数字。
|
||||
- 说明文档每个数字都指向 JSONL 字段。
|
||||
- 测试:基线函数对几个手算例(含 w = L、贴边、多段)断言正确。
|
||||
- 不改 `scripts/chart_choice/` 的评分行为:现有 fixture 测试全过。
|
||||
Reference in New Issue
Block a user