Преглед изворни кода

Fix dragon detail HTML event labels

erwin пре 1 месец
родитељ
комит
65059100ba
26 измењених фајлова са 2171 додато и 2 уклоњено
  1. 45 0
      research/dragon/v2/dragon_alpha_branch_governance.md
  2. 13 0
      research/dragon/v2/dragon_alpha_branch_governance_decision.json
  3. 34 0
      research/dragon/v2/dragon_alpha_first_baseline.md
  4. 104 0
      research/dragon/v2/dragon_alpha_first_config_snapshot.json
  5. 150 0
      research/dragon/v2/dragon_alpha_promotion_decision.md
  6. 22 0
      research/dragon/v2/dragon_aux_sell_cycle_review.md
  7. 54 0
      research/dragon/v2/dragon_aux_signal_review.md
  8. 91 0
      research/dragon/v2/dragon_baseline_config_snapshot.json
  9. 16 0
      research/dragon/v2/dragon_branch_divergence_report.md
  10. 20 0
      research/dragon/v2/dragon_deep_oversold_confirmation_experiments.md
  11. 49 0
      research/dragon/v2/dragon_deep_oversold_confirmation_review.md
  12. 10 0
      research/dragon/v2/dragon_deep_oversold_experiments.md
  13. 29 0
      research/dragon/v2/dragon_deep_oversold_review.md
  14. 24 0
      research/dragon/v2/dragon_deep_oversold_selective_veto_experiments.md
  15. 56 0
      research/dragon/v2/dragon_deep_oversold_selective_veto_review.md
  16. 13 0
      research/dragon/v2/dragon_equity_curve_review.md
  17. 13 0
      research/dragon/v2/dragon_event_gaps.md
  18. 84 0
      research/dragon/v2/dragon_formal_research_baseline.md
  19. 149 0
      research/dragon/v2/dragon_formal_strategy_governance.md
  20. 98 0
      research/dragon/v2/dragon_formal_strategy_memo.md
  21. 24 0
      research/dragon/v2/dragon_forward_branch_roles.md
  22. 102 0
      research/dragon/v2/dragon_forward_observation_state.json
  23. 223 0
      research/dragon/v2/dragon_forward_research_plan.md
  24. 373 0
      research/dragon/v2/dragon_historical_trade_details.html
  25. 2 2
      research/dragon/v2/dragon_html_reports.py
  26. 373 0
      research/dragon/v2/html_reports/dragon_historical_trade_details_2026-04-03.html

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

@@ -0,0 +1,45 @@
+# Dragon Alpha Branch Governance
+
+## Scope
+- Current formal alpha branch: `alpha_first_selective_veto`.
+- Leading candidate branch: `alpha_first_glued_refined_hot_cap`.
+- Goal: decide whether the refined branch should replace the current formal alpha branch or remain a governed candidate.
+
+## Headline Metrics
+- current alpha: trades `102`, avg_return `2.86%`, profit_factor `4.04`, real BUY / SELL `101/101`
+- refined candidate: trades `91`, avg_return `3.42%`, profit_factor `5.11`, real BUY / SELL `90/90`
+- delta: avg_return `0.56%`, profit_factor `1.06`, BUY overlap `-11`, SELL overlap `-11`
+
+## Risk And Quality
+- avg MFE / MAE: current `6.93%` / `-2.57%` vs refined `7.62%` / `-2.57%`
+- short `00-05d`: current `-1.72%` vs refined `-1.67%`
+- short `06-10d`: current `-0.69%` vs refined `-0.59%`
+
+## Walk-Forward
+- anchored expanding: current `8/9`, avg `4.00%` vs refined `9/9`, avg `4.52%`
+- rolling 3Y: current `7/7`, avg `5.19%` vs refined `7/7`, avg `5.76%`
+
+## Removed-Trade Attribution
+- removed trades vs current alpha: `11`
+- removed-set avg_return / win_rate: `-1.81%` / `0.00%`
+- recommendation mix KEEP / OBSERVE / OVER: `11/0/0`
+- Interpretation: the refined branch now improves by removing only weak, losing short-holding glued trades; it does not rely on deleting profitable samples.
+
+## Upgrade Gates
+- `headline_quality_gate`: requires avg_return delta `>= +0.30%`, profit_factor delta `>= +0.50`, and no short-bucket deterioration.
+  result: `PASS`
+- `stability_gate`: requires anchored and rolling walk-forward to be no worse than the current formal alpha branch.
+  result: `PASS`
+- `removal_quality_gate`: requires `OVER_REMOVAL = 0`, `OBSERVE_REMOVAL <= 1`, removed-set win_rate `<= 5%`, and removed-set avg_return `< 0`.
+  result: `PASS`
+- `alignment_cost_gate`: automatic promotion only if incremental overlap loss is no more than `8` additional BUYs and `8` additional SELLs versus the current formal alpha branch.
+  result: `FAIL`
+
+## Final Decision
+- governance_decision: `DUAL_TRACK_GOVERNANCE`
+- Decision: keep `alpha_first_selective_veto` as the formal alpha branch and keep `alpha_first_glued_refined_hot_cap` as the governed leading candidate.
+- Reason: quality, stability, and removal quality all pass, but alignment loss is still large enough that promotion should be explicit rather than automatic.
+
+## Recommendation
+- Keep `alpha_first_selective_veto` as the current formal alpha branch for now.
+- Keep `alpha_first_glued_refined_hot_cap` as the first governed promotion candidate if the governance objective explicitly shifts toward stronger alpha.

+ 13 - 0
research/dragon/v2/dragon_alpha_branch_governance_decision.json

@@ -0,0 +1,13 @@
+{
+  "current_formal_alpha": "alpha_first_selective_veto",
+  "leading_candidate_alpha": "alpha_first_glued_refined_hot_cap",
+  "avg_return_delta_vs_current": 0.0056397787346599,
+  "profit_factor_delta_vs_current": 1.062819827208445,
+  "buy_overlap_delta_vs_current": -11,
+  "sell_overlap_delta_vs_current": -11,
+  "headline_quality_gate": true,
+  "stability_gate": true,
+  "removal_quality_gate": true,
+  "alignment_cost_gate": false,
+  "final_decision": "DUAL_TRACK_GOVERNANCE"
+}

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

@@ -0,0 +1,34 @@
+# Dragon Alpha-First Branch Report
+
+## Branches
+- Evaluation window: `2016-01-01` to `2025-12-31`.
+- `workbook_preserving`: official formal baseline, preserves workbook structure as much as possible.
+- `alpha_first_selective_veto`: research branch using the current best narrow deep-oversold veto package.
+
+## 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`
+
+## Short-Holding Impact
+- `00-05d` avg_return: workbook `-2.03%` vs alpha-first `-1.72%`
+- `06-10d` avg_return: workbook `-0.81%` vs alpha-first `-0.69%`
+
+## Walk-Forward Comparison
+- Anchored expanding: workbook positive `8/9`, avg test return `3.68%`; alpha-first positive `8/9`, avg test return `4.00%`
+- Rolling 3Y: workbook positive `7/7`, avg test return `4.78%`; alpha-first positive `7/7`, avg test return `5.19%`
+
+## Trade-Diff Summary
+- trades removed from alpha-first vs workbook: `4`
+- trades added in alpha-first vs workbook: `0`
+- Key removed deep-oversold trades are the narrow pathological subset identified in Track A, not the full weak-subtype family.
+
+## Governance
+- Keep `workbook_preserving` as the official reconstruction baseline.
+- Keep `alpha_first_selective_veto` as the leading performance-oriented research branch.
+- Do not merge alpha-first veto rules back into the official baseline unless the objective explicitly changes from workbook preservation to alpha-first optimization.
+
+## Quant Judgment
+- Stage 3 is complete once both baselines are explicitly separated and reproducible.
+- The workbook-preserving baseline remains the authoritative reconstruction target.
+- The alpha-first branch now has a concrete candidate baseline with better trade quality and better short-holding behavior, at the cost of expected workbook alignment loss.
+- Future work should choose one branch explicitly before optimizing further; the main unresolved technical decision is governance, not missing analysis.

+ 104 - 0
research/dragon/v2/dragon_alpha_first_config_snapshot.json

