Skip to content
Canli Capital

Measurements

Sleeve admission contract / Contract

Sleeve admission contract / Contract is one of 21 measurements this engine publishes in full. It is regenerated from a real run rather than transcribed, and it is shown here with its own claim boundary so the number and its limits arrive together.

The measurement

Schema
canli.alphac-sleeve-admission-contract.v6
Evidence checks per candidate
85
Status
IN_FORCE
Derived from
canli.alphac-sleeve-admission-contract.v5-proposed
Rationale
docs/design/ADMISSION_V6.md
Evidence
artifacts/analysis/frontier_14/result.json

Objective

Target total sleeves
14
Minimum new sleeves
10
Portfolio max drawdown target
0.110000
Targets are admission evidence
no
Portfolio max drawdown statistic
expected_maximum_drawdown
Portfolio p95 max drawdown is gated
no
Portfolio p95 max drawdown must be published
yes
Average pairwise correlation objective
-0.030000
Honest forward sharpe target
1.500000

Portfolio sharpe target

  • 2.250000
  • 3

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.

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.

Backtest to forward haircut

Measured on this book
in-sample equal-risk ~1.04 against an honest forward of 0.3-0.9

Range

  • 1.500000
  • 3

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.

Implied in sample target

At 1 5x haircut
2.250000
At 2 0x haircut
3
At 3 0x haircut
4.500000

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.

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.

Thresholds

Minimum oos observations
756
Minimum stressed oos observations
63
Net sharpe min
0.150000
Stressed sharpe min
0.150000
Newey west t min
0.250000
Pbo max
0.200000
Absolute beta max
0.100000
Average pairwise correlation max
0
Ordinary pairwise correlation max
0.350000
Stressed pairwise correlation max
0.500000
Pairwise correlation upper 95 max
0.350000
Stressed pairwise correlation upper 95 max
0.500000
Book sharpe delta min exclusive
0
Minimum leave one period out book sharpe delta exclusive
0
Book max drawdown delta max
0.010000
Book expected shortfall delta max
0
Capacity usd min
500000
Capacity curve min points
3
Capacity minimum stressed fill ratio
0.950000
Minimum execution scenarios per dimension
3
Book sharpe delta lower 95 min exclusive
0
Book deflated sharpe min
0.950000
Covariance halflife days max
21
Realized vol halflife days max
240
Book expected max drawdown max
0.110000
Realized vol leg must be unlevered
yes
Newey west t ratio min
0.600000
Average pairwise correlation upper 95 max
0.100000
Minimum correlation observations
504
Deflated sharpe must be measured
yes

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

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 statuses

  • TESTED_PASS
  • TESTED_FAIL
  • NOT_APPLICABLE

Capacity curve required fields

  • capital_usd
  • net_sharpe
  • fill_ratio
  • stressed_cost_bps

Lineage types

Code commit field
code_commit

Sha256 fields

  • preregistration_sha256
  • data_manifest_sha256
  • diversification_report_sha256

Identifier fields

  • family_trial_account
  • return_identity_id

Boolean fields

  • point_in_time_data
  • survivorship_control
  • corporate_action_control
  • direction_locked
  • parameters_locked

Execution evidence policy

Tested statuses require sha256
yes
Tested statuses require scenarios
yes
Tested statuses require scenario manifest
yes
Scenario hashes are canonical payload hashes
yes
Dimension hash is canonical manifest hash
yes
Not applicable requires sha256
yes

Scenario manifest required fields

  • scenario_id
  • status
  • assumptions
  • assumptions_sha256
  • result
  • result_sha256

Scenario statuses

  • PASS
  • FAIL

Diversification evidence policy

Implementation
alphaforge.validation.diversification.diversification_report
Return type
aligned OOS simple returns with no dropped rows
Stress mask
predeclared upstream and supplied explicitly
Candidate weight
predeclared upstream and supplied explicitly
Confidence method
deterministic circular moving-block bootstrap
Confidence level one sided
0.950000
Default bootstrap samples
2000
Default block size
21
Default seed
20260816

