Jelajahi Sumber

Add dragon v2 markdown research docs

erwin 1 bulan lalu
induk
melakukan
88080ade0c
46 mengubah file dengan 2908 tambahan dan 0 penghapusan
  1. 49 0
      research/dragon/v2/daily_reports/dragon_daily_signal_report_2026-04-03.md
  2. 30 0
      research/dragon/v2/dragon_cost_stress_test.md
  3. 49 0
      research/dragon/v2/dragon_daily_signal_report.md
  4. 44 0
      research/dragon/v2/dragon_forward_weekly_review.md
  5. 31 0
      research/dragon/v2/dragon_glued_alpha_candidate_review.md
  6. 23 0
      research/dragon/v2/dragon_glued_refine_experiments.md
  7. 36 0
      research/dragon/v2/dragon_glued_refined_branch_review.md
  8. 132 0
      research/dragon/v2/dragon_glued_refined_removed_trade_review.md
  9. 31 0
      research/dragon/v2/dragon_glued_refined_sensitivity.md
  10. 44 0
      research/dragon/v2/dragon_glued_refined_year_regime_review.md
  11. 140 0
      research/dragon/v2/dragon_glued_veto_review.md
  12. 96 0
      research/dragon/v2/dragon_html_report_quickstart_cn.md
  13. 203 0
      research/dragon/v2/dragon_html_report_usage_cn.md
  14. 500 0
      research/dragon/v2/dragon_indicator_strategy_guide_cn.md
  15. 18 0
      research/dragon/v2/dragon_monitor_health_report.md
  16. 150 0
      research/dragon/v2/dragon_next_stage_opinion_cn.md
  17. 147 0
      research/dragon/v2/dragon_parameter_governance.md
  18. 11 0
      research/dragon/v2/dragon_predictive_break_experiments.md
  19. 16 0
      research/dragon/v2/dragon_predictive_break_review.md
  20. 32 0
      research/dragon/v2/dragon_rc1_release.md
  21. 72 0
      research/dragon/v2/dragon_refined_edge_review.md
  22. 26 0
      research/dragon/v2/dragon_refined_stability_review.md
  23. 30 0
      research/dragon/v2/dragon_research_direction_update.md
  24. 40 0
      research/dragon/v2/dragon_residual_trade_review.md
  25. 18 0
      research/dragon/v2/dragon_review_branch_metric_consistency.md
  26. 18 0
      research/dragon/v2/dragon_review_execution_monitor.md
  27. 26 0
      research/dragon/v2/dragon_review_reporting_integrity.md
  28. 37 0
      research/dragon/v2/dragon_review_window_consistency.md
  29. 81 0
      research/dragon/v2/dragon_robustness_report.md
  30. 37 0
      research/dragon/v2/dragon_rule_ablation.md
  31. 89 0
      research/dragon/v2/dragon_rule_taxonomy.md
  32. 24 0
      research/dragon/v2/dragon_short_holding_experiments.md
  33. 39 0
      research/dragon/v2/dragon_short_holding_family_review.md
  34. 45 0
      research/dragon/v2/dragon_short_holding_master_review.md
  35. 33 0
      research/dragon/v2/dragon_short_holding_review.md
  36. 26 0
      research/dragon/v2/dragon_signal_change_review.md
  37. 75 0
      research/dragon/v2/dragon_stage3_completion.md
  38. 95 0
      research/dragon/v2/dragon_stage3_stability_report.md
  39. 25 0
      research/dragon/v2/dragon_strategy_fit.md
  40. 54 0
      research/dragon/v2/dragon_strategy_overview.md
  41. 24 0
      research/dragon/v2/dragon_strategy_overview_cn.md
  42. 26 0
      research/dragon/v2/dragon_system_review_final.md
  43. 30 0
      research/dragon/v2/dragon_threshold_perturbation.md
  44. 34 0
      research/dragon/v2/dragon_validation.md
  45. 47 0
      research/dragon/v2/dragon_walk_forward_report.md
  46. 75 0
      research/dragon/v2/trade_split_summary.md

+ 49 - 0
research/dragon/v2/daily_reports/dragon_daily_signal_report_2026-04-03.md

@@ -0,0 +1,49 @@
+# Dragon Daily Signal Report
+
+- Request date: `2026-04-05`
+- Latest available market bar: `2026-04-03`
+- Instrument: `399673`
+- Forward default branch: `alpha_first_glued_refined_hot_cap`
+- Benchmark control branch: `alpha_first_selective_veto`
+
+## Latest Branch Status
+### workbook_preserving
+- latest_close `3317.184` | a1 `-0.0157` | b1 `-0.1435` | c1 `47.26`
+- latest markers: `KDJ buy=False` `KDJ sell=False` `QL buy=False` `QL sell=False`
+- latest real event: `2026-02-13` `SELL` `knife_take_profit_2_glued`
+- events on latest bar: `none`
+- in_position: `False`
+- open trade: `none`
+
+### alpha_first_selective_veto
+- latest_close `3317.184` | a1 `-0.0157` | b1 `-0.1435` | c1 `47.26`
+- latest markers: `KDJ buy=False` `KDJ sell=False` `QL buy=False` `QL sell=False`
+- latest real event: `2026-02-13` `SELL` `knife_take_profit_2_glued`
+- events on latest bar: `none`
+- in_position: `False`
+- open trade: `none`
+
+### alpha_first_glued_refined_hot_cap
+- latest_close `3317.184` | a1 `-0.0157` | b1 `-0.1435` | c1 `47.26`
+- latest markers: `KDJ buy=False` `KDJ sell=False` `QL buy=False` `QL sell=False`
+- latest real event: `2026-02-13` `SELL` `knife_take_profit_2_glued`
+- events on latest bar: `none`
+- in_position: `False`
+- open trade: `none`
+
+## Monitor Snapshot
+- warnings: `0`
+- hard breaches: `0`
+- missing data metrics: `0`
+- next_open avg_return delta vs control: `0.53%`
+- next_open PF delta vs control: `0.92`
+- next_open max_drawdown refined: `-13.19%`
+- next_open max loss streak refined: `8`
+- next_open + 20bps CAGR refined/control: `25.17%` / `22.07%`
+
+## Outputs
+- `dragon_daily_signal_snapshot.csv`
+- `dragon_daily_branch_status.csv`
+- `dragon_daily_monitor_snapshot.csv`
+- `dragon_historical_trade_details.csv`
+- `dragon_daily_rc1_manifest.json`

+ 30 - 0
research/dragon/v2/dragon_cost_stress_test.md

@@ -0,0 +1,30 @@
+# Dragon Cost Stress Test
+
+- Evaluation window: `2016-01-01` to `2025-12-31`.
+- Cost convention: symmetric per-side cost on entry and exit.
+
+## Summary
+### workbook_preserving
+- `0 bps/side`: CAGR `26.18%`, compounded `923.08%`, avg_return `2.57%`, PF `3.37`, `00-05d` `-2.03%`, `06-10d` `-0.81%`
+- `5 bps/side`: CAGR `24.85%`, compounded `820.18%`, avg_return `2.46%`, PF `3.16`, `00-05d` `-2.13%`, `06-10d` `-0.90%`
+- `10 bps/side`: CAGR `23.54%`, compounded `727.64%`, avg_return `2.36%`, PF `2.98`, `00-05d` `-2.23%`, `06-10d` `-1.00%`
+- `20 bps/side`: CAGR `20.95%`, compounded `569.53%`, avg_return `2.16%`, PF `2.65`, `00-05d` `-2.42%`, `06-10d` `-1.20%`
+
+### alpha_first_selective_veto
+- `0 bps/side`: CAGR `28.70%`, compounded `1146.08%`, avg_return `2.86%`, PF `4.04`, `00-05d` `-1.72%`, `06-10d` `-0.69%`
+- `5 bps/side`: CAGR `27.39%`, compounded `1025.25%`, avg_return `2.75%`, PF `3.78`, `00-05d` `-1.82%`, `06-10d` `-0.79%`
+- `10 bps/side`: CAGR `26.10%`, compounded `916.13%`, avg_return `2.65%`, PF `3.54`, `00-05d` `-1.91%`, `06-10d` `-0.89%`
+- `20 bps/side`: CAGR `23.55%`, compounded `728.62%`, avg_return `2.44%`, PF `3.12`, `00-05d` `-2.11%`, `06-10d` `-1.09%`
+
+### alpha_first_glued_refined_hot_cap
+- `0 bps/side`: CAGR `31.32%`, compounded `1424.12%`, avg_return `3.42%`, PF `5.11`, `00-05d` `-1.67%`, `06-10d` `-0.59%`
+- `5 bps/side`: CAGR `30.13%`, compounded `1291.55%`, avg_return `3.32%`, PF `4.77`, `00-05d` `-1.77%`, `06-10d` `-0.69%`
+- `10 bps/side`: CAGR `28.95%`, compounded `1170.51%`, avg_return `3.21%`, PF `4.46`, `00-05d` `-1.87%`, `06-10d` `-0.78%`
+- `20 bps/side`: CAGR `26.62%`, compounded `959.10%`, avg_return `3.01%`, PF `3.93`, `00-05d` `-2.07%`, `06-10d` `-0.98%`
+
+## Quant Judgment
+- At `20 bps/side`, current alpha branch CAGR = `23.55%`.
+- At `20 bps/side`, refined candidate CAGR = `26.62%`.
+- CAGR delta refined minus current alpha at `0 bps/side` = `2.62%`.
+- CAGR delta refined minus current alpha at `20 bps/side` = `3.07%`.
+- If the refined branch remains ahead under cost pressure, its edge is not just a no-cost backtest artifact.

+ 49 - 0
research/dragon/v2/dragon_daily_signal_report.md

@@ -0,0 +1,49 @@
+# Dragon Daily Signal Report
+
+- Request date: `2026-04-05`
+- Latest available market bar: `2026-04-03`
+- Instrument: `399673`
+- Forward default branch: `alpha_first_glued_refined_hot_cap`
+- Benchmark control branch: `alpha_first_selective_veto`
+
+## Latest Branch Status
+### workbook_preserving
+- latest_close `3317.184` | a1 `-0.0157` | b1 `-0.1435` | c1 `47.26`
+- latest markers: `KDJ buy=False` `KDJ sell=False` `QL buy=False` `QL sell=False`
+- latest real event: `2026-02-13` `SELL` `knife_take_profit_2_glued`
+- events on latest bar: `none`
+- in_position: `False`
+- open trade: `none`
+
+### alpha_first_selective_veto
+- latest_close `3317.184` | a1 `-0.0157` | b1 `-0.1435` | c1 `47.26`
+- latest markers: `KDJ buy=False` `KDJ sell=False` `QL buy=False` `QL sell=False`
+- latest real event: `2026-02-13` `SELL` `knife_take_profit_2_glued`
+- events on latest bar: `none`
+- in_position: `False`
+- open trade: `none`
+
+### alpha_first_glued_refined_hot_cap
+- latest_close `3317.184` | a1 `-0.0157` | b1 `-0.1435` | c1 `47.26`
+- latest markers: `KDJ buy=False` `KDJ sell=False` `QL buy=False` `QL sell=False`
+- latest real event: `2026-02-13` `SELL` `knife_take_profit_2_glued`
+- events on latest bar: `none`
+- in_position: `False`
+- open trade: `none`
+
+## Monitor Snapshot
+- warnings: `0`
+- hard breaches: `0`
+- missing data metrics: `0`
+- next_open avg_return delta vs control: `0.53%`
+- next_open PF delta vs control: `0.92`
+- next_open max_drawdown refined: `-13.19%`
+- next_open max loss streak refined: `8`
+- next_open + 20bps CAGR refined/control: `25.17%` / `22.07%`
+
+## Outputs
+- `dragon_daily_signal_snapshot.csv`
+- `dragon_daily_branch_status.csv`
+- `dragon_daily_monitor_snapshot.csv`
+- `dragon_historical_trade_details.csv`
+- `dragon_daily_rc1_manifest.json`

+ 44 - 0
research/dragon/v2/dragon_forward_weekly_review.md

@@ -0,0 +1,44 @@
+# Dragon Forward Weekly Review
+
+- latest_window_end: `2026-04-03`
+
+## alpha_first_glued_refined_hot_cap
+- window: `2026-04-03` -> `2026-04-03`
+- observation_days: `1`
+- days_in_position: `0`
+- latest_real_event_changed_count: `0`
+- new_event_days: `0`
+- warning_days: `0`
+- hard_breach_days: `0`
+- material_divergence_days: `0`
+
+## alpha_first_selective_veto
+- window: `2026-04-03` -> `2026-04-03`
+- observation_days: `1`
+- days_in_position: `0`
+- latest_real_event_changed_count: `0`
+- new_event_days: `0`
+- warning_days: `0`
+- hard_breach_days: `0`
+- material_divergence_days: `0`
+
+## workbook_preserving
+- window: `2026-04-03` -> `2026-04-03`
+- observation_days: `1`
+- days_in_position: `0`
+- latest_real_event_changed_count: `0`
+- new_event_days: `0`
+- warning_days: `0`
+- hard_breach_days: `0`
+- material_divergence_days: `0`
+
+## system_monitor
+- window: `2026-04-03` -> `2026-04-03`
+- observation_days: `1`
+- days_in_position: `0`
+- latest_real_event_changed_count: `0`
+- new_event_days: `0`
+- warning_days: `0`
+- hard_breach_days: `0`
+- material_divergence_days: `0`
+

+ 31 - 0
research/dragon/v2/dragon_glued_alpha_candidate_review.md

@@ -0,0 +1,31 @@
+# Dragon Glued Alpha Candidate Review
+
+## Branches
+- `workbook_preserving`: official reconstruction baseline.
+- `alpha_first_selective_veto`: current formal alpha-first branch.
+- `alpha_first_glued_selective_veto`: alpha-first branch plus narrow glued hot/low veto.
+
+## Headline Comparison
+- workbook_preserving: trades `107`, avg_return `2.52%`, profit_factor `3.31`, real BUY / SELL `106/105`
+- alpha_first_selective_veto: trades `103`, avg_return `2.81%`, profit_factor `3.96`, real BUY / SELL `102/101`
+- alpha_first_glued_selective_veto: trades `92`, avg_return `3.35%`, profit_factor `4.95`, real BUY / SELL `90/89`
+
+## Short-Holding Impact
+- `00-05d`: workbook `-2.03%`, alpha `-1.72%`, glued candidate `-1.67%`
+- `06-10d`: workbook `-0.81%`, alpha `-0.69%`, glued candidate `-0.58%`
+
+## Walk-Forward Comparison
+- Anchored expanding: workbook `8/10` positive, avg `3.11%`; alpha `8/10`, avg `3.40%`; glued `9/10`, avg `3.86%`
+- Rolling 3Y: workbook `7/8` positive, avg `3.94%`; alpha `7/8`, avg `4.30%`; glued `7/8`, avg `4.78%`
+
+## Trade-Diff Summary
+- glued candidate vs alpha-first: removed `12`, added `1`
+- glued candidate vs workbook: removed `16`, added `1`
+- Removed vs alpha-first are almost entirely the intended target: `12` of `12` are `glued_buy` trades.
+- Added vs alpha-first is only a small fallback reroute: `2021-11-22 -> 2021-11-30 / dual_gold_resonance_buy -> small_positive_a1_declining:kdj_sell`.
+
+## Quant Judgment
+- The glued candidate clearly improves in-sample trade quality and short-holding drag beyond the current alpha-first branch.
+- The cost is no longer narrow: overlap drops materially from `102/101` to `90/89`, which is a much larger governance step than the current deep-oversold selective veto branch.
+- This means the glued candidate is a credible research branch, but not yet a clean replacement for the current formal alpha-first baseline.
+- Recommended governance: keep `alpha_first_selective_veto` as the official alpha-first baseline; treat `alpha_first_glued_selective_veto` as the next research branch for further residual attribution and out-of-sample stability review.

+ 23 - 0
research/dragon/v2/dragon_glued_refine_experiments.md

@@ -0,0 +1,23 @@
+# Dragon Glued Refine Experiments
+
+- Baseline branch: `alpha_first_selective_veto`.
+- Goal: verify whether the hot glued veto can be narrowed after attribution without giving back too much trade quality.
+
+## Summary
+- `baseline_alpha_first`: trades `103`, avg_return `2.81%`, profit_factor `3.96`, short_avg_return `-1.15%`, `00-05d` `-1.72%`, `06-10d` `-0.69%`, real BUY / SELL `102/101`
+- `glued_veto_low_weak_range`: trades `99`, avg_return `3.02%`, profit_factor `4.38`, short_avg_return `-1.06%`, `00-05d` `-1.61%`, `06-10d` `-0.69%`, real BUY / SELL `98/97`
+- `glued_veto_hot_and_low`: trades `92`, avg_return `3.35%`, profit_factor `4.95`, short_avg_return `-0.99%`, `00-05d` `-1.67%`, `06-10d` `-0.58%`, real BUY / SELL `90/89`
+- `glued_veto_hot_cap75_and_low`: trades `92`, avg_return `3.36%`, profit_factor `4.98`, short_avg_return `-1.00%`, `00-05d` `-1.67%`, `06-10d` `-0.59%`, real BUY / SELL `91/90`
+
+## Delta Vs Alpha-First Baseline
+- `glued_veto_low_weak_range`: delta_avg_return `0.21%`, delta_profit_factor `0.42`, delta_short_avg_return `0.08%`, real BUY / SELL `98/97`
+- `glued_veto_hot_and_low`: delta_avg_return `0.54%`, delta_profit_factor `0.98`, delta_short_avg_return `0.16%`, real BUY / SELL `90/89`
+- `glued_veto_hot_cap75_and_low`: delta_avg_return `0.55%`, delta_profit_factor `1.02`, delta_short_avg_return `0.15%`, real BUY / SELL `91/90`
+
+## Quant Judgment
+- `glued_veto_low_weak_range` is the clean conservative upgrade candidate if governance still prioritizes overlap preservation.
+- `glued_veto_hot_and_low` remains the strongest quality-improvement branch but may still be too aggressive on overlap.
+- `glued_veto_hot_cap75_and_low` specifically tests whether the only super-hot positive sample can be restored without giving back too much of the glued cleanup benefit.
+- Current result is stronger than expected: `glued_veto_hot_cap75_and_low` dominates the old full glued candidate on both quality and overlap.
+- Refined-vs-full trade diff is minimal and interpretable: it restores `2021-11-05 -> 2021-11-18` and removes the fallback reroute `2021-11-22 -> 2021-11-30`.
+- Candidate snapshot file: `dragon_glued_refined_candidate_config.json`.

+ 36 - 0
research/dragon/v2/dragon_glued_refined_branch_review.md

@@ -0,0 +1,36 @@
+# Dragon Glued Refined Branch Review
+
+## Branches
+- `workbook_preserving`: official reconstruction baseline.
+- `alpha_first_selective_veto`: current formal alpha-first branch.
+- `alpha_first_glued_refined_hot_cap`: refined glued research candidate with `40 <= c1 < 75`, `b1 >= 0.10`, plus intact low weak-range veto.
+
+## Headline Comparison
+- workbook_preserving: trades `106`, avg_return `2.57%`, profit_factor `3.37`, real BUY / SELL `105/105`
+- alpha_first_selective_veto: trades `102`, avg_return `2.86%`, profit_factor `4.04`, real BUY / SELL `101/101`
+- alpha_first_glued_refined_hot_cap: trades `91`, avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+
+## Trade Quality
+- avg MFE / MAE: alpha `6.93%` / `-2.57%` vs refined `7.62%` / `-2.57%`
+- short bucket `00-05d`: alpha `-1.72%` vs refined `-1.67%`
+- short bucket `06-10d`: alpha `-0.69%` vs refined `-0.59%`
+
+## Walk-Forward Comparison
+- Anchored expanding: alpha `8/9`, avg `4.00%` vs refined `9/9`, avg `4.52%`
+- Rolling 3Y: alpha `7/7`, avg `5.19%` vs refined `7/7`, avg `5.76%`
+
+## Trade-Diff Summary
+- refined vs alpha-first: removed `11`, added `0`
+- The refined branch is still a removal-driven candidate; improvement comes from deleting weak trades, not from adding a new complex trade tree.
+
+## Stability Read
+- refined beats alpha on avg_return in `6` yearly buckets out of `10` overlapping sell years
+- avg_return delta vs alpha: `0.56%`
+- profit_factor delta vs alpha: `1.06`
+- overlap delta vs alpha: BUY `-11` / SELL `-11`
+
+## Governance Judgment
+- Upgrade gate status: `PASS` on headline quality and walk-forward thresholds
+- The refined branch is stronger than the current alpha-first baseline and stronger than the older full glued candidate.
+- The remaining blocker is governance: overlap loss is still large enough that promotion should be explicit rather than silent.
+- Recommended status: keep `alpha_first_selective_veto` as formal baseline; mark `alpha_first_glued_refined_hot_cap` as the leading next alpha-first candidate.