@@ -0,0 +1,104 @@
+{
+  "disabled_rules": [],
+  "post_exit_confirmation_window_days": 10,
+  "aux_sell_same_side_once_per_cycle": true,
+  "aux_sell_duplicate_cooldown_days": 5,
+  "aux_sell_high_zone_kdj_only_block_c1": 85.0,
+  "aux_sell_high_zone_kdj_only_block_b1": -0.02,
+  "aux_sell_high_zone_warning_c1": 80.0,
+  "aux_sell_strong_break_c1": 60.0,
+  "aux_sell_strong_break_b1": -0.05,
+  "aux_sell_stronger_c1_delta": 8.0,
+  "aux_sell_stronger_b1_delta": 0.05,
+  "aux_sell_high_zone_rearm_c1_delta": 2.0,
+  "state_crash_followthrough_window_days": 5,
+  "state_crash_followthrough_repeat_cooldown_days": 4,
+  "state_crash_followthrough_c1_max": 80.0,
+  "state_crash_followthrough_a1_max": 0.01,
+  "state_crash_followthrough_b1_max": -0.15,
+  "glued_high_weak_rebound_high_c1": 68.0,
+  "glued_high_weak_rebound_high_b1": -0.08,
+  "glued_high_weak_rebound_mid_c1": 50.0,
+  "glued_high_weak_rebound_mid_b1": -0.15,
+  "glued_high_weak_rebound_ql_c1_low": 35.0,
+  "glued_high_weak_rebound_ql_c1_high": 55.0,
+  "glued_high_weak_rebound_ql_b1": -0.06,
+  "glued_high_weak_rebound_ql_a1": -0.013,
+  "glued_selective_hot_c1_min": 0.0,
+  "glued_selective_hot_c1_max": 999.0,
+  "glued_selective_hot_b1_min": 1.0,
+  "glued_selective_low_c1_min": 0.0,
+  "glued_selective_low_c1_max": 0.0,
+  "glued_selective_low_b1_max": -999.0,
+  "deep_oversold_filter1_c1_low": 13.0,
+  "deep_oversold_filter1_c1_high": 15.0,
+  "deep_oversold_filter1_a1_min": -0.04,
+  "deep_oversold_filter1_b1_max": -0.08,
+  "deep_oversold_filter2_c1_low": 13.0,
+  "deep_oversold_filter2_c1_high": 14.5,
+  "deep_oversold_filter2_a1_min": -0.04,
+  "deep_oversold_filter2_b1_min": -0.06,
+  "deep_oversold_entry_c1_max": 16.0,
+  "deep_oversold_entry_a1_min": -0.09,
+  "deep_oversold_entry_b1_min": -0.1,
+  "deep_oversold_shallow_ql_fallback": true,
+  "deep_oversold_positive_b1_fallback_a1_min": -0.02,
+  "deep_oversold_block_positive_b1_rebound": false,
+  "deep_oversold_block_shallow_false_start_without_ql": false,
+  "deep_oversold_confirm_weak_with_ql": false,
+  "deep_oversold_confirm_window_bars": 2,
+  "deep_oversold_selective_positive_b1_c1_max": 15.3,
+  "deep_oversold_selective_shallow_c1_min": 12.0,
+  "deep_oversold_selective_shallow_b1_min": -0.025,
+  "deep_oversold_selective_mixed_c1_max": 10.2,
+  "deep_oversold_selective_mixed_require_no_ql": true,
+  "oversold_recovery_c1_low": 18.0,
+  "oversold_recovery_c1_high": 22.0,
+  "oversold_recovery_a1_min": -0.03,
+  "oversold_recovery_a1_max": 0.0,
+  "oversold_recovery_b1_min": -0.02,
+  "oversold_reversal_after_ql_block_c1_low": 23.0,
+  "oversold_reversal_after_ql_block_c1_high": 26.0,
+  "oversold_reversal_after_ql_block_b1_min": -0.12,
+  "oversold_reversal_after_ql_block_a1_min": -0.035,
+  "oversold_reversal_after_ql_entry_c1_low": 20.0,
+  "oversold_reversal_after_ql_entry_c1_high": 26.0,
+  "oversold_reversal_after_ql_entry_a1_min": -0.04,
+  "oversold_reversal_after_ql_entry_a1_max": 0.0,
+  "oversold_reversal_after_ql_entry_b1_min": -0.22,
+  "oversold_reversal_after_ql_entry_b1_max": 0.0,
+  "post_sell_rebound_block_high_c1": 22.0,
+  "post_sell_rebound_block_high_a1_min": -0.035,
+  "post_sell_rebound_block_high_b1_max": -0.07,
+  "post_sell_rebound_block_low_c1": 15.0,
+  "post_sell_rebound_block_low_a1_min": -0.04,
+  "post_sell_rebound_block_low_b1_max": -0.095,
+  "post_sell_rebound_entry1_c1_low": 18.0,
+  "post_sell_rebound_entry1_c1_high": 30.0,
+  "post_sell_rebound_entry1_a1_min": -0.045,
+  "post_sell_rebound_entry1_a1_max": 0.0,
+  "post_sell_rebound_entry1_b1_low": -0.09,
+  "post_sell_rebound_entry1_b1_high": -0.04,
+  "post_sell_rebound_entry2_c1_high": 19.0,
+  "post_sell_rebound_entry2_a1_min": -0.04,
+  "post_sell_rebound_entry2_a1_max": 0.0,
+  "post_sell_rebound_entry2_b1_low": -0.13,
+  "post_sell_rebound_entry2_b1_high": -0.09,
+  "predictive_b1_break_short_holding_days_max": 2,
+  "predictive_b1_break_short_a1_min": -0.02,
+  "predictive_b1_break_short_a1_max": 0.0,
+  "predictive_b1_break_short_b1_max": -0.13,
+  "predictive_b1_break_short_c1_low": 50.0,
+  "predictive_b1_break_short_c1_high": 70.0,
+  "predictive_b1_break_long_holding_days_min": 40,
+  "predictive_b1_break_long_max_c1": 80.0,
+  "predictive_b1_break_long_max_a1": 0.15,
+  "predictive_b1_break_long_max_b1": 0.3,
+  "predictive_b1_break_long_ql_days_max": 7,
+  "predictive_b1_break_long_a1_min": -0.02,
+  "predictive_b1_break_long_a1_max": 0.0,
+  "predictive_b1_break_long_b1_max": -0.12,
+  "predictive_b1_break_long_c1_low": 60.0,
+  "predictive_b1_break_long_c1_high": 65.0,
+  "enable_knife_take_profit_2_wait_ql": true
+}

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

@@ -0,0 +1,150 @@
+# Dragon Alpha Promotion Decision
+
+## Scope
+
+- Evaluation window: `2016-01-01` to `2025-12-31`
+- Reference branches:
+  - `workbook_preserving`: reconstruction reference
+  - `alpha_first_selective_veto`: current formal alpha control
+  - `alpha_first_glued_refined_hot_cap`: leading higher-alpha candidate
+
+## Current Fact Pattern
+
+- `alpha_first_selective_veto`
+  - trades `102`
+  - avg_return `2.86%`
+  - profit_factor `4.04`
+  - CAGR `28.70%`
+  - real BUY / SELL overlap `101/101`
+
+- `alpha_first_glued_refined_hot_cap`
+  - trades `91`
+  - avg_return `3.42%`
+  - profit_factor `5.11`
+  - CAGR `31.32%`
+  - real BUY / SELL overlap `90/90`
+
+- refined minus current alpha
+  - avg_return `+0.56%`
+  - profit_factor `+1.07`
+  - CAGR `+2.62%`
+  - overlap cost `-11 BUY / -11 SELL`
+
+## What Has Already Been Proven
+
+- Headline quality: `PASS`
+  - higher avg trade
+  - higher win rate
+  - higher profit factor
+  - better short-holding cleanup
+
+- Stability: `PASS`
+  - cost stress remains superior through `20 bps/side`
+  - local neighborhood sensitivity stays strong across `81` nearby cases
+  - anchored walk-forward improves from `8/10` positive years to `9/10`
+  - rolling `3Y` walk-forward is not worse and average test return is higher
+
+- Removal quality: `PASS`
+  - removed trades vs current alpha: `11`
+  - removed-set avg_return `-1.81%`
+  - removed-set win rate `0%`
+  - removed-set review: `11` should stay removed, `0` over-removals
+
+- Drawdown quality: improved
+  - max drawdown `-14.84% -> -12.79%`
+  - Calmar `1.93 -> 2.45`
+
+## What Is Not Proven False
+
+- The refined branch is not a knife-edge threshold artifact.
+- The refined branch does not depend on deleting profitable samples.
+- The refined branch does not lose its edge once reasonable costs are applied.
+- The refined branch does not improve only in one tiny sample slice; the gain is concentrated in intended glued short-holding cleanup while medium/long buckets are preserved.
+
+## Real Remaining Blocker
+
+- The only blocker is governance preference, not quant evidence.
+- Automatic promotion was blocked because overlap loss exceeded the preset tolerance of `8` extra BUYs and `8` extra SELLs.
+- In other words:
+  - quant answer: refined is better
+  - governance answer: refined is more different
+
+## Decision Tree
+
+### Option A: Keep `alpha_first_selective_veto` As Formal Alpha
+
+Use this if the institution still values workbook continuity as a hard constraint.
+
+- Pros
+  - smaller divergence from workbook-style reconstructed history
+  - easier to explain as a conservative formal branch
+  - lower organizational change cost
+
+- Cons
+  - knowingly keeps `11` losing short-holding glued trades
+  - gives up better CAGR, PF, win rate, and drawdown quality
+  - keeps the weaker branch as the official alpha reference
+
+### Option B: Promote `alpha_first_glued_refined_hot_cap` To Formal Alpha
+
+Use this if the objective is now explicitly "robust alpha first, workbook resemblance second".
+
+- Pros
+  - best headline return and compounding
+  - best cost-stress behavior
+  - best drawdown profile
+  - better walk-forward behavior
+  - removed set is fully explainable and low quality
+
+- Cons
+  - formal overlap drops from `101/101` to `90/90`
+  - governance narrative must acknowledge deliberate workbook divergence
+
+### Option C: Keep Dual Track
+
+Use this if governance is not yet ready to bless the stronger branch as official, but research should clearly move around the stronger branch.
+
+- Operational meaning
+  - `alpha_first_selective_veto` stays frozen as control
+  - `alpha_first_glued_refined_hot_cap` becomes the default forward research branch
+  - all future new ideas are judged first against refined, then checked against control
+
+## Recommendation
+
+- Governance-neutral recommendation: keep `DUAL_TRACK_GOVERNANCE`
+- Alpha-first recommendation: promote `alpha_first_glued_refined_hot_cap`
+
+Reason:
+
+- If the question is "which branch is the better quant strategy", the answer is already `alpha_first_glued_refined_hot_cap`.
+- If the question is "which branch is safer to keep as an official bridge from workbook reconstruction", the answer remains `alpha_first_selective_veto`.
+
+Given the current research direction has already shifted toward stronger alpha, the practical operating stance should be:
+
+- forward research default: `alpha_first_glued_refined_hot_cap`
+- benchmark control: `alpha_first_selective_veto`
+- reconstruction reference: `workbook_preserving`
+
+## Promotion Trigger Rule
+
+Promote refined immediately if any one of the following is accepted explicitly:
+
+- workbook overlap is a cost metric, not a hard gate
+- overlap tolerance is widened from `8/8` to at least `11/11`
+- the official objective becomes "maximize robust alpha on `399673` under explainable rules"
+
+Do not block promotion on any of the following, because they have already been tested:
+
+- transaction cost pressure
+- local threshold fragility
+- weak walk-forward behavior
+- profitable-trade over-removal
+- worse drawdown quality
+
+## Execution Rule Going Forward
+
+- Do not resume workbook-style micro-alignment tuning as the main path.
+- New experiments should target:
+  - whether refined can be improved further without damaging its current robustness
+  - whether any new rule beats refined on quality and stability, not on workbook resemblance alone
+- If a future branch beats refined, compare it primarily against refined, not against workbook.