Pbo policy

Measured status
MEASURED
Single identity status
NOT_DEFINED_SINGLE_IDENTITY
Single identity value must be null
yes
Never report not defined as zero
yes

Deflation policy

Per sleeve selection unit
family_trial_account
Per sleeve threshold key
deflated_sharpe_min
Book selection unit
complete_union_hypothesis_identities
Book threshold key
book_deflated_sharpe_min
Book deflation is strictly additional
yes
Per sleeve is measured not gated
yes
Per sleeve measurement key
deflated_sharpe_must_be_measured

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.

Per sleeve gate removed reason. deflated_sharpe_min of 0.95 over this contract's 756-observation minimum requires an annualized Sharpe of 1.184 even at n_trials=2, the least deflation the formula permits: about eight times the declared net_sharpe_min of 0.15, which made the Sharpe floor decoration exactly as the Newey-West t floor did. It is also a bar this book cannot clear -- 0 of 33 restated variants reach it, including the live sleeves' own configurations, so the gate demanded of new candidates something no existing sleeve achieves. Re-scoped rather than lowered: a sleeve admitted for its correlation contribution is not claiming standalone edge, so deflating its standalone Sharpe measures the wrong object. The object actually published is the book's, and it is gated harder -- book_deflated_sharpe_min 0.95 against the COMPLETE union of hypothesis identities, plus a bootstrap lower bound on the book-Sharpe improvement. The per-sleeve deflated Sharpe remains mandatory to measure and publish; evidence that omits it fails closed.

Overlay policy

Mandatory vol target overlay
yes
Implementation
alphaforge.portfolio.overlay.vol_target
Sigma hat rule
max(ex_ante, realized)
Annualized vol target
0.100000
Covariance halflife days max
21
Realized vol halflife days max
240
Halflife pending execution costing
yes
Realized vol leg must be unlevered
yes
Production cov halflife today
720
Production realized vol halflife today
240
Both halves shipped
no

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.

Known defect

Site
src/alphaforge/portfolio/strategy.py (_realized_vol_ann)
Measured bind fraction as shipped
1.930e-4
Measured bind fraction if fixed
0.817626
Expected max drawdown cost at permitted stressed rho
0.021700

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.

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.

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.

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.

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

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.

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.

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.

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.

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.

Cost of the halflife change

Evidence
artifacts/analysis/overlay_halflife_decision/result.json
Status
SUPERSEDED — the baseline it prices is not what the crypto sleeve ran
Evaluated at stressed correlation
0.500000
Simulated expected max drawdown before
0.142130
Simulated expected max drawdown after
0.102250

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.

Additional required portfolio evidence

  • book_sharpe_delta_lower_95
  • book_expected_max_drawdown

Frontier arithmetic

Identity
S_book = s_bar * sqrt(N / (1 + (N - 1) * rho_bar))
Target sleeve count
14
Psd floor at target n
-0.076923
Correlation gate in force
0
Gate permits objective floor
no
Gate permits objective ceiling
no

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.

Book sharpe ceiling at the gate

S bar traded basis
1.979337
S bar four curve basis
1.736129

Quality precondition at the gate

S bar required for 2 / 25
0.601338
S bar required for 3 / 0
0.801784
S bar measured traded basis
0.529000
S bar measured four curve basis
0.464000

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.

Correlation required at measured quality

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.

Four curve 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.

Capacity policy

Capacity usd min previous
5000000
Capacity usd min
500000

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.

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.

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.

Significance policy

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
Minimum oos observations raised from
252

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.

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.

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.

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.

Check it yourself

Every figure above is read from /glassbox/sleeve_admission_contract.json, the artifact the engine wrote. Nothing on this page is typed by hand: the page is generated from that file, so a figure that moves in the artifact moves here and a figure that is not in the artifact cannot appear here at all.

All 21 measurements · The glass box · The research library