{ "manifest_id": "R2-H-MANIFEST-v0.1.0-frozen", "experiment": "R2-H", "title": "HORIZON-BOUNDARY EXPERIMENT — formal design freeze manifest", "status": "DESIGN FROZEN — EXECUTION NOT AUTHORIZED", "freeze_date": "2026-08-26", "branch": "main", "anchor_commit": "67be79aa75ae98eace7c67b74c93797f4327d51a", "anchor_commit_message": "research: finalize R1-R robustness synthesis", "protocol": { "path": "results/R2-H/R2_H_PROTOCOL.md", "version": "r2-h-v0.1.0-frozen", "sha256": "422d66d68bdaff71e94a2f3f3dbd853d8315f6a36c18776ccdecd1a6517165ac" }, "configuration": { "base_grid": "M1", "atr_period": 20, "atr_implementation": "R1-compatible M1 close-only deterministic close-change-based ATR proxy (NOT Wilder ATR); src/forecasting/target.py rolling_atr with high/low absent", "arima_fit_window": 300, "sax_fit_window": 24, "drift_lookback": 40, "primary_model": "Drift", "secondary_models": ["ARIMA(1,0,0)", "SAX", "Hybrid"], "secondary_models_role": "robustness/diagnostic only; never selected as best; cannot establish boundary claim" }, "source_dataset": { "path": "results/R1_real_data/XAUUSDc_M1_raw.json", "symbol": "XAUUSDc", "timeframe": "M1", "n_bars": 397558, "first_bar": "2025.06.02 01:00:00", "last_bar": "2026.08.24 15:19:00", "source_hash_raw_json_sha256": "5472357e67f70f7d1bfef8f9de67fcce91ee6f26208072d7a6766b06c158ee6e", "hash_verification": "fresh SHA-256 computed in R2-H freeze session; not reused from R1-R", "r1_close_only_hash_not_reused": "80e4b52b0df0c6e348ce2002348279eee9f6e8a61c3109efe82fe475ed3cbc19" }, "horizon_definitions": { "definition": "tau_H(o) = [P(t_end) - P(o)] / ATR20(o); t_end = first valid M1 bar timestamp >= timestamp(o) + H minutes; elapsed-time horizon, not bar count", "H0_15min": {"role": "in-study R1-R control", "fwer_family": false}, "H1_60min": {"role": "primary", "fwer_family": true}, "H2_240min": {"role": "primary", "fwer_family": true}, "H9_960min": {"role": "diagnostic-only", "fwer_family": false, "note": "never enters FWER family, never determines success/failure, not a boundary, no adaptive promotion"} }, "origin_selection": { "rule": "candidates: M1 bar o in [2000, n) with resolvable elapsed endpoint; gap rule: any inter-bar delta > 5 min within (o, t_end] excludes origin; spacing: 2 x H elapsed minutes between accepted origins; no overlap; no cap; no human-selected origins; no model-dependent selection", "warmup": 2000, "spacing_mult": 2, "gap_tolerance_minutes": 5, "short_horizon_cap": "none", "generator": "scripts/run_r2h_origins.py", "generator_python": "3.14.6", "generator_gap_exclusions": { "H015": {"gap": 4370, "no_endpoint": 15}, "H060": {"gap": 17423, "no_endpoint": 60}, "H240": {"gap": 69623, "no_endpoint": 240} }, "two_run_byte_identity": "PASS — both runs identical ordering, LF newlines, contents, SHA-256; verified with fc /b" }, "origin_lists": { "H015": { "path": "results/R2-H/origins_H015.csv", "horizon_minutes": 15, "n_origins": 13193, "sha256": "fb5a36e93c8f9c7b0fee638d35d551778f1a27cbc50e0727556cf6a1d8c5c7df" }, "H060": { "path": "results/R2-H/origins_H060.csv", "horizon_minutes": 60, "n_origins": 3169, "sha256": "e7b5132c321f5350ec1e231d49d68dbc29468cdf9ee6a5014a2764aaf36eb9af" }, "H240": { "path": "results/R2-H/origins_H240.csv", "horizon_minutes": 240, "n_origins": 863, "sha256": "3ad65e94f46731e65b8d40cf2b7746a6c0bd2eafe43216178d9e6e6c6ebcb910" } }, "statistical_params": { "bootstrap_method": "Moving Block Bootstrap (MBB)", "block_length_B": 60, "block_length_unit": "M1 observations", "bootstrap_repetitions": 10000, "seed": 20260826, "confidence_level": 0.95, "ci_type": "percentile [2.5%, 97.5%]", "effective_sample_size_formula": "n_eff = floor(n_usable / B)", "n_eff_expected": {"H015": 219, "H060": 52, "H240": 14}, "expected_power": {"H015": "high usable-origin count", "H060": "moderate effective sample", "H240": "low effective sample"}, "power_note": "H240 must not be claimed to match H15 power; underpowered horizons are classified INCONCLUSIVE" }, "fwer": { "family": [60, 240], "alpha_familywise": 0.05, "control_horizon": "H0=15 outside family (in-study replication only, no independent claim)", "method": "joint cross-horizon block bootstrap preserving chronological and cross-horizon dependence; max-statistic under re-centered global null; per-horizon interpretation only after global gate rejection", "prohibited": ["independent per-horizon z-max approximation", "horizon shopping", "post-hoc multiplicity changes"] }, "cost_params": { "headline_round_trip_bps": 7.57, "median_tick_spread_bps": 1.57, "commission_bps": 6.00, "status": "PRE-REGISTERED GLOBAL CONSTANT", "formula": "cost_atr(o) = (7.57 / 10000) * close(o) / ATR20(o)", "applied_to": "every origin, every primary horizon, identically", "prohibited": ["future-looking spreads", "post-origin tick spreads", "cost tuning after results"], "sensitivity": {"0.5x": "descriptive only", "2x": "descriptive only", "primary_decision_impact": "none"} }, "primary_metrics": [ "direction accuracy (dependence-aware 95% CI)", "mean gross return in ATR units (dependence-aware 95% CI)", "mean net return in ATR units (dependence-aware 95% CI)", "time-normalized / holding-period economic return" ], "secondary_metrics": [ "MASE", "gross/cost ratio", "cost/range ratio", "trade coverage", "number of origins", "effective sample size", "turnover/trade frequency", "annualized or time-normalized economics", "EARLY/MIDDLE/LATE descriptive" ], "no_lookahead_gates": { "gates": ["F1 feature", "F2 target", "F3 ATR", "F4 SAX window", "F5 training boundary", "F6 normalization", "F7 horizon endpoint", "F8 cost", "F9 tick-derived"], "classification": ["OBSERVED", "INFERRED", "UNKNOWN", "DECISION"], "mutation_testing": "every primary horizon (15/60/240); >=3 origins per horizon", "failure_classification": "INVALID / HARD STOP", "defect_001": "SAX z-normalization invariant preserved; regression = HARD STOP" }, "generated_design_artifacts": { "protocol": "results/R2-H/R2_H_PROTOCOL.md", "manifest": "results/R2-H/R2_H_MANIFEST.json", "origin_lists": [ "results/R2-H/origins_H015.csv", "results/R2-H/origins_H060.csv", "results/R2-H/origins_H240.csv" ], "generator": "scripts/run_r2h_origins.py" }, "note": "Design freeze only. No forecasting model executed, no performance computed, no prediction/evidence artifact produced. Execution requires a separate explicit EXECUTION AUTHORIZATION gate." }