dragon_daily_signal_pipeline.py on request date 2026-04-08.2026-04-07.399673 snapshot on 2026-04-07:3325.910a1 = -0.0182b1 = -0.1651c1 = 44.35KDJ buy/sell = False/FalseQL buy/sell = False/Falseworkbook_preserving, alpha_first_selective_veto, and alpha_first_glued_refined_hot_cap all remain flat.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