+ 22 - 0
research/dragon/v2/dragon_aux_sell_cycle_review.md

@@ -0,0 +1,22 @@
+# Dragon Aux Sell Cycle Review
+
+- Strategy aux SELL signals: `75`
+- Distinct sell cycles: `61`
+- Cycles with repeated `post_exit_confirmation` >= 2: `3`
+- Conservative compression candidates (repeated post-exit confirmations with zero workbook anchor): `1`
+
+## Repeated Post-Exit Confirmation Cycles
+- `2023-12-04 -> 2024-01-18` | aux SELL `2` | `post_exit_confirmation=2` | matched `0` | candidate `True`
+  unmatched post-exit dates: `2023-12-13 | 2023-12-14`
+- `2022-07-08 -> 2022-09-26` | aux SELL `4` | `post_exit_confirmation=2` | matched `2` | candidate `False`
+  matched dates: `2022-07-11 | 2022-07-15`
+- `2018-12-06 -> 2019-01-18` | aux SELL `2` | `post_exit_confirmation=2` | matched `1` | candidate `False`
+  matched dates: `2018-12-07`
+  unmatched post-exit dates: `2018-12-14`
+
+## Candidate Cycles To Review First
+- `2023-12-04 -> 2024-01-18` -> unmatched repeated post-exit dates `2023-12-13 | 2023-12-14`
+
+## Protected Cycles With Workbook Anchors
+- `2022-07-08 -> 2022-09-26` -> matched dates `2022-07-11 | 2022-07-15`; unmatched post-exit dates ``
+- `2018-12-06 -> 2019-01-18` -> matched dates `2018-12-07`; unmatched post-exit dates `2018-12-14`

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

@@ -0,0 +1,54 @@
+# Dragon Aux Signal Audit
+
+- Strategy aux signals: `94`
+- Aux BUY: `19`
+- Aux SELL: `75`
+- Workbook overlap: `20`
+
+## Cluster Summary
+- BUY / early_strength_reconfirm / matched `False`: `3`
+- BUY / other_hold_reconfirm / matched `False`: `9`
+- BUY / strong_dual_gold_reconfirm / matched `False`: `4`
+- BUY / strong_dual_gold_reconfirm / matched `True`: `1`
+- BUY / super_hot_trend_reconfirm / matched `False`: `2`
+- SELL / crash_followthrough / matched `True`: `1`
+- SELL / high_zone_warning / matched `False`: `3`
+- SELL / high_zone_warning / matched `True`: `4`
+- SELL / other_bearish_followthrough / matched `False`: `2`
+- SELL / other_bearish_followthrough / matched `True`: `2`
+- SELL / post_exit_confirmation / matched `False`: `46`
+- SELL / post_exit_confirmation / matched `True`: `11`
+- SELL / strong_break_warning / matched `False`: `5`
+- SELL / strong_break_warning / matched `True`: `1`
+
+## Workbook-Matched Aux Rows
+- 2018-03-09 BUY `bullish_signal_while_holding` -> `strong_dual_gold_reconfirm` | a1 `0.0371` b1 `0.2598` c1 `65.08`
+- 2016-05-06 SELL `bearish_signal_after_exit:kdj_sell` -> `other_bearish_followthrough` | a1 `-0.0059` b1 `-0.0717` c1 `69.50`
+- 2016-06-13 SELL `bearish_signal_after_exit:ql_sell` -> `post_exit_confirmation` | a1 `0.0072` b1 `0.0317` c1 `43.09`
+- 2017-09-19 SELL `bearish_signal_after_exit:ql_sell` -> `high_zone_warning` | a1 `0.0170` b1 `-0.0133` c1 `83.38`
+- 2018-07-27 SELL `bearish_signal_after_exit:ql_sell` -> `post_exit_confirmation` | a1 `0.0063` b1 `0.1544` c1 `38.04`
+- 2018-10-29 SELL `bearish_signal_after_exit:kdj_sell` -> `post_exit_confirmation` | a1 `-0.0463` b1 `0.0483` c1 `17.93`
+- 2018-12-07 SELL `bearish_signal_after_exit:kdj_sell` -> `post_exit_confirmation` | a1 `-0.0004` b1 `0.0600` c1 `62.94`
+- 2019-04-11 SELL `bearish_signal_after_exit:ql_sell` -> `high_zone_warning` | a1 `0.0208` b1 `-0.0019` c1 `85.83`
+- 2019-10-18 SELL `bearish_signal_after_exit:kdj_sell` -> `strong_break_warning` | a1 `-0.0019` b1 `-0.1341` c1 `64.53`
+- 2020-04-24 SELL `bearish_signal_after_exit:ql_sell` -> `post_exit_confirmation` | a1 `0.0205` b1 `0.0892` c1 `42.30`
+- 2020-08-07 SELL `bearish_signal_after_exit:kdj_sell` -> `high_zone_warning` | a1 `0.0451` b1 `-0.0004` c1 `87.77`
+- 2020-11-26 SELL `bearish_signal_after_exit:kdj_sell` -> `post_exit_confirmation` | a1 `-0.0114` b1 `-0.1477` c1 `57.68`
+- 2021-07-26 SELL `bearish_signal_after_exit:ql_sell` -> `post_exit_confirmation` | a1 `0.0178` b1 `-0.0623` c1 `82.49`
+- 2021-12-06 SELL `bearish_signal_after_exit:ql_sell` -> `high_zone_warning` | a1 `0.0105` b1 `-0.0262` c1 `86.10`
+- 2021-12-17 SELL `bearish_signal_after_exit:kdj_sell` -> `other_bearish_followthrough` | a1 `0.0044` b1 `-0.0669` c1 `77.17`
+- 2022-03-03 SELL `bearish_signal_after_exit:kdj_sell` -> `post_exit_confirmation` | a1 `-0.0213` b1 `0.0420` c1 `15.77`
+- 2022-07-11 SELL `bearish_signal_after_exit:ql_sell` -> `post_exit_confirmation` | a1 `0.0370` b1 `0.0225` c1 `87.33`
+- 2022-07-15 SELL `bearish_signal_after_exit:kdj_sell` -> `post_exit_confirmation` | a1 `0.0199` b1 `-0.0236` c1 `84.08`
+- 2023-10-16 SELL `bearish_signal_after_exit:kdj_sell` -> `post_exit_confirmation` | a1 `-0.0197` b1 `-0.0085` c1 `11.65`
+- 2025-10-17 SELL `bearish_signal_after_exit:state_crash_followthrough` -> `crash_followthrough` | a1 `0.0002` b1 `-0.1630` c1 `79.18`
+
+## Top Unmatched Buckets
+- SELL / post_exit_confirmation: `46`
+- BUY / other_hold_reconfirm: `9`
+- SELL / strong_break_warning: `5`
+- BUY / strong_dual_gold_reconfirm: `4`
+- SELL / high_zone_warning: `3`
+- BUY / early_strength_reconfirm: `3`
+- BUY / super_hot_trend_reconfirm: `2`
+- SELL / other_bearish_followthrough: `2`

+ 91 - 0
research/dragon/v2/dragon_baseline_config_snapshot.json

