{
  "schema": "canli.alphac-sleeve-admission-contract.v6",
  "evidence_checks_per_candidate": 85,
  "objective": {
    "target_total_sleeves": 14,
    "minimum_new_sleeves": 10,
    "portfolio_sharpe_target": [
      2.25,
      3.0
    ],
    "portfolio_max_drawdown_target": 0.11,
    "targets_are_admission_evidence": false,
    "portfolio_max_drawdown_statistic": "expected_maximum_drawdown",
    "portfolio_p95_max_drawdown_is_gated": false,
    "portfolio_p95_max_drawdown_must_be_published": true,
    "average_pairwise_correlation_objective": -0.03,
    "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.",
    "honest_forward_sharpe_target": 1.5,
    "superseded_in_sample_sharpe_target": [
      2.0,
      2.5
    ],
    "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.5,
        3.0
      ],
      "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.25,
      "at_2_0x_haircut": 3.0,
      "at_3_0x_haircut": 4.5
    },
    "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.15,
    "stressed_sharpe_min": 0.15,
    "newey_west_t_min": 0.25,
    "pbo_max": 0.2,
    "absolute_beta_max": 0.1,
    "average_pairwise_correlation_max": 0.0,
    "ordinary_pairwise_correlation_max": 0.35,
    "stressed_pairwise_correlation_max": 0.5,
    "pairwise_correlation_upper_95_max": 0.35,
    "stressed_pairwise_correlation_upper_95_max": 0.5,
    "book_sharpe_delta_min_exclusive": 0.0,
    "minimum_leave_one_period_out_book_sharpe_delta_exclusive": 0.0,
    "book_max_drawdown_delta_max": 0.01,
    "book_expected_shortfall_delta_max": 0.0,
    "capacity_usd_min": 500000,
    "capacity_curve_min_points": 3,
    "capacity_minimum_stressed_fill_ratio": 0.95,
    "minimum_execution_scenarios_per_dimension": 3,
    "book_sharpe_delta_lower_95_min_exclusive": 0.0,
    "book_deflated_sharpe_min": 0.95,
    "covariance_halflife_days_max": 21,
    "realized_vol_halflife_days_max": 240,
    "book_expected_max_drawdown_max": 0.11,
    "realized_vol_leg_must_be_unlevered": true,
    "newey_west_t_ratio_min": 0.6,
    "average_pairwise_correlation_upper_95_max": 0.1,
    "minimum_correlation_observations": 504,
    "deflated_sharpe_must_be_measured": true
  },
  "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": {
    "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"
    ],
    "code_commit_field": "code_commit"
  },
  "execution_evidence_policy": {
    "tested_statuses_require_sha256": true,
    "tested_statuses_require_scenarios": true,
    "tested_statuses_require_scenario_manifest": true,
    "scenario_manifest_required_fields": [
      "scenario_id",
      "status",
      "assumptions",
      "assumptions_sha256",
      "result",
      "result_sha256"
    ],
    "scenario_statuses": [
      "PASS",
      "FAIL"
    ],
    "scenario_hashes_are_canonical_payload_hashes": true,
    "dimension_hash_is_canonical_manifest_hash": true,
    "not_applicable_requires_sha256": true
  },
  "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.95,
    "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": true,
    "never_report_not_defined_as_zero": true
  },
  "claim_boundary": "Passing this contract makes a result technically eligible for an explicit admission decision. It does not guarantee a sleeve, future performance, the target Sharpe, or the target drawdown. Point estimates cannot override confidence-bound, crisis-conditional, tail-loss, execution-evidence, or capacity-reconciliation failures. v6 additionally refuses to load if its own significance floors cannot all be satisfied at once, gates the average pairwise correlation on its upper confidence bound as well as its point estimate, and publishes the arithmetic relating the correlation gate to the portfolio objective -- including the distance the gate does not close.",
  "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",
  "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",
    "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.",
    "book_deflation_is_strictly_additional": true,
    "per_sleeve_is_measured_not_gated": true,
    "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.",
    "per_sleeve_measurement_key": "deflated_sharpe_must_be_measured"
  },
  "overlay_policy": {
    "mandatory_vol_target_overlay": true,
    "implementation": "alphaforge.portfolio.overlay.vol_target",
    "sigma_hat_rule": "max(ex_ante, realized)",
    "annualized_vol_target": 0.1,
    "covariance_halflife_days_max": 21,
    "realized_vol_halflife_days_max": 240,
    "halflife_pending_execution_costing": true,
    "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.",
    "realized_vol_leg_must_be_unlevered": true,
    "production_cov_halflife_today": 720,
    "production_realized_vol_halflife_today": 240,
    "known_defect": {
      "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.",
      "measured_bind_fraction_as_shipped": 0.000193,
      "measured_bind_fraction_if_fixed": 0.817626,
      "expected_max_drawdown_cost_at_permitted_stressed_rho": 0.0217,
      "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.",
    "both_halves_shipped": false,
    "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": {
        "evidence": "artifacts/analysis/live_covariance_memory/result.json",
        "finding": "The estimator's memory is bounded by cov_window_bars, so the halflife is faithful BELOW the window and truncated above it. On the crypto H1 sleeve the 720-bar window is 30 days: 7 days requested delivers 7.0, 14 delivers 14.0, but 30 delivers 22.0 and 720 delivers 24.9. On the equity D1 sleeve the same window is 720 SESSIONS, so the parameter is faithful across the practical range and only the legacy 720-day setting is truncated, to 529 days.",
        "correction": "An earlier revision of this block said the parameter was 'nearly inert' on crypto and named cov_window_bars as the only lever. That was withdrawn the same day: it came from sampling only 21 days and up, where every result is truncated into a 20-25 day band by the window. Below the window the halflife works.",
        "consequence": "If the drawdown study's finding holds -- shorter covariance memory reduces expected maximum drawdown -- the halflife IS the instrument on both sleeves, and it must be asked for BELOW the window rather than at 21 days where truncation has already begun. It is also the better of the two routes: 7 days at the production window gives 7.0 days of memory on ~475 effective rows, while shortening the window to 240 bars gives ~8 days on ~107 rows. Four times the effective sample for comparable memory, which also keeps ledoit_wolf_cc's T=720 approximation far closer to valid. That approximation is where the remaining exposure sits: at a 21-day halflife on equity the effective sample is 60.6 rows against a T of 720."
      },
      "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 \u2014 the baseline it prices is not what the crypto sleeve ran",
      "evaluated_at_stressed_correlation": 0.5,
      "simulated_expected_max_drawdown_before": 0.14213,
      "simulated_expected_max_drawdown_after": 0.10225,
      "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": {
    "claim_boundary": "Derived from the governing identity alone. Reads no data, runs no backtest, spends no hypothesis, and claims no candidate's correlation, sign or return.",
    "identity": "S_book = s_bar * sqrt(N / (1 + (N - 1) * rho_bar))",
    "target_sleeve_count": 14,
    "psd_floor_at_target_n": -0.07692307692307693,
    "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.",
    "correlation_gate_in_force": 0.0,
    "book_sharpe_ceiling_at_the_gate": {
      "s_bar_traded_basis": 1.979336757603415,
      "s_bar_four_curve_basis": 1.736129027463109
    },
    "gate_permits_objective_floor": false,
    "gate_permits_objective_ceiling": false,
    "quality_precondition_at_the_gate": {
      "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.",
      "s_bar_required_for_2.25": 0.6013377943029549,
      "s_bar_required_for_3.0": 0.8017837257372732,
      "s_bar_measured_traded_basis": 0.529,
      "s_bar_measured_four_curve_basis": 0.464
    },
    "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": {
        "rho_bar_required_for_2.25": -0.017393747388414055,
        "rho_bar_required_for_3.0": -0.04343782905982906
      },
      "four_curve_basis": {
        "rho_bar_required_for_2.25": -0.031124117758784424,
        "rho_bar_required_for_3.0": -0.05116116239316239
      }
    },
    "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.25,
    "newey_west_t_min_role": "sign gate",
    "newey_west_t_ratio_min": 0.6,
    "newey_west_t_ratio_role": "autocorrelation-inflation gate",
    "primary_significance_gate": "book_sharpe_delta_lower_95_min_exclusive",
    "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_raised_from": 252,
    "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."
  }
}