+ 132 - 0
research/dragon/v2/dragon_glued_refined_removed_trade_review.md

@@ -0,0 +1,132 @@
+# Dragon Glued Refined Removed-Trade Review
+
+## Snapshot
+- removed trades vs current alpha-first: `11`
+- avg_return of removed set: `-1.81%`
+- win_rate of removed set: `0.00%`
+- profit_factor of removed set: `0.00`
+
+## Recommendation Mix
+- KEEP_REMOVAL: `11`
+- OBSERVE_REMOVAL: `0`
+- OVER_REMOVAL: `0`
+
+## Bucket View
+- `hot_positive_b1_cap75`: trades `7`, avg_return `-1.50%`, win_rate `0.00%`, avg_mfe `1.40%`, avg_mae `-2.38%`
+- `low_weak_range`: trades `4`, avg_return `-2.35%`, win_rate `0.00%`, avg_mfe `0.96%`, avg_mae `-2.89%`
+
+## Quant Judgment
+- The refined branch mostly removes weak short-holding glued trades rather than medium-quality alpha trades.
+- If this review remains dominated by KEEP_REMOVAL and contains no meaningful OVER_REMOVAL bucket, the branch is structurally explainable rather than a black-box overfit.
+
+## Detailed Cards
+### 2016-11-28 -> 2016-12-02
+- Bucket: `hot_positive_b1_cap75` | holding `00-05d`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | return `-0.81%` | holding `4` days
+- MFE / MAE: `2.40%` / `-0.81%`
+- Entry 5d / Exit followthrough 5d: `-1.13%` / `-3.44%`
+- Entry indicators: `a1=0.0012` `b1=0.1271` `c1=53.68`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `none`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2017-03-06 -> 2017-03-10
+- Bucket: `hot_positive_b1_cap75` | holding `00-05d`
+- Trade: `glued_buy -> glued_exit:kdj_sell` | return `-0.60%` | holding `4` days
+- MFE / MAE: `0.83%` / `-1.96%`
+- Entry 5d / Exit followthrough 5d: `0.53%` / `-0.93%`
+- Entry indicators: `a1=0.0057` `b1=0.1350` `c1=53.96`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `none`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2017-03-13 -> 2017-03-14
+- Bucket: `hot_positive_b1_cap75` | holding `00-05d`
+- Trade: `glued_buy -> glued_exit:kdj_sell` | return `-1.01%` | holding `1` days
+- MFE / MAE: `0.01%` / `-1.86%`
+- Entry 5d / Exit followthrough 5d: `-1.16%` / `-1.04%`
+- Entry indicators: `a1=0.0105` `b1=0.2031` `c1=67.32`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `none`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2017-07-03 -> 2017-07-10
+- Bucket: `hot_positive_b1_cap75` | holding `06-10d`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | return `-1.79%` | holding `7` days
+- MFE / MAE: `0.90%` / `-1.81%`
+- Entry 5d / Exit followthrough 5d: `-1.79%` / `-8.63%`
+- Entry indicators: `a1=0.0074` `b1=0.1822` `c1=69.43`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `none`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2018-11-12 -> 2018-11-22
+- Bucket: `hot_positive_b1_cap75` | holding `06-10d`
+- Trade: `glued_buy -> post_dual_sell_decay_exit` | return `-1.54%` | holding `10` days
+- MFE / MAE: `3.46%` / `-3.82%`
+- Entry 5d / Exit followthrough 5d: `2.11%` / `-5.02%`
+- Entry indicators: `a1=0.0169` `b1=0.2091` `c1=40.55`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `2018-11-30 -> 2018-12-06 / glued_buy -> knife_take_profit_2_glued / 0.43%`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2019-07-15 -> 2019-07-22
+- Bucket: `hot_positive_b1_cap75` | holding `06-10d`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | return `-1.98%` | holding `7` days
+- MFE / MAE: `1.11%` / `-2.98%`
+- Entry 5d / Exit followthrough 5d: `-1.98%` / `0.17%`
+- Entry indicators: `a1=0.0064` `b1=0.1122` `c1=59.17`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `2019-07-24 -> 2019-08-01 / glued_buy -> knife_take_profit_2_glued / 1.08%`
+- Recommendation: `KEEP_REMOVAL` | Removed trade never developed enough profit room to defend its inclusion.
+
+### 2019-11-19 -> 2019-11-22
+- Bucket: `hot_positive_b1_cap75` | holding `00-05d`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | return `-2.80%` | holding `3` days
+- MFE / MAE: `1.11%` / `-3.42%`
+- Entry 5d / Exit followthrough 5d: `-2.56%` / `-1.86%`
+- Entry indicators: `a1=0.0152` `b1=0.1031` `c1=69.09`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `none`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2017-12-01 -> 2017-12-05
+- Bucket: `low_weak_range` | holding `00-05d`
+- Trade: `glued_buy -> negative_a1_no_b1_recovery:ql_sell` | return `-2.94%` | holding `4` days
+- MFE / MAE: `0.34%` / `-3.82%`
+- Entry 5d / Exit followthrough 5d: `-1.41%` / `-1.13%`
+- Entry indicators: `a1=-0.0199` `b1=-0.1039` `c1=23.31`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `none`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2019-01-18 -> 2019-01-22
+- Bucket: `low_weak_range` | holding `00-05d`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | return `-1.09%` | holding `4` days
+- MFE / MAE: `1.54%` / `-1.78%`
+- Entry 5d / Exit followthrough 5d: `0.20%` / `-1.73%`
+- Entry indicators: `a1=-0.0124` `b1=0.0102` `c1=25.79`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `2019-02-01 -> 2019-03-25 / glued_buy -> prewarning_reduction_exit / 31.06%`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2021-09-27 -> 2021-09-29
+- Bucket: `low_weak_range` | holding `00-05d`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | return `-1.78%` | holding `2` days
+- MFE / MAE: `1.63%` / `-2.08%`
+- Entry 5d / Exit followthrough 5d: `-1.35%` / `-2.64%`
+- Entry indicators: `a1=-0.0062` `b1=-0.0079` `c1=27.41`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `2021-09-30 -> 2021-10-11 / glued_buy -> knife_take_profit_2_glued / -1.98%`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+
+### 2024-07-31 -> 2024-08-02
+- Bucket: `low_weak_range` | holding `00-05d`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | return `-3.56%` | holding `2` days
+- MFE / MAE: `0.35%` / `-3.87%`
+- Entry 5d / Exit followthrough 5d: `-4.62%` / `-2.73%`
+- Entry indicators: `a1=-0.0119` `b1=-0.0002` `c1=24.56`
+- Workbook aligned: buy `True` / sell `True`
+- Replacement path within 10d: `none`
+- Recommendation: `KEEP_REMOVAL` | Removed trade is a short loser and price still weakens after exit.
+

+ 31 - 0
research/dragon/v2/dragon_glued_refined_sensitivity.md

@@ -0,0 +1,31 @@
+# Dragon Glued Refined Sensitivity
+
+- Scope: local neighborhood around the refined glued candidate, not a broad black-box search.
+
+## Candidate Baseline
+- avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+
+## Neighborhood Summary
+- tested cases: `81`
+- avg_return range: `3.23%` to `3.42%`
+- profit_factor range: `4.66` to `5.11`
+- overlap floor: BUY `89`, SELL `89`
+- cases with avg_return >= candidate: `16`
+- cases with profit_factor >= candidate: `16`
+- robust-nearby cases: `52`
+
+## Top Local Variants
+- `hcap72_hb1_0.09_lmin22_lb1_0.02`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap72_hb1_0.09_lmin22_lb1_0.03`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap72_hb1_0.09_lmin23_lb1_0.02`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap72_hb1_0.09_lmin23_lb1_0.03`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap72_hb1_0.10_lmin22_lb1_0.02`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap72_hb1_0.10_lmin22_lb1_0.03`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap72_hb1_0.10_lmin23_lb1_0.02`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap72_hb1_0.10_lmin23_lb1_0.03`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap75_hb1_0.09_lmin22_lb1_0.02`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- `hcap75_hb1_0.09_lmin22_lb1_0.03`: avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+
+## Quant Judgment
+- If the neighborhood remains strong around the candidate, the branch is locally stable rather than dependent on a single knife-edge threshold.
+- If only one exact setting dominates while nearby cases collapse, the branch still carries threshold fragility risk.

+ 44 - 0
research/dragon/v2/dragon_glued_refined_year_regime_review.md

@@ -0,0 +1,44 @@
+# Dragon Glued Refined Year/Regime Review
+
+## Yearly Comparison
+- refined improves avg_return in `6` yearly buckets out of `11`
+- `2016`: alpha `1.15%` vs refined `1.32%`, delta `0.16%`
+- `2017`: alpha `-0.42%` vs refined `0.24%`, delta `0.66%`
+- `2018`: alpha `0.05%` vs refined `0.16%`, delta `0.11%`
+- `2019`: alpha `3.12%` vs refined `5.29%`, delta `2.17%`
+- `2020`: alpha `11.16%` vs refined `11.16%`, delta `0.00%`
+- `2021`: alpha `5.35%` vs refined `6.24%`, delta `0.89%`
+- `2022`: alpha `2.20%` vs refined `2.20%`, delta `0.00%`
+- `2023`: alpha `1.36%` vs refined `1.36%`, delta `0.00%`
+- `2024`: alpha `4.72%` vs refined `5.64%`, delta `0.92%`
+- `2025`: alpha `8.42%` vs refined `8.42%`, delta `0.00%`
+- `2026`: alpha `-1.97%` vs refined `-1.97%`, delta `0.00%`
+
+## Regime Comparison
+- refined improves avg_return in `3` regime buckets out of `4`
+- `high_mid`: alpha `6.30%` vs refined `8.34%`, delta `2.04%`
+- `hot`: alpha `6.29%` vs refined `6.29%`, delta `0.00%`
+- `low`: alpha `2.34%` vs refined `2.69%`, delta `0.35%`
+- `mid`: alpha `1.81%` vs refined `2.30%`, delta `0.49%`
+
+## Holding-Bucket Comparison
+- refined improves avg_return in `2` holding buckets out of `5`
+- `00-05d`: alpha `-1.72%` vs refined `-1.67%`, delta `0.05%`
+- `06-10d`: alpha `-0.69%` vs refined `-0.59%`, delta `0.10%`
+- `11-20d`: alpha `1.45%` vs refined `1.45%`, delta `0.00%`
+- `21-40d`: alpha `6.33%` vs refined `6.33%`, delta `0.00%`
+- `41d+`: alpha `24.13%` vs refined `24.13%`, delta `0.00%`
+
+## Entry-Family Comparison
+- `glued_buy`: alpha `3.71%` vs refined `4.92%`, delta `1.21%`, alpha trades `61`, refined trades `50`
+- `deep_oversold_rebound_buy:classic_oversold`: alpha `0.04%` vs refined `0.04%`, delta `0.00%`, alpha trades `5`, refined trades `5`
+- `deep_oversold_rebound_buy:mixed_oversold`: alpha `0.01%` vs refined `0.01%`, delta `0.00%`, alpha trades `2`, refined trades `2`
+- `deep_oversold_rebound_buy:positive_b1_rebound`: alpha `-0.18%` vs refined `-0.18%`, delta `0.00%`, alpha trades `1`, refined trades `1`
+- `deep_oversold_rebound_buy:shallow_false_start`: alpha `0.12%` vs refined `0.12%`, delta `0.00%`, alpha trades `1`, refined trades `1`
+- `deep_oversold_rebound_buy:deep_capitulation`: alpha `-2.05%` vs refined `-2.05%`, delta `0.00%`, alpha trades `1`, refined trades `1`
+- `dual_gold_resonance_buy`: alpha `0.84%` vs refined `0.84%`, delta `0.00%`, alpha trades `14`, refined trades `14`
+- `early_crash_probe_buy`: alpha `4.62%` vs refined `4.62%`, delta `0.00%`, alpha trades `6`, refined trades `6`
+
+## Quant Judgment
+- This review checks whether improvement is broad-based or concentrated in a narrow slice of the sample.
+- If refined mainly wins through short-holding cleanup while not damaging medium and long holding buckets, the branch is behaving as intended.

+ 140 - 0
research/dragon/v2/dragon_glued_veto_review.md