@@ -0,0 +1,91 @@
+{
+  "disabled_rules": [],
+  "post_exit_confirmation_window_days": 10,
+  "aux_sell_same_side_once_per_cycle": true,
+  "aux_sell_duplicate_cooldown_days": 5,
+  "aux_sell_high_zone_kdj_only_block_c1": 85.0,
+  "aux_sell_high_zone_kdj_only_block_b1": -0.02,
+  "aux_sell_high_zone_warning_c1": 80.0,
+  "aux_sell_strong_break_c1": 60.0,
+  "aux_sell_strong_break_b1": -0.05,
+  "aux_sell_stronger_c1_delta": 8.0,
+  "aux_sell_stronger_b1_delta": 0.05,
+  "aux_sell_high_zone_rearm_c1_delta": 2.0,
+  "state_crash_followthrough_window_days": 5,
+  "state_crash_followthrough_repeat_cooldown_days": 4,
+  "state_crash_followthrough_c1_max": 80.0,
+  "state_crash_followthrough_a1_max": 0.01,
+  "state_crash_followthrough_b1_max": -0.15,
+  "glued_high_weak_rebound_high_c1": 68.0,
+  "glued_high_weak_rebound_high_b1": -0.08,
+  "glued_high_weak_rebound_mid_c1": 50.0,
+  "glued_high_weak_rebound_mid_b1": -0.15,
+  "glued_high_weak_rebound_ql_c1_low": 35.0,
+  "glued_high_weak_rebound_ql_c1_high": 55.0,
+  "glued_high_weak_rebound_ql_b1": -0.06,
+  "glued_high_weak_rebound_ql_a1": -0.013,
+  "deep_oversold_filter1_c1_low": 13.0,
+  "deep_oversold_filter1_c1_high": 15.0,
+  "deep_oversold_filter1_a1_min": -0.04,
+  "deep_oversold_filter1_b1_max": -0.08,
+  "deep_oversold_filter2_c1_low": 13.0,
+  "deep_oversold_filter2_c1_high": 14.5,
+  "deep_oversold_filter2_a1_min": -0.04,
+  "deep_oversold_filter2_b1_min": -0.06,
+  "deep_oversold_entry_c1_max": 16.0,
+  "deep_oversold_entry_a1_min": -0.09,
+  "deep_oversold_entry_b1_min": -0.1,
+  "deep_oversold_shallow_ql_fallback": true,
+  "deep_oversold_positive_b1_fallback_a1_min": -0.02,
+  "deep_oversold_block_positive_b1_rebound": false,
+  "deep_oversold_block_shallow_false_start_without_ql": false,
+  "oversold_recovery_c1_low": 18.0,
+  "oversold_recovery_c1_high": 22.0,
+  "oversold_recovery_a1_min": -0.03,
+  "oversold_recovery_a1_max": 0.0,
+  "oversold_recovery_b1_min": -0.02,
+  "oversold_reversal_after_ql_block_c1_low": 23.0,
+  "oversold_reversal_after_ql_block_c1_high": 26.0,
+  "oversold_reversal_after_ql_block_b1_min": -0.12,
+  "oversold_reversal_after_ql_block_a1_min": -0.035,
+  "oversold_reversal_after_ql_entry_c1_low": 20.0,
+  "oversold_reversal_after_ql_entry_c1_high": 26.0,
+  "oversold_reversal_after_ql_entry_a1_min": -0.04,
+  "oversold_reversal_after_ql_entry_a1_max": 0.0,
+  "oversold_reversal_after_ql_entry_b1_min": -0.22,
+  "oversold_reversal_after_ql_entry_b1_max": 0.0,
+  "post_sell_rebound_block_high_c1": 22.0,
+  "post_sell_rebound_block_high_a1_min": -0.035,
+  "post_sell_rebound_block_high_b1_max": -0.07,
+  "post_sell_rebound_block_low_c1": 15.0,
+  "post_sell_rebound_block_low_a1_min": -0.04,
+  "post_sell_rebound_block_low_b1_max": -0.095,
+  "post_sell_rebound_entry1_c1_low": 18.0,
+  "post_sell_rebound_entry1_c1_high": 30.0,
+  "post_sell_rebound_entry1_a1_min": -0.045,
+  "post_sell_rebound_entry1_a1_max": 0.0,
+  "post_sell_rebound_entry1_b1_low": -0.09,
+  "post_sell_rebound_entry1_b1_high": -0.04,
+  "post_sell_rebound_entry2_c1_high": 19.0,
+  "post_sell_rebound_entry2_a1_min": -0.04,
+  "post_sell_rebound_entry2_a1_max": 0.0,
+  "post_sell_rebound_entry2_b1_low": -0.13,
+  "post_sell_rebound_entry2_b1_high": -0.09,
+  "predictive_b1_break_short_holding_days_max": 2,
+  "predictive_b1_break_short_a1_min": -0.02,
+  "predictive_b1_break_short_a1_max": 0.0,
+  "predictive_b1_break_short_b1_max": -0.13,
+  "predictive_b1_break_short_c1_low": 50.0,
+  "predictive_b1_break_short_c1_high": 70.0,
+  "predictive_b1_break_long_holding_days_min": 40,
+  "predictive_b1_break_long_max_c1": 80.0,
+  "predictive_b1_break_long_max_a1": 0.15,
+  "predictive_b1_break_long_max_b1": 0.3,
+  "predictive_b1_break_long_ql_days_max": 7,
+  "predictive_b1_break_long_a1_min": -0.02,
+  "predictive_b1_break_long_a1_max": 0.0,
+  "predictive_b1_break_long_b1_max": -0.12,
+  "predictive_b1_break_long_c1_low": 60.0,
+  "predictive_b1_break_long_c1_high": 65.0,
+  "enable_knife_take_profit_2_wait_ql": true
+}

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

@@ -0,0 +1,16 @@
+# Dragon Branch Divergence Report
+
+- latest_bar_date: `2026-04-03`
+- divergence_level: `none`
+- same_position_flag: `True`
+- same_latest_real_event_flag: `True`
+- refined_latest_event: `2026-02-13|SELL|knife_take_profit_2_glued`
+- control_latest_event: `2026-02-13|SELL|knife_take_profit_2_glued`
+- next_open_avg_return_delta: `0.53%`
+- next_open_pf_delta: `0.92`
+- warning_count: `0`
+- hard_breach_count: `0`
+- missing_data_count: `0`
+
+## Recent Log
+- `2026-04-03`: level `none`, same_position `True`, same_event `True`

+ 20 - 0
research/dragon/v2/dragon_deep_oversold_confirmation_experiments.md

@@ -0,0 +1,20 @@
+# Dragon Deep Oversold Confirmation Experiments
+
+- Goal: test an alpha-first branch for weak deep-oversold subtypes by replacing immediate entry with QL confirmation inside a short waiting window.
+- Scope: only `positive_b1_rebound` and `shallow_false_start`; default baseline behavior remains unchanged.
+
+## Summary
+- `baseline`: trades `107`, avg_return `2.52%`, profit_factor `3.31`, real BUY `106`, real SELL `105`, deep weak trades `5`, confirmed deep trades `0`
+- `confirm_weak_with_ql_1bar`: trades `104`, avg_return `2.67%`, profit_factor `3.56`, real BUY `101`, real SELL `102`, deep weak trades `2`, confirmed deep trades `2`
+- `confirm_weak_with_ql_2bar`: trades `104`, avg_return `2.67%`, profit_factor `3.56`, real BUY `101`, real SELL `102`, deep weak trades `2`, confirmed deep trades `2`
+- `confirm_weak_with_ql_3bar`: trades `103`, avg_return `2.73%`, profit_factor `3.66`, real BUY `101`, real SELL `101`, deep weak trades `1`, confirmed deep trades `1`
+
+## Delta Vs Baseline
+- `confirm_weak_with_ql_1bar`: delta_avg_return `0.15%`, delta_profit_factor `0.25`, delta_deep_weak_avg_return `-0.15%`, real BUY `101`, real SELL `102`
+- `confirm_weak_with_ql_2bar`: delta_avg_return `0.15%`, delta_profit_factor `0.25`, delta_deep_weak_avg_return `-0.15%`, real BUY `101`, real SELL `102`
+- `confirm_weak_with_ql_3bar`: delta_avg_return `0.21%`, delta_profit_factor `0.35`, delta_deep_weak_avg_return `0.11%`, real BUY `101`, real SELL `101`
+
+## Quant Judgment
+- Best alpha-first branch in this pack: `confirm_weak_with_ql_3bar` with avg_return `2.73%` and profit_factor `3.66`.
+- This pack is expected to lose workbook date alignment because entries are delayed by confirmation; treat it as a research branch, not a baseline patch.
+- If the best branch improves weak-subtype trade quality materially, the next step should be to audit shifted dates trade-by-trade rather than porting it directly into the baseline.

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

@@ -0,0 +1,49 @@
+# Dragon Deep Oversold Confirmation Review
+
+## Scope
+
+- Research branch only.
+- Default workbook-preserving baseline remains unchanged.
+- Tested idea: replace immediate entry for weak `deep_oversold` subtypes with short-window `QL` confirmation.
+
+## Experiment Result
+
+- Baseline: `107` trades, avg_return `2.52%`, profit_factor `3.31`, real BUY / SELL overlap `106 / 105`
+- `confirm_weak_with_ql_1bar`: `104` trades, avg_return `2.67%`, profit_factor `3.56`, real BUY / SELL overlap `101 / 102`
+- `confirm_weak_with_ql_2bar`: same top-level result as `1bar`
+- `confirm_weak_with_ql_3bar`: `103` trades, avg_return `2.73%`, profit_factor `3.66`, real BUY / SELL overlap `101 / 101`
+
+## What Actually Changed
+
+- All confirmation branches removed these baseline weak-subtype trades:
+- `2022-03-11 -> 2022-03-15` `positive_b1_rebound`
+- `2024-01-18 -> 2024-01-22` `shallow_false_start`
+- `2024-01-23 -> 2024-01-29` `shallow_false_start`
+
+- `1bar` / `2bar` also shifted two entries later rather than deleting them:
+- `2022-03-16 -> 2022-03-25` became `2022-03-17 -> 2022-03-25`
+- `2024-08-29 -> 2024-09-09` became `2024-08-30 -> 2024-09-09`
+
+- `3bar` was numerically best, but for an important reason:
+- it no longer re-entered the `2022-03-16` positive-B1 chain at all
+- it only kept the `2024-08-30` confirmed shallow-false-start chain
+
+## Trade-Level Interpretation
+
+- `2022-03-11` had no `QL` confirmation before failure. This is a clean veto candidate.
+- `2022-03-16` did get next-day `QL`, but delayed confirmation still produced a losing trade (`2022-03-17 -> 2022-03-25`, about `-3.18%`).
+- `2024-01-18` and `2024-01-23` had no `QL` confirmation and both failed quickly. These are also clean veto candidates.
+- `2024-08-29` did get next-day `QL`, but the delayed confirmed trade (`2024-08-30 -> 2024-09-09`) still lost about `-2.66%`.
+
+## Quant Judgment
+
+- The confirmation branch improves top-level returns mostly by vetoing weak subtype trades, not by creating better confirmed entries.
+- In other words, `QL` confirmation is acting more like a rejection filter than a genuine alpha confirmation for the weak `deep_oversold` bucket.
+- The best-looking `3bar` result is better mainly because it blocks more weak trades, not because a longer confirmation window is intrinsically superior.
+- This reinforces the earlier conclusion from the subtype blocking experiments: the alpha-first direction for weak `deep_oversold` subtypes is closer to selective veto / removal than to delayed confirmation.
+
+## Next Decision
+
+- For the workbook-preserving baseline: do nothing. These changes cost too much date alignment.
+- For a future alpha-first branch: prioritize weak-subtype veto logic before building a more elaborate confirmation state machine.
+- If confirmation is revisited later, it should be paired with an additional quality filter rather than using `QL` alone.

