把现有 pytrendline_research 产物翻译成一版最小 event-source sample,供 Mainline 后续统一 schema 与 cross-engine 比较使用。
PyTrendline 已经可以输出一版最小、可复用的 event sample,而不再只停留在 explainability 页面。representative line / breakout tag / score / slope 翻译成统一 schema 可消费的字段。breakout 与非 breakout 的 touch candidate,还不等于完整的 rebound / retest 事件宇宙。核心结论:当前已经可以把 PyTrendline 输出成最小 event-source sample,足以进入下一步 schema 对照与 source-level comparison;但它当前仍偏 breakout / touch 语义,还不能直接宣称已覆盖完整 rebound 研究问题。
证据:本次基于已存在的 support_trendlines.csv 与 resistance_trendlines.csv,稳定产出 215 条 representative event rows,其中 breakout=210、touch=5,并已写出 outputs/research/pytrendline_event_sample.csv。
engine_line_id ← 原始 idline_origin_type ← 是否为 is_best_from_duplicate_groupevent_family ← is_breakout ? breakout : touchevent_subtype ← breakout_tagged_line / line_touch_candidateevent_timestamp ← breakout 用 breakout_date,否则退回 ends_at_dateline_quality_bucket / score_bucket ← 基于当前窗口内 score 分位数分桶slope_bucket ← 基于当前窗口内 slope 大小与方向分桶| event_family | line_side | line_quality_bucket | events |
|---|---|---|---|
| breakout | resistance | mid | 32 |
| breakout | resistance | high | 29 |
| breakout | resistance | low | 27 |
| breakout | support | mid | 71 |
| breakout | support | low | 26 |
| breakout | support | high | 25 |
| touch | resistance | low | 1 |
| touch | resistance | mid | 1 |
| touch | support | mid | 3 |
| event_timestamp | event_family | line_side | engine_line_id | line_quality_bucket | slope_bucket | num_points | score |
|---|---|---|---|---|---|---|---|
| 2026-03-12 06:20 | breakout | resistance | R-[41,59,60] | high | down_mid | 3 | 35305.885985 |
| 2026-03-12 05:40 | breakout | resistance | R-[16,41,63] | high | down_mid | 3 | 35177.966123 |
| 2026-03-12 07:30 | breakout | resistance | R-[5,12,83] | high | down_mid | 3 | 20911.947869 |
| 2026-03-12 03:25 | breakout | resistance | R-[1,12,16,17,31] | high | down_steep | 5 | 17609.864328 |
| 2026-03-12 07:45 | breakout | resistance | R-[20,81,89] | high | up_flat | 3 | 15585.690465 |
| 2026-03-12 02:30 | breakout | support | S-[19,46,56] | high | down_mid | 3 | 14706.659380 |
| 2026-03-12 04:05 | breakout | resistance | R-[16,35,39,46] | high | down_steep | 4 | 7078.110480 |
| 2026-03-12 03:25 | breakout | resistance | R-[12,16,17,31] | high | down_steep | 4 | 5857.688478 |
| 2026-03-12 04:35 | breakout | support | S-[25,48,65,74] | high | up_mid | 4 | 5829.019290 |
| 2026-03-12 04:35 | breakout | support | S-[25,49,54,64,73] | high | up_mid | 5 | 5422.271111 |
| 2026-03-12 02:50 | breakout | support | S-[23,38,53,59,61,65] | high | up_flat | 6 | 5329.810075 |
| 2026-03-12 05:20 | breakout | support | S-[46,51,64,73] | high | up_mid | 4 | 5017.632378 |
| 2026-03-12 02:50 | breakout | support | S-[23,38,53,59,65,71] | high | up_flat | 6 | 4648.959110 |
| 2026-03-12 02:10 | breakout | resistance | R-[16,21,25,27] | high | down_steep | 4 | 4603.659863 |
| 2026-03-12 07:45 | breakout | resistance | R-[21,81,89] | high | up_flat | 3 | 4045.466105 |
| 2026-03-12 08:15 | breakout | resistance | R-[69,85,88] | high | up_steep | 3 | 3988.341423 |
| 2026-03-12 02:05 | breakout | resistance | R-[12,24,25] | high | down_steep | 3 | 3877.185485 |
| 2026-03-12 03:20 | breakout | resistance | R-[28,46,53,66,72,74] | high | up_flat | 6 | 3447.057008 |
| 2026-03-12 04:50 | breakout | support | S-[46,92,94] | high | up_mid | 3 | 3388.615008 |
| 2026-03-12 02:20 | breakout | support | S-[9,48,55] | high | down_mid | 3 | 3325.186629 |