docs: record PR #62-#77 and the two open follow-ups (#78, #79)#80
Merged
Conversation
…e corrected-engine re-runs CLAUDE.md's progress section stopped at PR #61. Fourteen merged PRs were unrecorded, including the entire factor-evaluation contract layer (analytics/eval/) and eleven reproduced minute factors, so a future session would have re-derived them or acted on superseded conclusions. Added entries (every number traceable to tmp/design/RESULTS_post_pr75_2026-07-21.md, tmp/design/FINDING_adj_factor_seam_2026-07-21.md, tmp/design/HANDOFF_2026-07-21.md, tmp/Quantitative_Research_Report/factors/ledger.md, or gh pr view): - factor evaluation contract layer + eleven minute factors (#63-#73) - evaluation contract v0.8 + v0.9, and the post-merge eleven-factor reconciliation, including the reconciliation script that could not fail - VWAP fills + corporate-action-adjusted intraday holding returns (#75) - report disclosure fix + I5f re-measured at the real notional (#76), with the still-open #78 follow-up - decreasing-adj_factor quality check, threshold 1% from the cache sweep (#77) - daily ex-dividend correctness audit: no vintage seam, 1 exposed pair in 603,258 - I5d / I5e / I5f re-run on the corrected engine - eleven factors re-based on the 14:51 VWAP exec-to-exec return (PR not yet open) Every NAV in the re-runs rose because of the ex-dividend bug fix, not because performance improved; the VWAP fill basis is itself slightly unfavourable. Both are stated as such. The MMP stance is updated to reflect that its only positive evidence degraded while the negative result strengthened. Updated existing lines: the PR list, the quality-gate line (pytest 1740 passed, 31/31 configs, phase0 0.9600/0.8408 — all measured on this tree), the disclosed remainder, and the roadmap.
… rebasis PR number (#79) Both follow-ups now have real numbers, read from gh pr list rather than assumed: #78 is fix/limit-basis-single-source and #79 is feat/exec-to-exec-rebasis, both OPEN. The rebasis entry no longer says "PR not yet open". - New entry for #78: #76's regex guard claimed no further copy of the wrong gate description could ship, and review disproved it by running seven plausible rewordings through the actual regex — all seven escape. The fix is structural: limit_basis_phrase() is the one authored sentence and three sites compose it; rendered text is unchanged; the regex stays with its scope corrected to catching a literal revert. - Sharpened the second defect-class rule accordingly: the rule is not "assert no (N+1)th copy exists" — that is precisely what the regex failed to do — it is author the claim once and have every other site compose it. A regex cannot assert that no other sentence makes a claim; having no other sentence can. - #79 entry gains its number, the reason for the rebasis (a minute factor is fixed at 14:50 and the only modellable fill is the 14:51 bar, so close-to-close credits a closing auction this project cannot simulate), the two coverage denominators kept apart as the PR keeps them, and the correctness acceptance. Sources: gh pr view 78, gh pr view 79, RESULTS_post_pr75_2026-07-21.md.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CLAUDE.md's 「当前进度」 stopped at PR #61. Fourteen merged PRs were unrecorded, including the whole factor-evaluation contract layer (analytics/eval/) and eleven reproduced minute factors. This is the file every session loads as ground truth, so the gap would have cost re-derivation or, worse, action on superseded conclusions.Only
CLAUDE.mdchanged (+90 / −4 net, two commits). No code, config, test or other doc touched.Per-item diff — entries ADDED
analytics/eval/+ 十一个分钟因子复现(#63–#73) — three-axis verdict (Predictive × Incremental × Tradable), asymmetric gate, unknown never convicts, N_eff CI lower-bound gating, exploratory cap at Watch; 11-row table (sign / IC / ICIR / turnover / net 1× / no_book·with_book verdict); three loop-level conclusions; the two methodology rulesRESULTS_post_pr75…mdv0.9 reference table (verdicts, IC, ICIR, turnover) +factors/ledger.md(net 1×, families, per-factor conclusions) +gh pr view 63gross 0.000125 / net −0.001983 → cost 0.002108 → aligned −0.002233, and two of four sites feed the Tradable gate); defect 2 (magnitude-sensitive statistic gating a rank axis → per-date Spearman); v0.9 three-valued N_eff CI gate + "UNKNOWN never rescues"; 3 verdict cells changed; post-merge 11-factor reconciliationHANDOFF_2026-07-21.md§1 +gh pr view 74+RESULTS…mdcompare_postmerge.pyread the file_baseline_table.pyhad just overwritten, soold == newheld by construction; reproduced in a sandbox withic=1.0vsic=999.0; authoritative baseline isscratchpad/baseline_reports/, notbaseline_rows.jsonRESULTS…md§"A check of mine that could not fail"1e-6tolerance with its optimistic, bounded residual,(raw·af)/(raw·af)−1holding returns, missingadj_factornever defaulted to 1.0, incidence 8.41% / 9.75%HANDOFF…md§2 +gh pr view 75VWAP ≡ close)gh pr view 76adj_factor下降质量检查(#77) — threshold 1% with the full-cache sweep table (7898 events / 4479 symbols), why not 0.5% (603081.SHundecidable) and not 2% (misses a real event), and how this WARNING differs semantically fromcheck_extreme_returns8a3eea5+data/quality/market.py:142-198docstring (merged code supersedes #77's body, which still says 2%)limit_basis_phrase()is now the one authored sentence, composed by the feasibility section, the group report and the Limitations bullet; rendered text byte-identical; the regex is kept with its scope corrected to catching a literal revert. Carries the generalizing line: a regex cannot assert "no other sentence makes this claim"; having no other sentence cangh pr view 78−57.27%is the BSE placeholder1.0000on one symbol from a single fetch with no price rows; in-universe exposure 1 pair in 603,258, CSI300 zero; contaminated-vs-clean mean (+4.38% vs +2.28%, median right all along)FINDING_adj_factor_seam_2026-07-21.mdRESULTS…md§I5f / §I5d / §I5eclosing_call_proxycannot simulate withoutstk_auction_*); 20 of 22 cells unchanged, two moved toward less confidence; the single mechanism (point estimates strengthen, N_eff falls in 9/11); the two coverage denominators kept apart; the liquidity-correlated, non-random exclusion; correctness acceptance (per-date corr median 0.9890 against a 0.90 floor that raises, 5 rows hand-recomputed to exact 0.0)RESULTS…md+gh pr view 79Per-item diff — existing lines CHANGED
gh pr list --state all793 passed→ 1740 passed, measured in this worktree; new group counts from--collect-only(contract 337 + standard 113 + figures 7 / eleven factors 421 / exec-vwap 46 / market quality 15→21);20 配置→ 31/31; phase0 re-run. Old per-phase breakdown kept, labelled historicalpytest -p no:warnings→1740 passed,ruffclean, 31/31 configs,run-phase0→ic 0.9600 / annual 0.8408. PR #79 independently measuredmainat 1740data-update; HTML compendium still on v0.8RESULTS…md§I5d / §I5e / §MMP combined readRESULTS…md§I5f capacitygh pr view 78Writing discipline held
gh pr listafter both opened.Gates
pytest1740 passed ·ruffclean ·validate-config31/31 ·run-phase0ic_mean=0.9600, annual_return=0.8408· secret scan on both commits' diffs: token value 0,.config.json0, long hex strings 0 · no attribution lines in either commit message.