+ 10 - 0
research/dragon/v2/dragon_deep_oversold_experiments.md

@@ -0,0 +1,10 @@
+# Dragon Deep Oversold Experiments
+
+- Baseline deep-oversold trade count: `14`
+- Baseline real BUY / SELL overlap: `106` / `105`
+
+## Experiment Summary
+- `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`

+ 29 - 0
research/dragon/v2/dragon_deep_oversold_review.md

@@ -0,0 +1,29 @@
+# Dragon Deep Oversold Audit
+
+- audited trades: `14`
+- all buy dates aligned with workbook: `True`
+- all sell dates aligned with workbook: `True`
+- winners: `5` / `14`
+- fast failures (holding <= 6d and negative return): `7`
+
+## Entry Subtype Summary
+- `positive_b1_rebound`: trades `2`, win_rate `0.00%`, avg_return `-2.98%`, avg_mfe `2.72%`, avg_mae `-5.95%`, fast_failures `1`
+- `shallow_false_start`: trades `3`, win_rate `33.33%`, avg_return `-2.63%`, avg_mfe `2.20%`, avg_mae `-3.52%`, fast_failures `2`
+- `deep_capitulation`: trades `1`, win_rate `0.00%`, avg_return `-2.05%`, avg_mfe `1.91%`, avg_mae `-2.08%`, fast_failures `1`
+- `mixed_oversold`: trades `3`, win_rate `33.33%`, avg_return `-1.80%`, avg_mfe `2.82%`, avg_mae `-5.57%`, fast_failures `2`
+- `classic_oversold`: trades `5`, win_rate `60.00%`, avg_return `0.04%`, avg_mfe `3.54%`, avg_mae `-2.28%`, fast_failures `1`
+
+## Candidate Pressure Points
+- `2022-03-11 -> 2022-03-15`: `positive_b1_rebound` / `immediate_failure` | buy a1 `-0.0526` b1 `0.0297` c1 `15.11` | return `-5.78%`
+- `2022-02-09 -> 2022-02-11`: `mixed_oversold` / `immediate_failure` | buy a1 `-0.0550` b1 `-0.0510` c1 `10.04` | return `-5.42%`
+- `2024-01-23 -> 2024-01-29`: `shallow_false_start` / `rebound_then_fail` | buy a1 `-0.0345` b1 `-0.0227` c1 `12.24` | return `-4.72%`
+- `2024-01-18 -> 2024-01-22`: `shallow_false_start` / `immediate_failure` | buy a1 `-0.0318` b1 `-0.0234` c1 `12.90` | return `-3.30%`
+- `2018-09-18 -> 2018-10-08`: `classic_oversold` / `rebound_then_fail` | buy a1 `-0.0439` b1 `-0.0667` c1 `9.73` | return `-3.25%`
+- `2019-06-11 -> 2019-06-17`: `mixed_oversold` / `immediate_failure` | buy a1 `-0.0321` b1 `-0.0467` c1 `10.41` | return `-3.03%`
+- `2022-09-26 -> 2022-09-30`: `deep_capitulation` / `flat_noise` | buy a1 `-0.0650` b1 `-0.0866` c1 `10.95` | return `-2.05%`
+- `2024-08-15 -> 2024-08-20`: `classic_oversold` / `flat_noise` | buy a1 `-0.0283` b1 `-0.0843` c1 `11.49` | return `-0.92%`
+
+## Quant Judgment
+- This rule family cannot be bluntly removed because every current deep-oversold trade is workbook-aligned.
+- The weakest local pattern is not the deepest capitulation bucket; it is the shallow or positive-B1 rebound subset.
+- Any redesign should therefore prefer subtype gating or delayed confirmation for shallow rebounds rather than tighter global oversold thresholds.

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

@@ -0,0 +1,24 @@
+# Dragon Deep Oversold Selective Veto Experiments
+
+- Goal: test whether weak deep-oversold alpha can be improved by vetoing only the most pathological local patterns, instead of blocking whole subtypes.
+- Baseline objective is not preserved here; this is an alpha-first research pack.
+
+## Summary
+- `baseline`: trades `107`, avg_return `2.52%`, profit_factor `3.31`, real BUY `106`, real SELL `105`, deep weak trades `8`
+- `selective_veto_positive_c1_lt_15_3`: trades `106`, avg_return `2.60%`, profit_factor `3.48`, real BUY `105`, real SELL `104`, deep weak trades `7`
+- `selective_veto_shallow_jan_style`: trades `105`, avg_return `2.65%`, profit_factor `3.55`, real BUY `104`, real SELL `103`, deep weak trades `6`
+- `selective_veto_positive_and_shallow`: trades `104`, avg_return `2.73%`, profit_factor `3.75`, real BUY `103`, real SELL `102`, deep weak trades `5`
+- `selective_veto_plus_mixed_c1_lt_10_2_no_ql`: trades `103`, avg_return `2.81%`, profit_factor `3.96`, real BUY `102`, real SELL `101`, deep weak trades `4`
+- `block_all_remaining_weak_subtypes`: trades `102`, avg_return `2.78%`, profit_factor `3.76`, real BUY `101`, real SELL `100`, deep weak trades `3`
+
+## Delta Vs Baseline
+- `selective_veto_positive_c1_lt_15_3`: delta_avg_return `0.08%`, delta_profit_factor `0.17`, delta_deep_weak_avg_return `0.48%`, real BUY `105`, real SELL `104`
+- `selective_veto_shallow_jan_style`: delta_avg_return `0.12%`, delta_profit_factor `0.24`, delta_deep_weak_avg_return `0.53%`, real BUY `104`, real SELL `103`
+- `selective_veto_positive_and_shallow`: delta_avg_return `0.21%`, delta_profit_factor `0.44`, delta_deep_weak_avg_return `1.32%`, real BUY `103`, real SELL `102`
+- `selective_veto_plus_mixed_c1_lt_10_2_no_ql`: delta_avg_return `0.28%`, delta_profit_factor `0.65`, delta_deep_weak_avg_return `2.40%`, real BUY `102`, real SELL `101`
+- `block_all_remaining_weak_subtypes`: delta_avg_return `0.26%`, delta_profit_factor `0.45`, delta_deep_weak_avg_return `0.61%`, real BUY `101`, real SELL `100`
+
+## Quant Judgment
+- Best branch in this pack: `selective_veto_plus_mixed_c1_lt_10_2_no_ql` with avg_return `2.81%` and profit_factor `3.96`.
+- Compare this result to `block_all_remaining_weak_subtypes` to see whether narrow veto meaningfully preserves useful edge while still removing obvious losers.
+- If a narrow veto matches most of the broad-block benefit with smaller date loss, it is the better alpha-first redesign candidate.

+ 56 - 0
research/dragon/v2/dragon_deep_oversold_selective_veto_review.md

@@ -0,0 +1,56 @@
+# Dragon Deep Oversold Selective Veto Review
+
+## Scope
+
+- Alpha-first research branch only.
+- Formal workbook-preserving baseline remains unchanged.
+- Tested whether narrow local veto rules can outperform broad weak-subtype blocking.
+
+## Main Result
+
+- Baseline: `107` trades, avg_return `2.52%`, profit_factor `3.31`, real BUY / SELL overlap `106 / 105`
+- Best narrow branch: `selective_veto_plus_mixed_c1_lt_10_2_no_ql`
+- Result: `103` trades, avg_return `2.81%`, profit_factor `3.96`, real BUY / SELL overlap `102 / 101`
+- Broad comparison branch: `block_all_remaining_weak_subtypes`
+- Result: `102` trades, avg_return `2.78%`, profit_factor `3.76`, real BUY / SELL overlap `101 / 100`
+
+## Why The Best Narrow Branch Wins
+
+- It removes four clearly weak deep-oversold trades:
+- `2022-02-09 -> 2022-02-11` `mixed_oversold`
+- `2022-03-11 -> 2022-03-15` `positive_b1_rebound`
+- `2024-01-18 -> 2024-01-22` `shallow_false_start`
+- `2024-01-23 -> 2024-01-29` `shallow_false_start`
+
+- It keeps these borderline or partially useful trades that broad blocking would also kill:
+- `2022-03-16 -> 2022-03-25` `positive_b1_rebound`
+- `2024-08-29 -> 2024-09-09` `shallow_false_start`
+
+- Quant implication:
+- narrow veto preserves more surviving edge than broad subtype deletion
+- the weak-family problem is not “all positive-B1” or “all shallow false starts”
+- the weak-family problem is a smaller subset of locally fragile oversold rebounds
+
+## Candidate Alpha-First Veto Rules
+
+- Positive-B1 veto:
+- block `positive_b1_rebound` when `c1 < 15.3`
+
+- Shallow false-start veto:
+- block `shallow_false_start` when `c1 >= 12` and `b1 > -0.025`
+
+- Mixed oversold veto:
+- block `mixed_oversold` when `c1 < 10.2` and there is no same-day `QL`
+
+## Quant Judgment
+
+- This is the first deep-oversold alpha-first branch that is clearly better than a broad weak-subtype block.
+- It improves avg_return and profit_factor more than `block_all_remaining_weak_subtypes`, while losing fewer aligned dates.
+- Therefore the preferred Track-A direction is now:
+- do not start from broad subtype deletion
+- start from narrow pathological-pattern veto
+
+## Decision
+
+- Workbook-preserving baseline: no change.
+- Alpha-first branch: the best next implementation candidate is `selective_veto_plus_mixed_c1_lt_10_2_no_ql`.

