Skip to content

performance_metrics: benchmark inner-join, win_rate/profit_factor 口径与晋级标准冲突(G3) #659

Open

Description

@Pigbibi

strategy_lifecycle/performance_metrics.py::compute_window_metrics 与《策略晋级与风险标准》的共同口径有三处文字冲突(只登记,不在 RS-01 中修改,现有语义被生命周期监控使用,需单独评审):

  1. 基准对齐静默取交集:基准比较用 pd.concat(..., join="inner").dropna()。标准写「同一比较使用一致的日期……缺失日期不能靠补零或静默取交集修饰」。建议:日期不一致时返回不可计算状态,或至少输出被丢弃的日期数。
  2. win_rate 实为正收益日比例:(series > 0).sum() / len(series)。标准写「不把正收益日比例当交易胜率」。建议改名或在输出中标注 unit=positive_period_share。
  3. profit_factor 基于日收益而非逐笔交易,同样需要标注口径。

参考:研究方案 RESEARCH-PLAN-2026-10-10 §1.3 G3;新的 research_stats(#658)不依赖这些函数。

Activity

  1. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    统一指标补充已正常合并 QPK #668 → b23511cbb28b72743e35512ef4b3c73f1cd43c23。双语指标目录 记录实际能力与缺口。

    胜率、平均盈亏比与盈利因子已明确分开:旧 win_rate 是含零日的正收益日比例,daily_win_rate_ex_zero 排除零日,profit_factor 是正日收益总和/负日收益总和绝对值,不是平均盈亏比。Kelly 均值输入也不等于逐笔交易统计。

    B3 新增可选 include_outcome_diagnostics=True 的四个研究诊断:net_win_rate_ex_zero_per_period、net_payoff_ratio_per_period、net_profit_factor_per_period、mean_net_return_per_period。附正/负/零观察数和 return_observations_not_trades 口径;均值包含零收益观察。缺盈/亏一侧、数值溢出/非零下溢均不可计算/null,精确全零或正负相消保留真实零。默认原八项输出及所有旧指标结果保持,独立比较8组情形已核验;新指标仅描述历史输入,不预测利润或自动参与排序/否决。

    目录覆盖成熟系统的收益/基准、Sharpe/Sortino/Calmar/IR、回撤/CVaR、胜率/盈亏比/Profit Factor/均值、PSR/DSR/MinTRL/PBO/WFA、执行成本、组合容量与运营来源证据。它不声称所有指标已在每个consumer或实盘接通;回撤恢复期/VaR、真实交易/容量/执行质量等需要各自合同和输入,不自设全系统及格线。

    验证:13新增合成回归、50项focused通过;独立审查的非零下溢假0与中文零均值边界已修并复核。本地CONTRIBUTING unittest 1366项(含1既有skip);首轮缺既有monitor source revision的3项失败在未改base复现,绑定真实checkout base SHA后通过,无测试/断言削弱。最终提交 aab408364fa1926ed1d23c5f8185d3330eacc7cc 的 CI38356900706 2563 passed / 2 existing skipped / 1013 subtests passed;Ruff、dependency refs、链接和diff通过;合并树 bdd500aca5033cb800335e5445ad7282e6d696b1 一致。

    逐笔胜率/盈亏比/expectancy仍不能由日收益推断:需先冻结闭合交易配对、部分平仓、多腿/策略归属、费用/FX和未平仓处理。缺真实记录保持未具备,不编造交易数。现有 #659 的consumer采用/完整口径仍待验;#632、B1/B2/B4与通知#634的剩余状态不由本批解除。不改生产pin、晋级阈值、风控/仓位、全局trial账本、预算、候选状态、后验模型或真实业务。

  2. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    合并后 main CI 38357139638 现已 SUCCESS。任务分支经无独有提交/无open PR依赖核验后已不存在,工作区clean;默认报告兼容与13新增诊断证据归档 /workspace/quant-metrics/final-evidence.json。自动Dependabot/Advance Staged QPK Pin两项策略工作流为skipped,没有计作测试成功,也没有借此更改consumer生产pin。

  3. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    后续指标执行任务已更新:总审计完整清单,对应 Q05/Q06/Q07。本 issue 保持 open。

    • Q05:在独立研究环境验最新 QPK b23511c + UES116f 的实际安装和已有组合能力,再按明确消费合同接入可选四项周期诊断;绑定观察单位、基准对齐丢弃数、频率/ddof/资金流/成本和不可计算状态。旧116+50项组合证据绑定 QPKf8,不能当作 b235 联合安装验收。
    • Q06:先明确配对、部分平仓/多腿、费用/FX、未平仓、净P&L单位和零值分母,再实现逐笔胜率、平均盈亏比、Profit Factor、expectancy。周期胜率/Profit Factor 不改称逐笔成绩,缺交易记录不生成真实数值。
    • Q07:按用途补回撤持续/恢复、连亏、执行质量与其他风险/组合/容量投影;现有统计原语复用。只有预注册要求的指标进入对应研究前置条件,不要求机械补全整个目录,缺订单/报价/流动性输入就披露缺口。

    QPK #668 和该 main CI38357139638 success 的既有证据保持。新任务未实现,生产pin和晋级阈值未改变;用户指标完善项与 Claude 原审计映射分别标注。

  4. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    Q05最新组合工程验证已完成,consumer采用继续未完成:

    固定immutable QPK b23511cbb28b72743e35512ef4b3c73f1cd43c23 + UES 116f1a8e7de6f4359eb63311b34d5ae781d6f5db 的独立owned git-archive/venv环境,实际editable direct_url/import路径与每个tracked source/config/test blob核验,两个UES_REQUIRE门同时1,pip check clean。UES既有组合116 passed;QPK既有A2/A3/B3 +13 outcome cases合计63 passed /77subtests;无失败/skip。JUnit140包含subtests,不冒称140 top-level。源码worktree零diff,生产pin不变;旧f8证据不混作最新。

    已有ExecutionPath同sessions的gross/net输入可直接复用build_unified_net_report(include_outcome_diagnostics=True),纯terminal-fill fixture桥接通过。调查5个直接窗口点与5个间接研究调用,仍无外部A2/B3 caller;将具体方案停在选定真实调用方/输出合同之前,不制造无人调用wrapper/CLI。周期与逐笔口径仍分开,四指标不自动参与排序/否决或产生真实成绩。

    证据 /workspace/quant-priority-batch/measurement-evidence.json、measurement-validation/{consumer-survey.json,adoption-plan.json}。Q06逐笔合同、Q07用途化其他指标、#659原消费者语义采用仍open;这些是合成工程检查,不是真实成本、实盘采用或研究edge。

  5. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    Q06/Q07 只读合同调查已完成(不等于逐笔统计实现或真实成绩):23 个公共源码文件绑定 commit/git blob/SHA256,主智能体逐文件复核;QPK b23511cbb28b72743e35512ef4b3c73f1cd43c23、UES 116f1a8e7de6f4359eb63311b34d5ae781d6f5db、IBKR ab99673dabdc0557348d6520b348505243c3c012,Schwab 被审四文件逐字节等于 40f7694ce1534a1d171e9486e1b751a9170cbd95,未将旧 audit HEAD冒称最新。

    已确认:IBKR reconciliation有execution_id/order_id/time/side/shares/price,Flex保留期间费用与FX,但尚无fee→fill/lot关联或完整历史证明;Schwab显式recent_executions_complete=False,订单累计量不是带时点成交记录。研究NAV/事件与特定option campaign/lot确实存在;未发现可直接复用的通用净closed-trade统计入口。原四项净收益周期诊断仍是per_period,不能冒称逐笔胜率/盈亏比。

    实施前最小待绑定事项为:交易单位/范围、权威配对规则、稳定完整成交事实、去重与修订、费用归属与分摊、FX及P&L/收益/R单位、部分闭合/未平仓/零值及无盈利或无亏损分母、同范围对账及指标用途。没有自行选FIFO、费用/FX规则、阈值,未创建新API/CLI/schema或试验。

    Q07:已有日收益尾部连亏helper,并非逐笔或最大连亏;其直接helper丢弃NaN/不可转值,和docstring的break语义不同,列为输入适用性缺口,本批不改风险门。回撤恢复仍缺同范围完整NAV、观察单位与截断/未恢复规则;执行质量缺quote→intent→order→fill时点/单位/分母关联。没有账户数据就不展示交易成绩。

    本地可审查材料:/workspace/quant-priority-batch/closed-trade-contract-survey.zh-CN.md(SHA256 6c12406a5ce0e67764ac811fa9c01ae75458d4227ee85a2734bf802640b55242)、closed-trade-contract-survey-evidence.json、closed-trade-contract-root-review.json。最新联合安装与UES116+QPK63/77subtests证据沿用上一条本批记录;实际consumer采用仍待指定。本issue保持open。

  6. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    Q05指标工程继续接入真实已有消费者:UES #590,head 78a364ea9069d0c34c61198e42552a181da62beb,默认关闭的既有历史CLI/report chain sidecar,使用QPK b23511cbb28b72743e35512ef4b3c73f1cd43c23 十二项真实能力。最终远端consumer CI34 passed/0skip(immutable VCS安装、actualCLI、手算和无skip门真实执行),其余full CI尚在跑,未报合并/生产采用。

    四项周期胜率、盈亏比、利润因子、平均净收益使用准确同窗口net简单收益;零观察保留、初始NAV不增加观察,旧rf-adjusted年化指标分开。缺gross/trial仍null,不重建假gross/实际费用,不拿旧48声明补DSR。保持REPORT_ONLY/no_order。

    Q06窄记账建议仍DRAFT:先单证券/单策略long-only,以已知0仓位→开仓增减→回到0的完整closed_position_campaign为闭合样本;部分卖出留在未闭合campaign,不擅选FIFO税务lot或把FILLED/正收益日算交易胜率。可由工程继续给字段映射、重复/修订/缺费/未闭合算例与数量现金对账规则。真实统计最少需要同scope完整原生成交ID/时点/数量币种及初始历史、真实费用/收入与FX归属、真实持仓现金对账和owner统计单位决定;Schwab完整fill流仍无证明。回撤持续/恢复和周期连续亏损可另做纯同频净收益REPORT_ONLY规则,未恢复/缺观察明确censored/unknown;不动实盘breaker。该issue仍open。

  7. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    Q05 已有历史CLI消费者工程已正常合并 UES #590:head 78a364ea9069d0c34c61198e42552a181da62beb,merge 0e66469c95a72c6248eae3ea474223d9ff6e1df5,合并树一致。最终PR四项CI全SUCCESS,full2467/28既有skip/460subtests;真实unified consumer34/0skip、stats107/1既有skip、execution8/0skip。QPKb235实际VCS安装与十二项能力、actualCLI/手算/零skip门在远端执行。默认未启用、未运行私有历史cloud研究,周期outcome不代表闭合实盘交易,缺gross/trial仍null。

    原Claude报告现已取得,12页SHA256 f60ce29f267722245cf62e308883e11b001f38efc3ee2de9d6c861806acb1bfb。p7确要求daily/trade统计分开;Q06仍需完整成交/费用/FX与闭合scope。新增精确待办是p6的“CVaR报告→尾部预算约束→B1仓位上限”:当前经验CVaR为descriptive_only,#590未实现约束,不能把报告值或缺值当预算批准。后续DRAFT先绑定单位、覆盖/不可计算、真实尾部预算、现金与成本随暴露变化的合同,保持现scope更严限制;不扩大B5。来源、真实账本/holdout与owner事实如实保留,issue继续open。

  8. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    本批推进中:B1/B2、CVaR 暴露约束与 B4 贝叶斯后验前置决定合同已形成最终三文档补丁,并完成独立复审:UsEquityStrategies#591,源 88d0710831704ea65813f957c0dfd290924b292d。CONTRIBUTING unittest 246 项通过、pip check 与 17 相对链接检查通过;原 B4 110 行与其他 423 个跟踪文件保持。最终远端三个集成检查已通过,全量 test 仍进行中;目前尚未合并。

    B1/B2 区分现有三条回放路径与实际成本/现金适用限制,不把 A2 原语误称为 full core/live/plugin 等价;CVaR 区分同样本的 return/loss 尾部、fractional tail 与真正暴露约束,仅在严格正齐次净收益等条件成立时允许预算/ES 关系。

    B4 保留原报告 p5 推荐式 m/(sigma²+tau²),解释全方差避免 tau 重复计算,并说明有限周期二阶 Taylor 的原始二阶矩含 m²、截断式驻点不等于精确 log 效用最优。先验、似然、utility、更新/遗忘/去重/重启/失败决定仍 UNSPECIFIED。贝叶斯更新尚未实现,不把文档或工程测试冒充后验验收。

    仍缺真实 scope/cap/尾部预算与 source/license/PIT、untouched holdout 隔离/未查看证据、包含失败和放弃的完整累计 journal 与独立 owner/reviewer。沿用已批准 B1/B2 可靠对照→B4→E1 顺序;不新增扫描、选择参数、启用账户、交易或提高预算。

  9. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    本批研究工程已正常合并:UsEquityStrategies#591,最终 head 88d0710831704ea65813f957c0dfd290924b292d,合并 c0cd8be215f1dabe2e60b660324755373eeab0af;已审 tree、虚拟 merge tree、实际合并 tree 完全相同。最终四项 CI 全部通过:run38407837645,真实全量 2467 passed / 28 既有 skipped / 460 subtests passed;独立审查无未解决问题。合并后 main 自动 CI 正在运行,未将 pending 称为通过。

    合并文档:B1/B2 冻结决定合同、CVaR 暴露约束决定合同、B4 贝叶斯后验语义与前置决定。仅三文档变化,原 B4 110 行及其他 423 个跟踪文件保留。CVaR 的正齐次/现金/净成本限制与 B4 的全方差、二阶矩/精确 utility 区别均明确;所有真正缺失决定保持 UNSPECIFIED。

    本阶段可收尾的是研究准备文档,贝叶斯更新和 CVaR 暴露算法尚未实现。 下一步需真实 scope/cap/尾部预算与 source/license/PIT、untouched holdout 隔离/未查看证据、完整累计试验日志(失败/放弃/修订也计数)及独立 owner/reviewer;取得后按已批准 B1/B2 对照→B4→E1推进。HAR 无日内 RV 合同保持 PARKED,B5 不自动扩入;不启用候选、交易、提高预算或改生产 pin。整体研究验收 issue 保持开放。

  10. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    追加终态:UES#591 合并后的主分支 c0cd8be215f1dabe2e60b660324755373eeab0af 已完成 run38410030770,test、research-stats-integration、research-execution-integration、research-unified-net-consumer 四项全部 success。该研究文档工程阶段可以收尾;后验算法、CVaR 暴露算法与真实研究优势仍未实现/验收,三类事实包和独立决定缺口维持前条记录。

  11. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    Q07 路径指标工程补齐并正常合并:QPK #669,最终 head b6b51d5,merge eae362b;最终 PR CI 38424607230、main CI 38425177603 均成功,独立复审无可执行问题。

    新纯函数 build_net_path_diagnostics 的四项指标是最长 underwater 观察段、最长已完成回撤恢复时长、末段 underwater 观察段和最长严格负净收益观察段。单位 return observations,window_only、prior_history unknown;无恢复样本为 null,末段未恢复 right_censored。零收益保留;归一化初始 NAV 不计作一次收益;没有 epsilon 将微小回撤视作恢复。原十二项统一报告、既有 schemas、旧账本、生产依赖和运行接线保持。

    验证:29 新回归;完整 pytest 2,592 passed / 2 既有 skip / 1,037 subtests;CONTRIBUTING unittest 1,395 ran / 1 既有 skip;Ruff/pip check/无副作用探测均通过。初次全量的 CI provenance 环境缺失如实保留,仅补测试进程实际源码 SHA 后通过,未降低断言。

    UES 同窗口现有31本报告的可选消费者补丁已冻结,48 focused和246 unittest通过,完整验证与最终PR仍进行中。这里不生成闭合交易胜率/盈亏比,不产生研究优势、PIT/OOS、实盘/部署或账户资金结论。Q06 closed_position_campaign 仍为待owner确定的草案,仍缺同scope经核对的真实fills、费用/收入、FX、初始仓位和现金持仓对账。

  12. Pigbibi commented on Oct 13, 2026

    @Pigbibi
    ContributorAuthor

    Q07 本批消费者工程也已收尾:UES #592 正常合并为969352b7044e61b58f2c35c68619ad8f7ba3dc2a,实际研究报告overlay绑定本PR已合并的不可变QPK源 b6b51d5。最终PR CI38428174512与main38429838073各四项成功;main新版overlay真实48cases/0skip/0failure,实际CLI31books、手算及源pin核验通过;原生产pins下main2481passed/28既有skip/460subtests。默认路径、原十二指标、fees/排名/账本和data/OOS/no_order门禁保留。

    四项新计量仅窗口净收益观察数,末段未恢复是右删失且所有观察保留,不产生闭合交易连败、日历时长或未来恢复结论。Q06真实交易胜率/盈亏比仍缺owner单位决定与同scope原生fills/费用收益FX/初始仓位/现金持仓对账,不能用周期outcomes代替。生产采用、研究优势和独立运行身份仍未证明;无交易/部署或生产依赖修改。完整本批五PR和剩余清单已更新QRS#632。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions