2026-04-08.md 13 KB

2026-04-08

  • Ran dragon_daily_signal_pipeline.py on request date 2026-04-08.
  • Latest available market bar resolved to 2026-04-07.
  • Latest 399673 snapshot on 2026-04-07:
  • close 3325.910
  • a1 = -0.0182
  • b1 = -0.1651
  • c1 = 44.35
  • KDJ buy/sell = False/False
  • QL buy/sell = False/False
  • No branch fired any new event on the latest bar.
  • workbook_preserving, alpha_first_selective_veto, and alpha_first_glued_refined_hot_cap all remain flat.
  • Latest real event for all three branches is still 2026-02-13 SELL knife_take_profit_2_glued.
  • User-facing answer for this run: no buy trigger on the latest available bar.

  • Also ran dragon_forward_observation_pipeline.py to persist the daily check.

  • Forward-observation result on 2026-04-07:

  • signal-change count 0

  • divergence level none

  • warnings 0

  • hard breaches 0

  • missing data metrics 0

  • Later on 2026-04-08, upgraded the live-signal path to support intraday realtime triggering.

  • Implementation:

  • dragon/data_fetcher_v2.py now supports realtime snapshot fetch and conditional current-day snapshot append.

  • dragon_indicators.py now supports fetch_daily_data(include_intraday_snapshot=True) and exposes fetch metadata.

  • dragon_daily_signal_pipeline.py now uses intraday snapshot mode by default for same-day checks and reports:

  • data_mode

  • historical_latest_bar_date

  • snapshot_timestamp

  • explicit note that current market price is used as today's provisional close

  • Verified live run after the upgrade:

  • latest evaluated bar became 2026-04-08 via realtime snapshot

  • historical latest official bar remained 2026-04-07

  • snapshot timestamp example: 2026-04-08T14:47:31

  • live price snapshot close around 3524.990

  • latest markers on all three branches:

  • KDJ buy=True

  • QL buy=True

  • but no real BUY event fired

  • local decision check on the last bar shows all three branches were blocked by:

  • buy_block_glued_high_weak_rebound

  • Verified dragon_forward_observation_pipeline.py still runs successfully after the schema change.

  • Analyzed buy_block_glued_high_weak_rebound on 2026-04-08.

  • Current rule location:

  • dragon_strategy.py _buy_filter_glued_high_weak_rebound(...)

  • official daily-bar replay through 2026-04-07 shows the same historical block count on all three tracked branches:

  • full history block count 17

  • release-window (2016-01-01 -> 2025-12-31) block count 15

  • subtype split in the release window:

  • high_zone_weak_b1: 11

  • mid_zone_very_weak_b1: 2

  • ql_rebound_weak_followthrough: 2

  • release-window block dates:

  • 2016-04-29, 2017-09-27, 2018-04-18, 2019-04-24, 2019-10-10, 2020-08-18, 2020-08-24, 2020-11-30, 2021-07-29, 2021-12-09, 2022-08-01, 2024-06-04, 2024-06-17, 2025-10-21, 2025-11-13

  • including the intraday realtime snapshot on 2026-04-08, RC1 block count becomes 18 total; the current live block belongs to the ql_rebound_weak_followthrough clause.

  • Effect check by disabling only this filter while keeping the rest of the strategy unchanged:

  • workbook_preserving: trades 106 -> 121, avg_return 2.57% -> 2.13%, profit_factor 3.37 -> 2.90

  • alpha_first_selective_veto: trades 102 -> 117, avg_return 2.86% -> 2.36%, profit_factor 4.04 -> 3.38

  • alpha_first_glued_refined_hot_cap / RC1: trades 91 -> 106, avg_return 3.42% -> 2.80%, profit_factor 5.11 -> 4.08

  • In all three branches the filter removal adds 15 trades and removes 0.

  • Added-trade quality is weak:

  • avg_return about -0.99%

  • win_rate about 26.7%

  • Therefore current judgment: this filter is materially useful and should be treated as a real quality filter, not noise.

  • Added detailed blocked-trade artifacts:

  • dragon_glued_high_weak_rebound_block_review.md

  • dragon_glued_high_weak_rebound_blocked_trades.csv

  • RC1 blocked-trade detail sorted by realized return shows the worst candidates were:

  • 2020-08-18 -> 2020-08-19 -3.91%

  • 2019-04-24 -> 2019-04-25 -3.42%

  • 2018-04-18 -> 2018-04-20 -3.10%

  • best completed blocked candidates were:

  • 2020-11-30 -> 2020-12-09 +2.44%

  • 2017-09-27 -> 2017-10-16 +1.60%

  • 2020-08-24 -> 2020-08-25 +0.90%

  • one extra blocked date 2025-11-13 is present as a candidate date but its corresponding exit falls outside the release-window trade summary, so it has no completed in-window trade row.

  • Checked the original reconstruction branch (workbook_preserving) on the intraday snapshot later on 2026-04-08.

  • Snapshot example:

  • evaluated timestamp 2026-04-08T15:56:41

  • close 3532.798

  • a1 = -0.0073

  • b1 = -0.0777

  • c1 = 47.86

  • KDJ buy = True

  • QL buy = True

  • original branch decision was still:

  • BLOCK buy_block_glued_high_weak_rebound

  • User later requested the 2026 RC1 buy/sell points.

  • Extracted real-trade RC1 points for calendar year 2026:

  • 2026-01-05 BUY dual_gold_resonance_buy @ 3488.230

  • 2026-01-20 SELL ql_mid_zone_take_profit @ 3419.621

  • 2026-01-27 BUY glued_buy @ 3476.169

  • 2026-02-02 SELL knife_take_profit_2_glued @ 3432.873

  • 2026-02-09 BUY glued_buy @ 3493.591

  • 2026-02-13 SELL knife_take_profit_2_glued @ 3423.045

  • As of the intraday snapshot on 2026-04-08, RC1 remains flat and no new real event has been added after 2026-02-13.

  • Later analysis of why no intraday buy fired on 2026-04-08:

  • the live snapshot did create raw buy markers (KDJ buy=True, QL buy=True) and satisfied glued-state entry context (abs(a1) < 0.02)

  • but the final buy decision was blocked by buy_block_glued_high_weak_rebound

  • exact subtype was ql_rebound_weak_followthrough

  • snapshot values around 2026-04-08T14:48:51:

  • a1 = -0.00779

  • b1 = -0.08157

  • c1 = 47.62

  • this matched the veto window:

  • 35 < c1 < 55

  • b1 < -0.06

  • a1 > -0.013

  • ql_buy = True

  • the move was therefore interpreted as a fast intraday rebound with still-weak followthrough rather than a confirmed real buy

  • Follow-up judgment on whether this may miss a real rally or reflect overfitting:

  • yes, any veto rule can miss an individual future rally

  • but current evidence does not support calling this specific filter an obvious overfit blocker

  • disabling buy_block_glued_high_weak_rebound adds 15 release-window trades and weakens all three tracked branches

  • RC1 added-trade set stats if allowed:

  • win rate about 26.7%

  • avg return about -0.99%

  • best completed blocked trade only about +2.44%

  • today's exact subtype ql_rebound_weak_followthrough has only two historical daily examples and both were losers (-2.20%, -1.04%)

  • nuanced conclusion:

  • strategy-level overfitting risk remains medium-to-high overall because of rule-tree complexity

  • but today's specific veto is more likely a useful quality filter than a clear case of overfit signal suppression

  • remaining uncertainty is concentrated in the sparse ql_rebound_weak_followthrough subclause because its sample is still small

  • Direct advisory judgment for the user:

  • if forced to decide on the live 2026-04-08 snapshot, the correct call is still do not buy yet

  • do not weaken the global buy_block_glued_high_weak_rebound rule because of this one signal

  • safer future research path, if needed, is a subtype-specific second-chance release after stronger followthrough repair, not removal of the veto itself

  • Later nuance after the user suggested this may be the start of a big trend:

  • that concern is legitimate; broad neighborhood analysis around today's indicator shape is not obviously bearish

  • among the 12 nearest historical RC1 buy-shape neighbors to the 2026-04-08 snapshot, avg return was about +2.09%, median about +1.67%, win rate about 66.7%, with 3 trades above +5% and 1 above +10%

  • however, the exact vetoed subclause neighborhood (ql_rebound_weak_followthrough) still has only 2 historical blocked daily examples and both were losers

  • operational interpretation:

  • there is a non-trivial chance today is an early stage of a larger move

  • but current evidence still does not justify overriding RC1 on this bar alone

  • if followthrough continues and either B1 repairs above the current veto threshold or the setup migrates out of this weak-followthrough window, the bull case should be re-evaluated quickly rather than dismissed

  • Later projected tomorrow's B1 using the latest available intraday snapshot around 2026-04-08T18:25:09 with close = 3532.798.

  • Using the current Y2/Y3 recursion and assuming no new 38-day extreme beyond the projected close:

  • if tomorrow closes flat near 3532.798, projected B1 is about -0.0229

  • if tomorrow closes -1%, projected B1 is about -0.0421

  • if tomorrow closes -2%, projected B1 is about -0.0614

  • approximate threshold for B1 >= -0.06 is tomorrow close around 3464.7, about -1.93% vs the latest snapshot close

  • practical takeaway:

  • yes, under the current snapshot baseline, “tomorrow not falling” should place B1 above -0.06

  • but that only means the current ql_rebound_weak_followthrough veto likely stops applying

  • it does not guarantee a real buy tomorrow because KDJ buy / QL buy are cross-event flags and may not re-fire on the next bar

  • Later reviewed the external recommendation file dragon_v2_rc1_restructuring_recommendations_for_codex_CN.md and wrote a local implementation proposal dragon_v2_rc1_restructuring_proposal_cn.md.

  • Main judgment on that external recommendation:

  • directionally correct on freezing RC1, splitting core / secondary / bridge, downgrading predictive logic, and adding golden tests

  • but too aggressive as a direct big-bang refactor for the current repo

  • key verified repo facts used in the proposal:

  • dragon_strategy.py has 1297 lines

  • StrategyContext has 50 fields

  • _buy_decision() about 125 lines

  • _sell_decision() about 303 lines

  • StrategyConfig has 102 fields

  • current repo still has no tests/ directory

  • reason strings are already a de facto interface across strategy, daily pipeline, path trace, and html reporting

  • proposal conclusion:

  • do not directly rewrite RC1 or remove reason strings

  • first add structured decision metadata with legacy reason compatibility

  • first add golden baselines and layer attribution

  • only then isolate weak families (deep_oversold, predictive, post_sell_rebound) into separate modules on a research path

  • Executed the first implementation pass for proposal Phase 0-2 without changing RC1 live behavior.

  • Added governance and scaffolding modules:

  • dragon_rc1_frozen_policy.md

  • dragon_reason_types.py

  • dragon_decision_types.py

  • dragon_rule_catalog.py

  • Added executable scripts:

  • dragon_rc1_golden_baseline.py

  • dragon_rule_layer_attribution.py

  • Generated new baseline artifact:

  • dragon_rc1_golden_manifest.json

  • generated_at 2026-04-08T23:43:07

  • evaluation window 2016-01-01 -> 2025-12-31

  • RC1 trade_count 91, event_count 272, win_rate 52.75%, avg_return 3.42%

  • indicator source used: dragon_indicator_snapshot_full.csv

  • Generated layer-attribution report:

  • dragon_rule_layer_attribution.md

  • key entry-layer read:

  • core/glued remains dominant (50 trades, avg_return 4.92%, PF 7.15)

  • secondary/deep_oversold remains weak (avg_return -0.19%, PF 0.80)

  • bridge/predictive_break count still low (1 entry trade in-window)

  • key exit-layer read:

  • secondary/post_sell_rebound exits show weak quality (avg_return -2.00%, PF 0.02)

  • core/high_regime exits remain strong (avg_return 11.63%, PF 107.38)

  • mapping audit is now clean in the generated markdown (no unknown reason mapping)

  • Important repo note:

  • generated .csv artifacts from these scripts are covered by .gitignore (*.csv) and are not tracked by default

  • Later answered the user's question about what profitable indicator profiles look like in RC1.

  • Main conclusion:

  • the best-performing trades are not primarily deep-oversold knife catches

  • profitable trades are concentrated in glued_buy, plus smaller contributions from early_crash_probe_buy / oversold_recovery_buy

  • holding duration matters strongly:

  • 00-05d avg return about -2.03%

  • 06-10d avg return about -0.81%

  • 21-40d avg return about +6.33%

  • 41d+ avg return about +24.13%

  • top-profit trades (>=10%) mostly look like:

  • A1 near zero / mild glue rather than deeply negative

  • B1 around zero to mildly positive more often than the full sample

  • C1 mainly in the 20-60 middle zone rather than extreme <20 oversold

  • KDJ buy is almost always present

  • QL buy is helpful but not mandatory

  • strongest actionable read:

  • large profits mostly come from entries that can transition into long trend holds and exit through regime/trend management (prewarning_reduction_exit, crash_protection_exit, high-regime exits), not from short rebound scalps