@@ -0,0 +1,140 @@
+# Dragon Glued Veto Attribution Review
+
+## Snapshot
+- removed trades vs current alpha-first: `12`
+- total avg_return of removed set: `-1.60%`
+- total win_rate of removed set: `8.33%`
+- removed-set profit_factor: `0.03`
+
+## Bucket Summary
+- `hot_positive_b1`: trades `8`, win_rate `12.50%`, avg_return `-1.23%`, avg_mfe `1.64%`, avg_mae `-2.13%`, avg_holding `6.12`, KEEP/OBSERVE/OVER = `7/1/0`
+- `low_weak_range`: trades `4`, win_rate `0.00%`, avg_return `-2.35%`, avg_mfe `0.96%`, avg_mae `-2.89%`, avg_holding `3.00`, KEEP/OBSERVE/OVER = `4/0/0`
+
+## Quant Judgment
+- `low_weak_range`: trades `4`, win_rate `0.00%`, avg_return `-2.35%`, avg_mfe `0.96%`, avg_mae `-2.89%`, avg_holding `3.00`.
+- `hot_positive_b1`: trades `8`, win_rate `12.50%`, avg_return `-1.23%`, avg_mfe `1.64%`, avg_mae `-2.13%`, avg_holding `6.12`.
+- `low_weak_range` is now a clean promotion candidate: all removed trades are short, losing, and there is no positive sample in this bucket.
+- `hot_positive_b1` is directionally correct but not fully clean: most removed trades are weak, but one micro-profit sample remains and should be used as the first refinement target.
+- Immediate next research action: keep the low bucket intact, and narrow the hot bucket rather than rolling back the whole glued veto branch.
+
+## Detailed Cards
+### 2016-11-28 -> 2016-12-02
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | `4` days | return `-0.81%`
+- MFE / MAE: `2.40%` / `-0.81%`
+- Entry 5d / Exit followthrough 5d: `-1.13%` / `-3.44%`
+- Entry indicators: `a1=0.0012` `b1=0.1271` `c1=53.68`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `none`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2017-03-06 -> 2017-03-10
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> glued_exit:kdj_sell` | `4` days | return `-0.60%`
+- MFE / MAE: `0.83%` / `-1.96%`
+- Entry 5d / Exit followthrough 5d: `0.53%` / `-0.93%`
+- Entry indicators: `a1=0.0057` `b1=0.1350` `c1=53.96`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `none`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2017-03-13 -> 2017-03-14
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> glued_exit:kdj_sell` | `1` days | return `-1.01%`
+- MFE / MAE: `0.01%` / `-1.86%`
+- Entry 5d / Exit followthrough 5d: `-1.16%` / `-1.04%`
+- Entry indicators: `a1=0.0105` `b1=0.2031` `c1=67.32`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `none`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2017-07-03 -> 2017-07-10
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | `7` days | return `-1.79%`
+- MFE / MAE: `0.90%` / `-1.81%`
+- Entry 5d / Exit followthrough 5d: `-1.79%` / `-8.63%`
+- Entry indicators: `a1=0.0074` `b1=0.1822` `c1=69.43`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `none`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2018-11-12 -> 2018-11-22
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> post_dual_sell_decay_exit` | `10` days | return `-1.54%`
+- MFE / MAE: `3.46%` / `-3.82%`
+- Entry 5d / Exit followthrough 5d: `2.11%` / `-5.02%`
+- Entry indicators: `a1=0.0169` `b1=0.2091` `c1=40.55`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `2018-11-30 -> 2018-12-06 / glued_buy -> knife_take_profit_2_glued / 0.43%`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2019-07-15 -> 2019-07-22
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | `7` days | return `-1.98%`
+- MFE / MAE: `1.11%` / `-2.98%`
+- Entry 5d / Exit followthrough 5d: `-1.98%` / `0.17%`
+- Entry indicators: `a1=0.0064` `b1=0.1122` `c1=59.17`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `2019-07-24 -> 2019-08-01 / glued_buy -> knife_take_profit_2_glued / 1.08%`
+- Recommendation: `KEEP_VETO` | 持仓期间几乎没有有效盈利空间,删除逻辑合理。
+
+### 2019-11-19 -> 2019-11-22
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | `3` days | return `-2.80%`
+- MFE / MAE: `1.11%` / `-3.42%`
+- Entry 5d / Exit followthrough 5d: `-2.56%` / `-1.86%`
+- Entry indicators: `a1=0.0152` `b1=0.1031` `c1=69.09`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `none`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2021-11-05 -> 2021-11-18
+- Bucket: `hot_positive_b1`
+- Trade: `glued_buy -> ql_mid_zone_take_profit` | `13` days | return `0.69%`
+- MFE / MAE: `3.26%` / `-0.37%`
+- Entry 5d / Exit followthrough 5d: `2.37%` / `-0.21%`
+- Entry indicators: `a1=0.0192` `b1=0.1725` `c1=76.36`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `2021-11-22 -> 2021-11-30 / dual_gold_resonance_buy -> small_positive_a1_declining:kdj_sell / -0.34%`
+- Recommendation: `OBSERVE_VETO` | 原交易仅微利,但当前替代路径没有更强,建议进一步细化 hot 过滤而不是直接全盘保留。
+
+### 2017-12-01 -> 2017-12-05
+- Bucket: `low_weak_range`
+- Trade: `glued_buy -> negative_a1_no_b1_recovery:ql_sell` | `4` days | return `-2.94%`
+- MFE / MAE: `0.34%` / `-3.82%`
+- Entry 5d / Exit followthrough 5d: `-1.41%` / `-1.13%`
+- Entry indicators: `a1=-0.0199` `b1=-0.1039` `c1=23.31`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `none`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2019-01-18 -> 2019-01-22
+- Bucket: `low_weak_range`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | `4` days | return `-1.09%`
+- MFE / MAE: `1.54%` / `-1.78%`
+- Entry 5d / Exit followthrough 5d: `0.20%` / `-1.73%`
+- Entry indicators: `a1=-0.0124` `b1=0.0102` `c1=25.79`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `2019-02-01 -> 2019-03-25 / glued_buy -> prewarning_reduction_exit / 31.06%`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2021-09-27 -> 2021-09-29
+- Bucket: `low_weak_range`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | `2` days | return `-1.78%`
+- MFE / MAE: `1.63%` / `-2.08%`
+- Entry 5d / Exit followthrough 5d: `-1.35%` / `-2.64%`
+- Entry indicators: `a1=-0.0062` `b1=-0.0079` `c1=27.41`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `2021-09-30 -> 2021-10-11 / glued_buy -> knife_take_profit_2_glued / -1.98%`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+
+### 2024-07-31 -> 2024-08-02
+- Bucket: `low_weak_range`
+- Trade: `glued_buy -> knife_take_profit_2_glued` | `2` days | return `-3.56%`
+- MFE / MAE: `0.35%` / `-3.87%`
+- Entry 5d / Exit followthrough 5d: `-4.62%` / `-2.73%`
+- Entry indicators: `a1=-0.0119` `b1=-0.0002` `c1=24.56`
+- Workbook aligned: buy `True` / sell `True`
+- Candidate replacement within 10d after exit: `none`
+- Recommendation: `KEEP_VETO` | 短持仓亏损且卖出后继续走弱,属于应优先清理的噪音单。
+

+ 96 - 0
research/dragon/v2/dragon_html_report_quickstart_cn.md

@@ -0,0 +1,96 @@
+# Dragon HTML 报告极简说明
+
+## 一、先做什么
+
+先更新报告。
+
+在当前目录打开 PowerShell,运行:
+
+```powershell
+powershell -ExecutionPolicy Bypass -File .\update_dragon_reports.ps1
+```
+
+运行完成后,报告会自动刷新。
+
+## 二、看哪个文件
+
+优先打开:
+
+- `dragon_reports_index.html`
+
+这是总入口页。
+
+如果你只想看最新情况,就看:
+
+- `dragon_daily_signal_report.html`
+
+如果你想看最近一段时间策略是否稳定,就看:
+
+- `dragon_forward_weekly_review.html`
+
+如果你想逐笔核对历史交易,就看:
+
+- `dragon_historical_trade_details.html`
+
+## 三、这三页分别看什么
+
+### `dragon_reports_index.html`
+
+看全局。
+
+里面有:
+
+- 三个策略的总体对比
+- 收益曲线
+- 年度收益对比
+- 页面导航入口
+
+### `dragon_daily_signal_report.html`
+
+看今天最新状态。
+
+里面有:
+
+- 是否持仓
+- 最近一次真实事件
+- 最新指标
+- 监控是否异常
+
+### `dragon_forward_weekly_review.html`
+
+看最近一段时间是否稳定。
+
+里面有:
+
+- 最近观察记录
+- warning / hard breach
+- refined 和 control 有没有明显分歧
+
+### `dragon_historical_trade_details.html`
+
+看历史全量流水。
+
+里面有:
+
+- 每一笔买卖时间
+- 买卖价格
+- 触发条件
+- 单笔收益
+- 交易前后资金
+- 可按策略、年份、关键词筛选
+
+## 四、最简单使用方式
+
+每天就按这个顺序:
+
+1. 运行更新脚本
+2. 打开 `dragon_reports_index.html`
+3. 需要看细节时,再点日报或周报
+
+## 五、如果看到乱码
+
+不要在 PowerShell 里直接看 HTML 内容。
+
+请直接用浏览器打开 `.html` 文件。
+
+HTML 文件本身是 UTF-8,浏览器里通常是正常的。

+ 203 - 0
research/dragon/v2/dragon_html_report_usage_cn.md

@@ -0,0 +1,203 @@
+# Dragon HTML 报告使用说明
+
+## 1. 这套报告是什么
+
+这是一套给 `dragon/v2` 策略研究使用的 HTML 可视化报告。
+
+当前包含三条策略:
+
+- `workbook_preserving`
+- `alpha_first_selective_veto`
+- `alpha_first_glued_refined_hot_cap`
+
+主要用途:
+
+- 看三策略最新状态
+- 看日常监控是否异常
+- 看 refined 和 control 是否出现结构性分歧
+- 看总览页上的收益、回撤和年度表现图
+
+## 2. 主要文件
+
+根目录主页面:
+
+- `dragon_reports_index.html`
+- `dragon_daily_signal_report.html`
+- `dragon_forward_weekly_review.html`
+- `dragon_historical_trade_details.html`
+
+归档页面目录:
+
+- `html_reports/`
+
+一键更新脚本:
+
+- `update_dragon_reports.ps1`
+
+HTML 生成代码:
+
+- `dragon_html_reports.py`
+
+## 3. 如何打开
+
+推荐直接在资源管理器里双击以下文件:
+
+1. `dragon_reports_index.html`
+2. `dragon_daily_signal_report.html`
+3. `dragon_forward_weekly_review.html`
+
+建议先打开:
+
+- `dragon_reports_index.html`
+
+因为它是总入口页,里面已经放了日报、周报和归档链接。
+
+## 4. 如何更新报告
+
+### 方法一:一键更新,推荐
+
+在当前目录打开 PowerShell,执行:
+
+```powershell
+powershell -ExecutionPolicy Bypass -File .\update_dragon_reports.ps1
+```
+
+这条命令会自动完成:
+
+- 重新跑前向观察管线
+- 刷新最新日报
+- 刷新最新周报
+- 刷新首页
+- 更新 `html_reports/` 下的归档页面
+
+### 方法二:手动更新
+
+如果你只想手动执行,也可以运行:
+
+```powershell
+py .\dragon_forward_observation_pipeline.py
+```
+
+这条命令内部会联动生成:
+
+- CSV 快照
+- markdown 报告
+- HTML 报告
+
+## 5. 页面分别看什么
+
+### `dragon_reports_index.html`
+
+总览页,适合先看全局。
+
+主要内容:
+
+- RC1 摘要卡片
+- 三策略对照卡片
+- 累计净值曲线
+- 年度收益对比图
+- 回撤摘要表
+- 各页面入口
+
+### `dragon_daily_signal_report.html`
+
+日报页,适合每天看最新状态。
+
+主要内容:
+
+- 三策略最新状态
+- 最新真实事件
+- 是否持仓
+- 最新 A1 / B1 / C1
+- 监控快照
+- 最近信号变化
+- refined vs control 分歧记录
+
+### `dragon_forward_weekly_review.html`
+
+周报页,适合看前向观察阶段的滚动情况。
+
+主要内容:
+
+- 周度汇总
+- 最近观察记录
+- 分歧历史
+- warning / hard breach 统计
+
+### `dragon_historical_trade_details.html`
+
+历史全量明细页,适合逐笔核对历史交易。
+
+里面有:
+
+- 买入日期
+- 买入价格
+- 买入触发条件
+- 卖出日期
+- 卖出价格
+- 卖出触发条件
+- 持有天数
+- 单笔收益
+- 交易前资金
+- 单笔盈亏
+- 交易后资金
+- 策略筛选
+- 年份筛选
+- 关键词搜索
+
+## 6. 归档文件说明
+
+`html_reports/` 目录下保存按日期归档的 HTML 页面,例如:
+
+- `dragon_reports_index_2026-04-03.html`
+- `dragon_daily_signal_report_2026-04-03.html`
+- `dragon_forward_weekly_review_2026-04-03.html`
+
+这些文件用于保留当时的快照,避免后续更新覆盖历史页面。
+
+## 7. 常见问题
+
+### 7.1 页面中文乱码怎么办
+
+先确认是在浏览器里打开,而不是直接用 PowerShell 看文件内容。
+
+说明:
+
+- HTML 文件本身是 UTF-8 编码
+- 之前出现的乱码主要是 PowerShell 终端显示问题
+- 浏览器正常打开通常不会有这个问题
+
+### 7.2 页面链接点击报错怎么办
+
+当前版本已经修复:
+
+- 根目录页面
+- `html_reports/` 归档页面
+
+这两类页面现在分别使用不同的相对路径,正常点击应当不会再跳错。
+
+如果你更新后仍有问题,先重新执行:
+
+```powershell
+powershell -ExecutionPolicy Bypass -File .\update_dragon_reports.ps1
+```
+
+## 8. 当前建议使用方式
+
+日常使用建议:
+
+1. 先运行一键更新脚本
+2. 打开 `dragon_reports_index.html`
+3. 需要看细节时,再点进日报或周报
+
+如果你只关心最新交易状态,直接看:
+
+- `dragon_daily_signal_report.html`
+
+如果你要逐笔核对历史流水,直接看:
+
+- `dragon_historical_trade_details.html`
+
+如果你要看一段时间内是否稳定,直接看:
+
+- `dragon_forward_weekly_review.html`

+ 500 - 0
research/dragon/v2/dragon_indicator_strategy_guide_cn.md

@@ -0,0 +1,500 @@
+# Dragon 指标与策略原理说明
+
+## 1. 这份说明是给谁看的
+
+这份说明不是写给量化研究员的,而是写给普通投资者的。
+
+目标只有一个:
+
+- 让你看懂这套策略到底在看什么
+- 为什么会在某些位置买入
+- 为什么会在某些位置卖出
+- 三种策略版本到底差在哪里
+
+你不需要先懂编程,也不需要先懂复杂公式。
+
+## 2. 这套策略到底在做什么
+
+先用一句最简单的话概括:
+
+- 它是一套“顺势 + 拐点 + 风险控制”混合型规则策略
+
+它不是单纯抄底,也不是单纯追涨。
+
+它做的是三件事:
+
+1. 判断市场大致处在什么状态
+2. 判断现在是不是适合开仓
+3. 判断持仓后应该继续拿、部分止盈,还是退出
+
+所以它不是只看一个指标,而是把几个指标组合起来看。
+
+## 3. 这套策略主要看哪些指标
+
+核心指标一共分 3 组:
+
+1. `A1`
+2. `B1 / C1`
+3. `KDJ / QL凤凰线`
+
+可以把它们理解成:
+
+- `A1`:看趋势力度有没有扩张或衰减
+- `B1`:看中期动能是在增强还是减弱
+- `C1`:看市场大致处在高位、中位还是低位
+- `KDJ`:看短期拐点
+- `QL凤凰线`:看价格是否真正突破或跌破一条“动态边界”
+
+## 4. A1 是什么,怎么理解
+
+`A1` 来自两条平滑均线之间的差值。
+
+通俗理解:
+
+- 如果短期均线明显跑在中期均线上面,`A1` 会偏大
+- 如果短期均线开始回落,`A1` 会变弱
+- 如果短期均线跌到中期均线下面,`A1` 会转负
+
+它更像一个“趋势温度计”。
+
+### A1 在策略里怎么用
+
+常见用途:
+
+- 判断趋势是否足够强,值不值得跟
+- 判断趋势是不是开始走弱
+- 持仓后判断是不是该保护利润
+
+普通投资者可以这样理解:
+
+- `A1` 高并继续走强:行情热度上升
+- `A1` 高但开始回落:热度还在,但已经没那么强
+- `A1` 转负:趋势环境开始明显转坏
+
+所以:
+
+- `A1` 不是单独买卖信号
+- 它更像一个“背景过滤器”
+
+## 5. B1 是什么,怎么理解
+
+`B1` 本质上看的是一组中周期动能线之间的差。
+
+通俗理解:
+
+- `B1` 为正,说明中期动能偏强
+- `B1` 继续抬高,说明行情有扩张迹象
+- `B1` 回落甚至转负,说明中期动能在衰减
+
+### B1 在策略里怎么用
+
+它主要用在两个地方:
+
+1. 买入过滤
+2. 风险退出
+
+例如:
+
+- 有些位置虽然看起来像反弹,但 `B1` 太弱,策略会怀疑这是“假反弹”
+- 持仓后如果 `B1` 明显走坏,策略会把它当成风险信号
+
+普通理解:
+
+- `B1` 更像“这波行情还有没有后劲”
+
+## 6. C1 是什么,怎么理解
+
+`C1` 是一个位置指标。
+
+它不主要告诉你“今天涨不涨”,而是告诉你:
+
+- 当前更像高位区
+- 中位区
+- 还是低位 / 超跌区
+
+可以把 `C1` 理解成“市场所在楼层”。
+
+### C1 大致怎么理解
+
+- `C1` 很高:市场已经在高楼层
+- `C1` 中间:市场在中层区域
+- `C1` 很低:市场已经掉到低楼层,可能处在超跌区
+
+### C1 在策略里怎么用
+
+这是整套策略里非常重要的定位器。
+
+因为同样是一个金叉:
+
+- 如果发生在低位,含义可能是“超跌反弹开始”
+- 如果发生在高位,含义可能只是“高位继续冲一下”
+- 如果发生在中位,可能是“趋势延续”
+
+所以很多规则并不是“某指标一出现就买”,而是:
+
+- 先看 `C1` 在什么区间
+- 再决定这个信号值不值得做
+
+## 7. KDJ 是什么,怎么理解
+
+`KDJ` 是常见的短期拐点指标。
+
+这套策略里重点看的是:
+
+- `KDJ buy`
+- `KDJ sell`
+
+也就是短期节奏是否出现金叉 / 死叉。
+
+### KDJ 在策略里怎么用
+
+它更像“点火器”或者“确认器”。
+
+例如:
+
+- 市场已经在低位区了,但没有短期拐头,策略未必马上进
+- 如果低位 + `KDJ buy` 同时出现,开仓意愿就会变强
+
+卖出时也类似:
+
+- 有些退出并不是因为市场彻底坏了
+- 而是短期节奏先出现了确认性转弱
+
+普通理解:
+
+- `KDJ` 解决的是“时点问题”
+- 它告诉策略:“现在动手是不是比昨天更合理”
+
+## 8. QL 凤凰线是什么,怎么理解
+
+你可以把 `QL凤凰线` 理解为一条“动态通道”。
+
+它有一条上边界和下边界:
+
+- 上穿上边界:`QL buy`
+- 下穿下边界:`QL sell`
+
+### QL 凤凰线在策略里怎么用
+
+它和 `KDJ` 的差别在于:
+
+- `KDJ` 更像节奏拐点
+- `QL` 更像价格是否真正冲出了某个动态范围
+
+所以:
+
+- `QL buy` 更像“价格真突破了”
+- `QL sell` 更像“价格真掉下来了”
+
+普通理解:
+
+- `KDJ` 更灵敏
+- `QL` 更偏确认
+
+这也是为什么策略里经常把两者结合:
+
+- `KDJ` 可以早一点发现变化
+- `QL` 可以帮助过滤掉一部分假动作
+
+## 9. 指标之间是怎么配合的
+
+这套策略不是“某个指标单独决定一切”。
+
+更接近下面这个逻辑:
+
+1. 用 `C1` 判断市场大致处在哪个位置
+2. 用 `A1` 和 `B1` 判断趋势和动能强不强
+3. 用 `KDJ` / `QL` 决定出手时点
+
+你可以把它理解成:
+
+- `C1` 决定“在哪里”
+- `A1/B1` 决定“强不强”
+- `KDJ/QL` 决定“什么时候”
+
+## 10. 策略为什么会买入
+
+这套策略里常见买入原因可以分成几类。
+
+### 10.1 趋势延续型
+
+代表:
+
+- `glued_buy`
+
+通俗理解:
+
+- 市场不是特别低,也不是彻底失控
+- 短中期结构重新粘合并向上
+- 策略认为这更像一段趋势继续走,而不是乱反弹
+
+这是整套策略最核心的一类买点。
+
+### 10.2 低位反转型
+
+代表:
+
+- `dual_gold_resonance_buy`
+- `deep_oversold_rebound_buy`
+- `oversold_recovery_buy`
+
+通俗理解:
+
+- 市场已经很低了
+- 短期指标开始从低位拐头
+- 策略尝试捕捉“跌深后的恢复”
+
+这类买点的特点是:
+
+- 潜在反弹空间可能大
+- 但也更容易遇到假反弹
+
+### 10.3 恐慌试探型
+
+代表:
+
+- `early_crash_probe_buy`
+
+通俗理解:
+
+- 市场出现急跌、恐慌
+- 策略会在非常小的一部分情况下“试探性进场”
+
+这种买点不是常规顺势,而是风险更高的“灾难后试探”。
+
+### 10.4 卖出后再启动型
+
+代表:
+
+- `post_sell_rebound_buy`
+- `predictive_error_reentry_buy`
+- `post_washout_kdj_reentry_buy`
+
+通俗理解:
+
+- 策略前面已经卖出过
+- 后来发现市场没有继续坏,而是重新恢复
+- 策略选择重新上车
+
+这类买点的核心是:
+
+- 承认前面已经发生过一次退出
+- 再根据新的证据判断要不要回来
+
+## 11. 策略为什么会卖出
+
+卖出原因也可以按普通投资者容易理解的方式分几类。
+
+### 11.1 止盈型
+
+代表:
+
+- `knife_take_profit_1`
+- `knife_take_profit_2_glued`
+- `early_positive_take_profit`
+
+通俗理解:
+
+- 行情已经涨出一段
+- 但策略认为继续持有的性价比开始下降
+- 于是先把利润锁住
+
+### 11.2 确认转弱型
+
+代表:
+
+- `glued_exit:kdj_sell`
+- `small_positive_a1_declining:ql_sell`
+
+通俗理解:
+
+- 不是突然崩掉
+- 而是原本向上的结构开始出现明确转弱
+- 策略不再恋战
+
+### 11.3 风险保护型
+
+代表:
+
+- `hard_exit`
+- `crash_protection_exit`
+- `predictive_b1_break_exit`
+
+通俗理解:
+
+- 这些规则不是为了多赚
+- 而是为了少亏
+
+当 `A1`、`B1`、`KDJ`、`QL` 共同指向风险上升时,策略会更坚决退出。
+
+### 11.4 高位预警型
+
+代表:
+
+- `prewarning_reduction_exit`
+- `high_regime_momentum_break`
+
+通俗理解:
+
+- 市场已经在比较高的位置了
+- 一旦动能不再扩张,策略会提前提高警惕
+
+这类卖点不是说市场一定马上大跌,而是:
+
+- 高位出问题时,后果往往更重
+- 所以策略宁可早一点保护自己
+
+## 12. 为什么还会有辅助信号
+
+你之前已经定过口径:
+
+- 重复 `SELL` 但没有重新开仓,不算真实交易,只算看空辅助信号
+- 持仓中再次出现 `BUY`,不算加仓,只算看多辅助信号
+
+普通理解:
+
+- 真实交易层:真的买、真的卖
+- 辅助信号层:只是告诉你市场气氛偏多还是偏空
+
+这样做的好处是:
+
+- 不把每个信号都变成交易
+- 但又保留市场情绪和结构变化的信息
+
+## 13. 三种策略版本到底差在哪里
+
+这是普通投资者最容易问的问题。
+
+### 13.1 `workbook_preserving`
+
+定位:
+
+- 最像原始工作簿
+
+特点:
+
+- 更重视和历史工作簿结构一致
+- 尽量保留原始事件路径
+
+适合:
+
+- 做重构核对
+- 做历史审计
+- 做“这套代码是否尽量忠于原始规则”的参考
+
+### 13.2 `alpha_first_selective_veto`
+
+定位:
+
+- 平衡版本
+
+特点:
+
+- 保留大部分结构一致性
+- 但主动过滤一批质量差的交易
+
+适合:
+
+- 想兼顾“原规则风格”和“更好的交易质量”
+
+### 13.3 `alpha_first_glued_refined_hot_cap`
+
+定位:
+
+- 当前最强的收益候选版本,也就是 `RC1`
+
+特点:
+
+- 继续删掉一批弱质量的短持仓交易
+- 更强调收益质量和稳健性
+
+代价:
+
+- 和原始工作簿的历史路径偏差更大
+
+适合:
+
+- 更重视实际表现,而不是和原始工作簿完全像不像
+
+## 14. 为什么 RC1 的收益更强
+
+通俗讲,不是因为它会“神奇地找到更多暴涨机会”。
+
+更重要的原因是:
+
+- 它删掉了一批原本就不太好的交易
+
+也就是说,它提升表现的核心不是“更激进地多做”,而是:
+
+- 少做一些低质量、短持仓、容易亏损的单子
+
+这也是为什么它的逻辑更像:
+
+- 提高选择质量
+- 而不是盲目增加交易次数
+
+## 15. 普通投资者应该怎么理解这套系统
+
+可以把它想成一个四层判断机器。
+
+### 第一层:看市场在哪一层楼
+
+- 高位
+- 中位
+- 低位
+
+主要看 `C1`
+
+### 第二层:看这层楼里有没有力量
+
+- 趋势有没有扩张
+- 动能有没有衰减
+
+主要看 `A1`、`B1`
+
+### 第三层:决定什么时候动手
+
+- 有没有短期拐点
+- 有没有价格突破 / 跌破确认
+
+主要看 `KDJ`、`QL凤凰线`
+
+### 第四层:管理持仓
+
+- 到了该止盈的时候先止盈
+- 出现风险时尽快退出
+- 空仓时的重复看空只记为辅助信号
+
+## 16. 这套策略不是什么
+
+它不是:
+
+- 预测明天一定涨跌的水晶球
+- 只靠一个神奇指标赚钱
+- 永远不出错的自动印钞机
+
+它本质上是一套:
+
+- 用规则把主观经验结构化
+- 再通过历史和前向观察不断验证的系统
+
+## 17. 普通投资者看这页时,重点抓什么
+
+如果你不想一上来研究细节,可以先记住下面这几句:
+
+1. `C1` 决定大致位置
+2. `A1/B1` 决定趋势和动能是否值得参与
+3. `KDJ/QL` 决定出手和退出时点
+4. `workbook_preserving` 更像原始规则
+5. `alpha_first_selective_veto` 更平衡
+6. `RC1` 更偏实际收益质量
+
+## 18. 最后一句话
+
+这套策略的核心不是“猜顶猜底”,而是:
+
+- 尽量在更合理的环境里进场
+- 尽量在风险开始变坏时退出
+- 用规则把“什么时候值得做、什么时候不值得做”说清楚
+
+如果你能把这三点看懂,就已经理解了这套系统的大部分运作原理。

+ 18 - 0
research/dragon/v2/dragon_monitor_health_report.md

@@ -0,0 +1,18 @@
+# Dragon Monitor Health Report
+
+- latest_bar_date: `2026-04-03`
+- warning_count: `0`
+- hard_breach_count: `0`
+- missing_data_count: `0`
+
+## Latest Metrics
+- `headline_avg_return_delta_vs_control`: actual `0.0053060073054712` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `headline_profit_factor_delta_vs_control`: actual `0.9426291301044722` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `local_sensitivity_robust_case_count`: actual `52.0` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `next_open_avg_return_delta_vs_control`: actual `0.0052846983279676` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `next_open_max_drawdown`: actual `-0.1319253592544694` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `next_open_max_loss_streak`: actual `8.0` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `next_open_profit_factor_delta_vs_control`: actual `0.9170407302181012` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `removed_trade_over_removal_count`: actual `0.0` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `short_loss_share`: actual `0.8638250854196728` | status `ok` | warning_streak `0` | hard_breach_streak `0`
+- `worst_5trade_sum_next_open`: actual `-0.0795559000774173` | status `ok` | warning_streak `0` | hard_breach_streak `0`

+ 150 - 0
research/dragon/v2/dragon_next_stage_opinion_cn.md

@@ -0,0 +1,150 @@
+# Dragon 下一阶段意见与计划
+
+## 核心判断
+
+当前阶段不应该再继续改策略核心。
+
+最优动作是:
+
+- 停止继续优化核心参数
+- 开始前向观察
+- 用新增样本验证 `RC1`
+
+原因很明确:
+
+- 研究层已经完成:`alpha_first_glued_refined_hot_cap` 是当前量化结果最强的分支
+- 治理层已经完成:已经有晋级规则、参数治理规则、监控模板
+- 运行层已经完成:已经有 `RC1`、日更信号、前向观察日志、分歧跟踪、周报骨架
+
+所以现在最忌讳的事情,是在缺少新增前向样本的情况下,又回去继续调核心参数。
+
+## 我的明确意见
+
+现在的主任务,已经从“找更优规则”切换成了“验证当前最优规则在新增样本上的真实性”。
+
+通俗讲:
+
+- 之前做的是历史样本研究
+- 现在该做的是前向验证
+
+这一阶段最重要的不是把历史曲线再修得更好看,而是回答:
+
+- `RC1` 在新增样本上是否继续优于 control
+- refined 和 control 是否开始出现新的结构性分歧
+- 是否出现连续告警
+- 是否出现新的失败样本簇
+
+## 总体计划
+
+后续分三条线推进,但主线只有一条。
+
+### 主线 A:前向观察积累
+
+这是当前最重要的工作。
+
+目标:
+
+- 连续积累 `RC1` 与 control 的新增样本
+- 不碰核心参数
+- 不做新的主干优化
+
+执行方式:
+
+- 每个交易日运行 `dragon_forward_observation_pipeline.py`
+- 持续更新:
+  - `dragon_forward_observation_log.csv`
+  - `dragon_signal_change_log.csv`
+  - `dragon_branch_divergence_log.csv`
+  - `dragon_monitor_history.csv`
+- 每周查看:
+  - `dragon_forward_weekly_review.md`
+  - `dragon_monitor_health_report.md`
+
+观察重点:
+
+- refined 是否继续保持对 control 的优势
+- 是否出现新的分歧状态
+- 是否出现连续 `warning`
+- 是否出现新的失败样本结构
+
+### 副线 B:只研究弱次级家族,不碰主干
+
+这条线可以继续,但只能放在独立研究分支里做。
+
+目标:
+
+- 将未来可能的优化集中在弱边角
+- 不动当前 `RC1` 的核心 alpha 主干
+
+只允许研究:
+
+- `deep_oversold` 弱子型
+- `post_sell_rebound_buy`
+- `oversold_reversal_after_ql_buy`
+
+明确不碰:
+
+- `glued_selective_*`
+- predictive bridge 主链
+- `RC1` 冻结参数
+
+原则:
+
+- 所有研究都必须放在新命名分支里
+- 不允许污染 `RC1`
+
+### 副线 C:准备正式晋级材料
+
+这条线不是重新证明 refined 强不强,而是为未来正式晋级做准备。
+
+目标:
+
+- 让未来的治理决策直接基于前向样本和监控历史
+- 不再重新做整套历史研究
+
+后续持续补充的内容:
+
+- 前向观察样本
+- 分歧日志
+- 连续监控历史
+
+当新增样本积累到一定程度后,就可以直接回答:
+
+- 是否正式把 `RC1` 晋级为官方 alpha 分支
+
+## 当前阶段最重要的三点
+
+1. `RC1` 现在已经足够强,不应该再轻易改动
+2. 下一阶段最有价值的数据,不在历史里,而在未来新增样本里
+3. 真正该盯的,不只是收益率,而是:
+   - 分歧
+   - 退化
+   - 连续告警
+   - 失败样本结构
+
+## 近期执行节奏
+
+建议按下面节奏运行:
+
+### 日频
+
+- 运行 `dragon_forward_observation_pipeline.py`
+
+### 周频
+
+- 查看 `dragon_forward_weekly_review.md`
+
+### 条件触发
+
+只有当出现以下情况时,才允许开新的研究分支:
+
+- 连续 `warning`
+- 出现 `hard_breach`
+- refined / control 出现结构性分歧
+- 新失败样本集中出现在某个弱家族
+
+## 一句话结论
+
+现在最专业的做法,不是继续优化,而是克制住优化冲动,开始用前向样本验证 `RC1`。
+
+只有把这一步做扎实,策略才有资格从“研究系统”进一步走向“正式可用的量化资产”。

+ 147 - 0
research/dragon/v2/dragon_parameter_governance.md

@@ -0,0 +1,147 @@
+# Dragon Parameter Governance
+
+## Purpose
+
+Separate parameters into:
+
+- frozen formal parameters
+- research-only parameters
+- hygiene parameters
+
+This prevents silent drift inside the refined branch.
+
+## Frozen Formal Parameters
+
+These define the current refined edge and may only be changed inside a new named research branch.
+
+### Glued Selective Veto Core
+
+- `glued_selective_hot_c1_min`
+- `glued_selective_hot_c1_max`
+- `glued_selective_hot_b1_min`
+- `glued_selective_low_c1_min`
+- `glued_selective_low_c1_max`
+- `glued_selective_low_b1_max`
+
+Reason:
+
+- these parameters directly determine the `11` removed short glued trades
+- current refined edge is heavily dependent on this cleanup
+
+### Deep-Oversold Selective Veto Core
+
+- `deep_oversold_selective_positive_b1_c1_max`
+- `deep_oversold_selective_shallow_c1_min`
+- `deep_oversold_selective_shallow_b1_min`
+- `deep_oversold_selective_mixed_c1_max`
+- `deep_oversold_selective_mixed_require_no_ql`
+
+Reason:
+
+- these define the current control-vs-workbook alpha branch foundation
+- they should not drift while refined is being formalized
+
+### Frozen Bridge / Split-Path Protection
+
+- `predictive_b1_break_short_holding_days_max`
+- `predictive_b1_break_short_a1_min`
+- `predictive_b1_break_short_a1_max`
+- `predictive_b1_break_short_b1_max`
+- `predictive_b1_break_short_c1_low`
+- `predictive_b1_break_short_c1_high`
+- `predictive_b1_break_long_holding_days_min`
+- `predictive_b1_break_long_max_c1`
+- `predictive_b1_break_long_max_a1`
+- `predictive_b1_break_long_max_b1`
+- `predictive_b1_break_long_ql_days_max`
+- `predictive_b1_break_long_a1_min`
+- `predictive_b1_break_long_a1_max`
+- `predictive_b1_break_long_b1_max`
+- `predictive_b1_break_long_c1_low`
+- `predictive_b1_break_long_c1_high`
+- `enable_knife_take_profit_2_wait_ql`
+
+Reason:
+
+- these rules affect split-path preservation and exit bridge behavior
+- prior research already showed this area is fragile and should not be blind-tuned
+
+## Research-Only Parameters
+
+These may be explored in explicit research branches.
+
+### Weak Deep-Oversold Redesign
+
+- `deep_oversold_confirm_weak_with_ql`
+- `deep_oversold_confirm_window_bars`
+- `deep_oversold_block_positive_b1_rebound`
+- `deep_oversold_block_shallow_false_start_without_ql`
+
+Reason:
+
+- these are active research knobs for weak subtype redesign
+- they are not part of the current formal refined edge
+
+### Secondary Rebound Entries
+
+- `oversold_reversal_after_ql_*`
+- `post_sell_rebound_*`
+- `oversold_recovery_*`
+
+Reason:
+
+- these families are not the primary source of refined alpha
+- they remain legitimate research targets, but not inside the frozen formal branch
+
+## Hygiene Parameters
+
+These may change with lighter governance if real-trade structure does not drift materially.
+
+### Auxiliary Signal Compression
+
+- `post_exit_confirmation_window_days`
+- `aux_sell_same_side_once_per_cycle`
+- `aux_sell_duplicate_cooldown_days`
+- `aux_sell_high_zone_kdj_only_block_*`
+- `aux_sell_strong_break_*`
+- `aux_sell_stronger_*`
+- `aux_sell_high_zone_rearm_c1_delta`
+- `state_crash_followthrough_*`
+
+Reason:
+
+- these mainly affect auxiliary signal clutter
+- they are not the current main alpha engine
+
+### Reporting / Minor Structural Hygiene
+
+- `disabled_rules`
+
+Reason:
+
+- acceptable only for explicit ablation or audit branches
+- not for silent production changes
+
+## Parameter Change Rule
+
+- frozen formal parameters:
+  - new named branch required
+  - full attribution rerun required
+  - execution-aware robustness rerun required
+
+- research-only parameters:
+  - research branch required
+  - local rationale required
+  - branch may be rejected without promotion
+
+- hygiene parameters:
+  - may be adjusted without new branch only if:
+    - no harmful real-trade drift
+    - no hidden metric regression
+    - change is documented
+
+## Practical Rule
+
+If a parameter is part of the current refined edge source, treat it as frozen.
+If a parameter is attached to a weak or secondary family, treat it as research-only.
+If a parameter mostly cleans noise outside the real-trade core, treat it as hygiene.

+ 11 - 0
research/dragon/v2/dragon_predictive_break_experiments.md

@@ -0,0 +1,11 @@
+# Dragon Predictive Break Experiments
+
+- baseline predictive trade count: `1`
+- baseline real BUY / SELL overlap: `106` / `105`
+
+## Experiment Summary
+- `baseline`: predictive trades `1`, delta_avg_return `0.00%`, real BUY `106`, real SELL `105`
+- `short_b1_looser`: predictive trades `3`, delta_avg_return `-0.17%`, real BUY `106`, real SELL `104`
+- `short_b1_tighter`: predictive trades `1`, delta_avg_return `0.00%`, real BUY `106`, real SELL `105`
+- `long_b1_looser`: predictive trades `1`, delta_avg_return `0.00%`, real BUY `106`, real SELL `105`
+- `long_b1_tighter`: predictive trades `0`, delta_avg_return `0.07%`, real BUY `105`, real SELL `104`

+ 16 - 0
research/dragon/v2/dragon_predictive_break_review.md

@@ -0,0 +1,16 @@
+# Dragon Predictive Break Review
+
+- predictive exit trades in baseline: `1`
+- predictive exit avg return: `36.85%`
+- disabled-rule alt avg return: `43.39%`
+- split-chain combined avg return: `39.56%`
+
+## Trade Cards
+- `2024-09-24 -> 2024-11-28` `glued_buy` | exit a1 `-0.0084` b1 `-0.1358` c1 `61.69` | 3d low `-0.38%` / 5d high `4.91%`
+  disabled path -> `2024-12-10` `knife_take_profit_2_glued` `43.39%`
+  split path reentry -> `2024-11-29` `predictive_error_reentry_buy` to `2024-12-10` `1.99%`; combined `39.56%`
+
+## Quant Judgment
+- The remaining predictive break is a bridge-style exit, not a generic stop-loss bucket.
+- Disabling it improves the single uninterrupted trade return, but destroys the workbook-aligned split chain.
+- Under the current reconstruction objective, this rule should be frozen unless the user explicitly accepts lower workbook alignment.

+ 32 - 0
research/dragon/v2/dragon_rc1_release.md

@@ -0,0 +1,32 @@
+# Dragon RC1 Release
+
+- Release version: `RC1`
+- Strategy branch: `alpha_first_glued_refined_hot_cap`
+- Freeze date: `2026-04-05`
+- Evaluation window: `2016-01-01` to `2025-12-31`
+
+## Freeze Intent
+- `RC1` is the first frozen release candidate of the refined alpha branch.
+- Its purpose is not to continue blind optimization, but to serve as the tracked strategy candidate for daily signal production and monitoring.
+
+## Frozen Headline
+- trades: `91`
+- win_rate: `52.75%`
+- avg_return: `3.42%`
+- median_return: `0.25%`
+- profit_factor: `5.11`
+- compounded_return: `1424.12%`
+- CAGR: `31.32%`
+- max_drawdown: `-12.79%`
+- drawdown_duration_trades: `16`
+
+## Operating Rule
+- Treat `RC1` as the forward default branch.
+- Do not change frozen core parameters inside `RC1` directly.
+- Any future core-threshold change must create a new named branch and go through attribution plus execution-aware stress again.
+
+## Artifacts
+- `dragon_rc1_config_snapshot.json`
+- `dragon_formal_strategy_governance.md`
+- `dragon_parameter_governance.md`
+- `dragon_formal_strategy_memo.md`

+ 72 - 0
research/dragon/v2/dragon_refined_edge_review.md

@@ -0,0 +1,72 @@
+# Dragon Refined Edge Review
+
+## Scope
+- Target branch: `alpha_first_glued_refined_hot_cap`
+- Control branch: `alpha_first_selective_veto`
+- Evaluation window: `2016-01-01` to `2025-12-31`
+
+## Headline
+- control: trades `102`, win_rate `47.06%`, avg_return `2.86%`, profit_factor `4.04`
+- refined: trades `91`, win_rate `52.75%`, avg_return `3.42%`, profit_factor `5.11`
+- refined minus control: trades `-11`, avg_return `0.56%`, profit_factor `1.06`
+
+## Main Edge Source
+- Refined alpha is still primarily a `glued_buy` story, but now with stricter removal of weak short-holding glued trades.
+- The branch is not winning by adding new complex trade paths; it is winning by deleting low-quality short trades while preserving the medium and long-holding winners.
+
+## Entry Family Decomposition
+- `glued_buy` [core_alpha_family]: trades `50`, share `54.95%`, avg_return `4.92%`, sum_return `246.25%`, profit_factor `7.15`, top_exit `knife_take_profit_2_glued`
+- `early_crash_probe_buy` [core_alpha_family]: trades `6`, share `6.59%`, avg_return `4.62%`, sum_return `27.70%`, profit_factor `10.52`, top_exit `knife_take_profit_2_glued`
+- `dual_gold_resonance_buy` [support_alpha_family]: trades `13`, share `14.29%`, avg_return `1.06%`, sum_return `13.72%`, profit_factor `2.08`, top_exit `knife_take_profit_2_glued`
+- `oversold_recovery_buy` [core_alpha_family]: trades `4`, share `4.40%`, avg_return `3.35%`, sum_return `13.39%`, profit_factor `6.65`, top_exit `knife_take_profit_2_glued`
+- `post_sell_rebound_buy` [secondary_research_family]: trades `4`, share `4.40%`, avg_return `1.84%`, sum_return `7.35%`, profit_factor `2.56`, top_exit `negative_a1_no_b1_recovery:kdj_sell`
+
+## Weak Research Pockets
+- `deep_oversold_rebound_buy:deep_capitulation`: trades `1`, avg_return `-2.05%`, sum_return `-2.05%`, profit_factor `0.00`
+- `oversold_reversal_after_ql_buy`: trades `1`, avg_return `-0.77%`, sum_return `-0.77%`, profit_factor `0.00`
+- `deep_oversold_rebound_buy:positive_b1_rebound`: trades `1`, avg_return `-0.18%`, sum_return `-0.18%`, profit_factor `0.00`
+- `deep_oversold_rebound_buy:mixed_oversold`: trades `2`, avg_return `0.01%`, sum_return `0.02%`, profit_factor `1.01`
+- `deep_oversold_rebound_buy:shallow_false_start`: trades `1`, avg_return `0.12%`, sum_return `0.12%`, profit_factor `inf`
+
+## Kept Winner Structure
+- `glued_buy / 41d+`: winners `9`, avg_return `25.57%`, sum_return `230.16%`
+- `glued_buy / 11-20d`: winners `10`, avg_return `2.50%`, sum_return `25.01%`
+- `glued_buy / 21-40d`: winners `2`, avg_return `12.42%`, sum_return `24.84%`
+- `early_crash_probe_buy / 41d+`: winners `1`, avg_return `20.56%`, sum_return `20.56%`
+- `dual_gold_resonance_buy / 21-40d`: winners `2`, avg_return `9.32%`, sum_return `18.65%`
+
+## Entry / Exit Interaction Attribution
+- positive `mid_regime / glued_buy -> crash_protection_exit`: trades `2`, sum_return `79.18%`, avg_return `39.59%`, PF `inf`
+- positive `mid_regime / glued_buy -> prewarning_reduction_exit`: trades `2`, sum_return `49.55%`, avg_return `24.77%`, PF `inf`
+- positive `mid_regime / glued_buy -> predictive_b1_break_exit`: trades `1`, sum_return `36.85%`, avg_return `36.85%`, PF `inf`
+- positive `mid_regime / glued_buy -> high_regime_confirmed_exit:kdj_sell`: trades `2`, sum_return `32.29%`, avg_return `16.14%`, PF `inf`
+- positive `high_regime / glued_buy -> high_regime_momentum_break`: trades `1`, sum_return `32.17%`, avg_return `32.17%`, PF `inf`
+- positive `crash_probe_regime / early_crash_probe_buy -> ql_high_zone_take_profit`: trades `1`, sum_return `20.56%`, avg_return `20.56%`, PF `inf`
+- positive `low_oversold_regime / oversold_recovery_buy -> high_regime_confirmed_exit:kdj_sell`: trades `1`, sum_return `14.72%`, avg_return `14.72%`, PF `inf`
+- positive `low_oversold_regime / dual_gold_resonance_buy -> prewarning_reduction_exit`: trades `1`, sum_return `13.29%`, avg_return `13.29%`, PF `inf`
+
+## Drag Interaction Pockets
+- drag `low_oversold_regime / deep_oversold_rebound_buy:positive_b1_rebound -> knife_take_profit_2_glued`: trades `1`, sum_return `-0.18%`, avg_return `-0.18%`, PF `0.00`
+- drag `low_oversold_regime / glued_buy -> knife_take_profit_2_glued`: trades `2`, sum_return `-0.31%`, avg_return `-0.16%`, PF `0.69`
+- drag `rebound_after_sell_regime / post_sell_rebound_buy -> knife_take_profit_2_glued`: trades `1`, sum_return `-0.49%`, avg_return `-0.49%`, PF `0.00`
+- drag `rebound_after_sell_regime / oversold_reversal_after_ql_buy -> knife_take_profit_2_glued`: trades `1`, sum_return `-0.77%`, avg_return `-0.77%`, PF `0.00`
+- drag `crash_probe_regime / early_crash_probe_buy -> hard_exit:kdj_sell`: trades `1`, sum_return `-0.85%`, avg_return `-0.85%`, PF `0.00`
+- drag `high_regime / glued_buy -> knife_take_profit_2_glued`: trades `1`, sum_return `-0.89%`, avg_return `-0.89%`, PF `0.00`
+- drag `low_oversold_regime / deep_oversold_rebound_buy:classic_oversold -> negative_a1_no_b1_recovery:kdj_sell`: trades `1`, sum_return `-0.92%`, avg_return `-0.92%`, PF `0.00`
+- drag `low_oversold_regime / dual_gold_resonance_buy -> ql_mid_zone_take_profit`: trades `1`, sum_return `-1.20%`, avg_return `-1.20%`, PF `0.00`
+
+## Removed-Trade Recheck
+- removed trades vs control: `11`
+- removed-set avg_return `-1.81%`
+- removed-set win_rate `0.00%`
+- removed-set profit_factor `0.00`
+- KEEP_REMOVAL `11` | OBSERVE_REMOVAL `0` | OVER_REMOVAL `0`
+- `hot_positive_b1_cap75`: trades `7`, avg_return `-1.50%`, avg_holding `5.1`, avg_mfe `1.40%`
+- `low_weak_range`: trades `4`, avg_return `-2.35%`, avg_holding `3.0`, avg_mfe `0.96%`
+
+## Quant Judgment
+- Core alpha remains concentrated in `glued_buy`, `early_crash_probe_buy`, and the preserved medium/long holding structure.
+- `dual_gold_resonance_buy` and `deep_oversold_rebound_buy:classic_oversold` remain support families, not the main alpha engine.
+- Weak pockets still exist in secondary rebound / weak deep-oversold variants, but they are not where the refined branch gets its headline improvement.
+- The refined branch improves mainly by deleting low-quality short glued trades; this remains explainable and not dependent on deleting profitable samples.
+- The next step should therefore move to execution-aware robustness, not back to workbook-style residual tuning.

+ 26 - 0
research/dragon/v2/dragon_refined_stability_review.md

@@ -0,0 +1,26 @@
+# Dragon Refined Stability Review
+
+## Scope
+- branches: `alpha_first_selective_veto` vs `alpha_first_glued_refined_hot_cap`
+- execution models: `same_close`, `next_open`, `next_close`
+- costs: `0`, `5`, `10`, `20 bps/side`
+
+## Latency Review
+- same_close control vs refined: avg_return `2.86%` -> `3.42%`, PF `4.04` -> `5.11`
+- next_open control vs refined: avg_return `2.76%` -> `3.31%`, PF `3.78` -> `4.73`
+- next_close control vs refined: avg_return `1.98%` -> `2.44%`, PF `2.37` -> `2.78`
+
+## Cost + Next-Open Stress
+- next_open + 20 bps/side control CAGR `22.41%` vs refined `25.51%`
+- next_open + 20 bps/side control PF `2.92` vs refined `3.64`
+- next_open + 20 bps/side control max DD `-28.86%` vs refined `-19.08%`
+
+## Risk Cluster Review
+- next_open control max loss streak `10` vs refined `8`
+- next_open control worst 5-trade sum `-10.11%` vs refined `-7.96%`
+- next_open control short-loss share `90.40%` vs refined `87.99%`
+- next_open control worst loss family `glued_buy` vs refined `glued_buy`
+
+## Judgment
+- If refined still leads after next-bar execution and cost drag, its edge is less likely to be a same-bar backtest artifact.
+- If refined also keeps loss clustering and drawdown no worse than control, the branch is moving closer to a deployable research baseline.

+ 30 - 0
research/dragon/v2/dragon_research_direction_update.md

@@ -0,0 +1,30 @@
+# Dragon Research Direction Update
+
+## Direction Shift
+
+- The research center of gravity is no longer workbook-style residual alignment.
+- The active objective is now to formalize the stronger alpha candidate path around `alpha_first_glued_refined_hot_cap`.
+- `alpha_first_selective_veto` remains the control branch.
+- `workbook_preserving` remains the reconstruction reference branch.
+
+## Working Principles
+
+- No more black-box micro-tuning around isolated workbook dates.
+- New changes must be justified by:
+  - trade-quality improvement
+  - stability under small threshold perturbation
+  - robustness under transaction-cost pressure
+  - explainable removed-trade attribution
+- Workbook overlap is now a governance cost metric, not the main optimization target.
+
+## Current Research Question
+
+- Can `alpha_first_glued_refined_hot_cap` be validated strongly enough to move from governed candidate to formal alpha baseline?
+
+## Immediate Workstream
+
+- cost stress test
+- local threshold-neighborhood sensitivity
+- year/regime/holding-bucket consistency review
+- equity-curve and drawdown quality review
+- only then consider formal promotion

+ 40 - 0
research/dragon/v2/dragon_residual_trade_review.md

@@ -0,0 +1,40 @@
+# Dragon Residual Trade Review
+
+## Snapshot
+- Residual real-trade rows reviewed: `2`
+- DELETE_CANDIDATE: `0`
+- KEEP_BRIDGE / KEEP_ALPHA: `2`
+- OBSERVE / OBSERVE_BRIDGE: `0`
+
+## Recommendation Summary
+### KEEP_ALPHA
+- `2023-10-26` `BUY` `early_crash_probe_buy` | trade `2023-10-26 -> 2023-11-10` | ret `7.67%` mfe `9.73%` mae `-2.20%` | 虽然是额外交易,但收益明显,可能代表工作簿未显式记录的顺势 alpha。
+- `2023-11-10` `SELL` `knife_take_profit_2_wait_ql_s` | trade `2023-10-26 -> 2023-11-10` | ret `7.67%` mfe `9.73%` mae `-2.20%` | 虽然是额外交易,但收益明显,可能代表工作簿未显式记录的顺势 alpha。
+
+## Detailed Cards
+
+### 2023-10-26 BUY early_crash_probe_buy
+- Regime: `deep_oversold`
+- Trade: `2023-10-26 -> 2023-11-10` | buy `early_crash_probe_buy` | sell `knife_take_profit_2_wait_ql_s`
+- Holding / Return: `15` days / `7.67%`
+- MFE / MAE: `9.73%` / `-2.20%`
+- Event indicators: `a1=-0.0426` `b1=-0.0288` `c1=7.23`
+- Pre/Post 5d return: `-2.24%` / `3.92%`
+- Chain type: `isolated_extra_trade` | entry aligned `False` | exit aligned `False`
+- Delete impact: 该点与配对交易构成局部闭环,删除通常应连同 2023-10-26->2023-11-10 一并评估。
+- Recommendation: `KEEP_ALPHA` | 虽然是额外交易,但收益明显,可能代表工作簿未显式记录的顺势 alpha。
+- Workbook context: 2023-10-16 SELL(aux_signal)
+- Strategy context: 2023-10-16 SELL(aux_signal) | 2023-10-26 BUY(real_trade)
+
+### 2023-11-10 SELL knife_take_profit_2_wait_ql_s
+- Regime: `rebound_mid`
+- Trade: `2023-10-26 -> 2023-11-10` | buy `early_crash_probe_buy` | sell `knife_take_profit_2_wait_ql_s`
+- Holding / Return: `15` days / `7.67%`
+- MFE / MAE: `9.73%` / `-2.20%`
+- Event indicators: `a1=0.0166` `b1=0.2958` `c1=45.09`
+- Pre/Post 5d return: `1.98%` / `-1.34%`
+- Chain type: `isolated_extra_trade` | entry aligned `False` | exit aligned `False`
+- Delete impact: 该点与配对交易构成局部闭环,删除通常应连同 2023-10-26->2023-11-10 一并评估。
+- Recommendation: `KEEP_ALPHA` | 虽然是额外交易,但收益明显,可能代表工作簿未显式记录的顺势 alpha。
+- Workbook context: 2023-11-10 SELL(aux_signal):粘合-刀口收血2
+- Strategy context: 2023-11-10 SELL(real_trade) | 2023-11-16 SELL(aux_signal)

+ 18 - 0
research/dragon/v2/dragon_review_branch_metric_consistency.md

@@ -0,0 +1,18 @@
+# Dragon Review - Branch Metric Consistency
+
+## Scope
+- Sources compared:
+- `dragon_strategy_overview.csv`
+- `dragon_glued_refined_branch_summary.csv`
+- `dragon_alpha_first_branch_summary.csv`
+- `dragon_rc1_config_snapshot.json`
+
+- Compared rows: `27`
+- Mismatches: `0`
+
+- All compared branch metrics are consistent across current outputs.
+
+## Judgment
+- `match` means the same branch/metric agrees across all currently available source files.
+- `mismatch` means at least one report family is using a different metric definition or evaluation window.
+- `single_source` means only one current artifact exposes that metric, so cross-check confidence is lower.

+ 18 - 0
research/dragon/v2/dragon_review_execution_monitor.md

@@ -0,0 +1,18 @@
+# Dragon Review - Execution And Monitor Consistency
+
+## Governance Metrics
+- `removed_trade_over_removal_count`: monitor `0.0` vs source-derived `0.0` -> `match`
+- `local_sensitivity_robust_case_count`: monitor `52.0` vs source-derived `52.0` -> `match`
+
+## Execution Fallback Rule
+- `dragon_daily_signal_pipeline.py` uses NaN on missing next-bar execution prices: `True`
+- `dragon_refined_execution_validation.py` uses NaN on missing next-bar execution prices: `True`
+
+## Weekly Monitor Separation
+- `dragon_forward_weekly_summary.csv` includes `system_monitor` row: `True`
+- `dragon_forward_weekly_review.html` includes `system_monitor` text: `False`
+
+## Judgment
+- The monitor chain is trustworthy only if governance metrics are derived from current source artifacts rather than hard-coded constants.
+- The execution-aware chain is trustworthy only if missing next-bar prices do not silently fall back to same-bar close.
+- Weekly summary is cleaner now because branch rows and system-level monitor counts are separated.

+ 26 - 0
research/dragon/v2/dragon_review_reporting_integrity.md

@@ -0,0 +1,26 @@
+# Dragon Review - Reporting Integrity
+
+## File Existence
+- `dragon_reports_index.html` -> `True`
+- `dragon_daily_signal_report.html` -> `True`
+- `dragon_forward_weekly_review.html` -> `True`
+- `dragon_historical_trade_details.html` -> `True`
+- `dragon_indicator_strategy_guide_cn.html` -> `True`
+- `html_reports\index.html` -> `True`
+- `html_reports\dragon_daily_signal_report_2026-04-03.html` -> `True`
+- `html_reports\dragon_forward_weekly_review_2026-04-03.html` -> `True`
+- `html_reports\dragon_historical_trade_details_2026-04-03.html` -> `True`
+
+## Link / Feature Checks
+- root index links to root daily report: `True`
+- root index links to archived daily report: `True`
+- archive index links locally inside html_reports: `True`
+- detail page contains snapshot summary strip: `True`
+- detail page contains event summary labels: `True`
+- detail page contains query filters: `True`
+- daily report links to historical detail page: `True`
+
+## Judgment
+- Root and archive HTML outputs are present and linked through the expected root-vs-archive relative paths.
+- Historical detail reporting currently includes the new indicator snapshot event-summary strip and deep-link filter controls.
+- Terminal mojibake remains a shell-display issue; these checks only validate file presence and embedded text markers, not browser rendering fidelity.

+ 37 - 0
research/dragon/v2/dragon_review_window_consistency.md

@@ -0,0 +1,37 @@
+# Dragon Review - Window Consistency
+
+## Scope
+- Goal: verify that in-sample / workbook-window trade statistics do not keep window-external exits.
+- Rule: for bounded research windows, trade filters must constrain both `buy_date` and `sell_date`.
+
+## Summary
+- PASS: `20`
+- EXEMPT: `1`
+- FAIL: `0`
+
+## Result Table
+- `dragon_backtest.py` | evaluation | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_cost_stress_test.py` | evaluation | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_deep_oversold_confirmation_experiments.py` | experiment | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_deep_oversold_experiments.py` | experiment | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_deep_oversold_selective_veto_experiments.py` | experiment | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_equity_curve_review.py` | evaluation | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_glued_alpha_candidate.py` | evaluation | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_glued_refined_branch_review.py` | evaluation | hybrid bounded window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_glued_refined_removed_trade_attribution.py` | attribution | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_glued_refined_sensitivity.py` | evaluation | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_glued_refine_experiments.py` | experiment | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_predictive_break_experiments.py` | experiment | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_rc1_release.py` | release | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_refined_alpha_attribution.py` | attribution | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_refined_execution_validation.py` | evaluation | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_rule_ablation.py` | evaluation | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_short_holding_audit.py` | audit | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_short_holding_experiments.py` | experiment | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_strategy_overview.py` | overview | fixed release window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_threshold_perturbation.py` | evaluation | workbook window | `PASS` | Trade filter constrains both buy_date and sell_date.
+- `dragon_daily_signal_pipeline.py` | live | live / forward window | `EXEMPT` | Live / forward pipeline intentionally keeps open-ended trade coverage.
+
+## Judgment
+- The bounded research/evaluation pack is now on a consistent dual-bound trade-window rule.
+- `dragon_daily_signal_pipeline.py` remains intentionally exempt because it serves the live / forward chain rather than workbook-window evaluation.