+ 13 - 0
research/dragon/v2/dragon_equity_curve_review.md

@@ -0,0 +1,13 @@
+# Dragon Equity Curve Review
+
+- Evaluation window: `2016-01-01` to `2025-12-31`.
+- Equity is compounded in trade sequence order.
+
+## Summary
+- `workbook_preserving`: compounded `923.08%`, CAGR `26.18%`, max_drawdown `-15.54%`, drawdown_duration `36` trades, Calmar `1.69`
+- `alpha_first_selective_veto`: compounded `1146.08%`, CAGR `28.70%`, max_drawdown `-14.84%`, drawdown_duration `36` trades, Calmar `1.93`
+- `alpha_first_glued_refined_hot_cap`: compounded `1424.12%`, CAGR `31.32%`, max_drawdown `-12.79%`, drawdown_duration `16` trades, Calmar `2.45`
+
+## Quant Judgment
+- Best growth profile in this pack: `alpha_first_glued_refined_hot_cap` with CAGR `31.32%`, max_drawdown `-12.79%`, Calmar `2.45`.
+- Use this review to judge whether higher alpha is being purchased with unacceptable drawdown concentration.

+ 13 - 0
research/dragon/v2/dragon_event_gaps.md

@@ -0,0 +1,13 @@
+# Dragon Event Gap Diagnostics
+
+- Workbook: `龙泉回测20260109.data.xlsx`
+- Gap rows: `78`
+
+## Counts
+- extra_in_strategy / aux_signal / BUY: `18`
+- extra_in_strategy / aux_signal / SELL: `56`
+- extra_in_strategy / real_trade / BUY: `1`
+- extra_in_strategy / real_trade / SELL: `1`
+- missing_from_strategy / aux_signal / SELL: `2`
+
+## Sample Missing Real SELL Rows

+ 84 - 0
research/dragon/v2/dragon_formal_research_baseline.md

@@ -0,0 +1,84 @@
+# Dragon Formal Research Baseline
+
+## Scope
+- Universe: `399673` only.
+- Objective: preserve workbook real-trade alignment while upgrading the strategy into a researchable, testable, parameter-aware baseline.
+- Current baseline type: `workbook-preserving baseline`.
+
+## Locked Baseline Metrics
+- real BUY overlap: `106/106`
+- real SELL overlap: `105/105`
+- aux BUY overlap: `1/1`
+- aux SELL overlap: `19/21`
+- strategy trades: `107`
+- win_rate: `44.86%`
+- avg_return: `2.52%`
+- median_return: `-0.60%`
+- profit_factor: `3.31`
+
+## Baseline Config Snapshot
+- Snapshot file: `dragon_baseline_config_snapshot.json`.
+- Rule switches default to the current aligned strategy baseline; any future research branch should fork from this snapshot rather than editing against memory.
+
+## Core Alpha Families
+- `glued_buy`: trades `61`, avg_return `3.71%`, win_rate `45.90%`
+- `early_crash_probe_buy`: trades `6`, avg_return `4.62%`, win_rate `66.67%`
+- `oversold_recovery_buy`: trades `4`, avg_return `3.35%`, win_rate `50.00%`
+
+## Structural Support Families
+- `dual_gold_resonance_buy`: trades `14`, avg_return `0.84%`, win_rate `42.86%`
+- `deep_oversold_rebound_buy:classic_oversold`: trades `5`, avg_return `0.04%`, win_rate `60.00%`
+
+## Frozen Bridge Rules
+- `predictive_b1_break_exit`: bridge-style split-chain exit; loosening worsens results, tightening breaks workbook alignment.
+- `predictive_error_reentry_buy`: part of the same bridge chain; should be evaluated together with the predictive-break exit, not as an isolated entry.
+- Any internal hold gates added only to preserve workbook-aligned split paths should remain frozen unless the objective explicitly changes away from workbook preservation.
+
+## Redundant Or Label-Only Families
+- `non_glued_positive_expansion_buy`: now absorbed by `dual_gold_resonance_buy` on the same in-sample dates; treat as redundant label, not independent alpha.
+- Auxiliary same-side post-exit sell compression: keep as hygiene logic, not as a primary optimization frontier.
+
+## Active Research Families
+- `deep_oversold_rebound_buy:positive_b1_rebound`: trades `2`, avg_return `-2.98%`, win_rate `0.00%`
+- `post_washout_kdj_reentry_buy`: trades `1`, avg_return `-2.86%`, win_rate `0.00%`
+- `deep_oversold_rebound_buy:shallow_false_start`: trades `3`, avg_return `-2.63%`, win_rate `33.33%`
+- `deep_oversold_rebound_buy:deep_capitulation`: trades `1`, avg_return `-2.05%`, win_rate `0.00%`
+- `deep_oversold_rebound_buy:mixed_oversold`: trades `3`, avg_return `-1.80%`, win_rate `33.33%`
+- `oversold_reversal_after_ql_buy`: trades `1`, avg_return `-0.77%`, win_rate `0.00%`
+- `post_sell_rebound_buy`: trades `4`, avg_return `1.84%`, win_rate `25.00%`
+
+## Threshold Classification
+- Fragile parameters: change them only inside explicit experiment branches and always rerun full alignment diagnostics.
+- `predictive_b1_break_short_b1_max`: avg_return_range `0.17%`, min real BUY `106`, min real SELL `104`
+- `deep_oversold_entry_c1_max`: avg_return_range `0.10%`, min real BUY `104`, min real SELL `103`
+- `deep_oversold_entry_b1_min`: avg_return_range `0.09%`, min real BUY `102`, min real SELL `101`
+- `predictive_b1_break_long_b1_max`: avg_return_range `0.07%`, min real BUY `105`, min real SELL `104`
+- Relatively robust parameters: acceptable first candidates for future controlled sweeps.
+- `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`
+
+## Temporal Stability
+- Anchored expanding windows: positive out-of-sample years `8/10`.
+- Rolling 3Y windows: positive out-of-sample years `7/8`.
+- This validation holds the strategy fixed; it is a time-stability audit, not a refit-based optimizer.
+- Strong family persistence candidates:
+- `early_crash_probe_buy`: years_active `5`, positive_years `3`, negative_years `2`, avg_yearly_avg_return `5.59%`
+- `glued_buy`: years_active `10`, positive_years `7`, negative_years `3`, avg_yearly_avg_return `4.41%`
+- `oversold_recovery_buy`: years_active `4`, positive_years `2`, negative_years `2`, avg_yearly_avg_return `3.35%`
+- Weak family persistence candidates:
+- `deep_oversold_rebound_buy`: years_active `5`, positive_years `1`, negative_years `4`, avg_yearly_avg_return `-1.35%`
+- `dual_gold_resonance_buy`: years_active `7`, positive_years `2`, negative_years `5`, avg_yearly_avg_return `0.16%`
+- `post_sell_rebound_buy`: years_active `3`, positive_years `1`, negative_years `2`, avg_yearly_avg_return `0.52%`
+
+## Operating Rules For Future Research
+- Do not trade off `106/106` and `105/105` alignment silently. Any alignment loss must be treated as a branch with an explicit objective change.
+- Do not blind-tune predictive-break thresholds. That family is frozen under the current baseline objective.
+- Do not optimize the auxiliary layer first. The main leverage is now in weak entry-family redesign and short-holding loss control.
+- New ideas should first be tested as local attribution experiments, then full-sample reruns, then temporal-stability checks.
+
+## Next Research Track
+- Track A: redesign remaining `deep_oversold_rebound_buy` weak subtypes with delayed confirmation or fallback routing, not blunt deletion.
+- Track B: explicitly target short holding buckets `00-05d` and `06-10d`, which remain the main quality drag.
+- Track C: separate a future `alpha-first` research branch from this workbook-preserving baseline if the goal later changes from reconstruction to pure performance.

+ 149 - 0
research/dragon/v2/dragon_formal_strategy_governance.md

