{
  "version": "original-network-chronological-v2-static-sector-confound-20261105",
  "purpose": "Locked retrospective comparison of the user's stock-level price/volume network method against simpler market/sector rules; historical test periods were already present in the old research, so this is not an untouched prospective test.",
  "primary_variant": "raw_w7_l5",
  "variants": [
    {
      "name": "raw_w7_l5",
      "transform": "raw",
      "window": 7,
      "lag": 5
    },
    {
      "name": "raw_w60_l5",
      "transform": "raw",
      "window": 60,
      "lag": 5
    },
    {
      "name": "normalized_w7_l5",
      "transform": "normalized",
      "window": 7,
      "lag": 5
    },
    {
      "name": "normalized_w60_l5",
      "transform": "normalized",
      "window": 60,
      "lag": 5
    }
  ],
  "network_percentile": 90,
  "louvain_seed": 7,
  "minimum_finite_pair_coverage": 0.9,
  "normalization": "Price: simple daily returns with fill_method=None. Volume: first difference of log positive volume; nonpositive volume is unavailable. Raw variant preserves original levels and zeros.",
  "symbol_order": "Original source order; all pairs i<j, one lag orientation as in the selected notebook. Retain every original stock as a node. The benchmark indices are comparators rather than graph nodes in this monitoring adaptation.",
  "input_universe": "All 2000 stocks in the original file, fixed sample, 494 sessions. Historical membership/delistings and release vintages are not reconstructed.",
  "sector_policy": "Use original static broad-sector labels conditionally; unknowns are reported. No claim that the classification was available at every historical signal date.",
  "adjusted_prices": "Recover original adj_close for sector return baselines. Compare its values with original Close and disclose discrepancies. A field name alone does not certify its corporate-action policy.",
  "train_end": "2022-05-31",
  "test_start": "2022-06-01",
  "test_end": "2023-05-30",
  "feature_fields": [
    "community_change",
    "degree_mass_reallocation",
    "largest_community_share"
  ],
  "alarm_fit": "Standardize each feature using training mean/population standard deviation, replacing zero scale by one. Score is maximum standardized component. Freeze score cutoff at training 95th percentile. Require at least 60 complete training observations. Price-only, volume-only and combined rules are reported separately for each variant.",
  "alarm_quantile": 0.95,
  "minimum_training_rows": 60,
  "cooldown_sessions": 5,
  "baseline_fields": [
    "index_drop",
    "index_volatility_20",
    "sector_correlation_20"
  ],
  "baseline_definitions": "index_drop = negative minimum KOSPI/KOSDAQ daily return; index_volatility_20 = maximum of their trailing 20-session population standard deviations; sector_correlation_20 = mean off-diagonal trailing 20-session correlation of equal-weight broad-sector returns. Each baseline and their combined max-standardized score use the same frozen training quantile and cooldown.",
  "forecast_target": "Any KOSPI or KOSDAQ daily close return <= -2% during the NEXT five original trading sessions. Exclude the signal day; censor incomplete final horizons. This is a price proxy, not independent anomaly truth.",
  "forecast_horizon": 5,
  "index_day_drop_cut": -0.02,
  "onsets": "First date in each run of consecutive index stress days. Require all five preceding signal/target observations to be scorable; held observations never shorten a calendar horizon.",
  "uncertainty": {
    "block_sessions": 10,
    "resamples": 1000,
    "seed": 20261105,
    "comparison_baseline": "index_only_combined"
  },
  "stability": {
    "training_positions": [
      65,
      81,
      97,
      113,
      129,
      145,
      161,
      177,
      193,
      209,
      225,
      241
    ],
    "additional_seeds": [
      19,
      42
    ],
    "reverse_lag_orientation": true,
    "scope": "Primary raw_w7_l5 only; record partition disagreement with seed 7 and with transposed lag correlations. No outcome-driven parameter selection."
  },
  "operational_effect_gate": "For an exploratory primary combined-rule improvement, require more detected evaluable onsets and a positive paired precision difference with 95% block interval above zero versus index_only_combined. Report static-sector comparisons conditionally. None of these results certifies prospective superiority or the historical stock universe.",
  "report_requirements": [
    "All variants and ablations, including negative results and held days",
    "Alert counts, precision, event recall and unmatched/missed cases",
    "Paired block uncertainty versus fixed baseline",
    "Seed/window/input-order stability",
    "Static-universe, static-sector, adjustment/vendor and previously-seen-period limitations",
    "Separate current detection, future prediction and holdings explanation claims"
  ],
  "prospective_or_independent_quality_certification": false,
  "automatic_production_deployment": false,
  "do_not_select_best_test_variant_as_validated_model": true,
  "predecessor_protocol_sha256": "a46b44abc3c054426e7677a303a72a74648036cc27437cd60782976ff000d43f",
  "amendment_reason": "Source provenance inspection showed that original sector labels have no historical availability date. Remove sector-dependent features from the primary detector before examining comparison outcomes. Keep the already-running job as a feature-generation/conditional-v1 run, without overwriting its inputs.",
  "comparison_outcomes_inspected_before_amendment": false,
  "diagnostic_only_fields": [
    "cross_sector_weight_share"
  ],
  "primary_baseline_fields": [
    "index_drop",
    "index_volatility_20"
  ],
  "primary_baseline_name": "index_only_combined",
  "secondary_conditional_baseline_fields": [
    "index_drop",
    "index_volatility_20",
    "sector_correlation_20"
  ],
  "secondary_conditional_baseline_note": "Static-sector baseline is not certified point-in-time. Independently dated sector index/sector-fund inputs are still needed for an unconditional sector-indicator comparison.",
  "reuse_policy": "Reuse unchanged full-period topology observations from the frozen v1 worker after verified recovery. Refit only the prespecified three-component alarms and index-only baseline under v2, preserve all v1 outputs, and do not select variants based on test scores."
}