+ 81 - 0
research/dragon/v2/dragon_robustness_report.md

@@ -0,0 +1,81 @@
+# Dragon Robustness Report
+
+## Baseline
+- trades: `107`
+- win_rate: `44.86%`
+- avg_return: `2.52%`
+- median_return: `-0.60%`
+- profit_factor: `3.31`
+- avg_mfe: `6.66%`
+- avg_mae: `-2.66%`
+- avg_exit_followthrough_5d: `-2.95%`
+
+## Holding-Bucket View
+- `00-05d`: trades `30`, win_rate `0.00%`, avg_return `-2.03%`, avg_mfe `0.95%`, avg_mae `-2.61%`
+- `06-10d`: trades `35`, win_rate `34.29%`, avg_return `-0.81%`, avg_mfe `3.01%`, avg_mae `-2.94%`
+- `11-20d`: trades `21`, win_rate `80.95%`, avg_return `1.45%`, avg_mfe `4.36%`, avg_mae `-2.01%`
+- `21-40d`: trades `10`, win_rate `80.00%`, avg_return `6.33%`, avg_mfe `10.18%`, avg_mae `-3.36%`
+- `41d+`: trades `11`, win_rate `100.00%`, avg_return `24.13%`, avg_mfe `35.03%`, avg_mae `-2.56%`
+
+## Yearly View
+- `2016`: trades `13`, win_rate `46.15%`, avg_return `1.15%`, profit_factor `2.25`
+- `2017`: trades `11`, win_rate `27.27%`, avg_return `-0.42%`, profit_factor `0.67`
+- `2018`: trades `16`, win_rate `37.50%`, avg_return `0.05%`, profit_factor `1.05`
+- `2019`: trades `10`, win_rate `40.00%`, avg_return `3.12%`, profit_factor `3.24`
+- `2020`: trades `6`, win_rate `66.67%`, avg_return `11.16%`, profit_factor `23.56`
+- `2021`: trades `9`, win_rate `66.67%`, avg_return `5.35%`, profit_factor `13.29`
+- `2022`: trades `11`, win_rate `45.45%`, avg_return `0.78%`, profit_factor `1.46`
+- `2023`: trades `12`, win_rate `50.00%`, avg_return `1.36%`, profit_factor `3.10`
+- `2024`: trades `12`, win_rate `33.33%`, avg_return `3.26%`, profit_factor `2.92`
+- `2025`: trades `6`, win_rate `66.67%`, avg_return `8.42%`, profit_factor `11.92`
+- `2026`: trades `1`, win_rate `0.00%`, avg_return `-1.97%`, profit_factor `0.00`
+
+## Sample Split
+- `2016-2020`: trades `56`, win_rate `41.07%`, avg_return `1.95%`, profit_factor `2.83`
+- `2021-2025`: trades `51`, win_rate `49.02%`, avg_return `3.15%`, profit_factor `3.81`
+
+## Regime View
+- `mid_regime`: trades `55`, avg_return `3.49%`, profit_factor `4.31`, avg_mae `-2.29%`
+- `low_oversold_regime`: trades `32`, avg_return `0.35%`, profit_factor `1.27`, avg_mae `-3.23%`
+- `rebound_after_sell_regime`: trades `8`, avg_return `1.50%`, profit_factor `2.44`, avg_mae `-2.47%`
+- `crash_probe_regime`: trades `6`, avg_return `4.62%`, profit_factor `10.52`, avg_mae `-4.03%`
+- `high_regime`: trades `6`, avg_return `4.49%`, profit_factor `5.56`, avg_mae `-1.97%`
+
+## Best Entry Rules
+- `early_crash_probe_buy`: trades `6`, avg_return `4.62%`, win_rate `66.67%`, avg_mfe `8.01%`
+- `glued_buy`: trades `61`, avg_return `3.71%`, win_rate `45.90%`, avg_mfe `7.98%`
+- `oversold_recovery_buy`: trades `4`, avg_return `3.35%`, win_rate `50.00%`, avg_mfe `7.72%`
+
+## Weakest Entry Rules
+- `deep_oversold_rebound_buy:shallow_false_start`: trades `3`, avg_return `-2.63%`, win_rate `33.33%`, avg_mae `-3.52%`
+- `deep_oversold_rebound_buy:mixed_oversold`: trades `3`, avg_return `-1.80%`, win_rate `33.33%`, avg_mae `-5.57%`
+- `deep_oversold_rebound_buy:classic_oversold`: trades `5`, avg_return `0.04%`, win_rate `60.00%`, avg_mae `-2.28%`
+
+## Best Exit Rules
+- `prewarning_reduction_exit`: trades `3`, avg_exit_followthrough_5d `-5.70%`, avg_return `20.95%`
+- `high_regime_confirmed_exit:kdj_sell`: trades `4`, avg_exit_followthrough_5d `-4.51%`, avg_return `13.32%`
+- `negative_a1_no_b1_recovery:kdj_sell`: trades `8`, avg_exit_followthrough_5d `-3.58%`, avg_return `-2.55%`
+
+## Weakest Exit Rules
+- `ql_mid_zone_take_profit`: trades `3`, avg_exit_followthrough_5d `-0.46%`, avg_return `-0.83%`
+- `hard_exit:kdj_sell`: trades `4`, avg_exit_followthrough_5d `-0.70%`, avg_return `-3.53%`
+- `knife_take_profit_2_wait_ql_s`: trades `5`, avg_exit_followthrough_5d `-1.48%`, avg_return `1.92%`
+
+## Realized Contribution Stress Test
+- Interpretation: this removes realized trades by rule from the current trade set; it is not yet a full re-run stability test.
+- Worst removals for average return:
+- `entry_rule / glued_buy`: removed `61` trades, delta_avg_return `-1.57%`, delta_profit_factor `-1.54`
+- `exit_rule / crash_protection_exit`: removed `2` trades, delta_avg_return `-0.71%`, delta_profit_factor `-0.68`
+- `exit_rule / prewarning_reduction_exit`: removed `3` trades, delta_avg_return `-0.53%`, delta_profit_factor `-0.54`
+- `exit_rule / high_regime_confirmed_exit:kdj_sell`: removed `4` trades, delta_avg_return `-0.42%`, delta_profit_factor `-0.46`
+- `exit_rule / predictive_b1_break_exit`: removed `1` trades, delta_avg_return `-0.32%`, delta_profit_factor `-0.32`
+- Best removals for average return:
+- `exit_rule / knife_take_profit_2_glued`: removed `51` trades, delta_avg_return `2.72%`, delta_profit_factor `2.36`
+- `exit_rule / negative_a1_no_b1_recovery:kdj_sell`: removed `8` trades, delta_avg_return `0.41%`, delta_profit_factor `0.70`
+- `entry_rule / dual_gold_resonance_buy`: removed `14` trades, delta_avg_return `0.25%`, delta_profit_factor `0.22`
+- `exit_rule / hard_exit:kdj_sell`: removed `4` trades, delta_avg_return `0.23%`, delta_profit_factor `0.45`
+- `entry_rule / deep_oversold_rebound_buy:shallow_false_start`: removed `3` trades, delta_avg_return `0.15%`, delta_profit_factor `0.24`
+
+## Next Stage-3 Gaps
+- Threshold perturbation is not yet formalized because the current strategy logic is still hard-coded, not parameterized.
+- A true leave-one-rule-out stability test still needs rerun-able switches in `dragon_strategy.py` rather than ex-post trade deletion only.