@@ -0,0 +1,149 @@
+# Dragon Formal Strategy Governance
+
+## Objective
+
+Turn `alpha_first_glued_refined_hot_cap` from a governed research candidate into a strategy asset with explicit:
+
+- branch roles
+- promotion rules
+- downgrade rules
+- change protocol
+- monitoring protocol
+
+## Branch Roles
+
+- `workbook_preserving`
+  - role: reconstruction reference
+  - use: workbook explanation, regression checks, reverse-engineering audit
+  - change rule: do not optimize for alpha on this branch
+
+- `alpha_first_selective_veto`
+  - role: benchmark control branch
+  - use: compare refined against the current conservative alpha baseline
+  - change rule: keep frozen unless governance explicitly resets the control
+
+- `alpha_first_glued_refined_hot_cap`
+  - role: forward default branch
+  - use: primary research, robustness validation, and formal promotion candidate
+  - change rule: all new strategy research starts here unless the task is explicitly reconstruction-oriented
+
+## Governance State
+
+- governance-neutral state: `DUAL_TRACK_GOVERNANCE`
+- operational default for forward research: `alpha_first_glued_refined_hot_cap`
+- benchmark control: `alpha_first_selective_veto`
+- reconstruction reference: `workbook_preserving`
+
+## Promotion Rule
+
+Promote `alpha_first_glued_refined_hot_cap` to the formal strategy branch if any one of the following governance choices is accepted:
+
+- workbook overlap is treated as a cost metric rather than a hard gate
+- overlap tolerance is widened to at least the current refined delta
+- the official objective becomes "robust alpha first on `399673` under explainable rules"
+
+Promotion also requires all of the following quantitative gates to remain true:
+
+- headline quality gate: pass
+- removed-trade quality gate: pass
+- local stability gate: pass
+- execution-aware robustness gate: pass
+- drawdown quality gate: pass
+
+## Execution-Aware Robustness Gate
+
+The branch remains promotion-eligible only if it continues to satisfy:
+
+- next-open execution still beats control on avg return and profit factor
+- next-open plus `20 bps/side` still beats control on CAGR and profit factor
+- max drawdown is not worse than control under next-open stress
+- loss clustering is not worse than control on:
+  - max loss streak
+  - worst 5-trade sum
+  - drawdown duration
+
+## Downgrade Rule
+
+Downgrade refined from forward default back to control-default only if one of the following happens:
+
+- a new rerun shows refined no longer beats control under next-open execution
+- removed-trade review starts showing meaningful profitable over-removals
+- local sensitivity turns knife-edge
+- short-holding cleanup disappears while overlap cost remains large
+- a newer branch dominates refined on quality and stability together
+
+## Change Protocol
+
+### Class A: Frozen Formal Changes
+
+These changes may not go directly into the formal refined branch. They require a new named research branch:
+
+- any change to glued selective veto thresholds
+- any change to deep-oversold selective veto thresholds
+- any change to predictive bridge exits that alters real trade flow
+- any change that shifts the removed-trade set
+
+Required process:
+
+1. create a new branch name
+2. rerun attribution pack
+3. rerun execution-aware robustness pack
+4. compare against refined and control
+5. write an explicit promotion or rejection memo
+
+### Class B: Research Changes
+
+These may be explored in research branches but not merged into refined without review:
+
+- secondary rebound entry redesign
+- weak deep-oversold subtype redesign
+- exit interaction changes outside hygiene-only scope
+- regime gating changes
+
+Required process:
+
+1. local rationale
+2. full-sample rerun
+3. stress rerun
+4. family-level attribution check
+
+### Class C: Hygiene Changes
+
+These may be accepted more easily if they do not alter real-trade structure materially:
+
+- auxiliary signal compression
+- reporting-only changes
+- non-trading metadata tagging
+- documentation and monitoring updates
+
+Required process:
+
+1. verify no harmful real-trade drift
+2. verify no hidden metric regression
+3. document the change
+
+## Default Comparison Rule
+
+- If the question is "is the new branch a better strategy?", compare against `alpha_first_glued_refined_hot_cap`.
+- If the question is "is workbook reconstruction preserved?", compare against `workbook_preserving`.
+- Do not mix those two objectives in one headline decision.
+
+## Required Deliverables Before Future Promotion
+
+Any candidate that wants to replace refined must provide:
+
+- branch summary
+- branch trade diff
+- removed-trade review
+- local sensitivity review
+- execution-aware robustness review
+- final governance judgment
+
+## Current Governance Judgment
+
+- Refined is already the stronger quant branch.
+- Non-promotion is currently a governance choice, not an evidence gap.
+- Therefore:
+  - refined should be treated as the default forward strategy branch
+  - control should remain frozen for comparison
+  - workbook branch should remain an audit baseline only

+ 98 - 0
research/dragon/v2/dragon_formal_strategy_memo.md

@@ -0,0 +1,98 @@
+# Dragon Formal Strategy Memo
+
+## Strategy Identity
+
+- Instrument scope: `399673` only
+- Current strongest branch: `alpha_first_glued_refined_hot_cap`
+- Control branch: `alpha_first_selective_veto`
+- Reconstruction branch: `workbook_preserving`
+
+## Official Objective
+
+Build an explainable, robust alpha strategy on `399673` where:
+
+- robustness is more important than perfect workbook resemblance
+- useless short trades are removed first
+- large trend profits are preserved
+- annualized return is a secondary consequence, not the first optimization target
+
+## Current Strategy Judgment
+
+### Quant Best Branch
+
+- `alpha_first_glued_refined_hot_cap`
+
+Why:
+
+- better avg return
+- better profit factor
+- better win rate
+- better drawdown profile
+- better execution-aware stress behavior
+- better short-loss clustering than control
+
+### Conservative Governance Branch
+
+- `alpha_first_selective_veto`
+
+Why:
+
+- smaller workbook divergence
+- easier bridge from reconstruction to alpha-first research
+
+## Edge Source
+
+The current edge is not broad and diffuse. It is concentrated in:
+
+- `glued_buy` as the main alpha engine
+- preserved medium and long holding winners
+- deletion of weak short-holding glued trades
+- support from `early_crash_probe_buy`
+- secondary support from `oversold_recovery_buy` and `dual_gold_resonance_buy`
+
+The branch does **not** mainly improve by:
+
+- adding many new trade paths
+- aggressive curve-fit threshold searching
+- deleting profitable samples
+
+## Known Weak Points
+
+- weak deep-oversold subtypes remain fragile
+- secondary rebound families are not strong edge sources
+- worst loss family is still `glued_buy`, even though refined has improved it
+- governance still needs to decide whether workbook overlap is a hard gate or a cost metric
+
+## What Is Already Proven
+
+- removed trades vs control are low quality
+- refined is locally stable under nearby threshold perturbations
+- refined remains ahead under transaction cost pressure
+- refined remains ahead under next-open and next-close execution assumptions
+- refined has better loss clustering and drawdown duration than control
+
+## What Must Not Be Done
+
+- do not resume workbook-style micro-alignment as the main optimization path
+- do not blind-tune predictive bridge exits
+- do not change glued selective veto thresholds inside the formal branch without opening a new research branch
+- do not treat auxiliary signal cleanup as the main alpha frontier
+
+## Current Operating Rule
+
+- forward default: `alpha_first_glued_refined_hot_cap`
+- benchmark control: `alpha_first_selective_veto`
+- reconstruction audit baseline: `workbook_preserving`
+
+## Next Research Focus
+
+- execution-aware robustness should remain the live validation layer
+- future optimization should target weak secondary families, not the core glued alpha trunk
+- any new candidate must beat refined on both quality and robustness, not just workbook resemblance
+
+## Bottom Line
+
+`alpha_first_glued_refined_hot_cap` is now the best strategy branch in the workspace from a quant point of view.
+
+If it is not promoted, that should be treated as a governance choice.
+It should no longer be treated as an unresolved research question.

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

@@ -0,0 +1,24 @@
+# Dragon Forward Branch Roles
+
+## Branch Roles
+
+- `workbook_preserving`
+  - role: reconstruction reference
+  - use: explain workbook behavior and maintain the official reverse-engineered baseline
+  - do not use as the main optimization target
+
+- `alpha_first_selective_veto`
+  - role: formal control alpha branch
+  - use: benchmark for current official alpha-first behavior
+  - governance status: current formal alpha baseline
+
+- `alpha_first_glued_refined_hot_cap`
+  - role: leading next alpha candidate
+  - use: main forward research subject
+  - governance status: governed candidate, not yet auto-promoted
+
+## Forward Decision Rule
+
+- If a new study asks whether the stronger branch is better, compare against `alpha_first_selective_veto`.
+- If a new study asks whether workbook reconstruction is preserved, compare against `workbook_preserving`.
+- Do not mix the two objectives inside a single headline judgment.

+ 102 - 0
research/dragon/v2/dragon_forward_observation_state.json

