The measurement
- Derived from
- canli.alphac-sleeve-admission-contract.v6
- Evidence
- artifacts/analysis/frontier_14/result.json
- Evidence checks per candidate
- 86
- Rationale
- docs/design/ADMISSION_V7.md
- Schema
- canli.alphac-sleeve-admission-contract.v7
- Status
- IN_FORCE
Additional required portfolio evidence
- book_sharpe_delta_lower_95
- book_expected_max_drawdown
Capacity curve required fields
- capital_usd
- net_sharpe
- fill_ratio
- stressed_cost_bps
Capacity policy
- Capacity usd min
- 500000
- Capacity usd min previous
- 5000000
Reason. A 5,000,000 USD floor per sleeve implies a 70,000,000 USD book at fourteen sleeves. It was written for a fund that does not exist yet, and it did not reject candidates uniformly: the return sources most likely to be genuinely anti-correlated with a momentum-and-carry book -- catastrophe bonds, municipal basis, freight, power, sovereign dislocation -- are structurally thin. The floor therefore selected AGAINST the diversification the objective depends on, which is the opposite of what a capacity gate is for.
Review trigger. Re-raise per sleeve when deployed capital per sleeve exceeds one fifth of this floor. Capacity is a property of the strategy, but the FLOOR is a property of the book, and a floor that outruns the book is a constraint that costs edge for nothing.
What this does not relax. The capacity CURVE, its monotonicity reconciliation, and the stressed fill-ratio floor are unchanged. A candidate must still show Sharpe decaying and cost rising with capital, and must still reconcile its reported capacity to that curve.
Deflation policy
- Book deflation is mandatory for maturity
- yes
- Book deflation is strictly additional
- no
- Book maturity threshold
- 0.950000
- Book measurement key
- book_deflated_sharpe_must_be_measured
- Book selection unit
- complete_union_hypothesis_identities
- Book threshold key
- Not reported
- Per sleeve is measured not gated
- yes
- Per sleeve measurement key
- deflated_sharpe_must_be_measured
- Per sleeve selection unit
- family_trial_account
- Per sleeve threshold key
- deflated_sharpe_min
Per sleeve gate removed reason. The per-sleeve 0.95 DSR gate was already removed in v6 because it measured the wrong object and silently required about eight times the declared standalone Sharpe floor. Per-sleeve DSR remains mandatory to measure and publish. V7 additionally re-scopes the full-union book DSR threshold: it remains mandatory to measure at every admission and becomes a 0.95 gate at portfolio maturity, while incremental admission is decided by the positive bootstrap lower bound on book-Sharpe improvement and the other unchanged robustness, execution, stress, capacity, and trial-accounting gates.
Reason. DSR deflates for the trials the selection was drawn from. A pre-registered, direction-locked candidate in a new family was not selected from other families' trials. The published claim is the book's, so the book carries the full union.
Diversification evidence policy
- Candidate weight
- predeclared upstream and supplied explicitly
- Confidence level one sided
- 0.950000
- Confidence method
- deterministic circular moving-block bootstrap
- Default block size
- 21
- Default bootstrap samples
- 2000
- Default seed
- 20260816
- Implementation
- alphaforge.validation.diversification.diversification_report
- Return type
- aligned OOS simple returns with no dropped rows
- Stress mask
- predeclared upstream and supplied explicitly
Execution dimensions
- commissions
- bid_ask_spread
- slippage
- nonlinear_market_impact
- latency
- queue_position
- partial_fills
- rejected_orders
- cancelled_orders
- missing_opens
- stale_quotes
- holidays
- corporate_actions
- delistings
- borrow_availability
- borrow_fees
- borrow_recalls
- financing
- futures_rolls_and_limits
- option_surfaces_assignment_and_gaps
- exchange_outages
- venue_and_counterparty_risk
- turnover
- liquidity
- crowding
- operational_kill_switches
Execution evidence policy
- Dimension hash is canonical manifest hash
- yes
- Not applicable requires sha256
- yes
- Scenario hashes are canonical payload hashes
- yes
- Tested statuses require scenario manifest
- yes
- Tested statuses require scenarios
- yes
- Tested statuses require sha256
- yes
Scenario manifest required fields
- scenario_id
- status
- assumptions
- assumptions_sha256
- result
- result_sha256
Scenario statuses
- PASS
- FAIL
Execution statuses
- TESTED_PASS
- TESTED_FAIL
- NOT_APPLICABLE
Frontier arithmetic
- Identity
- S_book = s_bar * sqrt(N / (1 + (N - 1) * rho_bar))
- Incremental book average correlation delta gate exclusive
- 0
- Incremental candidate average correlation gate
- 0
- Incremental gates alone establish objective ceiling
- no
- Incremental gates alone establish objective floor
- no
- Legacy global zero correlation reference
- 0
- Psd floor at target n
- -0.076923
- Target sleeve count
- 14
Book sharpe ceiling at zero global correlation
- S bar four curve basis
- 1.736129
- S bar traded basis
- 1.979337
Correlation required at measured quality
Four curve basis
2 further fields. Read them in the artifact.
Note. The other route to the same place: hold quality where it is measured today and read off the average pairwise correlation each end of the band demands.
Traded basis
2 further fields. Read them in the artifact.
Honest reading. Tightening the correlation ceiling from 0.15 to 0.00 removes a ceiling that sat BELOW the objective at every plausible quality, which is why the v4 gate could not have produced the objective at any sleeve count. It does not on its own deliver the objective. At the gate exactly, fourteen sleeves of today's measured quality reach the figure recorded above, and the remaining distance has to be bought with per-sleeve quality, genuinely negative correlation, or both. Publishing this is the point: a target sitting beside a gate that forbids it is not a stretch goal.
Psd floor note. Average pairwise correlation cannot fall below -1/(N-1) for any real correlation matrix. At fourteen sleeves that floor is far from binding, which is why a negative average is arithmetically available here and is not at 250 sleeves.
Quality precondition at the gate
- S bar measured four curve basis
- 0.464000
- S bar measured traded basis
- 0.529000
- S bar required for 2 / 25
- 0.601338
- S bar required for 3 / 0
- 0.801784
Note. What the tightened correlation gate alone does NOT buy. At the gate exactly, reaching each end of the objective band requires at least this average standalone Sharpe across fourteen sleeves.
Gate power audit
- Candidate return artifacts read
- 0
- Content hash
- sha256:743c803a4a65869be14957cec1ce0d7737568d26fb3d89278f827dfedd0186fb
- Hypothesis identities consumed
- 0
- Path
- artifacts/analysis/admission_gate_power_audit/result.json
- Sha256
- 0efb66ef4b7f5e497da56fcb2e178a69ef522f69ac4ba7d9b09297c5ae057f42
Incremental gate scope policy
Book deflated sharpe
- Admission role
- MANDATORY_MEASUREMENT_AND_PUBLICATION
- Full union trial count remains mandatory
- yes
- Maturity threshold
- 0.950000
- Portfolio maturity role
- GATE_AT_0.95
Reason. Measure and publish full-union book DSR at every admission, but gate it at the portfolio-maturity claim. Incremental admission remains gated by the strictly positive bootstrap lower bound on book-Sharpe delta, PBO, leave-period-out robustness, costs, stress, execution and full trial accounting.
Correlation
- Average upper 95 gate unchanged
- 0.100000
- Book average pairwise correlation delta must be strictly negative
- yes
- Candidate average to existing book max
- 0
- Global average pairwise correlation
- MANDATORY_MEASUREMENT_AND_TRAJECTORY
- Global objective
- -0.030000
- Ordinary pair and stress gates unchanged
- yes
Reason. Gate each new sleeve on a strictly negative change in the book's average pairwise correlation and a candidate-to-existing-book average no greater than zero, retain the 95% uncertainty ceiling and pair/stress ceilings, and publish the separate trajectory to -0.03. Do not require the first increment to finish the entire book's diversification objective.
Lineage types
- Code commit field
- code_commit
Boolean fields
- point_in_time_data
- survivorship_control
- corporate_action_control
- direction_locked
- parameters_locked
Identifier fields
- family_trial_account
- return_identity_id
Sha256 fields
- preregistration_sha256
- data_manifest_sha256
- diversification_report_sha256
Objective
- Average pairwise correlation objective
- -0.030000
- Honest forward sharpe target
- 1.500000
- Minimum new sleeves
- 10
- Portfolio max drawdown statistic
- expected_maximum_drawdown
- Portfolio max drawdown target
- 0.110000
- Portfolio p95 max drawdown is gated
- no
- Portfolio p95 max drawdown must be published
- yes
- Target total sleeves
- 14
- Targets are admission evidence
- no
Average pairwise correlation objective note. An objective, not a gate. -0.03 is the average pairwise correlation at which fourteen sleeves of measured quality reach 2.5. Thresholds are gates and live in 'thresholds'; anything that is not enforced must not sit there wearing a gate's costume.
Backtest to forward haircut
- Measured on this book
- in-sample equal-risk ~1.04 against an honest forward of 0.3-0.9
Note. The haircut IS the uncertainty. Until the forward record is long enough to speak, every in-sample figure should be read through it, and the range is this book's own published pair rather than a convention borrowed from elsewhere.
Range
- 1.500000
- 3
Implied in sample target
- At 1 5x haircut
- 2.250000
- At 2 0x haircut
- 3
- At 3 0x haircut
- 4.500000
Portfolio sharpe target
- 2.250000
- 3
Portfolio sharpe target unit. IN-SAMPLE, being the band that an honest forward 1.5 implies at the 1.5x and 2.0x ends of this book's own measured haircut. The headline target is honest_forward_sharpe_target.
Superseded in sample sharpe target
- 2
- 2.500000
Superseded reason. Stated in-sample with no haircut named, and unreachable as a forward result: a verified forward 2.0 at measured per-sleeve quality needs an average pairwise correlation of -0.062 against a PSD floor of -0.077. Withdrawn 2026-08-21 and replaced with an honest FORWARD target of 1.5, which is inside the floor at every plausible quality.
What reaching it requires. Both halves, not either: an average pairwise correlation meaningfully BELOW zero, and per-sleeve quality above roughly 0.60. At today's measured 0.469 the forward target is reachable only at a correlation near -0.030 and only on the optimistic haircut.
Why this is not a retreat. The rarer thing was never the number. A forward Sharpe near 1.5 that is genuinely verifiable -- signed forward record, every killed candidate published in full, gates that provably bite, and the arithmetic showing where the gate falls short of the target printed on the same page as the target -- is harder to find than a 2.5 nobody can check.
Overlay policy
- Annualized vol target
- 0.100000
- Both halves shipped
- no
- Covariance halflife days max
- 21
- Halflife pending execution costing
- yes
- Implementation
- alphaforge.portfolio.overlay.vol_target
- Mandatory vol target overlay
- yes
- Production cov halflife today
- 720
- Production realized vol halflife today
- 240
- Realized vol halflife days max
- 240
- Realized vol leg must be unlevered
- yes
- Sigma hat rule
- max(ex_ante, realized)
Cost of the halflife change
- Evaluated at stressed correlation
- 0.500000
- Evidence
- artifacts/analysis/overlay_halflife_decision/result.json
- Simulated expected max drawdown after
- 0.102250
- Simulated expected max drawdown before
- 0.142130
- Status
- SUPERSEDED; the baseline it prices is not what the crypto sleeve ran
Why this is not the live cost. The 'before' cell is a 720-DAY halflife in a daily simulation. The crypto sleeve ran 720 BARS on H1, which is 30 days, and the live estimator is windowed and seeded rather than an untruncated recursion. Both figures are kept because they were published; neither is a measurement of the live book.
Covariance halflife note. 21 is the only tested covariance halflife that holds expected max drawdown at or under the objective at the permitted stressed correlation. Provisional pending execution costing.
Halflife unit defect
- Found
- 2026-08-21
Description. The halflife was a BAR count while the objective and this contract are stated in DAYS, and a bar is one hour on the crypto H1 sleeve against one session on equity D1. The old 720-bar default therefore meant 30 days to crypto and about 2.9 years to equities. Writing the study's 21 into the bar parameter would have given the crypto sleeve a 21-HOUR covariance halflife.
Resolution. The parameter is cov_halflife_days, converted at the point of use via periods_per_year(tf) / periods_per_year(D1). Pinned by tests/unit/test_cov_halflife_units.py, which fails if the conversion is removed.
Still ambiguous and not changed. cov_window_bars (720), cov_min_periods (240) and realized_vol_halflife_bars (240) all carry the same ambiguity, and the realized-leg one is named by a threshold in this contract that says DAYS. No study measured them, so changing them would be an unmeasured change; naming them is the honest alternative to fixing them quietly.
Known defect
- Expected max drawdown cost at permitted stressed rho
- 0.021700
- Measured bind fraction as shipped
- 1.930e-4
- Measured bind fraction if fixed
- 0.817626
- Site
- src/alphaforge/portfolio/strategy.py (_realized_vol_ann)
Description. The realized leg was measured on the post-overlay account equity curve while the ex-ante leg used pre-overlay optimizer weights. The book runs de-levered, so the realized leg lost max() essentially always and the fast regime detector never fired.
Status. RESOLVED in production. The realized leg is now de-levered per bar before comparison, and tests/unit/test_overlay_realized_leg_scale.py pins the caller's value rather than the function's intention.
Production cov halflife unit. BARS, and therefore a different duration per sleeve: 720 bars is 30 days on the crypto H1 sleeve and 720 sessions, about 2.86 years, on equity D1. Incoherent by construction and unchanged, because changing it changes the live book.
Production realized vol halflife unit. BARS, not days, and NOT converted per calendar. On the crypto H1 sleeve 240 bars is 10 days, not the 240 days the realized_vol_halflife_days_max threshold names. Only the covariance leg gained a calendar conversion; the realized leg still has none. Stated here rather than left implied, because the earlier wording of this block asserted a per-calendar conversion for both legs and that was false for this one.
Realized vol halflife note. 240 is production's value and the value every sweep cell used. No shorter realized-leg halflife was tested, so none is required; this threshold bounds regression, not design.
Reason. Permitted stressed pairwise correlation of 0.50 implies an expected maximum drawdown near 20% with no overlay and 16.4% with the overlay as shipped today. Correcting the realized-leg scale and shortening the covariance halflife to 21 holds it at 10.2%. The overlay, not a tighter correlation ceiling, is what holds the drawdown objective.
Remaining gap to the drawdown objective. OPEN, and wider than a previous revision of this contract claimed. The measured study holds expected maximum drawdown at 10.2% only with BOTH the realized-leg scale correction (shipped) and the covariance halflife at 21 days (NOT shipped). The halflife change was briefly made the default and has been reverted, for three reasons recorded in full below: it silently re-sizes every live sleeve on the next daily tick; the sweep cell used to price it does not correspond to what the crypto sleeve actually ran; and the live estimator is windowed and seeded, so it does not reproduce the untruncated recursion the sweep simulated. The objective is also an EXPECTED maximum drawdown -- no tested configuration held the 95th percentile at or under 11%, the best being 13.8%.
Why the halflife change was reverted
- Found by
- adversarial audit, 2026-08-21, after the change had been deployed
Also unresolved. ledoit_wolf_cc is passed the full unweighted 720-row window to compute its shrinkage intensity. That was conservative while the EWMA's effective sample exceeded 720; at a short halflife it is not, and the shrinkage would be materially too weak.
Cost basis did not correspond. The sweep is a DAILY simulation, so its cov=720 cell is a 720-DAY halflife. The live crypto sleeve ran 720 BARS on H1, which is 30 days. Pricing the change against the 720 cell therefore measured a 2.86-year to 21-day move and published it as the cost of a 30-day to 21-day one. Interpolating the artifact's own cells at rho_stress 0.50 puts the crypto sleeve's real improvement near 0.5pp, not 3.98pp.
Estimator does not match the simulation. ewma_cov is windowed at cov_window_bars=720 and seeds S_0 with an equally weighted sample covariance over the oldest min_periods=240 rows, so a large share of the estimate is a flat block the recursion cannot forget inside the window. The sweep simulated an untruncated recursion. The mapping from a swept halflife to the live estimator's effective memory is therefore not one-to-one and was never measured.
Live blast radius. No call site passes cov_halflife_days: the crypto loop (cli/paper_cmds.py), the AlphaTrend gauntlet and the AlphaMax walk-forward all take the default. The walk-forwards are regenerated by the daily ticks and live_cycle.py submits the last leg's weights straight to the broker, so a default change is a trade on every sleeve at once, not a configuration edit. The commit that made it claimed 'nothing was re-run', which was wrong in the direction that mattered.
The mapping is now measured
4 further fields. Read them in the artifact.
What would make it shippable. Measure the halflife on the LIVE estimator per sleeve, on each sleeve's own calendar, with the window, the seed and the shrinkage in the loop, and pass the value explicitly at the profile that measured it rather than as a global default.
Pbo policy
- Measured status
- MEASURED
- Never report not defined as zero
- yes
- Single identity status
- NOT_DEFINED_SINGLE_IDENTITY
- Single identity value must be null
- yes
Prospective scope
- Applies only to identity reservations after effective hash
- yes
- Effective
- yes
- Effective contract content hash
- sha256:bf175acfebead6fdfaa3d0f0f8380636797e468eb071fa20beae12f44d55ddb5
- Effective on or after reservation ordinal
- 229
- Known candidates may not be regraded
- yes
- Legacy identities retired and ineligible
- 228
- Owner promotion record
- config/admission_v7_promotion.json
Promotion requirements
- INDEPENDENT_TEST_SUITE_PASSES
- PUBLIC_GATE_PROJECTION_RECONCILES
- TRIAL_BUDGET_V7_IS_HASH_BOUND
- OWNER_PROMOTION_RECORDED
Required lineage
- preregistration_sha256
- data_manifest_sha256
- diversification_report_sha256
- code_commit
- family_trial_account
- return_identity_id
- point_in_time_data
- survivorship_control
- corporate_action_control
- direction_locked
- parameters_locked
Required robustness
- walk_forward
- purged
- embargoed
- untouched_holdout
- parameter_perturbation
- regime_stress
- correlation_instability
- leave_one_period_out
- mean_zero_candidate_control
- family_wise_trial_accounting
- deterministic_rerun
- correlation_confidence_intervals
- crisis_conditional_dependence
- tail_co_loss
- execution_replay
- capacity_stress
- canonical_diversification_report
- book_level_deflation
- overlay_replay
Retired admission gates
Average pairwise correlation max
- Retired in
- v7-proposed
- Value
- 0
Reason. A final global level was path-dependent when applied to the first incremental sleeve. Replaced by strict candidate-to-book and global-improvement gates while the -0.03 portfolio objective remains published.
Book deflated sharpe min
- Retired in
- v7-proposed
- Value
- 0.950000
Reason. Re-scoped to portfolio maturity. It remains a mandatory full-union measurement at every admission and remains the 0.95 gate before a mature portfolio claim.
Significance policy
- Minimum oos observations raised from
- 252
- Newey west t min
- 0.250000
- Newey west t min role
- sign gate
- Newey west t ratio min
- 0.600000
- Newey west t ratio role
- autocorrelation-inflation gate
- Primary significance gate
- book_sharpe_delta_lower_95_min_exclusive
Correlation observations decoupled. minimum_correlation_observations is separate from minimum_oos_observations because they measure different things: a candidate's own sample is the candidate's to supply, while the correlation window is its intersection with the BOOK. Tying them together made admission impossible for a reason that had nothing to do with any candidate -- v6 briefly required 756 correlation observations against a book that can supply 728 on its blessed basis and 177 on its live-forward one.
Minimum oos observations reason. Raised to three years because the binding constraint of this whole programme is an average pairwise correlation, and a correlation measured over 252 observations carries a sampling error near 0.063 -- twice the size of the -0.03 effect the objective turns on. Gating a number the sample cannot resolve is not a strict gate. Paired with average_pairwise_correlation_upper_95_max, which gates the bound rather than the point estimate.
Reason. v4 declared net_sharpe_min 0.40, newey_west_t_min 2.0 and minimum_oos_observations 252 together. Because t is approximately Sharpe * sqrt(years), a candidate at the declared Sharpe floor needed 25 years of out-of-sample data to clear the t floor, and at the declared 252-observation minimum the pair demanded a standalone Sharpe of 2.0 -- five times the floor a reader of the config would see. v5 lowered the Sharpe floor to 0.15 and left the t floor at 2.0, raising the hidden requirement to 178 years. The t floor, not the Sharpe floor, had been doing the rejecting all along. It is now set where it does what it is for -- excluding wrong-signed and indistinguishable-from-zero results -- and load_admission_contract refuses any contract whose three significance floors cannot all be met at once, so this class of error cannot recur.
Self consistency is enforced at load. load_admission_contract refuses any contract whose significance floors cannot all be satisfied at once. It checks two pairs: net_sharpe_min against newey_west_t_min at minimum_oos_observations, and net_sharpe_min against deflated_sharpe_min solved at n_trials=2. Both pairs were violated before v6, in the same way and undetected, which is why the check is structural rather than a corrected number.
Why a standalone bar is the wrong instrument. When correlation binds, standalone Sharpe does not rank a candidate's portfolio value: a Sharpe 0.25 sleeve at correlation -0.05 beats a Sharpe 0.60 sleeve at +0.30. The gate that decides admission is therefore the bootstrap LOWER bound on the book-Sharpe improvement, which prices edge and correlation together, and it is strictly harder to game than either input alone.
Thresholds
- Absolute beta max
- 0.100000
- Average pairwise correlation upper 95 max
- 0.100000
- Book average pairwise correlation delta max exclusive
- 0
- Book deflated sharpe must be measured
- yes
- Book expected max drawdown max
- 0.110000
- Book expected shortfall delta max
- 0
- Book max drawdown delta max
- 0.010000
- Book sharpe delta lower 95 min exclusive
- 0
- Book sharpe delta min exclusive
- 0
- Candidate average correlation to existing book max
- 0
- Capacity curve min points
- 3
- Capacity minimum stressed fill ratio
- 0.950000
- Capacity usd min
- 500000
- Covariance halflife days max
- 21
- Deflated sharpe must be measured
- yes
- Minimum correlation observations
- 504
- Minimum execution scenarios per dimension
- 3
- Minimum leave one period out book sharpe delta exclusive
- 0
- Minimum oos observations
- 756
- Minimum stressed oos observations
- 63
- Net sharpe min
- 0.150000
- Newey west t min
- 0.250000
- Newey west t ratio min
- 0.600000
- Ordinary pairwise correlation max
- 0.350000
- Pairwise correlation upper 95 max
- 0.350000
- Pbo max
- 0.200000
- Realized vol halflife days max
- 240
- Realized vol leg must be unlevered
- yes
- Stressed pairwise correlation max
- 0.500000
- Stressed pairwise correlation upper 95 max
- 0.500000
- Stressed sharpe min
- 0.150000
Check it yourself
Every figure above is read from /glassbox/sleeve_admission_contract.json, the
artifact the engine wrote.
