Repository navigation
Live rung: strategy out-of-sample holdout, then separate paper performance, and the standing live-readiness instruction - #183
Closed
seathatflowsinourveins wants to merge 1 commit into
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…mance, and the standing live-readiness instruction Two required live gates, criteria fixed before any strategy qualifies and revised before merge after an independent review. strategy-out-of-sample-holdout is established by ONE of two routes: (i) the strategy's frozen protocol passes its own holdout rule, with its minimum trades and multiple-testing adjustment and any lower bound at the family-wise adjusted level (mover-early-entry v1: <= 5 rule-exits, >= 50 trades each, Holm p <= 0.05, paper candidate per paper_e2e); or (ii) a preregistered prospective paper study, pinned by sha256 before its first order, passes its own test at its single analysis point. Both need >= 100 round trips and 20 sessions (or the protocol's larger minimums), costs from a sha256-pinned cost table (per-side half-spread plus the protocol's slippage rule) and fee schedule, and recorded market data or real Alpaca paper fills pinned by sha256; synthetic, offline or fixture evidence never counts. strategy-paper-performance needs a separate, later paper period with the same frozen configs (no session counts toward both gates), one preregistered analysis point (first session end with >= 20 sessions and >= 100 round trips, analysed once), a pooled per-round-trip net estimator with a one-sided 95% circular 5-session block bootstrap lower bound > 0, drawdown <= 20%, zero needs_attention, per-side adverse slippage (entry fill/model - 1, exit model/fill - 1) with a median within the pinned cost assumption via the strategy's own comparator, scheduled trading days as sessions, and leverage above 1x only at an established ladder rung. Both gates share blueprints/us-equities/strategy-performance/receipt.json; its sections must carry the same strategy_id, protocol_sha256 and config_sha256, and the checker verifies only the status strings. The live-go note records the user's 2026-09-24 instruction: paper and simulation are not subject to human approval steps; the live lane is ready for the user's decision when the checker's blocking.live equals ["live-go"]; the user stores the live key and gives the explicit go; automation never flips live-go or places live orders. The handbook table is dated September 24 (22 gates, 21 checked) and its paper row matches the checker. Tests add both gates to the GOOD/BAD receipt fixtures and check that an out_of_sample-only receipt flips only that gate. No strategy qualifies today (#162). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seathatflowsinourveins
force-pushed
the
claude/live-performance-gate-20260924
branch
from
September 24, 2026 14:58
320fe65 to
548246f
Compare
Collaborator
Author
|
Closing: this PR adds required live-rung gates and a standing live-readiness instruction. Live trading is out of scope for this repository; the owner's rule is paper lane only here, with live handled elsewhere. The branch is kept, so the gate criteria can be reopened or carried to the private trading repository. Part of the 2026-09-25 noise cleanup approved by the repository owner; the trading-lane session acknowledged. |
This was referenced Sep 25, 2026
seathatflowsinourveins
deleted the
claude/live-performance-gate-20260924
branch
October 8, 2026 07:55
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.
What
Adds two required live-rung gates to
catalogs/us-equities/gates-20260922.json. Their criteria are fixed before any strategy qualifies. They were revised before merge after an independent review (four majors, five minors).strategy-historical-holdoutis renamed and redesigned asstrategy-out-of-sample-holdout.strategy-out-of-sample-holdoutEstablished by one of two routes:
protocol.jsonselection_and_pass_criteria.holdout), that means at most 5 rule-exits, at least 50 trades each, and a Holm-adjusted one-sided p ≤ 0.05.paper_e2e.incentive-monitor/forward-protocol-v1.jsononclaude/incentive-monitor-20260924.Both routes need:
cost-table-run-v1.jsonbe50cbdf…andfees.jsonfa1f468b…. Cost per side is the quoted half-spread plus the protocol's slippage rule;strategy-paper-performanceThis gate needs a separate, later paper period:
Pass criteria:
needs_attention.paper_compare.py. Itsexit_diff_bpsuses the opposite sign, so the adverse exit value is recomputed rather than copied.Receipt and checker
Both gates share
blueprints/us-equities/strategy-performance/receipt.json, read at/out_of_sample/statusand/paper_performance/status.The notes preregister that both sections carry the same
strategy_id,protocol_sha256andconfig_sha256. The checker verifies only the status strings, and a reviewer verifies the rest before a dated flip commit.live-gonoteReadiness is now stated as: the live lane is ready for the user's decision when the checker's
blocking.liveequals["live-go"]. The user's 2026-09-24 instruction stays recorded:live-goor places live orders."Never gated" is removed.
Handbook
Tests
tests/test_trading_gates.pyadds both gates to the GOOD/BAD receipt fixtures.out_of_samplesection flips only that gate.Evidence (rebased on
origin/main5af3581, raw)python3 scripts/trading_gates.py --check: passed. 22 gates;rung_readyis sim true, paper true, live false.blocking.livelists the five open live gates, both strategy gates andlive-go. There are no flip candidates.python3 scripts/evidence_manifest.py --check: passed (5,235 files).python3 scripts/validate.py: passed (5,235 hashed files, 143 receipts).python3 -m unittest tests.test_trading_gates: 19 tests OK.python3 -m unittestunderecosystem-bounded-run: Ran 3945 tests, OK (skipped=419).gitleaks git --log-opts=origin/main..HEAD --no-banner --redact: 1 commit scanned, no leaks found.These are synthetic fixtures and local integration checks. No receipt exists at the shared path.
Status
No strategy qualifies today: mover v1 and v2 had no development pass (#162). The prospective route is not yet on main: the incentive-monitor study proposes it on its own branch, and no gate status follows from it until this PR merges.
🤖 Generated with Claude Code