EvalHarness 11 维评测公式表
§0 范围与定位
本文件是 EvalHarness 11 维评测 + 7 MCA 桶归一化 + bootstrap + IAA kappa + ECE + 子图同构相似度的单点可执行公式派生源。事实源是 Phase 4 评测体系 v1(R1 修订) + ADR-007 supplement §2.4;字段命名 snake_case 与 StructuredCognitionResult 1.1 契约源 一致。所有 v1 公式标「待 Phase 6 R2 校准」与原稿一致。
§1 11 维评测公式总表
输入字段命名空间 StructuredCognitionResult 缩写 S;所有分量 ∈ [0, 1] 除非另注;综合公式见各 §1.x 子节。
| ID | 名称 | 主输入字段 | 综合公式(v1) | 阈值/约束 |
|---|---|---|---|---|
| D1 | 本体识别准确率 | S.causal_graph.nodes/edges + M1.3 属性 | $0.3 F1_{ent} + 0.3 Acc_{rel} + 0.4 Hit_{M1.3}$ | 桶内百分位 |
| D2 | 信息源对齐质量 | 信源 ref 边 + S.regulation_status.friction_layer | $0.25 \rho_s' + 0.35 Hit_{policy} + 0.25 Recall_{div} + 0.15 F1_{dual}$ | 桶内百分位 |
| D3 | 跨时钟相位识别 | S.phase_evidence.clocks + .phase_matrix | $0.4 Acc_{clock} + 0.3 (1 - MAE/8) + 0.3 Recall_{contradict}$ | MAE 单位「季度」 |
| D4 | 场景命中与传导链路 | S.causal_graph.{nodes,edges,reverse_forces,endogeneity} + edge.form | $0.25 F1_{scene} + 0.30 LinkSim + 0.25 Acc_{form} + 0.20 Recall_{reverse}$ | 桶内百分位 |
| D5 | 金融规律应用 + 不适用 | S.applicability_flags.{valuation,factor,derivatives}.level | $0.3 (1-MAPE) + 0.2 \tau' + 0.4 Acc_{appl} + 0.1 Recall_{PE}$ | FP 率 ≤ 桶基线 |
| D6 | 偏差识别 + 不确定性 | S.posterior.{mode_a,mode_b} + 偏差标签 | §1.6 | ECE ≤ 0.15;|weighted-macro| ≤ 0.15 |
| D7 | S1 叙事-数字一致性 | S.s1.{s1_mode,coupling_direction,coupling_strength,backtrigger} | $0.3 F1_{mode} + 0.2 Recall_{multi} + 0.2 \rho_s + 0.3 Hit_{backtrig}$ | base-rate × 1.5 触可疑 |
| D8 | 金融历史可比性 | 跨 case 检索 + S.phase_evidence.clocks + 子图同构 | $0.3 Acc_{select} + 0.3 F1_{same_diff} + 0.2 \rho_s + 0.2 Acc_{wrong}$ | 桶内百分位 |
| D9 | 跨市场对照推理 | mca_bucket 跨 ≥ 2 桶 + edge_type=cross-market-mapping | $0.3 F1^{macro}{link} + 0.3 F1{diff} + 0.25 Acc_{mca} + 0.15 Acc_{spread}$ | 跨 ≥ 2 桶才计 |
| D10 | 数据可靠性鉴别 | M1.3 + M2.2 + M7a 锚定 + applicability_flags | $0.35 Acc_{grade} + 0.4 Recall_{signal} + 0.25 (1 - FPR_{healthy})$ | I3+C3 强制 |
| D11 | 风险预算与组合层 | S.causal_graph.{correlation_regime, unbalanced_loop_warnings} | $0.25 (1-MAPE_{MRC}) + 0.25 Recall_{regime} + 0.2/(1+D_{KL}) + 0.2 Acc_{factor} + 0.1 C_{kelly}$ | v1 仅 B1/B2/B3 |
kelly_cap / C_kelly 已退役(ADR-021,2026-06-04):kelly_cap 已从 schema/代码移除,对应的 kelly 合规门也已从编排层移除。D6 / D11 综合公式中的
C_kelly项与 §D6 子项的「凯利合规率」定义随之失效;移除C_kelly后 D6/D11 权重需重新归一——这属评测契约决定,留 FinTecEval / owner 重核,本次只标退役、不擅自改权重。
D1 / D2 / D3 子项
D1:$F1_{ent}$ 含 precision 惩罚(len(pred) > 2·len(gold) 衰减 $P$,防穷举 gaming);$Acc_{rel}$ = 正确边 / gold 边;M1.3 六字段拆「闭合类」(持有人结构 / 实体经济网络节点 / 数据可得性等级)+「开放分类类」(商业模式 / 通用战略 / 政策反应函数),开放类需 ≥ 2 专家 IAA kappa ≥ 0.7 才入分母;跨市场映射边权重 ×1.5。
D2:$\rho_s' = (\rho_s + 1)/2$(信源排序 Spearman);$Hit_{policy}$ = 正确解码字段 / 4(措辞跃迁 / 同台规格 / 时点罕见性 / 对手方目标函数);$Recall_{div}$ = 识别群体同质化数 / 真实数;$F1_{dual}$ = 账号 × 渠道双轴可靠性 F1。MCA 门控:N1 桶下 regulation_status.regulatory_uncertainty > 0 倒扣 0.1(M2.4 应休眠)。
D3:$Acc_{clock} = \sum_t \mathbb{1}[\hat{p}t = p_t^*] / (N{clocks} \cdot N_{samples})$;v1 仅强制评 M3.t1 / M3.t2 / M3.t5,其余抽样 30% IAA。$MAE = \frac{1}{|C|} \sum |\hat{q}{ij} - q{ij}^*|$,单位季度整数;Minsky 子相位独立计 IAA;$MAE_{max} = 8$ 季度作为 v1 标定常量(§10 留 R2)。
D4 子项(R1 修订三分量替代 GED)
$$LinkSim = 0.35 \cdot F1_{node} + 0.35 \cdot F1_{edge} + 0.30 \cdot SubIso$$
$F1_{node}$ / $F1_{edge}$ 基于 causal_graph.nodes / .edges(含 edge_type)的标准 F1。子图同构 $SubIso = |{p \in P_{gold} : p \text{ 在 } G_{pred} \text{ 中同构}}| / |P_{gold}|$;$P_{gold}$ 是评测维护的关键子图模式集合(v1 起步 8-10 模式,例「政策点火 → 流动性吸收 → 反身性自我增强」三节点链)。工程替代:Riesen-Bunke 编辑距离上界近似(Hungarian $O(n^3)$)→ [0,1]。shared-book 形态准确率从 edge.form ∈ {acute-liquidity, structural-holder-rotation, policy-credit, a-share-retail-acute} 计 macro accuracy。
D5 子项
MAPE 反向 $1 - \min(MAPE, 1)$;Kendall $\tau' = (\tau + 1)/2$;$Acc_{appl}$ 三态 macro accuracy,必同时报混淆矩阵 + FP 率(防全标 not-applicable 偷分)。MCA 门控:D3 桶下 applicability_flags.derivatives.level 必须 not-applicable,激活 applicable 即扣分。
D6 子项(核心防 gaming 维度)
M7a / M7b 加权多标签 F1:频率加权 $w_l = 2.0$(低频 1/3)/ $1.0$ / $0.5$(高频 1/3),每季度更新;$F1^{w} = \sum_l w_l F1_l / \sum_l w_l$,$F1^{m} = \frac{1}{|L|} \sum_l F1_l$。gaming 触发:$|F1^{w} - F1^{m}| > 0.15$ 视为标签偏向 gaming,触发人工复审。
ECE:$ECE = \sum_{b=1}^{M} \frac{|B_b|}{N} |acc(B_b) - conf(B_b)|$;confidence 分 $M = 10$ 个等宽 bin(§10 留 R2),$acc(B_b)$ bin 内正确率,$conf(B_b)$ bin 内平均 confidence。阈值 $ECE \le 0.15$ 合格。
双峰后验形态正确率:$|mode_a.weight + mode_b.weight - 1| \le 0.05$;两 mode value 距离与「合理区间」一致(区间需 ≥ 2 专家独立给出且重叠率 ≥ 0.8,重叠率算法 §10 留 R2);未被压均值的样本计 1。凯利合规率 $C_{kelly} = |{s : \text{position}_s \le \text{kelly_cap}s}| / N{kelly_triggered}$。
综合:$D6 = 0.20 F1^{w}{M7a} + 0.10 F1^{m}{M7a} + 0.20 F1^{w}{M7b} + 0.10 F1^{m}{M7b} + 0.10 (1 - ECE/0.5) + 0.20 Acc_{bimodal} + 0.10 C_{kelly}$。
D7 子项
5 模式分类 F1:s1.s1_mode ∈ {a-far-extrapolation, b-source-missing, c-narrative-data-detachment, d-unit-accounting-incompatible, positive-coupling}。base-rate 校正:某模式占比 $r$,体系命中率 $h > 1.5 r$ 触发可疑标记 + 人工抽查。耦合强度秩相关 $\rho_s(\text{s1.coupling_strength}, \text{external_label})$。反向触发命中 = s1.backtrigger 正确触发 M5/M6/M7 次数 / 应触发总次数。标答源:5 个外部独立源(Damodaran / Marks / Stratechery / FT Alphaville / NYU Stern),每样本 ≥ 1 外部标答,与 14 case 自标交叉 IAA kappa ≥ 0.7 才入评测池。
D8-D11 子项(R1 新增 4 维)
D8:跨时段同桶 + 跨桶同时段两类样本独立评测。D9:必须跨 ≥ 2 MCA 桶才有效;建议跨桶对照 B1+B5a / B1+B7 / B5b+B6。D10:5 类风险信号(应计异常 / 关联交易 / 表外 / 预期管理 / 准则套利)每类 ≥ 10 case + ≥ 5 事后造假 case + ≥ 15 健康对照;I3+C3 桶强制评。D11:$D_{KL}(\hat{p} | p^) = \sum_i \hat{p}_i \log(\hat{p}_i / p^i)$ 归一化反向 $1 / (1 + D{KL})$;v1 仅 B1/B2/B3 强制评,M6.2.x 落地后扩 B4-B7。
§2 11 维加权聚合公式
单 case 综合分 $Score_{case} = \sum_{i=1}^{11} w_i \cdot D_i$。v1 推荐 $w_i$(Phase 4 未给统一表,§10 留 R2 校准):D1-D7 各 0.10(通用纵轴 + 认知元,共 0.70);D8 / D9 / D10 各 0.08(金融差异化,共 0.24);D11 = 0.06(仅 B1-B3 桶强制评)。
桶下重调方向(数值留 R2):B5a / B5b 提 D6 / D7 至 0.15 + D11 降至 0;B7 提 D9 至 0.15;D9 / D11 在跨桶约束 / 桶位限制未满足时 $w_i = 0$(不进分母)。
§3 7 MCA 桶归一化(B5 拆分实际 8 桶)
§3.1 桶定义
| 桶 | MCA 6 轴位 | 代表 case | 桶下重点维度 |
|---|---|---|---|
| B1 | L1+D1+F1+N1+C1+I1 | C1/C7/C8 | D11 必评(基线桶) |
| B2 | L1+D1+F1-F2+N2+C1-C2+I1 | C2/C3 | D11 必评 |
| B3 | 非传统 L+D1+F1+N1+C1+I1 | C9/C10 | D11 必评 |
| B4 | L2-L3+D2+F2-F3+N3+C3+I3 | A-2 | D10 强制 |
| B5a | L3+D2+F3+N3+C2-C3+I2 | A-1 | D2 政策语义 + D7 反身性必评 |
| B5b | L3+D2+F3+N3+C2+I2 | A-3 | D6 M7b + D4 shared-book 必评 |
| B6 | L3+D2+F2-F3+N2-N3+C2+I2-I3 | A-4 | D9 必评 |
| B7 | L2+D2-D3+F2+N2-N3+C2-C3+I2-I3 | L2/L3/L7 扩展 | v1 单独基线,不入跨桶百分位 |
§3.2 归一化基准 + 跨桶可比
每桶独立维护「桶内满分」基准 = 该桶下 reviewer IAA kappa ≥ 0.7 的外部专家共识首选 case(每桶 ≥ 5 anchor case)的中位数分;桶内分数 = 体系实际分 / 桶内基准中位数。禁止直接比较绝对分数(B1 桶 M2.4 应休眠,B5a 桶必激活,分母构成不同)。跨桶只比桶内百分位:
$$Percentile_{case, bucket} = |{c \in bucket : Score_c \le Score_{case}}| / |bucket|$$
百分位最小样本量门槛 $|bucket| \ge 30$(R-C 建议);不足 30 时用 §4.2 bootstrap 估带宽,报告显式标 bandwidth: ±X%。
§3.3 桶内最少 case 数门槛
每桶起步 ≥ 20 case;季度补 15-20 / 季度(Phase 5 §四 R1);B7 起步 1-2 case anchor(L7 + L2),v1 单独基线,v2 补足 ≥ 10 case 后纳入跨桶百分位;半人工标注 4 任务(Phase 7 SLA §三)质量低于阈值的桶位不参与跨桶百分位对照,仅报告绝对分数。
§4 数据集划分 + bootstrap
§4.1 70/20/10 划分:比例 dev 70% / test 20% / holdout 10%。算法:每 case hash $h = \text{SHA256}(case_id | split_salt)$,$h \mod 100 \in [0, 70)$ 入 dev / $[70, 90)$ 入 test / $[90, 100)$ 入 holdout;split_salt = "finbayes-v1-2026" 全局种子,v1 期间不变。holdout 桶位均匀约束:每桶 case 数 $\in [\lfloor 0.10 |bucket| \rfloor - 1, \lceil 0.10 |bucket| \rceil + 1]$,超出则该桶重洗(防全在 B1 桶)。14 case 强制按 10/3/1 落入 dev/test/holdout。
§4.2 bootstrap 置信区间:$n_{resample} = 1000$(Phase 4 未明,v1 默认);置信水平 $1 - \alpha = 0.95$;$CI = [\text{percentile}{2.5}(\hat{\theta}^*), \text{percentile}{97.5}(\hat{\theta}^)]$,$\hat{\theta}^b$ 是第 $b$ 次重采样估计量。单桶 $< 30$ 时报带宽 $= (CI{up} - CI_{low})/2$,标注 bandwidth: ±X%。
§5 IAA Cohen's kappa
公式:$\kappa = (p_o - p_e) / (1 - p_e)$;$p_o$ = 观察一致率 = 两标注者一致 case 数 / 总 case 数;$p_e$ = $\sum_c P_1(c) \cdot P_2(c)$(边际概率);$\kappa \in [-1, 1]$,$1$ 完全一致 / $0$ 随机 / $< 0$ 反向。
门槛:通用(D1 开放分类 / D7 外部标答 / SLA 任务 B/C)$\kappa \ge 0.70$;SLA 任务 A(政策语义合规模糊)$\kappa \ge 0.65$;SLA 任务 D(MCA 桶位标签)$\kappa \ge 0.75$(Phase 7 SLA §三)。
≥ 30% 差异率触发 mini-review:滚动窗口 10 case 不一致 $\ge 3$ → 三人评审:第三标注者独立标注 + 2:1 多数表决;不收敛 → escalate 到生态发起人单点裁决 + 14 天异议期(Phase 5 §3.2);未收敛 case 入 contested_points audit trail。滚动 10 case $\kappa <$ 阈值连续 → 标注模板细化 + 培训;仍不收敛 → 子任务降到「Tier 1 三人评审默认开启」(Phase 7 SLA §四)。
§6 退化检测
退化阈值(v1 暂定 15%):
$$\Delta_{bucket, dim} = \frac{Score^{baseline} - Score^{current}}{Score^{baseline}}$$
$\Delta \ge 0.15$ 触发 Phase 5 治理 mini-review。阈值 v1 默认未经压测,第一阶段 4 季度后校准。baseline = 上一季度同桶 × 同维度评分;月度增量不入 baseline(防月度噪音)。
回滚判定:退化信号 → mini-review 三选一:(1) 样本扩展(单 case 失败)→ 下季度种子池;(2) 桶位级机制不足(同桶连续 ≥ 3 case 同构失败)→ Phase 5 §3.1 机制级变更评估;(3) 机制级不足(跨 ≥ 2 桶同构) → Phase 5 §3.2(v1→v2 过渡 ≥ 4 case + ≥ 2 桶 + 1 pending 桶证据;v2 之后 ≥ 5 case + ≥ 3 桶)。回滚由生态发起人单点签署 + 14 天异议期裁决,EvalHarness 不自动执行。
§7 防 gaming
| gaming 路径 | 防御 |
|---|---|
| D1 穷举型多标的 | precision 惩罚项(len(pred) > 2·len(gold) 衰减 $P$) |
| D6 top-3 高频偏差刷分 | 频率反向加权 + macro-F1 对照(差距 > 0.15 复审) |
| D6 全标 + 高 confidence | ECE ≤ 0.15 强约束 |
| D7 默认输出「远期外推」 | base-rate × 1.5 触可疑标记 + 人工抽查 |
| D5 全标 not-applicable | 必报混淆矩阵 + FP 率,FP > 桶基线扣分 |
| D10 过度悲观 | 误报率反向计入 |
| 自报 MCA 桶位 | 桶位标签由评测系统强制下发,被测体系不允许自报 |
| 外部信源占位字符串 | 必含可验证 URL + 时间戳 + 关键字段抽取 |
| 标答自指(14 case 自标) | 70/20/10 划分 + 标答撤回工程仓 + D7 5 外部独立标答源 |
| 过拟合 baseline | 新 case 入库做「上轮 vN 体系冷启评测」基线对照 |
标注层防御:半人工标注质量低于阈值的桶位评测不参与跨桶百分位(防「标注差但评测分高」);holdout 桶位均匀分布(防全在 B1 桶虚高 baseline)。
§8 Pydantic-friendly schema 提示
§8.1 已在 cognition-1.1-contract.md(EvalHarness 直接消费)
StructuredCognitionResult.{phase_evidence, causal_graph, regulation_status, applicability_flags, posterior, s1}—— D1-D11 全部主输入字段。MCABucket.{axis_1..7, bucket_label, worst_axis, tag_version}—— 桶位元数据,评测系统下发。
§8.2 EvalHarness 需新增子模型
# src/finbayes/eval/types.py(M0 实施时落盘;统一 ConfigDict(extra="forbid"))
from typing import Literal, Optional
from pydantic import BaseModel, ConfigDict, Field
DimensionId = Literal["D1","D2","D3","D4","D5","D6","D7","D8","D9","D10","D11"]
BucketLabel = Literal["B1","B2","B3","B4","B5a","B5b","B6","B7"]
SplitName = Literal["dev","test","holdout"]
class DimensionScore(BaseModel):
dimension_id: DimensionId
raw_score: float = Field(..., ge=0.0, le=1.0)
bucket_percentile: Optional[float] = Field(default=None, ge=0.0, le=1.0)
components: dict = Field(default_factory=dict)
bandwidth: Optional[float] = Field(default=None, ge=0.0)
gaming_flags: list[str] = Field(default_factory=list)
class CaseScore(BaseModel):
case_id: str
bucket_label: BucketLabel
split: SplitName
dimensions: dict[DimensionId, DimensionScore]
aggregate_score: float = Field(..., ge=0.0, le=1.0)
iaa_kappa: Optional[float] = Field(default=None, ge=-1.0, le=1.0)
ece: Optional[float] = Field(default=None, ge=0.0, le=1.0)
class BucketReport(BaseModel):
bucket_label: BucketLabel
case_count: int
median_score: float
percentile_bandwidth: float
dimension_medians: dict[DimensionId, float]
sample_quality_flag: Literal["ok","insufficient","annotation_low"] = "ok"
class DegradationFlag(BaseModel):
bucket_label: BucketLabel
dimension_id: DimensionId
baseline_score: float
current_score: float
delta_ratio: float
severity: Literal["bucket_level","cross_bucket","mechanism_level"]
class IAAReport(BaseModel):
task_id: Literal["A","B","C","D","D1_open","D7_external"]
kappa_rolling_10: float = Field(..., ge=-1.0, le=1.0)
disagreement_rate: float = Field(..., ge=0.0, le=1.0)
triggered_mini_review: bool
contested_points: list[dict] = Field(default_factory=list)
class BatchReport(BaseModel):
split: SplitName
bucket_reports: dict[BucketLabel, BucketReport]
degradation_flags: list[DegradationFlag] = Field(default_factory=list)
iaa_reports: list[IAAReport] = Field(default_factory=list)
§8.3 字段间约束(M0 留 stub,M1+ 落 @model_validator)
D9 raw_score 仅当跨 ≥ 2 桶时计算,否则 None + gaming_flags 含 "d9_single_bucket_skipped";D11 raw_score 仅当 bucket_label ∈ {B1, B2, B3} 时计算;B7 桶 BucketReport 不入跨桶百分位(§3.3);ECE 字段仅 D6 计算,其余 case_score.ece = None。
§9 关联资产
事实源:Phase 4 评测体系 v1(R1 修订) / ADR-007 supplement §2.4。输入字段:StructuredCognitionResult 1.1 契约源。治理:Phase 5 体系迭代方法论与治理机制。IAA / 标注:Phase 7 半人工标注 SLA 附录。子系统:EvalHarness 子系统设计。M0 联动:M0 走通骨架工程包 §11。
§10 Phase 4 未明示项(留 Phase 6 R2 / 后续 ADR 补完)
v1 默认值由本文件按工程合理性填补,待 R2 校准:(1) 11 维统一 $w_i$ 权重表(Phase 4 仅给维度内子分量权重,跨维度未给;§2 给 v1 起步);(2) D3 $MAE_{max}$ 标定常量(仅明「季度」未明上界,v1 取 8 季度);(3) 桶下 $w_i$ 特殊重调表(仅给方向未给数值,§2 给方向数值留 R2);(4) B5a / B5b 拆分后 $w_i$ 未明;(5) D6 双峰「重叠率 ≥ 0.8」量化算法(IoU / Jaccard / 端点距离)未明;(6) ECE bin 数未明,v1 取 $M = 10$;(7) bootstrap $n_{resample}$ 未明,v1 取 1000;(8) 退化阈值 15%(EvalHarness §7 标 v1 默认未经压测,4 季度后校准)。