1# Frozen research design parameters (see docs/RESEARCH_DESIGN.md). Changing a value requires a DECISIONS.md entry.2seed: 202611023sample:4 start: 2012-01-015 end: 2026-10-306 min_quarters_per_firm: 87 min_price_usd: 1.0 # at cutoff, raw close8 min_regular_bars_per_day: 100 # sessions with fewer 1m regular-session bars are "sparse"9 min_valid_days_in_window: 15 # out of the 20-trading-day feature window10cutoffs:11 event_time_horizons_td: [40, 20, 10, 5, 1] # trading days before the earnings release date A_q12 primary_horizon_td: 2013 fixed_calendar: month_end # last trading day of each month14 embargo_rule: "cutoff c < min(A_q, F_q); bars with session_date <= c only; fundamentals with available_at <= c only"15feature_window:16 short_td: 2017 long_td: 6018frequencies: [1d, 30m, 5m, 1m]19targets:20 primary:21 name: adverse_opinc_surprise22 variable: op_inc23 expectation: seasonal_random_walk_with_drift # E[X_q] = X_{q-4} + mean(X_{q-1-k} - X_{q-5-k}, k=0..3), PIT24 scale: assets_tot (latest available)25 threshold: -0.005 # surprise <= -0.5% of total assets26 continuous_primary: scaled_opinc_surprise27 secondary:28 - {name: roa_yoy_decline, rule: "roa_q - roa_{q-4} <= -0.01"}29 - {name: ocf_innovation_negative, rule: "(cash_op_q - cash_op_{q-4})/assets <= -0.01"}30 - {name: liquidity_deterioration, rule: "current ratio falls >= 10% yoy OR interest coverage falls below 1 from >= 1"}31 - {name: eps_miss, rule: "eps_reported < eps_estimate (vendor estimate, exploratory)"}32splits:33 train: [2012-01-01, 2018-12-31]34 validation: [2019-01-01, 2020-12-31]35 test: [2021-01-01, 2026-10-30]36 walk_forward: {first_test_year: 2016, embargo_quarters: 1}37 firm_holdout_fraction: 0.238inference:39 cluster: [entity_id, calendar_quarter]40 bootstrap_blocks: calendar_quarter41 n_bootstrap: 100042 multiple_testing: holm43