@@ -0,0 +1,102 @@
+{
+  "last_run_timestamp": "2026-04-05T18:21:41",
+  "request_date": "2026-04-05",
+  "latest_bar_date": "2026-04-03",
+  "branches": {
+    "workbook_preserving": {
+      "branch": "workbook_preserving",
+      "as_of_date": "2026-04-03",
+      "latest_close": 3317.184,
+      "latest_a1": -0.0157363252915279,
+      "latest_b1": -0.1435450523658604,
+      "latest_c1": 47.25975115874715,
+      "latest_kdj_buy": false,
+      "latest_kdj_sell": false,
+      "latest_ql_buy": false,
+      "latest_ql_sell": false,
+      "latest_real_event_date": "2026-02-13",
+      "latest_real_event_side": "SELL",
+      "latest_real_event_reason": "knife_take_profit_2_glued",
+      "events_today_count": 0,
+      "events_today": null,
+      "in_position": false,
+      "open_entry_date": null,
+      "open_entry_reason": null,
+      "open_entry_price": null,
+      "open_holding_days": null,
+      "open_return_pct": null
+    },
+    "alpha_first_selective_veto": {
+      "branch": "alpha_first_selective_veto",
+      "as_of_date": "2026-04-03",
+      "latest_close": 3317.184,
+      "latest_a1": -0.0157363252915279,
+      "latest_b1": -0.1435450523658604,
+      "latest_c1": 47.25975115874715,
+      "latest_kdj_buy": false,
+      "latest_kdj_sell": false,
+      "latest_ql_buy": false,
+      "latest_ql_sell": false,
+      "latest_real_event_date": "2026-02-13",
+      "latest_real_event_side": "SELL",
+      "latest_real_event_reason": "knife_take_profit_2_glued",
+      "events_today_count": 0,
+      "events_today": null,
+      "in_position": false,
+      "open_entry_date": null,
+      "open_entry_reason": null,
+      "open_entry_price": null,
+      "open_holding_days": null,
+      "open_return_pct": null
+    },
+    "alpha_first_glued_refined_hot_cap": {
+      "branch": "alpha_first_glued_refined_hot_cap",
+      "as_of_date": "2026-04-03",
+      "latest_close": 3317.184,
+      "latest_a1": -0.0157363252915279,
+      "latest_b1": -0.1435450523658604,
+      "latest_c1": 47.25975115874715,
+      "latest_kdj_buy": false,
+      "latest_kdj_sell": false,
+      "latest_ql_buy": false,
+      "latest_ql_sell": false,
+      "latest_real_event_date": "2026-02-13",
+      "latest_real_event_side": "SELL",
+      "latest_real_event_reason": "knife_take_profit_2_glued",
+      "events_today_count": 0,
+      "events_today": null,
+      "in_position": false,
+      "open_entry_date": null,
+      "open_entry_reason": null,
+      "open_entry_price": null,
+      "open_holding_days": null,
+      "open_return_pct": null
+    }
+  },
+  "monitor_summary": {
+    "warning_count": 0,
+    "missing_data_count": 0,
+    "hard_breach_count": 0,
+    "warning_metrics": [],
+    "missing_data_metrics": [],
+    "hard_breach_metrics": []
+  },
+  "divergence": {
+    "latest_bar_date": "2026-04-03",
+    "request_date": "2026-04-05",
+    "same_position_flag": true,
+    "same_latest_real_event_flag": true,
+    "refined_in_position": false,
+    "control_in_position": false,
+    "refined_latest_event": "2026-02-13|SELL|knife_take_profit_2_glued",
+    "control_latest_event": "2026-02-13|SELL|knife_take_profit_2_glued",
+    "next_open_avg_return_delta": 0.0052846983279676,
+    "next_open_pf_delta": 0.9170407302181012,
+    "next_open_max_drawdown_refined": -0.1319253592544694,
+    "next_open_max_loss_streak_refined": 8,
+    "warning_count": 0,
+    "hard_breach_count": 0,
+    "missing_data_count": 0,
+    "divergence_level": "none"
+  }
+}

+ 223 - 0
research/dragon/v2/dragon_forward_research_plan.md

@@ -0,0 +1,223 @@
+# Dragon Forward Research Plan
+
+## Core Objective
+
+Promote `alpha_first_glued_refined_hot_cap` from a strong research candidate into a formal quant strategy track that is:
+
+- explainable
+- robust
+- governable
+- suitable for continued research and practical validation
+
+This is no longer a workbook-reconstruction project. The main question is no longer "does it look like the workbook?" but "is this now the best explainable and robust strategy branch for `399673`?"
+
+## Branch Roles
+
+- `workbook_preserving`
+  - role: reconstruction reference
+  - use: explain workbook behavior, run regression checks, preserve reverse-engineered baseline
+  - not the main optimization target
+
+- `alpha_first_selective_veto`
+  - role: benchmark control branch
+  - use: compare current official alpha behavior against stronger branches
+  - keep frozen unless governance explicitly changes
+
+- `alpha_first_glued_refined_hot_cap`
+  - role: forward research default
+  - use: main strategy candidate for future formalization
+  - primary target for all next-stage analysis
+
+## Working Principles
+
+- Do not return to workbook-style micro-alignment as the main path.
+- Do not use black-box tuning.
+- Every meaningful new change must pass:
+  - local attribution
+  - full-sample validation
+  - robustness review
+- Priorities remain:
+  - robustness first
+  - reduce useless trades second
+  - preserve large-trend profits third
+  - annualized return fourth
+
+## Phase 1: Freeze Research Objective
+
+### Goal
+
+Lock branch usage so later work does not drift back into mixed objectives.
+
+### Rules
+
+- `workbook_preserving` is only for reconstruction reference.
+- `alpha_first_selective_veto` is only for control comparison.
+- `alpha_first_glued_refined_hot_cap` is the default forward branch.
+- New headline judgments should be `refined vs control`, not `refined vs workbook`.
+
+### Status
+
+- completed
+
+### Main Reference
+
+- `dragon_alpha_promotion_decision.md`
+
+## Phase 2: Refined-Branch Alpha Attribution
+
+### Goal
+
+Explain exactly where refined alpha comes from and why the branch is better.
+
+### Questions To Answer
+
+- Which entry families truly create alpha?
+- Which exit families actually improve trade quality?
+- Are deleted trades genuinely low quality?
+- Are preserved winning trades structurally consistent?
+- Is the edge coming from better entries, better exits, or better interaction between both?
+
+### Work Items
+
+- decompose all entry families, especially `glued_buy`
+- decompose exit families and their realized trade outcomes
+- fully recheck the `11` removed trades versus control
+- profile the retained winning trades in refined
+- run entry/exit interaction attribution
+- classify rule families into:
+  - core alpha families
+  - support families
+  - bridge / governance families
+  - redundant families
+
+### Planned Outputs
+
+- `dragon_refined_alpha_attribution.csv`
+- `dragon_refined_family_decomposition.csv`
+- `dragon_refined_removed_trade_recheck.csv`
+- `dragon_refined_edge_review.md`
+
+### Success Criteria
+
+- main edge source is explainable
+- removed set remains structurally weak
+- contribution is not dominated by one accidental sample pocket
+- family roles are clearly separated
+
+## Phase 3: Execution-Aware Robustness Validation
+
+### Goal
+
+Test whether refined remains strong under more realistic trading constraints.
+
+### Questions To Answer
+
+- Does refined stay ahead after more realistic costs and slippage?
+- Does delayed execution materially damage the edge?
+- Is risk concentrated in a small set of years, regimes, or rule families?
+- Is drawdown improvement real rather than cosmetic?
+- Does the branch remain stable under small local perturbations?
+
+### Work Items
+
+- cost and slippage stress
+- execution-lag / next-bar execution review
+- risk-cluster review
+- regime / year / family / holding-bucket stability review
+- local parameter-neighborhood checks around refined only
+
+### Planned Outputs
+
+- `dragon_refined_execution_stress.csv`
+- `dragon_refined_latency_review.csv`
+- `dragon_refined_risk_cluster_review.csv`
+- `dragon_refined_stability_review.md`
+
+### Success Criteria
+
+- refined still outperforms control under realistic stress
+- no major hidden concentration risk appears
+- improvements survive local perturbation
+- short-holding cleanup remains valid under execution drag
+
+## Phase 4: Formal Strategy Governance
+
+### Goal
+
+Convert refined from a research branch into a governed strategy asset.
+
+### Questions To Answer
+
+- What formally triggers promotion to official strategy status?
+- Which parameters are frozen and which may still be researched?
+- Which KPIs should be monitored continuously?
+- What conditions should trigger downgrade, rollback, or forced review?
+
+### Work Items
+
+- define promotion rules
+- define parameter governance rules
+- define monitoring KPIs
+- define failure and downgrade triggers
+- define branch management protocol
+
+### Planned Outputs
+
+- `dragon_formal_strategy_governance.md`
+- `dragon_parameter_governance.md`
+- `dragon_strategy_monitoring_template.csv`
+
+### Success Criteria
+
+- strategy upgrades are rule-based rather than opinion-based
+- future experiments cannot silently pollute the formal branch
+- monitoring and downgrade paths are explicit
+
+## Phase 5: Final Strategy Memo
+
+### Goal
+
+Produce a concise formal memo describing the strategy as a durable research and operating asset.
+
+### Contents
+
+- official objective
+- edge source
+- known weak points
+- validated strengths
+- practical operating rules
+- what still requires future validation
+- final branch recommendation
+
+### Planned Output
+
+- `dragon_formal_strategy_memo.md`
+
+### Success Criteria
+
+- future reviews can rely on one memo instead of scattered research notes
+- branch choice, edge source, and governance rules are all explicit
+
+## Current Stage Target
+
+The immediate target is not to compress a few more historical dates and not to blindly chase annualized return.
+
+The immediate target is:
+
+prove that `alpha_first_glued_refined_hot_cap` is a strategy branch with:
+
+- clear edge source
+- justified trade deletions
+- stable behavior under realistic execution constraints
+- explicit governance and monitoring rules
+
+## Immediate Next Step
+
+Start with Phase 2:
+
+1. family-level decomposition
+2. removed-trade recheck
+3. entry/exit interaction attribution
+4. consolidated edge review
+
+Once this is complete, the branch will move from "better result" to "explained result".

Разлика између датотеке није приказан због своје велике величине
+ 373 - 0
research/dragon/v2/dragon_historical_trade_details.html


+ 2 - 2
research/dragon/v2/dragon_html_reports.py

@@ -1666,8 +1666,8 @@ def build_historical_detail_html(base_dir: Path, archive_mode: bool = False) ->
 
       function eventLabel(evt) {{
         return evt.layer === 'real_trade'
-          ? `鐪熷疄${{evt.side}}`
-          : `杈呭姪${{evt.side}}`;
+          ? `真实${{evt.side}}`
+          : `辅助${{evt.side}}`;
       }}
 
       function eventBucketKey(evt) {{

Разлика између датотеке није приказан због своје велике величине
+ 373 - 0
research/dragon/v2/html_reports/dragon_historical_trade_details_2026-04-03.html