+ 37 - 0
research/dragon/v2/dragon_rule_ablation.md

@@ -0,0 +1,37 @@
+# Dragon Rule Ablation
+
+## Baseline
+- trades: `107`
+- win_rate: `44.86%`
+- avg_return: `2.52%`
+- profit_factor: `3.31`
+- real BUY overlap: `106`
+- real SELL overlap: `105`
+
+## Protected Experiments
+- Interpretation: these experiments preserved current real-trade overlap and only changed quality or auxiliary behavior.
+- `disable_entry_non_glued_positive_expansion_buy`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_exit_knife_take_profit_1`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_exit_knife_take_profit_2_glued`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_exit_crash_protection_exit`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_aux_same_side_cycle_cap`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_knife_take_profit_2_wait_ql`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+
+## Most Harmful Removals
+- `disable_exit_ql_mid_zone_take_profit`: delta_avg_return `-0.20%`, real BUY `105`, real SELL `103`, delta_trades `-1`
+- `disable_exit_prewarning_reduction_exit`: delta_avg_return `-0.08%`, real BUY `106`, real SELL `102`, delta_trades `0`
+- `disable_entry_post_sell_rebound_buy`: delta_avg_return `-0.05%`, real BUY `103`, real SELL `103`, delta_trades `-2`
+- `disable_exit_high_regime_confirmed_exit_kdj`: delta_avg_return `-0.04%`, real BUY `105`, real SELL `101`, delta_trades `-1`
+- `disable_exit_knife_take_profit_2_glued`: delta_avg_return `0.00%`, real BUY `106`, real SELL `105`, delta_trades `0`
+- `disable_entry_non_glued_positive_expansion_buy`: delta_avg_return `0.00%`, real BUY `106`, real SELL `105`, delta_trades `0`
+- `disable_exit_crash_protection_exit`: delta_avg_return `0.00%`, real BUY `106`, real SELL `105`, delta_trades `0`
+- `disable_exit_knife_take_profit_1`: delta_avg_return `0.00%`, real BUY `106`, real SELL `105`, delta_trades `0`
+
+## Best Removal Candidates
+- `disable_exit_predictive_b1_break_exit`: delta_avg_return `0.07%`, delta_profit_factor `0.04`, real BUY `105`, real SELL `104`
+- `disable_entry_early_crash_probe_buy`: delta_avg_return `0.03%`, delta_profit_factor `0.02`, real BUY `105`, real SELL `104`
+- `disable_entry_oversold_reversal_after_ql_buy`: delta_avg_return `0.03%`, delta_profit_factor `0.02`, real BUY `105`, real SELL `104`
+- `disable_entry_oversold_recovery_buy`: delta_avg_return `0.01%`, delta_profit_factor `-0.01`, real BUY `105`, real SELL `104`
+- `disable_entry_deep_oversold_rebound_buy`: delta_avg_return `0.54%`, delta_profit_factor `0.85`, real BUY `93`, real SELL `92`
+- `disable_entry_dual_gold_resonance_buy`: delta_avg_return `0.18%`, delta_profit_factor `0.07`, real BUY `92`, real SELL `93`
+- `disable_entry_glued_buy`: delta_avg_return `0.16%`, delta_profit_factor `0.10`, real BUY `44`, real SELL `50`

+ 89 - 0
research/dragon/v2/dragon_rule_taxonomy.md

@@ -0,0 +1,89 @@
+# Dragon Rule Taxonomy
+
+## Layer 1 Market State
+- `high_regime`: entries born in hot / high-C1 continuation or late-trend expansion states.
+- `mid_regime`: classic glued or middle-zone continuation entries.
+- `low_oversold_regime`: deep oversold, dual-gold reversal, low-C1 rebound, oversold recovery entries.
+- `rebound_after_sell_regime`: reentries after a prior sell, predictive error recovery, post-washout restart.
+- `crash_probe_regime`: early crash probe entries that intentionally test panic states.
+
+## Layer 2 Entry Qualification
+- `hot_exit_reentry_buy` -> `bridge_reentry`
+- `predictive_error_reentry_buy` -> `bridge_reentry`
+- `early_crash_probe_buy` -> `crash_probe_entry`
+- `dual_gold_resonance_buy` -> `dual_gold_entry`
+- `glued_buy` -> `glued_base_entry`
+- `deep_oversold_rebound_buy:classic_oversold` -> `oversold_reversal_entry`
+- `deep_oversold_rebound_buy:deep_capitulation` -> `oversold_reversal_entry`
+- `deep_oversold_rebound_buy:mixed_oversold` -> `oversold_reversal_entry`
+- `deep_oversold_rebound_buy:positive_b1_rebound` -> `oversold_reversal_entry`
+- `deep_oversold_rebound_buy:shallow_false_start` -> `oversold_reversal_entry`
+- `oversold_recovery_buy` -> `oversold_reversal_entry`
+- `oversold_reversal_after_ql_buy` -> `oversold_reversal_entry`
+- `post_sell_rebound_buy` -> `rebound_reentry`
+- `post_washout_kdj_reentry_buy` -> `workbook_special_restart`
+
+## Layer 3 Position Management
+- `glued_exit:kdj_sell` -> `confirmed_trend_exit`
+- `high_regime_confirmed_exit:kdj_sell` -> `confirmed_trend_exit`
+- `small_positive_a1_declining:ql_sell` -> `confirmed_trend_exit`
+- `early_positive_take_profit` -> `first_take_profit`
+- `knife_take_profit_1` -> `first_take_profit`
+- `knife_take_profit_2_glued` -> `first_take_profit`
+- `knife_take_profit_2_wait_ql_s` -> `first_take_profit`
+- `oversold_rebound_take_profit` -> `first_take_profit`
+- `hard_exit:kdj_sell` -> `hard_risk_exit`
+- `hard_exit:ql_sell` -> `hard_risk_exit`
+- `medium_hot_take_profit` -> `high_regime_take_profit`
+- `ql_high_zone_take_profit` -> `high_regime_take_profit`
+- `ql_mid_zone_take_profit` -> `high_regime_take_profit`
+- `low_zone_dual_gold_exit:kdj_sell` -> `negative_a1_exit`
+- `negative_a1_b1_not_strong:kdj_sell` -> `negative_a1_exit`
+- `negative_a1_no_b1_recovery:kdj_sell` -> `negative_a1_exit`
+- `negative_a1_no_b1_recovery:ql_sell` -> `negative_a1_exit`
+- `crash_protection_exit` -> `predictive_risk_exit`
+- `early_failed_rebound_exit` -> `predictive_risk_exit`
+- `predictive_b1_break_exit` -> `predictive_risk_exit`
+- `high_regime_momentum_break` -> `prewarning_exit`
+- `prewarning_reduction_exit` -> `prewarning_exit`
+- `high_zone_post_ql_fade_exit` -> `ql_followthrough_exit`
+- `post_dual_sell_decay_exit` -> `ql_followthrough_exit`
+- `post_ql_decay_exit` -> `ql_followthrough_exit`
+
+## Layer 4 Auxiliary Signal Context
+- `no_aux_signal`: no auxiliary confirmation inside the holding window.
+- `aux_buy_only`: only holding-period bullish confirmation appeared.
+- `aux_sell_only`: only post-exit or in-trade bearish confirmation appeared.
+- `aux_buy_and_aux_sell`: both auxiliary bullish and bearish signals appeared within the trade path.
+
+## Path Summary
+- `mid_regime` -> `glued_base_entry` -> `first_take_profit` -> `aux_sell_only`: `20`
+- `mid_regime` -> `glued_base_entry` -> `first_take_profit` -> `no_aux_signal`: `15`
+- `low_oversold_regime` -> `oversold_reversal_entry` -> `first_take_profit` -> `no_aux_signal`: `6`
+- `mid_regime` -> `glued_base_entry` -> `confirmed_trend_exit` -> `aux_sell_only`: `5`
+- `low_oversold_regime` -> `dual_gold_entry` -> `first_take_profit` -> `aux_sell_only`: `4`
+- `crash_probe_regime` -> `crash_probe_entry` -> `first_take_profit` -> `aux_sell_only`: `3`
+- `low_oversold_regime` -> `oversold_reversal_entry` -> `negative_a1_exit` -> `no_aux_signal`: `3`
+- `low_oversold_regime` -> `oversold_reversal_entry` -> `hard_risk_exit` -> `no_aux_signal`: `3`
+- `low_oversold_regime` -> `dual_gold_entry` -> `negative_a1_exit` -> `no_aux_signal`: `3`
+- `low_oversold_regime` -> `oversold_reversal_entry` -> `negative_a1_exit` -> `aux_sell_only`: `3`
+- `mid_regime` -> `glued_base_entry` -> `negative_a1_exit` -> `aux_sell_only`: `2`
+- `low_oversold_regime` -> `oversold_reversal_entry` -> `first_take_profit` -> `aux_sell_only`: `2`
+- `mid_regime` -> `glued_base_entry` -> `confirmed_trend_exit` -> `no_aux_signal`: `2`
+- `low_oversold_regime` -> `glued_base_entry` -> `first_take_profit` -> `no_aux_signal`: `2`
+- `mid_regime` -> `glued_base_entry` -> `predictive_risk_exit` -> `aux_buy_and_aux_sell`: `2`
+- `mid_regime` -> `glued_base_entry` -> `prewarning_exit` -> `aux_buy_and_aux_sell`: `2`
+- `low_oversold_regime` -> `dual_gold_entry` -> `hard_risk_exit` -> `aux_sell_only`: `1`
+- `low_oversold_regime` -> `dual_gold_entry` -> `first_take_profit` -> `no_aux_signal`: `1`
+- `low_oversold_regime` -> `dual_gold_entry` -> `high_regime_take_profit` -> `no_aux_signal`: `1`
+- `low_oversold_regime` -> `dual_gold_entry` -> `high_regime_take_profit` -> `aux_buy_only`: `1`
+- `high_regime` -> `glued_base_entry` -> `prewarning_exit` -> `aux_buy_and_aux_sell`: `1`
+- `high_regime` -> `glued_base_entry` -> `high_regime_take_profit` -> `aux_sell_only`: `1`
+- `crash_probe_regime` -> `crash_probe_entry` -> `hard_risk_exit` -> `aux_sell_only`: `1`
+- `high_regime` -> `glued_base_entry` -> `first_take_profit` -> `aux_sell_only`: `1`
+- `crash_probe_regime` -> `crash_probe_entry` -> `high_regime_take_profit` -> `aux_buy_and_aux_sell`: `1`
+- `crash_probe_regime` -> `crash_probe_entry` -> `hard_risk_exit` -> `no_aux_signal`: `1`
+- `low_oversold_regime` -> `dual_gold_entry` -> `confirmed_trend_exit` -> `no_aux_signal`: `1`
+- `low_oversold_regime` -> `dual_gold_entry` -> `confirmed_trend_exit` -> `aux_sell_only`: `1`
+- `low_oversold_regime` -> `oversold_reversal_entry` -> `confirmed_trend_exit` -> `aux_buy_only`: `1`
+- `low_oversold_regime` -> `dual_gold_entry` -> `prewarning_exit` -> `aux_buy_and_aux_sell`: `1`

+ 24 - 0
research/dragon/v2/dragon_short_holding_experiments.md

@@ -0,0 +1,24 @@
+# Dragon Short Holding Experiments
+
+- Baseline branch: `alpha_first_selective_veto`.
+- Goal: reduce the main short-holding drag with the smallest possible extra complexity.
+
+## Summary
+- `baseline_alpha_first`: trades `103`, avg_return `2.81%`, profit_factor `3.96`, short_avg_return `-1.15%`, `00-05d` `-1.72%`, `06-10d` `-0.69%`, real BUY / SELL `102/101`
+- `disable_post_sell_rebound_buy`: trades `101`, avg_return `2.76%`, profit_factor `3.89`, short_avg_return `-1.16%`, `00-05d` `-1.72%`, `06-10d` `-0.70%`, real BUY / SELL `99/99`
+- `glued_veto_hot_positive_b1`: trades `96`, avg_return `3.11%`, profit_factor `4.42`, short_avg_return `-1.08%`, `00-05d` `-1.79%`, `06-10d` `-0.58%`, real BUY / SELL `94/93`
+- `glued_veto_low_weak_range`: trades `99`, avg_return `3.02%`, profit_factor `4.38`, short_avg_return `-1.06%`, `00-05d` `-1.61%`, `06-10d` `-0.69%`, real BUY / SELL `98/97`
+- `glued_veto_hot_and_low`: trades `92`, avg_return `3.35%`, profit_factor `4.95`, short_avg_return `-0.99%`, `00-05d` `-1.67%`, `06-10d` `-0.58%`, real BUY / SELL `90/89`
+- `glued_veto_hot_low_and_disable_post_sell`: trades `90`, avg_return `3.30%`, profit_factor `4.87`, short_avg_return `-1.00%`, `00-05d` `-1.67%`, `06-10d` `-0.58%`, real BUY / SELL `87/87`
+
+## Delta Vs Alpha-First Baseline
+- `disable_post_sell_rebound_buy`: delta_avg_return `-0.05%`, delta_profit_factor `-0.07`, delta_short_avg_return `-0.01%`, delta_glued_short_avg_return `0.00%`, real BUY / SELL `99/99`
+- `glued_veto_hot_positive_b1`: delta_avg_return `0.30%`, delta_profit_factor `0.45`, delta_short_avg_return `0.06%`, delta_glued_short_avg_return `0.04%`, real BUY / SELL `94/93`
+- `glued_veto_low_weak_range`: delta_avg_return `0.21%`, delta_profit_factor `0.42`, delta_short_avg_return `0.08%`, delta_glued_short_avg_return `0.12%`, real BUY / SELL `98/97`
+- `glued_veto_hot_and_low`: delta_avg_return `0.54%`, delta_profit_factor `0.98`, delta_short_avg_return `0.16%`, delta_glued_short_avg_return `0.20%`, real BUY / SELL `90/89`
+- `glued_veto_hot_low_and_disable_post_sell`: delta_avg_return `0.50%`, delta_profit_factor `0.91`, delta_short_avg_return `0.15%`, delta_glued_short_avg_return `0.20%`, real BUY / SELL `87/87`
+
+## Quant Judgment
+- Best branch in this pack: `glued_veto_hot_and_low` with avg_return `3.35%` and profit_factor `4.95`.
+- Compare the winning branch to the audit: if glued short trades fall materially while overlap loss stays controlled, the next optimization should stay on the glued-entry side.
+- If disabling `post_sell_rebound_buy` contributes little, that family is secondary for this stage.

+ 39 - 0
research/dragon/v2/dragon_short_holding_family_review.md

@@ -0,0 +1,39 @@
+# Dragon Short Holding Family Review
+
+- Scope: `alpha_first_selective_veto` short trades only.
+- Drag score definition: `trades * abs(min(avg_return, 0))`.
+
+## Top Entry-Family Drag
+- `00-05d / glued_buy`: trades `18`, loss_trades `18`, avg_return `-1.65%`, drag_score `0.2976`
+- `06-10d / glued_buy`: trades `20`, loss_trades `13`, avg_return `-1.03%`, drag_score `0.2069`
+- `00-05d / dual_gold_resonance_buy`: trades `3`, loss_trades `3`, avg_return `-2.40%`, drag_score `0.0720`
+- `00-05d / deep_oversold_rebound_buy`: trades `2`, loss_trades `2`, avg_return `-1.49%`, drag_score `0.0297`
+- `00-05d / post_washout_kdj_reentry_buy`: trades `1`, loss_trades `1`, avg_return `-2.86%`, drag_score `0.0286`
+- `00-05d / post_sell_rebound_buy`: trades `1`, loss_trades `1`, avg_return `-2.16%`, drag_score `0.0216`
+- `00-05d / early_crash_probe_buy`: trades `1`, loss_trades `1`, avg_return `-0.85%`, drag_score `0.0085`
+- `06-10d / oversold_reversal_after_ql_buy`: trades `1`, loss_trades `1`, avg_return `-0.77%`, drag_score `0.0077`
+
+## Top Buy-Reason Drag
+- `00-05d / glued_buy`: trades `18`, loss_trades `18`, avg_return `-1.65%`, avg_buy_plus_3d `-1.53%`, drag_score `0.2976`
+- `06-10d / glued_buy`: trades `20`, loss_trades `13`, avg_return `-1.03%`, avg_buy_plus_3d `0.88%`, drag_score `0.2069`
+- `00-05d / dual_gold_resonance_buy`: trades `3`, loss_trades `3`, avg_return `-2.40%`, avg_buy_plus_3d `-1.82%`, drag_score `0.0720`
+- `06-10d / deep_oversold_rebound_buy:mixed_oversold`: trades `1`, loss_trades `1`, avg_return `-3.03%`, avg_buy_plus_3d `-2.80%`, drag_score `0.0303`
+- `00-05d / post_washout_kdj_reentry_buy`: trades `1`, loss_trades `1`, avg_return `-2.86%`, avg_buy_plus_3d `-2.25%`, drag_score `0.0286`
+- `00-05d / post_sell_rebound_buy`: trades `1`, loss_trades `1`, avg_return `-2.16%`, avg_buy_plus_3d `-2.16%`, drag_score `0.0216`
+- `00-05d / deep_oversold_rebound_buy:deep_capitulation`: trades `1`, loss_trades `1`, avg_return `-2.05%`, avg_buy_plus_3d `0.04%`, drag_score `0.0205`
+- `00-05d / deep_oversold_rebound_buy:classic_oversold`: trades `1`, loss_trades `1`, avg_return `-0.92%`, avg_buy_plus_3d `-0.92%`, drag_score `0.0092`
+
+## Top Path Drag
+- `06-10d / glued_buy -> knife_take_profit_2_glued`: trades `17`, avg_return `-1.31%`, avg_sell_plus_3d `-0.83%`, drag_score `0.2235`
+- `00-05d / glued_buy -> knife_take_profit_2_glued`: trades `12`, avg_return `-1.77%`, avg_sell_plus_3d `0.15%`, drag_score `0.2125`
+- `00-05d / dual_gold_resonance_buy -> negative_a1_no_b1_recovery:kdj_sell`: trades `1`, avg_return `-3.28%`, avg_sell_plus_3d `-1.63%`, drag_score `0.0328`
+- `06-10d / deep_oversold_rebound_buy -> negative_a1_no_b1_recovery:ql_sell`: trades `1`, avg_return `-3.03%`, avg_sell_plus_3d `4.28%`, drag_score `0.0303`
+- `00-05d / glued_buy -> negative_a1_no_b1_recovery:ql_sell`: trades `1`, avg_return `-2.94%`, avg_sell_plus_3d `1.58%`, drag_score `0.0294`
+- `00-05d / post_washout_kdj_reentry_buy -> knife_take_profit_2_wait_ql_s`: trades `1`, avg_return `-2.86%`, avg_sell_plus_3d `0.24%`, drag_score `0.0286`
+- `06-10d / dual_gold_resonance_buy -> negative_a1_no_b1_recovery:kdj_sell`: trades `1`, avg_return `-2.72%`, avg_sell_plus_3d `0.58%`, drag_score `0.0272`
+- `00-05d / glued_buy -> glued_exit:kdj_sell`: trades `3`, avg_return `-0.86%`, avg_sell_plus_3d `-1.16%`, drag_score `0.0257`
+
+## Quant Judgment
+- Lead short-holding drag family: `00-05d / glued_buy` with drag_score `0.2976`.
+- Lead path-level drag: `06-10d / glued_buy -> knife_take_profit_2_glued`.
+- The next experiment pack should attack the highest drag family first and decide whether the issue is bad entry selection or premature exit handling.

+ 45 - 0
research/dragon/v2/dragon_short_holding_master_review.md

@@ -0,0 +1,45 @@
+# Dragon Short Holding Master Review
+
+- Branch under audit: `alpha_first_selective_veto`.
+- Goal: identify the dominant short-holding drag and the next narrow optimization target.
+
+## Audit Conclusions
+- audited short trades: `61`
+- failure_root `entry_bad`: trades `23`, avg_return `-1.78%`
+- failure_root `hold_bad`: trades `23`, avg_return `-1.64%`
+- failure_root `mixed`: trades `9`, avg_return `0.90%`
+- failure_root `exit_too_fast`: trades `6`, avg_return `0.11%`
+
+## Lead Drag Families
+- `00-05d / glued_buy`: trades `18`, avg_return `-1.65%`, drag_score `0.2976`
+- `06-10d / glued_buy`: trades `20`, avg_return `-1.03%`, drag_score `0.2069`
+- `00-05d / dual_gold_resonance_buy`: trades `3`, avg_return `-2.40%`, drag_score `0.0720`
+- `00-05d / deep_oversold_rebound_buy`: trades `2`, avg_return `-1.49%`, drag_score `0.0297`
+- `00-05d / post_washout_kdj_reentry_buy`: trades `1`, avg_return `-2.86%`, drag_score `0.0286`
+
+## Lead Drag Paths
+- `06-10d / glued_buy -> knife_take_profit_2_glued`: trades `17`, avg_return `-1.31%`, drag_score `0.2235`
+- `00-05d / glued_buy -> knife_take_profit_2_glued`: trades `12`, avg_return `-1.77%`, drag_score `0.2125`
+- `00-05d / dual_gold_resonance_buy -> negative_a1_no_b1_recovery:kdj_sell`: trades `1`, avg_return `-3.28%`, drag_score `0.0328`
+- `06-10d / deep_oversold_rebound_buy -> negative_a1_no_b1_recovery:ql_sell`: trades `1`, avg_return `-3.03%`, drag_score `0.0303`
+- `00-05d / glued_buy -> negative_a1_no_b1_recovery:ql_sell`: trades `1`, avg_return `-2.94%`, drag_score `0.0294`
+
+## Experiment Winner
+- best branch: `glued_veto_hot_and_low`
+- trades: `92`
+- avg_return: `3.35%`
+- profit_factor: `4.95`
+- short_avg_return: `-0.99%`
+- `00-05d`: `-1.67%`
+- `06-10d`: `-0.58%`
+- real BUY / SELL overlap: `90/89`
+
+## Interpretation
+- `post_sell_rebound_buy` is not the main short-holding problem in this pack; disabling it hurts or adds little value.
+- The dominant short-holding drag is `glued_buy`, especially in mid-regime short exits.
+- The winning branch confirms that narrow glued-entry veto is more valuable than attacking `post_sell_rebound_buy` first.
+- The most useful next alpha-first direction is now a glued-focused selective-veto branch, not a post-sell-rebound branch.
+
+## Candidate Config
+- Snapshot file: `dragon_short_holding_candidate_config.json`.
+- This candidate should remain alpha-first research only until a branch-level governance decision upgrades it.

+ 33 - 0
research/dragon/v2/dragon_short_holding_review.md

@@ -0,0 +1,33 @@
+# Dragon Short Holding Review
+
+- Branch: `alpha_first_selective_veto`.
+- Scope: only `00-05d` and `06-10d` trades.
+- audited short trades: `61`
+- `00-05d` avg_return: `-1.72%`
+- `06-10d` avg_return: `-0.69%`
+
+## Failure Root Summary
+- `00-05d / entry_bad / immediate_failure`: trades `23`, avg_return `-1.78%`, avg_mfe `0.76%`, avg_mae `-2.33%`
+- `00-05d / hold_bad / small_profit_reversal`: trades `3`, avg_return `-1.54%`, avg_mfe `2.10%`, avg_mae `-1.57%`
+- `00-05d / hold_bad / rebound_then_fail`: trades `1`, avg_return `-0.85%`, avg_mfe `3.43%`, avg_mae `-4.59%`
+- `06-10d / hold_bad / small_profit_reversal`: trades `13`, avg_return `-2.11%`, avg_mfe `1.29%`, avg_mae `-3.09%`
+- `06-10d / mixed / flat_noise`: trades `9`, avg_return `0.90%`, avg_mfe `3.73%`, avg_mae `-2.48%`
+- `06-10d / hold_bad / rebound_then_fail`: trades `6`, avg_return `-0.81%`, avg_mfe `4.73%`, avg_mae `-3.11%`
+- `06-10d / exit_too_fast / exit_too_early`: trades `6`, avg_return `0.11%`, avg_mfe `4.17%`, avg_mae `-2.81%`
+
+## Weak Entry Families
+- `00-05d / post_washout_kdj_reentry_buy`: trades `1`, win_rate `0.00%`, avg_return `-2.86%`, avg_mfe `1.33%`, avg_mae `-3.55%`
+- `00-05d / dual_gold_resonance_buy`: trades `3`, win_rate `0.00%`, avg_return `-2.40%`, avg_mfe `0.40%`, avg_mae `-3.16%`
+- `00-05d / post_sell_rebound_buy`: trades `1`, win_rate `0.00%`, avg_return `-2.16%`, avg_mfe `0.10%`, avg_mae `-3.04%`
+- `00-05d / glued_buy`: trades `18`, win_rate `0.00%`, avg_return `-1.65%`, avg_mfe `0.93%`, avg_mae `-2.08%`
+- `00-05d / deep_oversold_rebound_buy`: trades `2`, win_rate `0.00%`, avg_return `-1.49%`, avg_mfe `1.67%`, avg_mae `-1.57%`
+- `06-10d / glued_buy`: trades `20`, win_rate `35.00%`, avg_return `-1.03%`, avg_mfe `2.37%`, avg_mae `-2.58%`
+- `06-10d / oversold_reversal_after_ql_buy`: trades `1`, win_rate `0.00%`, avg_return `-0.77%`, avg_mfe `6.09%`, avg_mae `-0.77%`
+- `06-10d / post_sell_rebound_buy`: trades `1`, win_rate `0.00%`, avg_return `-0.49%`, avg_mfe `2.67%`, avg_mae `-1.36%`
+- `06-10d / oversold_recovery_buy`: trades `2`, win_rate `50.00%`, avg_return `-0.37%`, avg_mfe `3.64%`, avg_mae `-3.52%`
+- `06-10d / early_crash_probe_buy`: trades `2`, win_rate `50.00%`, avg_return `-0.25%`, avg_mfe `3.60%`, avg_mae `-4.03%`
+
+## Quant Judgment
+- Deep-oversold short trades: `5`; post-sell-rebound short trades: `2`; bridge trades: `0`.
+- Root split: entry_bad `23`, hold_bad `23`, exit_too_fast `6`.
+- The next experiment pack should prioritize the dominant drag family and separate bad-entry veto from early-exit extension.

+ 26 - 0
research/dragon/v2/dragon_signal_change_review.md

@@ -0,0 +1,26 @@
+# Dragon Signal Change Review
+
+- latest_bar_date: `2026-04-03`
+- change_count: `3`
+
+## alpha_first_glued_refined_hot_cap / branch_initialized
+- old: `nan`
+- new: `2026-02-13|SELL|knife_take_profit_2_glued`
+- reason: first forward-observation snapshot for this branch
+- event_context: `none`
+- indicator_context: `close=3317.184,a1=-0.0157,b1=-0.1435,c1=47.26`
+
+## alpha_first_selective_veto / branch_initialized
+- old: `nan`
+- new: `2026-02-13|SELL|knife_take_profit_2_glued`
+- reason: first forward-observation snapshot for this branch
+- event_context: `none`
+- indicator_context: `close=3317.184,a1=-0.0157,b1=-0.1435,c1=47.26`
+
+## workbook_preserving / branch_initialized
+- old: `nan`
+- new: `2026-02-13|SELL|knife_take_profit_2_glued`
+- reason: first forward-observation snapshot for this branch
+- event_context: `none`
+- indicator_context: `close=3317.184,a1=-0.0157,b1=-0.1435,c1=47.26`
+

+ 75 - 0
research/dragon/v2/dragon_stage3_completion.md

@@ -0,0 +1,75 @@
+# Dragon Stage 3 Completion
+
+## Status
+
+- Stage 1 `data rebuild`: complete
+- Stage 2 `rule layering / taxonomy`: complete
+- Stage 3 `robustness validation / formal research framework`: complete
+
+## Final Deliverables
+
+- Official reconstruction baseline:
+- `dragon_formal_research_baseline.md`
+- `dragon_baseline_config_snapshot.json`
+- `dragon_stage3_stability_report.md`
+- `dragon_walk_forward_report.md`
+
+- Alpha-first research branch:
+- `dragon_alpha_first_baseline.md`
+- `dragon_alpha_first_config_snapshot.json`
+- `dragon_alpha_first_branch_summary.csv`
+- `dragon_alpha_first_branch_comparison.csv`
+- `dragon_alpha_first_branch_walk_forward.csv`
+- `dragon_alpha_first_branch_trade_diff.csv`
+
+- Track-A deep-oversold research packs:
+- `dragon_deep_oversold_review.md`
+- `dragon_deep_oversold_confirmation_review.md`
+- `dragon_deep_oversold_selective_veto_review.md`
+
+## Official Baseline
+
+- Name: `workbook_preserving`
+- Objective: preserve workbook real-trade structure while keeping the strategy executable and researchable
+- Metrics:
+- real BUY overlap `106/106`
+- real SELL overlap `105/105`
+- aux BUY overlap `1/1`
+- aux SELL overlap `19/21`
+- trades `107`
+- avg_return `2.52%`
+- profit_factor `3.31`
+
+## Alpha-First Branch
+
+- Name: `alpha_first_selective_veto`
+- Objective: improve trade quality by removing the narrowest provably weak deep-oversold subset
+- Metrics:
+- real BUY overlap `102/106`
+- real SELL overlap `101/105`
+- trades `103`
+- avg_return `2.81%`
+- profit_factor `3.96`
+
+## Final Quant Conclusions
+
+- `glued_buy` remains the structural alpha backbone.
+- `predictive_b1_break_exit` remains a frozen bridge rule under the workbook-preserving objective.
+- `non_glued_positive_expansion_buy` is redundant as an independent family in the current sample window.
+- Weak `deep_oversold` redesign should prioritize narrow pathological-pattern veto.
+- Delayed `QL` confirmation is secondary and behaves more like a veto filter than a genuine alpha confirmation engine.
+- The main drag remains short holding buckets `00-05d` and `06-10d`.
+
+## Governance
+
+- Use `workbook_preserving` for reconstruction, workbook comparison, and any future “must align” analysis.
+- Use `alpha_first_selective_veto` for performance-first research.
+- Do not mix the two branches silently.
+- Any future optimization must declare its branch first.
+
+## What Happens Next
+
+- Stage 3 is complete.
+- The next step is no longer validation infrastructure; it is branch-specific strategy development.
+- If the goal is workbook fidelity, continue only inside `workbook_preserving`.
+- If the goal is alpha improvement, continue from `alpha_first_selective_veto`.

+ 95 - 0
research/dragon/v2/dragon_stage3_stability_report.md

@@ -0,0 +1,95 @@
+# Dragon Stage 3 Stability Report
+
+## Baseline
+- trades: `107`
+- win_rate: `44.86%`
+- avg_return: `2.52%`
+- profit_factor: `3.31`
+- real BUY overlap: `106`
+- real SELL overlap: `105`
+
+## Holding Structure
+- `00-05d`: trades `30`, win_rate `0.00%`, avg_return `-2.03%`, avg_mfe `0.95%`, avg_mae `-2.61%`
+- `06-10d`: trades `35`, win_rate `34.29%`, avg_return `-0.81%`, avg_mfe `3.01%`, avg_mae `-2.94%`
+- `11-20d`: trades `21`, win_rate `80.95%`, avg_return `1.45%`, avg_mfe `4.36%`, avg_mae `-2.01%`
+- `21-40d`: trades `10`, win_rate `80.00%`, avg_return `6.33%`, avg_mfe `10.18%`, avg_mae `-3.36%`
+- `41d+`: trades `11`, win_rate `100.00%`, avg_return `24.13%`, avg_mfe `35.03%`, avg_mae `-2.56%`
+
+## Sample Split
+- `2016-2020`: trades `56`, avg_return `1.95%`, profit_factor `2.83`
+- `2021-2025`: trades `51`, avg_return `3.15%`, profit_factor `3.81`
+
+## Regime Structure
+- `mid_regime`: trades `55`, avg_return `3.49%`, profit_factor `4.31`
+- `low_oversold_regime`: trades `32`, avg_return `0.35%`, profit_factor `1.27`
+- `rebound_after_sell_regime`: trades `8`, avg_return `1.50%`, profit_factor `2.44`
+- `crash_probe_regime`: trades `6`, avg_return `4.62%`, profit_factor `10.52`
+- `high_regime`: trades `6`, avg_return `4.49%`, profit_factor `5.56`
+
+## Rule Ablation
+- `disable_entry_non_glued_positive_expansion_buy`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_exit_knife_take_profit_1`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_exit_knife_take_profit_2_glued`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_exit_crash_protection_exit`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_aux_same_side_cycle_cap`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+- `disable_knife_take_profit_2_wait_ql`: delta_avg_return `0.00%`, delta_profit_factor `0.00`, delta_aux_sell_overlap `0`
+
+## Candidate Pressure Points
+- `disable_entry_deep_oversold_rebound_buy`: delta_avg_return `0.54%`, real BUY `93`, real SELL `92`
+- `disable_entry_dual_gold_resonance_buy`: delta_avg_return `0.18%`, real BUY `92`, real SELL `93`
+- `disable_entry_glued_buy`: delta_avg_return `0.16%`, real BUY `44`, real SELL `50`
+- `disable_exit_predictive_b1_break_exit`: delta_avg_return `0.07%`, real BUY `105`, real SELL `104`
+- `disable_entry_early_crash_probe_buy`: delta_avg_return `0.03%`, real BUY `105`, real SELL `104`
+- `disable_entry_oversold_reversal_after_ql_buy`: delta_avg_return `0.03%`, real BUY `105`, real SELL `104`
+
+## Deep Oversold Subtypes
+- `positive_b1_rebound`: trades `2`, win_rate `0.00%`, avg_return `-2.98%`, fast_failures `1`
+- `shallow_false_start`: trades `3`, win_rate `33.33%`, avg_return `-2.63%`, fast_failures `2`
+- `deep_capitulation`: trades `1`, win_rate `0.00%`, avg_return `-2.05%`, fast_failures `1`
+- `mixed_oversold`: trades `3`, win_rate `33.33%`, avg_return `-1.80%`, fast_failures `2`
+- `classic_oversold`: trades `5`, win_rate `60.00%`, avg_return `0.04%`, fast_failures `1`
+
+## Focused Deep Oversold Experiments
+- `baseline`: deep trades `14`, delta_avg_return `0.00%`, real BUY `106`, real SELL `105`
+- `block_positive_b1_rebound`: deep trades `12`, delta_avg_return `0.10%`, real BUY `104`, real SELL `103`
+- `block_shallow_false_start_without_ql`: deep trades `11`, delta_avg_return `0.15%`, real BUY `103`, real SELL `102`
+- `block_both_remaining_weak_subtypes`: deep trades `9`, delta_avg_return `0.26%`, real BUY `101`, real SELL `100`
+
+## Predictive Break Experiments
+- `baseline`: predictive trades `1`, delta_avg_return `0.00%`, real BUY `106`, real SELL `105`
+- `short_b1_looser`: predictive trades `3`, delta_avg_return `-0.17%`, real BUY `106`, real SELL `104`
+- `short_b1_tighter`: predictive trades `1`, delta_avg_return `0.00%`, real BUY `106`, real SELL `105`
+- `long_b1_looser`: predictive trades `1`, delta_avg_return `0.00%`, real BUY `106`, real SELL `105`
+- `long_b1_tighter`: predictive trades `0`, delta_avg_return `0.07%`, real BUY `105`, real SELL `104`
+
+## Threshold Sensitivity
+- `predictive_b1_break_short_b1_max`: stable_real_alignment `False`, avg_return_range `0.17%`, profit_factor_range `0.15`
+- `deep_oversold_entry_c1_max`: stable_real_alignment `False`, avg_return_range `0.10%`, profit_factor_range `0.18`
+- `deep_oversold_entry_b1_min`: stable_real_alignment `False`, avg_return_range `0.09%`, profit_factor_range `0.06`
+- `predictive_b1_break_long_b1_max`: stable_real_alignment `False`, avg_return_range `0.07%`, profit_factor_range `0.04`
+- `glued_high_weak_rebound_high_b1`: stable_real_alignment `True`, avg_return_range `0.16%`, profit_factor_range `0.21`
+- `glued_high_weak_rebound_high_c1`: stable_real_alignment `True`, avg_return_range `0.09%`, profit_factor_range `0.14`
+- `post_exit_confirmation_window_days`: stable_real_alignment `True`, avg_return_range `0.00%`, profit_factor_range `0.00`
+- `aux_sell_high_zone_kdj_only_block_c1`: stable_real_alignment `True`, avg_return_range `0.00%`, profit_factor_range `0.00`
+
+## Fragile Parameters
+- `predictive_b1_break_short_b1_max`: minimum real BUY overlap `106`, minimum real SELL overlap `104`
+- `deep_oversold_entry_c1_max`: minimum real BUY overlap `104`, minimum real SELL overlap `103`
+- `deep_oversold_entry_b1_min`: minimum real BUY overlap `102`, minimum real SELL overlap `101`
+- `predictive_b1_break_long_b1_max`: minimum real BUY overlap `105`, minimum real SELL overlap `104`
+
+## Robust Parameters
+- `aux_sell_high_zone_kdj_only_block_c1`: avg_return_range `0.00%`, aux_sell_overlap_range `1`
+- `post_exit_confirmation_window_days`: avg_return_range `0.00%`, aux_sell_overlap_range `1`
+- `glued_high_weak_rebound_high_c1`: avg_return_range `0.09%`, aux_sell_overlap_range `0`
+- `glued_high_weak_rebound_high_b1`: avg_return_range `0.16%`, aux_sell_overlap_range `2`
+
+## Quant Judgment
+- `glued_buy` remains the structural backbone. Disabling it destroys alignment and does not produce a credible upgrade path.
+- `non_glued_positive_expansion_buy` is redundant in the current sample window: its aligned dates are now absorbed by `dual_gold_resonance_buy`, so it should not be treated as an independent alpha family.
+- `deep_oversold_rebound_buy` is the clearest weak entry family: removing it improves average return materially, but at a significant alignment cost.
+- Within the deep-oversold family, the weakest subtypes are `positive_b1_rebound` and `shallow_false_start`; this is now a subtype redesign problem, not a whole-rule deletion problem.
+- Safe default improvement was limited to rerouting 4 weak subtype dates to same-day fallback rules; blocking the remaining weak subtypes raises return modestly but degrades real-trade overlap too much for the current objective.
+- `knife_take_profit_2_glued` did not improve results when disabled in rerun form, which implies the current drag is partly replaced by alternative same-cycle exits rather than removed cleanly.
+- `predictive_b1_break` is now effectively a frozen bridge rule: loosening it worsens results, tightening it marginally helps but breaks workbook alignment.
+- Auxiliary sell compression parameters are relatively robust; major remaining optimization leverage is not in the aux layer.

+ 25 - 0
research/dragon/v2/dragon_strategy_fit.md

@@ -0,0 +1,25 @@
+# Dragon Baseline Backtest
+
+- Source workbook: `龙泉回测20260109.data.xlsx`
+- Strategy events: `307`
+- Strategy trades: `106`
+
+## Event Fit
+- real_trade BUY: workbook `106`, strategy `107`, overlap `106`
+- missing_from_strategy: `[]`
+- extra_in_strategy: `['2023-10-26']`
+- real_trade SELL: workbook `105`, strategy `106`, overlap `105`
+- missing_from_strategy: `[]`
+- extra_in_strategy: `['2023-11-10']`
+- aux_signal BUY: workbook `1`, strategy `19`, overlap `1`
+- missing_from_strategy: `[]`
+- extra_in_strategy: `['2016-04-05', '2019-02-22', '2020-01-20', '2020-02-17', '2020-05-13', '2020-06-30', '2021-01-12', '2021-02-03', '2021-05-31', '2021-07-08', '2022-06-17', '2022-07-07', '2024-02-27', '2024-03-11', '2024-11-05', '2025-02-19', '2025-08-28', '2025-09-24']`
+- aux_signal SELL: workbook `21`, strategy `75`, overlap `19`
+- missing_from_strategy: `['2016-01-01', '2023-11-10']`
+- extra_in_strategy: `['2016-02-25', '2016-04-20', '2016-07-25', '2016-10-17', '2016-11-02', '2016-11-21', '2017-02-17', '2017-03-22', '2017-05-10', '2017-06-01', '2017-12-15', '2018-01-12', '2018-02-09', '2018-03-22', '2018-04-20', '2018-05-24', '2018-09-07', '2018-10-18', '2018-12-14', '2019-01-30']`
+
+## Strategy Trade Stats
+- trades: `106`
+- win_rate: `48/106 = 45.28%`
+- avg_return: `2.57%`
+- median_return: `-0.59%`

+ 54 - 0
research/dragon/v2/dragon_strategy_overview.md

@@ -0,0 +1,54 @@
+# Dragon Strategy Overview
+
+- Evaluation window: `2016-01-01` to `2025-12-31`.
+- Return metrics use compounded trade returns without extra slippage/fee adjustments.
+
+## Headline Table
+### workbook_preserving
+- Role: `official reconstruction baseline`
+- Style: `most like workbook`
+- Trades: `106`
+- Win rate: `45.28%`
+- Avg / Median trade: `2.57%` / `-0.59%`
+- Profit factor: `3.37`
+- Compounded return: `923.08%`
+- CAGR: `26.18%`
+- Real BUY / SELL overlap: `105/105`
+- Short `00-05d` / `06-10d`: `-2.03%` / `-0.81%`
+- Suitable for: 适合优先保留原表结构
+
+### alpha_first_selective_veto
+- Role: `current formal alpha branch`
+- Style: `balanced`
+- Trades: `102`
+- Win rate: `47.06%`
+- Avg / Median trade: `2.86%` / `-0.38%`
+- Profit factor: `4.04`
+- Compounded return: `1146.08%`
+- CAGR: `28.70%`
+- Real BUY / SELL overlap: `101/101`
+- Short `00-05d` / `06-10d`: `-1.72%` / `-0.69%`
+- Suitable for: 适合兼顾原表和收益质量
+
+### alpha_first_glued_refined_hot_cap
+- Role: `leading high-alpha candidate`
+- Style: `most aggressive`
+- Trades: `91`
+- Win rate: `52.75%`
+- Avg / Median trade: `3.42%` / `0.25%`
+- Profit factor: `5.11`
+- Compounded return: `1424.12%`
+- CAGR: `31.32%`
+- Real BUY / SELL overlap: `90/90`
+- Short `00-05d` / `06-10d`: `-1.67%` / `-0.59%`
+- Suitable for: 适合更偏实战 alpha
+
+## Quick Read
+- If you want the version most like the workbook, use `workbook_preserving`: CAGR `26.18%`, overlap `105/105`.
+- If you want the balanced version, use `alpha_first_selective_veto`: CAGR `28.70%`, profit factor `4.04`, overlap `101/101`.
+- If you want the strongest alpha candidate, use `alpha_first_glued_refined_hot_cap`: CAGR `31.32%`, profit factor `5.11`, overlap `90/90`.
+
+## Quant Take
+- `alpha_first_selective_veto` vs workbook: CAGR `+2.51%`, profit factor `+0.68`, BUY/SELL overlap delta `-4/-4`.
+- `alpha_first_glued_refined_hot_cap` vs current alpha: CAGR `+2.62%`, profit factor `+1.06`, BUY/SELL overlap delta `-11/-11`.
+- Operationally, the refined branch is the best-performing candidate, but the current formal alpha branch remains the governance default because it gives up fewer workbook-aligned dates.

+ 24 - 0
research/dragon/v2/dragon_strategy_overview_cn.md

@@ -0,0 +1,24 @@
+# 龙泉策略中文总览
+
+- 统计区间:`2016-01-01` 到 `2025-12-31`
+- 口径说明:收益按交易复利连乘计算,未额外加入滑点和手续费修正
+
+## 核心对照
+
+| 版本 | 定位 | 交易数 | 胜率 | 单笔均收益 | 单笔中位数 | PF | 复利总收益 | 年化 | 真实买点对齐 | 真实卖点对齐 |
+|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
+| `workbook_preserving` | 最像原表 | 106 | 45.28% | 2.57% | -0.59% | 3.37 | 923.08% | 26.18% | 105/105 | 105/105 |
+| `alpha_first_selective_veto` | 当前正式 alpha 版 | 102 | 47.06% | 2.86% | -0.38% | 4.04 | 1146.08% | 28.70% | 101/105 | 101/105 |
+| `alpha_first_glued_refined_hot_cap` | 当前最强候选版 | 91 | 52.75% | 3.42% | 0.25% | 5.11 | 1424.12% | 31.32% | 90/105 | 90/105 |
+
+## 一句话理解
+
+- `workbook_preserving`:最接近原工作簿,适合优先保留原策略结构。
+- `alpha_first_selective_veto`:当前平衡最好,收益明显提升,但和原表还没有拉太开。
+- `alpha_first_glued_refined_hot_cap`:当前表现最强,年化、胜率、PF 都最高,但和原表偏离也最大。
+
+## 直接建议
+
+- 如果你要“更像原表”:选 `workbook_preserving`
+- 如果你要“当前正式主线”:选 `alpha_first_selective_veto`
+- 如果你要“更强收益候选”:选 `alpha_first_glued_refined_hot_cap`

+ 26 - 0
research/dragon/v2/dragon_system_review_final.md

@@ -0,0 +1,26 @@
+# Dragon System Review Final
+
+## Overall Judgment
+- The current workspace is much closer to a trustworthy research pack after the window-consistency sweep and monitor-fallback fixes.
+- Cross-report headline metrics are currently aligned across the main branch-summary, release, and overview artifacts.
+- The remaining cautions are about report interpretation and forward monitoring, not internal metric drift.
+
+## Trust Tiers
+- 可信可直接使用:
+- `dragon_alpha_first_branch_summary.csv`
+- `dragon_glued_refined_branch_summary.csv`
+- `dragon_rc1_config_snapshot.json`
+- `dragon_daily_monitor_snapshot.csv`
+- `dragon_strategy_overview.csv`
+- 可信但需标注口径:
+- `dragon_refined_execution_stress.csv`
+- `dragon_cost_stress_test.csv`
+- `dragon_forward_weekly_summary.csv`
+- `dragon_historical_trade_details.html`
+- 暂不建议直接引用:
+- `none`
+
+## Practical Meaning
+- Use the branch-specific summary/release artifacts as the primary basis for governance decisions.
+- Use the consistency reports as an audit trail before external distribution of top-line metrics.
+- `dragon_strategy_overview.csv` is now aligned with the main branch artifacts and can be used as the compact comparison view.

+ 30 - 0
research/dragon/v2/dragon_threshold_perturbation.md

@@ -0,0 +1,30 @@
+# Dragon Threshold Perturbation
+
+## Baseline
+- trades: `107`
+- avg_return: `2.52%`
+- profit_factor: `3.31`
+- real BUY overlap: `106`
+- real SELL overlap: `105`
+
+## Sensitivity Summary
+- `predictive_b1_break_short_b1_max`: stable_real_alignment `False`, avg_return_range `0.17%`, profit_factor_range `0.15`, aux_sell_overlap_range `0`
+- `deep_oversold_entry_c1_max`: stable_real_alignment `False`, avg_return_range `0.10%`, profit_factor_range `0.18`, aux_sell_overlap_range `0`
+- `deep_oversold_entry_b1_min`: stable_real_alignment `False`, avg_return_range `0.09%`, profit_factor_range `0.06`, aux_sell_overlap_range `0`
+- `predictive_b1_break_long_b1_max`: stable_real_alignment `False`, avg_return_range `0.07%`, profit_factor_range `0.04`, aux_sell_overlap_range `0`
+- `glued_high_weak_rebound_high_b1`: stable_real_alignment `True`, avg_return_range `0.16%`, profit_factor_range `0.21`, aux_sell_overlap_range `2`
+- `glued_high_weak_rebound_high_c1`: stable_real_alignment `True`, avg_return_range `0.09%`, profit_factor_range `0.14`, aux_sell_overlap_range `0`
+- `post_exit_confirmation_window_days`: stable_real_alignment `True`, avg_return_range `0.00%`, profit_factor_range `0.00`, aux_sell_overlap_range `1`
+- `aux_sell_high_zone_kdj_only_block_c1`: stable_real_alignment `True`, avg_return_range `0.00%`, profit_factor_range `0.00`, aux_sell_overlap_range `1`
+
+## Fragile Parameters
+- `predictive_b1_break_short_b1_max`: minimum real BUY overlap `106`, minimum real SELL overlap `104`
+- `deep_oversold_entry_c1_max`: minimum real BUY overlap `104`, minimum real SELL overlap `103`
+- `deep_oversold_entry_b1_min`: minimum real BUY overlap `102`, minimum real SELL overlap `101`
+- `predictive_b1_break_long_b1_max`: minimum real BUY overlap `105`, minimum real SELL overlap `104`
+
+## Relatively Robust Parameters
+- `aux_sell_high_zone_kdj_only_block_c1`: avg_return_range `0.00%`, profit_factor_range `0.00`
+- `post_exit_confirmation_window_days`: avg_return_range `0.00%`, profit_factor_range `0.00`
+- `glued_high_weak_rebound_high_c1`: avg_return_range `0.09%`, profit_factor_range `0.14`
+- `glued_high_weak_rebound_high_b1`: avg_return_range `0.16%`, profit_factor_range `0.21`

+ 34 - 0
research/dragon/v2/dragon_validation.md

@@ -0,0 +1,34 @@
+# Dragon V2 Validation
+
+- Source workbook: `龙泉回测20260109.data.xlsx`
+- Indicator snapshot rows: `2694`
+- Workbook layered events: `233`
+- Real trade events: `211`
+- Auxiliary events: `22`
+- Annual summary rows: `11`
+
+## Formula Scope
+- `A1`: EMA(8) vs EMA(EMA(8),20) normalized spread
+- `B1`: ((Y2 - Y3) / 100), where Y2/Y3 come from 38-day RSV smoothed by SMA(5,1) and SMA(10,1)
+- `C1`: (Y2 + Y3) / 2
+- `QL phoenix line`: approximated from the existing Dragon code as `B = CROSS(close, upper_line)` and `S = CROSS(lower_line, close)`
+
+## Alignment
+- KDJ rows in workbook: `197`
+- QL rows in workbook: `112`
+- KDJ buy marker matches: `197/197`
+- KDJ sell marker matches: `196/197`
+- QL buy marker matches: `112/112`
+- QL sell marker matches: `112/112`
+- KDJ sell mismatch dates: `['2018-05-23']`
+- QL buy mismatch dates: `[]`
+
+## Output Files
+- `dragon_indicator_snapshot.csv`
+- `dragon_workbook_layers.csv`
+- `dragon_signal_alignment.csv`
+
+## Notes
+- This validation stage checks indicator reconstruction and marker alignment only.
+- It does not yet implement the full Dragon entry/exit rule tree from the workbook narrative.
+- Repeated SELL rows after exit and repeated BUY rows during holding remain auxiliary signals by confirmed user semantics.

+ 47 - 0
research/dragon/v2/dragon_walk_forward_report.md

@@ -0,0 +1,47 @@
+# Dragon Walk-Forward Validation
+
+- Method: fixed current baseline rules, no refit, evaluate temporal stability by yearly out-of-sample slices.
+- Goal: verify whether the workbook-preserving baseline still behaves coherently outside any single full-sample summary.
+
+## Anchored Expanding Windows
+- train `2016-2016` -> test `2017`: test trades `11`, test avg_return `-0.42%`, test profit_factor `0.67`, test compounded_return `-4.95%`, test max_drawdown `-6.74%`
+- train `2016-2017` -> test `2018`: test trades `16`, test avg_return `0.05%`, test profit_factor `1.05`, test compounded_return `-0.11%`, test max_drawdown `-12.79%`
+- train `2016-2018` -> test `2019`: test trades `10`, test avg_return `3.12%`, test profit_factor `3.24`, test compounded_return `30.12%`, test max_drawdown `-9.67%`
+- train `2016-2019` -> test `2020`: test trades `6`, test avg_return `11.16%`, test profit_factor `23.56`, test compounded_return `80.41%`, test max_drawdown `-1.77%`
+- train `2016-2020` -> test `2021`: test trades `9`, test avg_return `5.35%`, test profit_factor `13.29`, test compounded_return `55.90%`, test max_drawdown `-3.88%`
+- train `2016-2021` -> test `2022`: test trades `11`, test avg_return `0.78%`, test profit_factor `1.46`, test compounded_return `6.76%`, test max_drawdown `-10.70%`
+- train `2016-2022` -> test `2023`: test trades `12`, test avg_return `1.36%`, test profit_factor `3.10`, test compounded_return `16.83%`, test max_drawdown `-3.53%`
+- train `2016-2023` -> test `2024`: test trades `12`, test avg_return `3.26%`, test profit_factor `2.92`, test compounded_return `36.95%`, test max_drawdown `-8.63%`
+- train `2016-2024` -> test `2025`: test trades `6`, test avg_return `8.42%`, test profit_factor `11.92`, test compounded_return `50.23%`, test max_drawdown `-3.39%`
+- train `2016-2025` -> test `2026`: test trades `1`, test avg_return `-1.97%`, test profit_factor `0.00`, test compounded_return `-1.97%`, test max_drawdown `0.00%`
+
+## Rolling 3Y Windows
+- train `2016-2018` -> test `2019`: test trades `10`, test avg_return `3.12%`, test profit_factor `3.24`, test compounded_return `30.12%`, test max_drawdown `-9.67%`
+- train `2017-2019` -> test `2020`: test trades `6`, test avg_return `11.16%`, test profit_factor `23.56`, test compounded_return `80.41%`, test max_drawdown `-1.77%`
+- train `2018-2020` -> test `2021`: test trades `9`, test avg_return `5.35%`, test profit_factor `13.29`, test compounded_return `55.90%`, test max_drawdown `-3.88%`
+- train `2019-2021` -> test `2022`: test trades `11`, test avg_return `0.78%`, test profit_factor `1.46`, test compounded_return `6.76%`, test max_drawdown `-10.70%`
+- train `2020-2022` -> test `2023`: test trades `12`, test avg_return `1.36%`, test profit_factor `3.10`, test compounded_return `16.83%`, test max_drawdown `-3.53%`
+- train `2021-2023` -> test `2024`: test trades `12`, test avg_return `3.26%`, test profit_factor `2.92`, test compounded_return `36.95%`, test max_drawdown `-8.63%`
+- train `2022-2024` -> test `2025`: test trades `6`, test avg_return `8.42%`, test profit_factor `11.92`, test compounded_return `50.23%`, test max_drawdown `-3.39%`
+- train `2023-2025` -> test `2026`: test trades `1`, test avg_return `-1.97%`, test profit_factor `0.00`, test compounded_return `-1.97%`, test max_drawdown `0.00%`
+
+## Entry-Family Stability
+- `early_crash_probe_buy`: years_active `5`, total_trades `6`, positive_years `3`, negative_years `2`, avg_yearly_avg_return `5.59%`, min_yearly_avg_return `-0.85%`
+- `glued_buy`: years_active `10`, total_trades `61`, positive_years `7`, negative_years `3`, avg_yearly_avg_return `4.41%`, min_yearly_avg_return `-0.72%`
+- `oversold_recovery_buy`: years_active `4`, total_trades `4`, positive_years `2`, negative_years `2`, avg_yearly_avg_return `3.35%`, min_yearly_avg_return `-1.78%`
+- `post_sell_rebound_buy`: years_active `3`, total_trades `4`, positive_years `1`, negative_years `2`, avg_yearly_avg_return `0.52%`, min_yearly_avg_return `-2.16%`
+- `dual_gold_resonance_buy`: years_active `7`, total_trades `14`, positive_years `2`, negative_years `5`, avg_yearly_avg_return `0.16%`, min_yearly_avg_return `-1.97%`
+- `deep_oversold_rebound_buy`: years_active `5`, total_trades `14`, positive_years `1`, negative_years `4`, avg_yearly_avg_return `-1.35%`, min_yearly_avg_return `-3.03%`
+
+## Weak Entry-Family Stability
+- `deep_oversold_rebound_buy`: years_active `5`, total_trades `14`, positive_years `1`, negative_years `4`, avg_yearly_avg_return `-1.35%`, min_yearly_avg_return `-3.03%`
+- `dual_gold_resonance_buy`: years_active `7`, total_trades `14`, positive_years `2`, negative_years `5`, avg_yearly_avg_return `0.16%`, min_yearly_avg_return `-1.97%`
+- `post_sell_rebound_buy`: years_active `3`, total_trades `4`, positive_years `1`, negative_years `2`, avg_yearly_avg_return `0.52%`, min_yearly_avg_return `-2.16%`
+- `oversold_recovery_buy`: years_active `4`, total_trades `4`, positive_years `2`, negative_years `2`, avg_yearly_avg_return `3.35%`, min_yearly_avg_return `-1.78%`
+- `glued_buy`: years_active `10`, total_trades `61`, positive_years `7`, negative_years `3`, avg_yearly_avg_return `4.41%`, min_yearly_avg_return `-0.72%`
+
+## Quant Judgment
+- Anchored walk-forward windows: positive years `8`, negative years `2`.
+- Rolling 3Y windows: positive years `7`, negative years `1`.
+- This is a stability audit, not a parameter-search walk-forward. The strategy was held fixed throughout.
+- Families with repeated negative yearly averages are research candidates; families with broad multi-year persistence are baseline keepers.

+ 75 - 0
research/dragon/v2/trade_split_summary.md

@@ -0,0 +1,75 @@
+# Dragon v2 Trade Split Summary
+
+- Source workbook: `龙泉回测20260109.data.xlsx`
+- Real trade events: `211`
+- Completed trades: `105`
+- Auxiliary signals: `22`
+- Auxiliary signal breakdown: `{'SELL': 21, 'BUY': 1}`
+- Open position at end: `2026-01-05`
+
+## Equity Summary
+- Start capital: `55,450.00`
+- Realized capital at 2025-12-31: `910,785.96`
+- 2016-2025 cumulative strategy return: `1542.54%`
+- 2016-2025 cumulative index return: `30.60%`
+- 2026 partial strategy return in sheet: `0.78%`
+
+## Trade Stats
+- Win rate: `47/105 = 44.76%`
+- Average trade return: `3.15%`
+- Median trade return: `-0.49%`
+- Average winner: `9.45%`
+- Average loser: `-1.95%`
+- Best trade: `50.70%`
+- Worst trade: `-5.78%`
+- Average holding days: `15.28`
+- Median holding days: `8`
+
+## Annual Returns
+- 2016: strategy `18.14%`, index `-31.62%`
+- 2017: strategy `3.35%`, index `-14.39%`
+- 2018: strategy `-2.61%`, index `-34.09%`
+- 2019: strategy `33.35%`, index `50.93%`
+- 2020: strategy `90.52%`, index `88.74%`
+- 2021: strategy `66.20%`, index `16.88%`
+- 2022: strategy `17.70%`, index `-29.83%`
+- 2023: strategy `17.41%`, index `-24.00%`
+- 2024: strategy `57.96%`, index `21.07%`
+- 2025: strategy `49.88%`, index `57.45%`
+- 2026: strategy `0.78%`, index `N/A`
+
+## Trade Return By Sell Year
+- 2016: trades `13`, avg `1.68%`, median `0.87%`, wins `7`
+- 2017: trades `11`, avg `-0.38%`, median `-0.61%`, wins `3`
+- 2018: trades `16`, avg `-0.56%`, median `-0.96%`, wins `5`
+- 2019: trades `10`, avg `3.12%`, median `-1.53%`, wins `4`
+- 2020: trades `6`, avg `11.16%`, median `4.66%`, wins `4`
+- 2021: trades `9`, avg `8.41%`, median `4.29%`, wins `6`
+- 2022: trades `11`, avg `0.78%`, median `-0.18%`, wins `5`
+- 2023: trades `11`, avg `0.79%`, median `-0.26%`, wins `5`
+- 2024: trades `12`, avg `6.71%`, median `-0.96%`, wins `4`
+- 2025: trades `6`, avg `8.42%`, median `0.41%`, wins `4`
+
+## Auxiliary Signals
+- 2016-01-01 SELL `bearish_signal_after_exit` index `None` note ``
+- 2016-05-06 SELL `bearish_signal_after_exit` index `2040.15` note ``
+- 2016-06-13 SELL `bearish_signal_after_exit` index `1945.7` note ``
+- 2017-09-19 SELL `bearish_signal_after_exit` index `1659.56` note ``
+- 2018-03-09 BUY `bullish_signal_while_holding` index `1626.58` note ``
+- 2018-07-27 SELL `bearish_signal_after_exit` index `1345.69` note ``
+- 2018-10-29 SELL `bearish_signal_after_exit` index `1010.71` note ``
+- 2018-12-07 SELL `bearish_signal_after_exit` index `1084.42` note ``
+- 2019-04-11 SELL `bearish_signal_after_exit` index `1349.08` note `8-d-(2) / 见好就收2`
+- 2019-10-18 SELL `bearish_signal_after_exit` index `1327.42` note `粘合 / 见好就收2`
+- 2020-04-24 SELL `bearish_signal_after_exit` index `1712.95` note ``
+- 2020-08-07 SELL `bearish_signal_after_exit` index `2515.7` note `8-b / 见好就收2`
+- 2020-11-26 SELL `bearish_signal_after_exit` index `2450.64` note ``
+- 2021-07-26 SELL `bearish_signal_after_exit` index `3407.86` note ``
+- 2021-12-06 SELL `bearish_signal_after_exit` index `3463.76` note ``
+- 2021-12-17 SELL `bearish_signal_after_exit` index `3484.5` note ``
+- 2022-03-03 SELL `bearish_signal_after_exit` index `2761.3` note ``
+- 2022-07-11 SELL `bearish_signal_after_exit` index `2771.6` note ` 见好就收1`
+- 2022-07-15 SELL `bearish_signal_after_exit` index `2776.12` note ``
+- 2023-10-16 SELL `bearish_signal_after_exit` index `1849.53` note ``
+- 2023-11-10 SELL `bearish_signal_after_exit` index `1903.29` note `粘合-刀口收血2`
+- 2025-10-17 SELL `bearish_signal_after_exit` index `3074.24` note `股灾兜底条款6`