## 2026-04-04 - 用户请求:分析 `dragon/v2` 目录下文件,总结交易数据。 - 目录内实际只有一个 Excel 文件:`龙泉回测20260109.data.xlsx`。 - 工作簿包含两个 sheet: - `龙泉`:交易节点、阶段估值、年度收益汇总 - `焚诀(规则)`:策略规则文字说明 - 关键统计结论: - 初始资金 `55,450` - 2025-12-31 已实现资金 `910,785.96` - 2016-2025 累计收益约 `+1542.54%`,资金约 `16.43x` - 对应 CAGR 约 `32.30%` - 用户确认表内 `21` 个未重新开仓就再次出现的卖点只是看空信号标记,不是真实交易卖点 - 另有 `1` 个持仓中再次买入记录,当前先归类为持仓中辅助看多信号 - 已输出 `true_trade_events.csv`、`true_trades.csv`、`auxiliary_signals.csv`、`trade_split_summary.md` - 按真实交易口径,可配对 `105` 笔完整交易,胜率约 `44.8%`,均值收益约 `+3.15%` - 后续分析结论: - 短持有交易(0-10 天)整体显著亏损,11 天以上才开始明显转正 - `KDJ/QL双金叉`、`刀口舔血2`、带明确信号标签的买点质量明显高于未标注买点 - 空仓后的重复卖点看空标记有一定信息量,到下一次真实买点前平均还能多跌约 `4.1%`,但只有约 `60%` 有效,更适合做仓位/等待过滤,不适合作为硬性 veto - 用户补充确认: - `C1` 与 `C4` 为同一指标的不同名称 - `QL凤凰线` 的 `B/S` 是上穿/下穿的计算结果 - 本轮重构只针对 `399673` - 持仓中再次出现的 `BUY` 视为辅助看多信号 - 已完成第一阶段代码实现并生成: - `dragon_workbook.py` - `dragon_indicators.py` - `dragon_state_machine.py` - `dragon_validate.py` - `dragon_indicator_snapshot.csv` - `dragon_workbook_layers.csv` - `dragon_signal_alignment.csv` - `dragon_validation.md` - 当前验证结果: - 明确标记口径下,`KDJ` 对齐 `197/197` 的买点、`196/197` 的死叉;唯一死叉错位日为 `2018-05-23` - `QL` 的 `B/S` 标记对齐 `112/112` - 已实现 `dragon_strategy.py` 与 `dragon_backtest.py`,完成第一版可执行规则树与基线回测 - 当前基线贴合度: - 真实买点:工作簿 `106`,策略 `97`,重合 `78` - 真实卖点:工作簿 `105`,策略 `96`,重合 `64` - 辅助买点:工作簿 `1`,策略 `48`,重合 `0` - 辅助卖点:工作簿 `21`,策略 `195`,重合 `11` - 当前基线交易统计:`96` 笔,胜率约 `42.71%`,平均收益约 `+2.23%`,中位数约 `-0.61%` - 当前最明显的问题: - 买入规则过度偏向 `glued_buy`,共 `77` 笔 - 卖出规则过度偏向 `knife_take_profit_2_glued`,共 `70` 笔 - 说明 `见好就收1/2`、高位大行情退出、预警减仓点、股灾兜底等高位退出规则仍未充分编码 - 后续推进: - 已补入 `crash_protection_exit`,`2025-10-14` 已成功命中真实卖点 - 已生成 `dragon_event_gaps.csv` 与 `dragon_event_gaps.md`,用于系统化分析工作簿未命中/额外命中事件 - 当前关键偏差集中在: - `2019-03-25` 预警减仓点 - `2020-03-09` / `2020-07-24` / `2020-08-07` 的大行情高位退出 - `2021-06-16` / `2021-07-16` 的“大行情第一次不卖、第二次确认再卖”逻辑 - `2022-07-08` / `2022-07-11` 的预警减仓与正式卖点拆分 - Later refinement on `dragon_strategy.py`: - added explicit high-regime exit handling before generic glued exits - changed `B1 negative count` from daily accumulation to sell-signal-node accumulation - blocked premature ql-only high-zone exits such as `2021-06-03` - recovered workbook-style key events: `2019-03-25`, `2020-03-09`, `2020-07-24`, `2021-06-16`, `2021-06-21`, `2021-07-16`, `2022-07-08`, `2022-07-11`, `2022-07-15` - current fit after rerun: - real BUY overlap `78/106` - real SELL overlap `70/105` - aux BUY overlap `0/1` - aux SELL overlap `15/21` - strategy trades `97`, win rate `44.33%`, avg return `2.42%`, median return `-0.59%` - Later refinements after more rule work: - added `ql_high_zone_take_profit` / `ql_mid_zone_take_profit` - added `deep_oversold_rebound_buy` and `oversold_recovery_buy` - added `super_hot_trend_hold` to preserve `2025-10-14` crash-protection exit - latest verified fit: - real BUY overlap `96/106` - real SELL overlap `88/105` - missing real BUY down to `10` - missing real SELL down to `17` - strategy trades `118`, win rate `44.07%`, avg return `2.04%`, median return `-0.61%` - important recovered dates in this stage: - buys: `2022-02-09`, `2022-02-15`, `2022-03-11`, `2022-03-16`, `2022-04-27`, `2022-09-26`, `2022-11-01`, `2023-06-12` - sells: `2020-05-22`, `2021-11-18`, `2024-03-22`, `2022-02-11`, `2022-02-22`, `2022-03-15`, `2022-03-25`, `2022-05-24`, `2022-09-30`, `2022-11-10`, `2023-06-21`, `2025-10-14` - Final edge-pattern refinements in this session: - fixed same-bar buy/sell execution bug in `run()` - added `oversold_reversal_after_ql_buy` - added `oversold_rebound_take_profit` - added `predictive_b1_break_exit` and `predictive_error_reentry_buy` - latest verified fit: - real BUY overlap `98/106` - real SELL overlap `91/105` - missing real BUY down to `8` - missing real SELL down to `14` - remaining misses are concentrated in early `2016-2019` samples - recovered late-sample dates: - `2023-08-28`, `2023-09-07`, `2023-10-12`, `2024-11-28`, `2024-11-29` - Final pass today closed all remaining real-trade gaps in `dragon/v2`. - Root causes were three overly broad ql-only exit paths and one non-standard post-washout reentry day. - Implemented: - narrow `low_zone_wait_kdj_confirmation` to `14<=c1<30` - add `glued_mid_zone_wait_kdj_confirmation` - add `oversold_low_zone_wait_kdj_confirmation` - add `post_washout_kdj_reentry_buy` - allow `_buy_decision()` evaluation while flat even on non-buy-signal days, so workbook-style special reentry can be captured - final verified fit after serial rerun: - real BUY overlap `106/106` - real SELL overlap `105/105` - aux BUY overlap `1/1` - aux SELL overlap `15/21` - strategy trades `130`, win rate `42.31%`, avg return `1.84%`, median return `-0.77%` - Later quality optimization on the same day: - added `buy_block_glued_high_weak_rebound` with `c1 > 68` and `b1 < -0.08` to cut false glued entries in high weak rebound states - compressed flat-state auxiliary sell output via `_should_emit_aux_sell()` - aux sell now only emits for: - repeated bearish confirmation within 10 days after a real sell - or high-zone renewed weakness (`c1 > 80`) - or `kdj_sell` with `c1 > 60` and `b1 < -0.05` - corrected `dragon_backtest.py` to trim strategy evaluation to workbook min/max dates, not just min date - latest verified fit after these changes: - real BUY overlap `106/106` - real SELL overlap `105/105` - extra real BUY `14` - extra real SELL `14` - aux BUY overlap `1/1` - aux SELL overlap `18/21` - strategy aux SELL `94` vs prior `181` - strategy trades `120`, win rate `44.17%`, avg return `2.10%`, median return `-0.59%` - Continued late-session optimization cut remaining extra real trades from `14+14` down to `5+5` without breaking full real-trade alignment. - Current verified fit: - real BUY overlap `106/106` - real SELL overlap `105/105` - extra real BUY `5` - extra real SELL `5` - aux BUY overlap `1/1` - aux SELL overlap `18/21` - strategy aux SELL `89` - strategy trades `111`, win rate `45.05%`, avg return `2.32%`, median return `-0.60%` - Remaining extra real BUY dates: - `2020-10-28`, `2023-02-13`, `2023-05-10`, `2023-10-26`, `2024-11-27` - Remaining extra real SELL dates: - `2020-10-23`, `2022-12-27`, `2023-05-19`, `2023-11-10`, `2024-11-22` - Important lesson: some apparent extra buys are state-bridge entries that preserve later workbook-aligned sells, so pruning must always be verified on downstream sell alignment, not just on local buy precision. - Phase 1 attribution outputs created: - `dragon_residual_attribution.py` - `dragon_residual_trade_attribution.csv` - `dragon_residual_trade_review.md` - Current residual recommendation split: - delete candidates: `2020-10-23`, `2022-12-27`, `2023-05-10`, `2023-05-19` - keep bridge: `2020-10-28` - keep alpha: `2023-10-26`, `2023-11-10` - observe bridge: `2023-02-13`, `2024-11-27` - observe: `2024-11-22` - Phase 2 residual cleanup was then executed directly in `dragon_strategy.py`. - Implemented three narrow filters: - block the weak `oversold_reversal_after_ql_buy` pattern around `23-0.12`, `a1>-0.035` - narrow `early_failed_rebound_exit` from any `b1<0` to mild weakness `-0.05 2024-11-27 -> 2024-11-28 -> 2024-11-29`. - Full-history uniqueness checks showed: - the long-held ql-only fade pattern around `2024-11-22` was unique - the long-held predictive break pattern around `2024-11-28` was also unique - Implemented: - `long_glued_wait_predictive_break` to hold through the premature `2024-11-22` ql-only exit - a long-held extension of `predictive_b1_break_exit` so the same position exits on `2024-11-28` - Latest verified fit after serial rerun: - real BUY overlap `106/106` - real SELL overlap `105/105` - extra real BUY `1`: `2023-10-26` - extra real SELL `1`: `2023-11-10` - aux BUY overlap `1/1`, strategy aux BUY `48` - aux SELL overlap `18/21`, strategy aux SELL `85` - strategy trades `107`, win rate `44.86%`, avg return `2.52%`, median return `-0.60%` - `2024-11-27` is no longer a real extra buy; it is now a holding-period auxiliary bullish signal. - Residual review now contains only one `KEEP_ALPHA` pair: `2023-10-26` / `2023-11-10`. - Phase 4 auxiliary-signal optimization then started on 2026-04-04. - Added audit tooling and outputs: - `dragon_aux_signal_audit.py` - `dragon_aux_signal_audit.csv` - `dragon_aux_signal_review.md` - Aux BUY optimization: - added strength-gated holding reconfirmation logic plus cooldown in `dragon_strategy.py` - reduced strategy aux BUY from `48` to `19` while preserving workbook overlap `1/1` - Aux SELL optimization: - initially tested a broader redesign, then rolled back to the more robust original trunk - kept only duplicate-cooldown suppression plus a narrow `state_crash_followthrough` path - recovered workbook aux sell `2025-10-17` - also suppressed premature high-zone `kdj-only` aux sells so workbook dates `2019-04-11` and `2021-07-26` now align - Latest verified fit after serial rerun: - real BUY overlap `106/106` - real SELL overlap `105/105` - aux BUY overlap `1/1`, strategy aux BUY `19` - aux SELL overlap `19/21`, strategy aux SELL `82` - strategy trades `107`, win rate `44.86%`, avg return `2.52%`, median return `-0.60%` - Current bottleneck from audit: - the main remaining unmatched auxiliary cluster is `SELL / post_exit_confirmation` with `53` unmatched rows - future compression should be based on grouping by real-sell cycle, not only simple date cooldowns - User approved sequence: finish Stage 2 first, then move into Stage 3 robustness validation. - Stage 2 structural outputs were completed and verified: - `dragon_trade_path_trace.csv` - `dragon_rule_taxonomy.md` - `dragon_aux_sell_cycle_audit.csv` - `dragon_aux_sell_cycle_summary.csv` - `dragon_aux_sell_cycle_review.md` - `dragon_trade_path_trace.py` was corrected so Layer 4 links both in-position aux BUY and post-exit aux SELL until the next real BUY, matching the agreed auxiliary-layer definition. - A narrow cycle-aware aux-sell dedupe was then added to `dragon_strategy.py`: - within `post_exit_confirmation`, only the first same-side signal (`ql` or `kdj`) is emitted in a flat cycle - this keeps workbook-style `ql -> kdj` double confirmation cycles but removes same-side repeat noise - Latest verified fit after rerun: - real BUY overlap `106/106` - real SELL overlap `105/105` - extra real BUY `1`: `2023-10-26` - extra real SELL `1`: `2023-11-10` - aux BUY overlap `1/1`, strategy aux BUY `19` - aux SELL overlap `19/21`, strategy aux SELL `75` - strategy events `307`, strategy trades `107` - win rate `44.86%`, avg return `2.52%`, median return `-0.60%` - Cycle compression effect: - repeated `post_exit_confirmation` cycles `10 -> 3` - zero-anchor repeated cycles `8 -> 1` - remaining protected double-confirmation cycles are `2022-07-08 -> 2022-09-26` and `2018-12-06 -> 2019-01-18` - remaining zero-anchor repeated candidate is `2023-12-04 -> 2024-01-18` - Stage 3 was then started with a first executable robustness pack. - Added `dragon_robustness_report.py`. - Generated: - `dragon_trade_quality.csv` - `dragon_trade_group_summary.csv` - `dragon_yearly_performance.csv` - `dragon_rule_contribution_entry.csv` - `dragon_rule_contribution_exit.csv` - `dragon_rule_stability.csv` - `dragon_robustness_report.md` - First results: - baseline `107` trades, avg MFE `6.66%`, avg MAE `-2.66%`, avg exit followthrough 5d `-2.95%` - short holding buckets remain the main weakness: - `00-05d` win rate `0%`, avg return `-2.03%` - `06-10d` avg return `-0.81%` - long holding buckets contain most alpha: - `21-40d` avg return `6.33%` - `41d+` win rate `100%`, avg return `24.13%` - later sample is stronger than earlier sample: - `2016-2020` avg return `1.95%`, profit factor `2.83` - `2021-2025` avg return `3.15%`, profit factor `3.81` - current attribution focus for next optimization round: - entry side: `deep_oversold_rebound_buy` - exit side: `knife_take_profit_2_glued` - report explicitly notes the next engineering gap: parameterize hard-coded thresholds before formal perturbation and true leave-one-rule-out reruns - Stage 3 continued and delivered the next three modules in this same session. - Module A: - added `dragon_strategy_config.py` - parameterized `dragon_strategy.py` so `DragonRuleEngine(config=...)` can run experiments without changing default baseline behavior - default config was verified to preserve: - real BUY overlap `106/106` - real SELL overlap `105/105` - aux BUY overlap `1/1` - aux SELL overlap `19/21`, strategy aux SELL `75` - strategy trades `107`, avg return `2.52%` - Module B: - added `dragon_rule_ablation.py` - generated `dragon_rule_ablation.csv` and `dragon_rule_ablation.md` - rerun ablation findings: - `glued_buy` is still the backbone; disabling it collapses overlap to BUY `46`, SELL `52` - `deep_oversold_rebound_buy` is the clearest weak entry family: - disabling it raises avg return by about `+0.54%` - but breaks overlap to BUY `93`, SELL `92` - `predictive_b1_break_exit` and some oversold rebound/reentry rules look mildly weak, but current evidence is not enough to cut them directly because alignment still degrades - disabling `knife_take_profit_2_glued` caused no top-level metric change in rerun form, suggesting replacement by alternate same-cycle exits - Module C: - added `dragon_threshold_perturbation.py` - generated: - `dragon_threshold_perturbation.csv` - `dragon_threshold_perturbation.md` - `dragon_threshold_sensitivity_summary.csv` - first perturbation pack conclusions: - fragile parameters: - `predictive_b1_break_short_b1_max` - `predictive_b1_break_long_b1_max` - `deep_oversold_entry_c1_max` - `deep_oversold_entry_b1_min` - robust parameters: - `post_exit_confirmation_window_days` - `aux_sell_high_zone_kdj_only_block_c1` - `glued_high_weak_rebound_high_c1` - `glued_high_weak_rebound_high_b1` - Module D: - added `dragon_stability_report.py` - generated `dragon_stage3_stability_report.md` - current quantitative judgment: - short holding buckets remain the main drag - `glued_buy` remains core alpha structure - optimization leverage is now concentrated in weak oversold entry logic and fragile predictive-break exit thresholds - auxiliary sell layer is no longer the main optimization frontier - Deep-oversold focus work was then completed in the same session. - Added localized audit artifacts: - `dragon_deep_oversold_audit.py` - `dragon_deep_oversold_audit.csv` - `dragon_deep_oversold_subtype_summary.csv` - `dragon_deep_oversold_review.md` - Audit result: - all `18` deep-oversold trades are workbook-aligned - weakest subtypes are `positive_b1_rebound` and `shallow_false_start` - relatively better subtype is `classic_oversold` - Strategy research granularity was improved without changing behavior: - `deep_oversold_rebound_buy` now emits subtype-tagged reasons - a family-aware `_entry_reason_is(...)` helper was added so subtype labels do not break downstream sell logic - Verified after rerun: - real BUY overlap `106/106` - real SELL overlap `105/105` - aux BUY overlap `1/1` - aux SELL overlap `19/21`, strategy aux SELL `75` - strategy trades `107`, avg return `2.52%` - Practical conclusion: - next optimization should target subtype-aware redesign of `positive_b1_rebound` and `shallow_false_start`, not the full deep-oversold family - One more subtype-aware pass was then executed. - Default safe optimization applied: - shallow-false-start entries with `ql_buy` are now routed to same-day fallback rules instead of remaining inside the deep-oversold family - very light positive-B1 rebound with `a1 > -0.02` is also routed to same-day fallback - Rerouted dates: - `2018-01-02` -> `glued_buy` - `2018-10-19` -> `dual_gold_resonance_buy` - `2023-06-02` -> `dual_gold_resonance_buy` - `2024-09-11` -> `glued_buy` - Verified after rerun: - real BUY overlap `106/106` - real SELL overlap `105/105` - aux BUY overlap `1/1` - aux SELL overlap `19/21`, strategy aux SELL `75` - strategy trades `107`, avg return `2.52%` - deep-oversold family count reduced from `18` to `14` - Added focused experiment outputs: - `dragon_deep_oversold_experiments.py` - `dragon_deep_oversold_experiments.csv` - `dragon_deep_oversold_experiments.md` - Focused experiment results show the remaining weak subtype blocking is not acceptable under current objective: - block remaining positive-B1 rebound -> BUY `104`, SELL `103` - block remaining shallow-false-start without ql -> BUY `103`, SELL `102` - block both -> BUY `101`, SELL `100` - Conclusion: safe cleanup is mostly exhausted; any further deep-oversold optimization now requires accepting alignment loss or inventing more complex replacement logic - Continued Stage 3 optimization then removed one redundant weak entry label from the effective in-sample decision tree. - In `dragon_strategy.py`, `non_glued_positive_expansion_buy` was narrowed to non-`dual_gold` cases only. - This pushed the two historical in-sample occurrences (`2016-07-13`, `2020-04-30`) onto the later `dual_gold_resonance_buy` fallback branch on the same dates. - Verified after serial rerun: - real BUY overlap `106/106` - real SELL overlap `105/105` - aux BUY overlap `1/1` - aux SELL overlap `19/21`, strategy aux SELL `75` - strategy trades `107`, avg return `2.52%`, profit factor `3.31` - Structural implication: - `dual_gold_resonance_buy` count increased from `11` to `14` - `non_glued_positive_expansion_buy` now has no remaining in-sample trades and should be treated as a redundant label, not an independent alpha family - `dragon_stage3_stability_report.md` was updated to record this judgment. - Stage 3 was then formally closed into a research baseline package instead of continuing blind residual tuning. - Added `dragon_walk_forward_validation.py`. - Generated: - `dragon_walk_forward_summary.csv` - `dragon_walk_forward_family_year.csv` - `dragon_walk_forward_family_stability.csv` - `dragon_walk_forward_report.md` - Walk-forward conclusions on the fixed current baseline: - anchored expanding windows positive out-of-sample years `8/10` - rolling 3Y windows positive out-of-sample years `7/8` - strongest persistent family remains `glued_buy`; `early_crash_probe_buy` also remains strong but smaller-sample - weakest family persistence remains `deep_oversold_rebound_buy`; `dual_gold_resonance_buy` and `post_sell_rebound_buy` are secondary / weaker persistence families - Added `dragon_research_baseline.py`. - Generated: - `dragon_baseline_config_snapshot.json` - `dragon_formal_research_baseline.md` - Formal baseline classification now fixed as: - core alpha families: `glued_buy`, `early_crash_probe_buy`, `oversold_recovery_buy` - structural support families: `dual_gold_resonance_buy`, `deep_oversold_rebound_buy:classic_oversold` - frozen bridge rules: `predictive_b1_break_exit`, `predictive_error_reentry_buy`, plus related internal hold gates that only preserve workbook split paths - redundant label: `non_glued_positive_expansion_buy` - active research families: remaining weak deep-oversold subtypes, `post_washout_kdj_reentry_buy`, `oversold_reversal_after_ql_buy`, `post_sell_rebound_buy` - Current stage judgment: - the workbook-preserving reconstruction baseline is now formalized - next work should target either: - Track A: subtype-aware redesign of weak deep-oversold entries - Track B: short-holding drag reduction in `00-05d` / `06-10d` - not further predictive-break tuning or aux-layer micro-optimization - Continued Track A work then implemented a switchable deep-oversold confirmation branch in `dragon_strategy.py` and `dragon_strategy_config.py`, with default behavior still unchanged. - New config controls: - `deep_oversold_confirm_weak_with_ql` - `deep_oversold_confirm_window_bars` - Added pending-state support for weak deep-oversold subtype setups so alpha-first experiments can delay entry until later `QL` confirmation without touching the formal baseline. - Added `dragon_deep_oversold_confirmation_experiments.py`. - Generated: - `dragon_deep_oversold_confirmation_experiments.csv` - `dragon_deep_oversold_confirmation_event_changes.csv` - `dragon_deep_oversold_confirmation_experiments.md` - `dragon_deep_oversold_confirmation_review.md` - Key result: - `QL` confirmation for weak deep-oversold subtypes improves alpha-first branch metrics somewhat (`avg_return` up to about `2.73%`, `profit_factor` up to about `3.66`) - but this improvement comes mainly from vetoing weak trades, not from turning them into strong confirmed winners - `2022-03-11`, `2024-01-18`, `2024-01-23` are clean veto wins - delayed confirmed entries such as `2022-03-17` and `2024-08-30` still remain losing trades - Quant implication: - for future alpha-first research, weak deep-oversold redesign should prioritize selective veto / removal before adding more confirmation complexity - for the workbook-preserving baseline, no change should be applied from this branch - Track A then moved from delayed-confirmation to narrow selective-veto experiments. - Added more alpha-first experiment hooks in `dragon_strategy_config.py` / `dragon_strategy.py`: - `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` - Added `dragon_deep_oversold_selective_veto_experiments.py`. - Generated: - `dragon_deep_oversold_selective_veto_experiments.csv` - `dragon_deep_oversold_selective_veto_event_changes.csv` - `dragon_deep_oversold_selective_veto_experiments.md` - `dragon_deep_oversold_selective_veto_review.md` - Key result: - best branch is `selective_veto_plus_mixed_c1_lt_10_2_no_ql` - metrics: `103` trades, avg_return about `2.81%`, profit_factor about `3.96` - this is better than broad blocking of all remaining weak subtypes (`102` trades, avg_return about `2.78%`, profit_factor about `3.76`) - and also loses fewer aligned dates - Best branch removes four clearly weak deep-oversold trades: - `2022-02-09` - `2022-03-11` - `2024-01-18` - `2024-01-23` - while preserving the more borderline chains: - `2022-03-16` - `2024-08-29` - Current quant judgment: - Track A priority is now clear: - narrow pathological-pattern veto > delayed `QL` confirmation > broad subtype deletion - workbook-preserving baseline still unchanged - alpha-first branch best current candidate is the selective-veto package, not the confirmation package - Stage 3 was then formally closed with branch-level governance and completion artifacts. - Added `dragon_alpha_first_baseline.py`. - Generated: - `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_holding_buckets.csv` - `dragon_alpha_first_branch_walk_forward.csv` - `dragon_alpha_first_branch_trade_diff.csv` - Alpha-first candidate baseline fixed as `alpha_first_selective_veto` with: - trades `103` - avg_return about `2.81%` - profit_factor about `3.96` - real BUY / SELL overlap `102 / 101` - short-holding buckets improved versus workbook baseline: - `00-05d` about `-2.03% -> -1.72%` - `06-10d` about `-0.81% -> -0.69%` - walk-forward also improved modestly while keeping the same positive-year counts: - anchored `8/10` positive years, average test return improved - rolling 3Y `7/8` positive years, average test return improved - trade diff vs workbook baseline is simple and interpretable: - removed only 4 pathological deep-oversold trades - added 0 new trades - Added final closure document: - `dragon_stage3_completion.md` - Final stage judgment: - Stage 1 complete - Stage 2 complete - Stage 3 complete - Current governance: - `workbook_preserving` is the authoritative reconstruction baseline - `alpha_first_selective_veto` is the leading performance-oriented research branch - future work must explicitly choose the branch before continuing optimization - Follow-up short-holding governance review completed after Stage 3 closure. - Confirmed `dragon_short_holding_master_review.md` already existed and was valid. - Added `alpha_first_glued_selective_veto` in `dragon_branch_configs.py` plus formal review script `dragon_glued_alpha_candidate.py`. - Generated: - `dragon_glued_alpha_candidate_summary.csv` - `dragon_glued_alpha_candidate_comparison.csv` - `dragon_glued_alpha_candidate_holding_buckets.csv` - `dragon_glued_alpha_candidate_walk_forward.csv` - `dragon_glued_alpha_candidate_trade_diff_vs_alpha.csv` - `dragon_glued_alpha_candidate_trade_diff_vs_workbook.csv` - `dragon_glued_alpha_candidate_config_snapshot.json` - `dragon_glued_alpha_candidate_review.md` - Candidate result: - trades `92` - avg_return `3.35%` - profit_factor `4.95` - real BUY / SELL overlap `90/89` - short buckets improved further: - `00-05d` `-1.67%` - `06-10d` `-0.58%` - walk-forward improved too: - anchored `9/10` positive, avg test return `3.86%` - rolling 3Y `7/8` positive, avg test return `4.78%` - Governance conclusion: - do not replace current formal alpha-first baseline yet - keep `alpha_first_selective_veto` as official alpha-first branch - keep `alpha_first_glued_selective_veto` as next research branch because overlap loss is much larger (`102/101 -> 90/89`) - Trade-diff detail: - vs alpha-first, glued candidate removes `12` trades and adds `1` - all `12` removals are `glued_buy` - added trade is fallback reroute `2021-11-22 -> 2021-11-30`, `dual_gold_resonance_buy -> small_positive_a1_declining:kdj_sell` - Continued immediately with glued-branch residual attribution instead of blind retuning. - Added: - `dragon_glued_veto_attribution.py` - `dragon_glued_veto_attribution.csv` - `dragon_glued_veto_bucket_summary.csv` - `dragon_glued_veto_review.md` - Attribution result on the `12` removed trades vs `alpha_first_selective_veto`: - removed-set avg_return `-1.60%` - win_rate `8.33%` - profit_factor `0.03` - bucket split: - `low_weak_range`: `4` trades, all losing, avg_return `-2.35%`, avg_holding `3.0`, clean promotion candidate - `hot_positive_b1`: `8` trades, `7` keep-veto + `1` observe-veto, avg_return `-1.23%`, avg_holding `6.1` - only borderline sample is: - `2021-11-05 -> 2021-11-18`, `glued_buy -> ql_mid_zone_take_profit`, return `+0.69%` - this suggested narrowing hot veto instead of rolling back glued veto globally - Added configurable hot-cap support: - `glued_selective_hot_c1_max` in `dragon_strategy_config.py` - corresponding condition update in `dragon_strategy.py` - Added focused refinement pack: - `dragon_glued_refine_experiments.py` - `dragon_glued_refine_experiments.csv` - `dragon_glued_refine_experiments.md` - `dragon_glued_refined_candidate_config.json` - `dragon_glued_refined_trade_diff_vs_full.csv` - added branch helper `alpha_first_glued_refined_hot_cap_config()` in `dragon_branch_configs.py` - Refined glued candidate result: - `glued_veto_hot_cap75_and_low` - trades `92` - avg_return `3.36%` - profit_factor `4.98` - real BUY / SELL overlap `91/90` - This is better than the prior full glued candidate on both performance and overlap. - Minimal diff vs prior full glued branch: - add back `2021-11-05 -> 2021-11-18`, `glued_buy -> ql_mid_zone_take_profit` - remove fallback reroute `2021-11-22 -> 2021-11-30`, `dual_gold_resonance_buy -> small_positive_a1_declining:kdj_sell` - Updated stage judgment: - `alpha_first_selective_veto` still remains the formal alpha-first baseline - next research branch should now be the refined glued candidate, not the old full glued candidate - Completed the formal upgrade-review pack for the refined glued branch. - Added: - `dragon_glued_refined_branch_review.py` - `dragon_glued_refined_branch_summary.csv` - `dragon_glued_refined_branch_comparison.csv` - `dragon_glued_refined_branch_walk_forward.csv` - `dragon_glued_refined_branch_trade_diff.csv` - `dragon_glued_refined_holding_breakdown.csv` - `dragon_glued_refined_yearly_breakdown.csv` - `dragon_glued_refined_family_breakdown.csv` - `dragon_glued_refined_regime_breakdown.csv` - `dragon_glued_refined_branch_config_snapshot.json` - `dragon_glued_refined_branch_review.md` - Result for `alpha_first_glued_refined_hot_cap`: - trades `92` - avg_return `3.36%` - profit_factor `4.98` - avg_MFE `7.57%` - avg_MAE `-2.57%` - real BUY / SELL overlap `91/90` - walk-forward: - anchored `9/10`, avg test return `3.87%` - rolling 3Y `7/8`, avg test return `4.79%` - relative to current `alpha_first_selective_veto`: - avg_return `+0.55%` - profit_factor `+1.02` - overlap `-11/-11` - removed trades `11`, added trades `0` - Governance conclusion from the review: - quality and walk-forward gate now pass - but promotion still should not be silent because the overlap loss remains material - recommended status remains: - keep `alpha_first_selective_veto` as formal alpha-first baseline - keep `alpha_first_glued_refined_hot_cap` as the leading next alpha-first candidate - Also completed refined removed-trade attribution. - Added: - `dragon_glued_refined_removed_trade_attribution.py` - `dragon_glued_refined_removed_trade_attribution.csv` - `dragon_glued_refined_removed_trade_review.md` - Removed-set result vs current alpha-first: - removed trades `11` - avg_return `-1.81%` - win_rate `0%` - profit_factor `0.00` - recommendation mix: - `KEEP_REMOVAL` `11` - `OBSERVE_REMOVAL` `0` - `OVER_REMOVAL` `0` - The refined branch now removes only losing short-holding glued trades from the current alpha-first baseline; no profitable sample remains in the removed set. - Completed final alpha-branch governance package. - Added: - `dragon_alpha_branch_governance.py` - `dragon_alpha_branch_governance_matrix.csv` - `dragon_alpha_branch_governance_decision.json` - `dragon_alpha_branch_governance.md` - Final gate results: - `headline_quality_gate = PASS` - `stability_gate = PASS` - `removal_quality_gate = PASS` - `alignment_cost_gate = FAIL` - explicit deltas of refined candidate vs current formal alpha: - avg_return `+0.55%` - profit_factor `+1.02` - BUY overlap `-11` - SELL overlap `-11` - removed trades `11`, added trades `0` - Final governance decision: - `DUAL_TRACK_GOVERNANCE` - Meaning: - `alpha_first_selective_veto` stays as the formal alpha-first baseline - `alpha_first_glued_refined_hot_cap` becomes the governed leading candidate, but not auto-promoted because overlap loss exceeds the automatic-promotion tolerance - User then explicitly supported the stronger alpha-first view and asked for the next research direction and detailed plan under that stance. - Planning implication: - next roadmap should treat `alpha_first_glued_refined_hot_cap` as the main forward candidate and `alpha_first_selective_veto` as the benchmark control, rather than continuing workbook-style fine-tuning. - Executed the first full formalization-validation pack under the stronger alpha-first direction. - Added: - `dragon_research_direction_update.md` - `dragon_forward_branch_roles.md` - `dragon_cost_stress_test.py` - `dragon_cost_stress_test.csv` - `dragon_cost_stress_test.md` - `dragon_glued_refined_sensitivity.py` - `dragon_glued_refined_sensitivity.csv` - `dragon_glued_refined_sensitivity_summary.csv` - `dragon_glued_refined_sensitivity.md` - `dragon_glued_refined_year_regime_review.py` - `dragon_glued_refined_year_regime_review.csv` - `dragon_glued_refined_regime_review.csv` - `dragon_glued_refined_holding_review.csv` - `dragon_glued_refined_family_review.csv` - `dragon_glued_refined_year_regime_review.md` - `dragon_equity_curve_review.py` - `dragon_equity_curve_review.csv` - `dragon_drawdown_review.csv` - `dragon_monthly_return_review.csv` - `dragon_yearly_return_review.csv` - `dragon_equity_curve_review.md` - Core validation conclusions: - cost stress: - refined remains ahead at every tested cost level - at `20 bps/side`, current alpha CAGR `23.55%`, refined CAGR `26.62%` - local sensitivity: - neighborhood cases `81` - avg_return range `3.23% -> 3.42%` - PF range `4.66 -> 5.11` - robust-nearby cases `52` - year/regime: - improvements concentrate in short-holding cleanup and `glued_buy` - medium and long buckets are preserved - equity curve: - refined is best on growth and drawdown quality together - CAGR `31.32%` - max DD `-12.79%` - Calmar `2.45` - Updated stage judgment: - the refined alpha candidate now looks quantitatively robust across: - cost pressure - local threshold perturbation - year/regime consistency - drawdown quality - the only remaining blocker is governance preference on workbook divergence, not lack of quantitative evidence - Added `dragon_alpha_promotion_decision.md`. - This document converts the prior "governed candidate" status into an explicit recommendation tree: - keep `alpha_first_selective_veto` if workbook continuity is still a hard governance constraint - promote `alpha_first_glued_refined_hot_cap` if the objective is explicitly robust alpha first - otherwise keep dual-track governance but use refined as the forward research default and selective-veto as the benchmark control - Practical conclusion after this step: - quant evidence now points clearly to refined as the better strategy branch - non-promotion is now a governance choice, not an evidence gap - Added `dragon_forward_research_plan.md` so the next-stage roadmap is fixed in one file for later verification. - The plan formalizes the next work around `alpha_first_glued_refined_hot_cap` and splits it into: - branch freeze - alpha attribution - execution-aware robustness - formal governance - final strategy memo - Immediate execution focus remains Phase 2: explain exactly where refined alpha comes from. - Completed Phase 2 refined attribution work. - Added: - `dragon_refined_alpha_attribution.py` - `dragon_refined_family_decomposition.csv` - `dragon_refined_alpha_attribution.csv` - `dragon_refined_removed_trade_recheck.csv` - `dragon_refined_edge_review.md` - Main conclusions: - refined alpha still comes mainly from `glued_buy` - the branch wins by deleting weak short glued trades rather than adding complex paths - removed trades vs control remain `11`, all classified `KEEP_REMOVAL` - removed-set avg_return `-1.81%`, win_rate `0%` - Completed execution-aware robustness validation. - Added: - `dragon_refined_execution_validation.py` - `dragon_refined_execution_stress.csv` - `dragon_refined_latency_review.csv` - `dragon_refined_risk_cluster_review.csv` - `dragon_refined_stability_review.md` - Main conclusions: - refined still leads under next-open execution: avg_return `3.31%` vs `2.76%`, PF `4.73` vs `3.78` - refined still leads under next-close execution: avg_return `2.44%` vs `1.98%`, PF `2.78` vs `2.37` - refined still leads under next-open + `20 bps/side`: CAGR `25.51%` vs `22.40%`, PF `3.64` vs `2.92` - refined also improves risk clusters under next-open: - max loss streak `8` vs `10` - worst 5-trade sum `-7.96%` vs `-10.11%` - max drawdown `-13.19%` vs `-17.84%` - Completed formal strategy packaging. - Added: - `dragon_formal_strategy_governance.md` - `dragon_parameter_governance.md` - `dragon_strategy_monitoring_template.csv` - `dragon_formal_strategy_memo.md` - This closes the staged roadmap from Phase 1 through Phase 5 in the current session. - Workspace-level conclusion is now explicit: - `alpha_first_glued_refined_hot_cap` is the best branch quantitatively - if not promoted, that is now a governance decision rather than a missing-research issue