jackyu66git and Cursor
27a4360ce8
「有前序信号」通过样本外验证:6/6 时段、4/4 ATR 分层全部同向
...
step48 那条唯一可交易的线索(开仓时过去 5 分钟内已有别的币发过信号,
则滑点余量更高)用更长历史验证。10 币 × 80 万根,2025-02 ~ 2026-08 共
3941 笔,发现期 1161 笔、样本外 2780 笔。
样本外 无前序 2326 笔 毛R 1.086 PF 3.91 余量 18.83bp
样本外 有前序 454 笔 毛R 1.275 PF 4.60 余量 24.89bp
逐时段 6/6 全部同向,余量差中位 8.03bp。发现期毛R 差只有 0.085,样本外
放大到 0.189——不是过拟合衰减,是发现期恰好偏保守。占比各时段 13~19%,很稳。
ATR 混淆已排除:有前序的 ATR 确实略高(中位 15.04 vs 13.13bp),但按四分位
分层后 4/4 层同向,层内余量差 3.29/8.39/5.16/4.14bp,与不分层的 +6.06 同
量级。毛R 本身是 ATR 归一化指标,其 +0.19 不可能是 ATR 假象。
可用方式:这 16% 的信号多容忍约 6bp 执行成本,可加仓位权重,或对这批放宽
ATR 门控(最低 ATR 层里有前序余量仍有 14.92bp vs 对照 11.63)。放宽门控尚未
回测,先别改。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 04:36:39 +08:00
jackyu66git and Cursor
550eafdd9d
簇内顺序看着是圣杯,43% 的落差里有 34 个点是未来信息
...
用户提出研究多币同时段开仓的先后顺序。事后按位次切落差很大:簇内第 1 笔
胜率 81.6%、毛R 1.441,第 2 笔 1.085,第 3 笔 0.733,比孤立组 0.832 高 73%。
但「我是首发」的含义是「接下来 5 分钟没有别的币再发」,这是未来信息。首发
赢面大恰恰因为后面真跟出来了别的币、那波行情是真的,而会不会跟出来在下单
那一刻不可知。
换成开仓时真正可知的信息(过去 5 分钟有无别的币先发):
无前序 979 笔 (84%) 毛R 0.938 PF 3.19 余量 14.13bp
有前序 ≥1 个 182 笔 (16%) 毛R 1.021 PF 3.71 余量 21.88bp
43% 的落差塌成 8.8%,方向还反过来。但残留不是零,且滑点余量高 55%
(14.13 → 21.88bp),对 1m 是实打实的——1m 的生死线就在执行成本。
谁在领跑无稳定结构:首发率 BTC 8.6% ~ DOGE 18.4%,158 次首发摊到 10 个币
平均 15.8 次,离散度基本是抽样噪声。
给这个方向定了条纪律:组合空间大而样本只有 158 个簇,每个切法必须能写成
「开仓那一刻已知的信息」。凡用到簇共几个币、我是第几个、簇跨度多长的,
都含未来信息。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 04:27:43 +08:00
jackyu66git and Cursor
2a59dcb9dc
扎堆开仓反而更赚,但好处全在「错开几分钟」那一档,同分钟的最差
...
承接上一条:既然同时开的必然同向,那关键是这批交易比孤立的好还是坏。
11 币 / 1161 笔 / 实盘口径:
真孤立(±5 分钟内无同伴) 763 笔 胜率 65.5% 毛R 0.832 PF 2.83
错开:5 分钟内但不同分钟 240 笔 胜率 82.1% 毛R 1.443 PF 7.31
同一分钟撞在一起 158 笔 胜率 63.3% 毛R 0.777 PF 2.20
必须把两者分开——结论相反,混在一起会得出错误判断。错开的是全样本最好的
一档,同分钟的反而略差于孤立组。机制上:错开 = 行情从某个币扩散开,后发是
对先发的确认;同分钟 = 全市场同时被一个冲击打中,即追高。
簇级复核(±5 分钟合一簇,排除重复计数):多笔簇簇均毛R 1.180 vs 单笔簇
0.832,簇级 R 夏普 0.848 vs 0.459,结论不是重复计数撑起来的。多笔簇内
全赢 59.5%、全输 10.1%,簇内风险不可分散但偏度有利。
集中度上两类没差别(整簇同向 99.4%),差别纯在收益。所以「限制最多 N 个
并发仓位」把两类一视同仁是错的,它们期望收益差 1.9 倍。
注意:同分钟 vs 错开是看过数据后才划的切法,不是事先定的,208 天 158 个簇
容易切出噪声。当仓位规则用之前必须换一段时间验证。目前只有「扎堆整体更好」
是稳的(簇级也成立)。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 04:24:31 +08:00
jackyu66git and Cursor
9f4d7fec73
11 币的开仓时刻:不是同时开,但同时开的那批 100% 同向
...
用户问 11 个币的开仓时间差距。1161 笔 / 208 天 / 实盘口径(深色 ∧ ATR≥8bp):
相邻两笔间隔中位 122 分钟,62.8% 超过 1 小时,每天仅 5.58 笔。
同时持仓数:90.9% 的时间空仓,7.5% 只有 1 仓,≥2 仓合计 1.7%,峰值 8。
所以绝大多数时候不会撞车,但左尾是硬的:7.4% 与前一笔同分钟、20.7% 在
5 分钟内。而同一分钟出现多笔的 72 个时刻里,方向完全一致的占 100%
(§3.31 此前测到的是 92.7%,全样本下更极端)。
这批同时开的仓不是分散,是同一笔押注被拆到几个币上做——名义 3 个仓位,
实质 3 倍单向敞口。由此两条:保证金不是约束(91% 时间空仓,峰值并发只占
0.1% 的时间),真问题是资金闲置;并发上限必须按同向净敞口设,按仓位个数
设等于默许成倍的单向敞口。
另:TRX 在实盘口径下 208 天只有 5 笔,ATR 门控几乎全刷掉,应从币池剔除,
实际可用是 10 个币。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 04:17:19 +08:00
jackyu66git and Cursor
d2fcb27d01
否掉 bis[2]:修右边缘重画会把 alpha 打成零,重画是必付代价
...
§5.41 发现 available_ts 取「中枢最后一笔」是右边缘重画的根因,改取「第三笔」
能把重画率从 6.5% 压到 1.2%,当时据此判断它是「唯一可能同时改善收益与稳定性」
的改动。那个判断只测了稳定性,过早了。
8 个样本外币 × 30 万根 1m,两组共用同一个 TF_DF,只切 available_ts 的取法。
实盘口径(深色 ∧ ATR≥8bp,955 vs 989 笔):
毛 R 0.933 → -0.000
净均 R 0.798 → -0.147
PF 3.22 → 0.80
滑点余量 15.07 → -2.20 bp
判决依据是毛 R 那一行:扣任何费用之前 edge 就没了,所以不是成本、门控或出场
参数的问题,是信号本身不再有预测力。逐币 8/8 全部变差。滞后确实降了
(2.16 → 2.01),但换来的是另一批交易——两组重合度只有约 30%。
原因是中枢没发育完就下注,支撑/压力还没立住。「等中枢最后一笔」那段等待不是
可以优化掉的延迟,它就是 alpha 本身。由此得一条一般规则:任何以「让信号更早
确定」为目标的改动,先测毛 R,不能只看重画率和滞后。
开关 AVAIL_BI_INDEX 保留只为可复现该 A/B,默认 -1 维持现行口径。环境变量在
调用时解析而非 import 时——fork 启动的子进程会继承已 import 的模块,import
时读会固化成父进程的值。
顺带交叉验证:现行口径本次算出滑点余量 15.07bp,与用优化前代码算的同组同期
15.19bp 吻合。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 04:05:01 +08:00
jackyu66git and Cursor
0b4d7693b8
缠论引擎提速 2.6x,瓶颈是逐行 Series 查找而非指标计算
...
原以为浪费在 add_indicators 算了太多用不到的指标,实测它只占全量构建的
1.3%——talib 是向量化 C 代码,便宜。真正的两处:
cal_kl_data 占 96%:每根 K 线 df.iloc[i] 新建一个 40 列 Series,再在其上做
几十次逐键查找。改为预取 ndarray 后 2 万根 1946ms → 824ms。
ChanKLC.cal_all_ema_status 占 25%:每次合并 KLU 都立即重算,而它产出的
ema_status / ema52_pos / ema52_status 全仓无任何读取方(含前端)。改为惰性
求值,保留属性形式以防将来有人读。顺带删掉 get_klc_list 里累加一整轮后直接
丢弃的 ema_up_list / ema_down_list。
另加 TF_DF(lean=True):只构建到中枢,跳过线段/走势中枢/MACD 状态机——这些
只服务 bsp_list 与 web 展示,笔和中枢不依赖。研究与实盘走这条快 3.6x。
结果 2 万根 5m:full 1946 → 754ms,lean → 543ms。
step46_engine_parity.py 是配套的安全网,改引擎前先跑一次 --save。它对 KLC
端点与分型、笔起止价与 is_sure、中枢 zg/zd/available_ts/阶梯、信号全部输出列,
以及 26 个被下游消费的 dataframe 列取哈希。本次三处改动逐步验证,另用
git stash 切回改动前代码在 20 万根 × 5 用例上做了跨版本逐位对拍,全部一致;
增量路径与 web API 也各验一遍。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 04:04:44 +08:00
jackyu66git and Cursor
6259f7380b
research: 重算新出场口径下的并发,并修正「各笔基本独立」的说法
...
分批出场把 1m 平均持仓从 9.9 根拉到 29 根,§3.3 的并发数字是旧口径的。
重算后 8 币组合平均并发 0.043→0.120、有仓位时间 4.0%→10.2%,峰值仍是 6。
更要紧的是顺带查出来的相关性:同一小时内有 ≥2 个币发信号的时段占 20.9%,
其中 92.7% 方向完全一致。所以「有仓位时间低 → 各笔基本独立」这个推理不成立
——时间上不重叠不等于统计上独立。t 值有一定虚高(不足以推翻,t 在 43 以上),
但更实际的后果是:加币不产生分散,仓位不能按「1% × N 个币」线性放。
用户问「整个市场都是正相关的,是不是很少有独立行情」。市场相关是真的,
但这不是伪装成策略的 beta:多空各占 50.7% / 49.3%,做空 PF 4.40 还略好于
做多 4.05,所有时段净方向合计仅 +185 笔。分年看,2021 大牛年做空的 PF 5.34
是整张表最高的一格,七年里没有一年、没有一个方向是亏的。空头占比随行情
切换(牛市 46.5% → 熊市 55.9%)。
所以 92.7% 同向该理解为「检测器正确识别到全市场级别的结构」——若 6 个币
同时发信号却方向随机,那才说明信号是噪声。
另补 3.33 扩币筛选:ATR 对门控阈值与流动性是两条方向相反的约束,最优区间
在中间。BTC 输在波动不够(ATR 中位 2026 仅 6.5bp,预算垫底),TRX 2026 门控
后只剩 4.2% 信号。保证金约束那条待办从「预计影响小」改为扩币前置条件。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 00:45:32 +08:00
jackyu66git and Cursor
32c18f0201
research: 1m 出场口径重定、费率修正,与影子测量的判据常数
...
起因是用户看图指出「止盈没做好」,查下来 TP=3.0 确实把右尾截早了,
而且 1m 不该沿用 5m/15m/30m 的参数——成本固定在 bp、目标随 ATR 缩放,
1m 的 3 ATR 只有 0.39% 而 30m 是 1.87%,成本占比差 5 倍。
step41(5m/15m/30m)与 step42(1m)跑同一张全网格:
SL × TP × MAX_BARS × 分批(3 ATR 减半 → 剩余目标 × 剩余半仓止损位)。
- 1m 最优 SL2 / 3ATR 减半 / 剩余止损保持 2.0 / 目标 8ATR / 48 根,
样本外 8/8 币、7/7 年全面提升,均R/R夏普/回撤/剔10%PF 四项全赢
- 分批要做,但**减仓后不要动止损**。止损位 0/0.5/1/1.5/2 ATR 严格单调,
越紧越差,三组初始 SL 全一致。保本损是全表最差的一档
- SL=1.0 在 1m 上是废的:剔10%PF 0.78~0.99、中位收益 −0.122%
费率此前写的 taker 3bp / maker 1bp 隐含「原始 taker 6bp」的错误前提,
实际是原始 taker 0.040% / maker 0.016%、返 50% 后 2.0 / 0.8bp。方向是保守的,
所以首轮跑出来的数字全部偏低。exit_model 已改,费率只在分析阶段套用,
不必重跑模拟。改完 1m 的均R +8%,5m/15m/30m 只动 2%——费率只对 1m 有杠杆。
顺带查证了用户的一个假设:余量逐年递减是不是跟波动率有关。成立,而且
r = +0.989。毛/ATR 七年在 2.26~2.67 之间没有趋势,衰减的是 ATR 本身
(2021 的 22.1bp 压到 2026 的 8.8bp)。**是波动率压缩,不是 alpha 衰减。**
由此引出 ATR 门控:低 ATR 桶的毛 R 其实最高(1.16 vs 高 ATR 桶的 0.94),
断崖只在扣费之后出现。所以阈值是**费率的函数**(约 5 + 1.1×taker费),
不是市场常数。当前费率下 ≥8bp,在 5m/15m/30m 上几乎不触发,可作全局规则。
lib/shadow_budget.py 放影子测量要对照的常数:逐币预算、门控阈值、
腿→maker/taker 映射、lag 阈值、判据。记录与报表归 research/live/,
分工的理由是这些数会变——今天预算就动了四次。
out/*.feather 转为 ignore:70MB+ 且重跑可得,摘要都在 HANDOFF。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 00:05:56 +08:00
jackyu66git and Cursor
9b72173285
feat: 第四类买卖点(B4/S4)融入缠论引擎与 web 展示
...
研究侧的 fast_bsp3 一直只活在 research/lib/ 里,web 端看不到,回测与目视
两条线对不上。这次把它搬进引擎,作为独立的第四类买卖点。
之所以单独立类而不是当作 B3/S3 的低滞后版:step30/31 显示引擎原生的
B3/S3 统计上呈逆势、显著亏损(胜率 27.4%、PF 0.66、t −18.76),而同一组
过滤器把 B4 从 PF 1.59 提到 2.26 却对它无效(0.66→0.71)。两者选的是
不同的交易群体,不是同一信号的早晚两版。
- chanlun/analysis/fast_bsp.py 原样搬入 find_fast_bsp3 与 build_htf_zones,
另加 add_zone_ladder / htf_fx_timeline / attach_htf_agree
- research/lib/ 两个模块改为转发,所有 step 脚本导入不变,信号逐条比对一致
- 大级别上下文用 resample 从同一份 df 构建,不额外拉数据,因此与界面上选的
周期和时间范围无关
- 前端三个复选框 + 过滤模式下拉;未过滤的原始信号用浅色,避免与主口径混淆
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-28 00:05:26 +08:00
jackyu66git and Cursor
66061f79a1
research: 低滞后信号口径定稿与实盘前偏差审计
...
fast_bsp3 改用 tol=-1 + require_touch=False,信号滞后从 5.8 根降到 2.2 根。
滞后与收益严格单调(年化 370% -> 906%,同一份数据同一套成本),
这是本轮提升的主因,也意味着实盘延迟会直接侵蚀收益。
新增 step31~39 验证策略能否落地:
- 跨品种样本外——8 个未参与调参的币,PF 2.73 / t 28.5,无一为负
- 时点重建——只喂到信号那一根重算,同根命中 100%,确认无未来函数;
1m 在 2000 根窗口即饱和,计算耗时 0.20s
- 偏差审计——多空对称、中枢生效时刻零回退、滑点稳健至 30bp、持仓几乎不重叠
- 消融——alpha 来自缠论中枢的上下文定位,而非「收盘转强」这个触发动作
补 research/HANDOFF.md:记录确切口径与参数、已排除的偏差、
已验证无效因而不必重做的方向,以及下一步用影子交易器实测执行滑点的方案。
清理 step1~20 的输出:早期方法论已被推翻(存在未来函数偏差),
其结论不再被引用;脚本保留,需要时可重跑。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-27 17:47:41 +08:00
jackyu66git and Cursor
7f393b93ed
refactor: 精简仓库为 chanlun 核心与 web 分析,移除威科夫与遗留模块
...
删除根目录旧 Chan 模块、策略、配置、文档及 wyckoff 相关代码;更新缠论 pipeline 与笔中枢计算;补充 research 研究与 web 测试。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-27 01:05:12 +08:00
jackyu66git and Cursor
5c10e35b76
refactor(web): 移除主图威科夫选项与叠层
...
去掉区间/阶段/时间/VP 开关、Cycle 摘要面板及绘制逻辑;分析请求默认 include_wyckoff=0。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-26 01:27:51 +08:00
jackyu66git and Cursor
8c165f11cd
fix(web): 未完成笔/线段终点对齐图表最新 K 线
...
各周期使用对应 kline 数据,终点时间 snap 到 candles,优先使用分析 end_price。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-26 00:40:41 +08:00
jackyu66git and Cursor
97e77847d0
fix(web): 开关缠论元素保留视窗;分周期 Trend 涨跌配色
...
本地重绘统一冻结视窗;次/次次周期 Trend 上涨下跌使用独立颜色。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-25 23:56:55 +08:00
jackyu66git and Cursor
90499533fb
fix(web): 分析/自动刷新后保留 K 线视窗位置
...
拆分手动分析与自动刷新拉数路径;全量重建用 logical 优先恢复视窗,
增量 recent 用 scroll+barDelta;避免 barSpacing 重锚与重复冻结导致往右跳。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-25 23:38:20 +08:00
jackyu66git and Cursor
8ee11317d3
fix(web): 自动刷新保留 K 线视窗;威科夫与图表增量更新
...
自动刷新改用 tail update 与 scrollToPosition 恢复视窗,避免 setData 后跳到最右;拆分 chart_tv 模块并扩展 analyze/recent API。同步威科夫分析、pipeline 增量构建及相关策略与配置。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-25 22:57:43 +08:00
jackyu66git and Cursor
1e60ab3bfa
docs: 补强 ECR-004 CODE_REVIEW 复审记录
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-06 18:47:18 +08:00
jackyu66git and Cursor
d3188ca83c
fix: ECR-004 威科夫区间评分硬化与 VP 绘图减负(已审)
...
评分选 TR、阶段最小跨度、elements_only 门闩、Top-8 VP;无币种独立参数。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-06 18:46:08 +08:00
jackyu66git and Cursor
ac6be80278
docs: 开启 ECR-004 威科夫硬化与 VP 减负(Draft)
...
跟进 ECR-003 Review Findings;待 Approve 后实现。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-06 18:35:25 +08:00
jackyu66git and Cursor
081a57a90e
feat: ECR-003 主站威科夫分析与图表叠层(已审)
...
独立 wyckoff 引擎 + 按需 include_wyckoff;主站 Lightweight 绘制区间/阶段/事件/VP。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-06 18:33:57 +08:00
jackyu66git and Cursor
df27b4dde8
refactor: ECR-002 拆分 runtime 包并加深 analyze 契约(已审)
...
将 web/services/runtime.py 拆为 runtime/ 子模块并保持门面兼容;补齐 ESS 文档、门面/契约/TF_DF 测试与 CODE_REVIEW Approve。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-06 18:15:23 +08:00
jackyu66git and Cursor
9f1e7361b6
fix: 修复主站自动刷新内存泄漏,并完善 chan_tv 图表体验
...
主站重建前完整 dispose、去掉重复 sync 监听,自动刷新默认增量更新;顺带消除首屏重复 analyze、复用 ChanMACD,以及全版 TV 指标/未完成中枢/布局本地缓存。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-06 16:09:48 +08:00
jackyu66git and Cursor
6b0f3b5837
release: 发布系统版本 v1.0.0(ECR-001)
...
落盘 CODE_REVIEW Approve 与 RELEASE_REPORT,标记首个正式 release。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-05 18:53:04 +08:00
jackyu66git and Cursor
74dec4e50b
refactor: 缠论引擎包化与 Web 分层(ECR-001)
...
将根目录引擎迁入 chanlun/ 并保留兼容 shim;拆分 TF_DF 与 web 服务;
前端模块化;strategies 改用 chanlun 导入;补充 ESS 文档与 golden 回归。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-05 18:48:20 +08:00
jackyu66git and Cursor
e2e45bc1bc
chore: 移除不再使用的 ChanMacro、system、tests。
...
这些目录已废弃,从仓库中清理。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-05 18:11:29 +08:00
jackyu66git and Cursor
f2e77e1bdb
chore: 将 data_provider 拆出为独立仓库。
...
数据服务已迁移至 jack/data_provider,不再随 chan 维护。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-05 18:10:29 +08:00
jackyu66git and Cursor
b31215057e
chore: 将 bsp_monitor 拆出为独立仓库。
...
监控服务已迁移至 jack/bsp_monitor,不再随 chan 维护。
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-05 18:09:43 +08:00
jackyu66git
7b91f459d7
scheduler: auto-detect new signals once per day, deduplicate existing
...
- scheduler tick runs detect after fetch+score (once per UTC day)
- ChanSignalDetector skips already-recorded signals
- Prevents duplicate signal_features entries on repeated runs
2026-06-24 19:19:40 +08:00
jackyu66git
3c72aa1310
chan_integration: auto-detect BSP signals from daily+4h Chan pipeline
...
- ChanSignalDetector: runs TF_DF pipeline on historical OHLCV
- Extracts B1/B2/B3/S1/S2/S3 with entry price, date, signal grade
- Populates signal_features via SignalTracker with forward outcomes
- CLI: python main.py detect --from 2024-01-01
- 15 signals detected (5 daily + 10 4h), all directionally correct
- Expectancy API now returns real conditional probabilities
2026-06-24 19:19:11 +08:00
jackyu66git
8d916371e2
backfill: historical breadth + regime computation from TOP50 OHLCV
...
- Step 1: fetch BTC OHLCV
- Step 2: fetch TOP50 daily data → compute breadth per date → store breadth_daily
- Step 3: compute Price/Breadth/OI/Vol → detect regime → store regime_history
- 175 days backfilled (2026-01-01 to 2026-06-24)
2026-06-24 18:37:20 +08:00
jackyu66git
7e19c9858e
scheduler: auto fetch+score every 60min, integrated into web and CLI
2026-06-24 18:35:47 +08:00
jackyu66git
efb721b39f
fix: persist regime to DB in shared _build_state, deduplicate save logic
...
- _build_market_state (CLI) now saves regime_history automatically
- _build_state (web) now saves regime_history automatically
- Remove duplicate regime save from cmd_score
- Remove unused imports (timedelta, get_connection)
- Fix: web dashboard never updated regime_history table
2026-06-24 18:31:00 +08:00
jackyu66git
7813e319b4
web: professional trading-terminal redesign — dark theme, chart grid, progress bars
2026-06-24 18:28:40 +08:00
jackyu66git
f391020f78
web: fix dark theme readability — explicit bright colors for all factor values
2026-06-24 18:27:41 +08:00
jackyu66git
0ba5b3bd71
chanmacro: add web dashboard (Flask + Chart.js, port 8124)
...
- /api/state: current market state with all factor scores
- /api/history: regime + breadth history for charts
- /api/expectancy: signal expectancy query
- Bootstrap 5 + Chart.js dark theme, Chinese UI
- Factor cards, regime timeline, breadth chart, expectancy table
2026-06-24 18:25:33 +08:00
jackyu66git
50a609f7b9
chanmacro: connect to production provider, fix Breadth symbol list and regime crash
...
- Change provider_url to https://provider.jackyu66.com
- Update top50_symbols to match provider's actual 20 symbols
- Fix cmd_score crash: all_scores keys are already strings, not enums
- Add .gitignore to exclude data/ directory
2026-06-24 18:23:27 +08:00
jackyu66git
48e69179b3
data_provider: add /api/derivatives endpoint documentation
2026-06-24 17:47:42 +08:00
jackyu66git and Claude
71951019fb
chanmacro: Signal Expectancy Engine V1 — Market Memory System
...
Phase A-C complete: 4 core factors, regime detection, signal tracking, Bayesian expectancy.
chanmacro/ (32 files, ~4000 lines):
- models: 12 enums + 15 Pydantic v2 models (DateAwareModel, MarketStateVector, etc.)
- fetchers: OHLCV + Breadth (from data_provider) + Derivatives (new endpoint)
- scoring: Price Structure / Breadth (quantile buckets) / OI Matrix (5 discrete states) / Volatility Regime
- regime_detector: 3-state (TREND/RANGE/PANIC), factor-locked (Price+Breadth+Vol), versioned, 2-day confirmation
- expectancy: SignalTracker (record+outcomes), TimeDecay (half-life=180d), BayesianExpectancyEngine (Empirical Bayes, Leveled, SufficiencyGuard)
- validation: FactorValidator (IC/ICIR/Hit Ratio), RegimeValidator (MI/KL/ANOVA), TransitionValidator (stability)
- CLI: fetch|score|regime|track|backfill|expectancy|validate|serve
- tests: 52 passing (models, scoring, regime, expectancy)
data_provider:
- /api/derivatives endpoint: funding rate, OI, OI change, basis
- _derivatives storage: same persist pattern as K-line (merge→lock→snapshot→atomic write)
- background refresh every 60s
Co-Authored-By: Claude <noreply@anthropic.com >
2026-06-24 17:44:55 +08:00
jackyu66git
e1116edb7b
更新了本地数据拉取
2026-05-26 14:49:31 +08:00
jackyu66git and Claude Opus 4.7
8bc23c0507
notify: 移除持久化去重,BSP 由新笔确认驱动不重复
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 14:46:10 +08:00
jackyu66git and Claude Opus 4.7
c75d5e11fc
notify: Telegram token/chatid 直接硬编码
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 14:45:41 +08:00
jackyu66git and Claude Opus 4.7
8eb50e3eae
bsp_monitor: 多周期 BSP 推送 (1m/5m/15m/1h),中枢监控代码保留但暂停
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 14:42:53 +08:00
jackyu66git and Claude Opus 4.7
42296ef971
refactor: BSP推送提取公共函数 + 清理
...
- _push_bsp() 提取重复的key构造+推送逻辑
- bsp.klc None防护
- getattr替代hasattr+属性访问
- 修正首轮日志(不再写"不推送")
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 14:05:20 +08:00
jackyu66git and Claude Opus 4.7
a84a80cb62
Revert: BSP独立跟踪confirmed[-1],不与中枢监控耦合
...
B1/B2依赖中枢存在,不能等中枢更新才查BSP。
保持独立bi_id跟踪confirmed[-1]变化,分型确认时即查BSP。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 14:02:07 +08:00
jackyu66git and Claude Opus 4.7
63787b173a
fix: 新笔确认即查BSP(反向二类分型触发),首轮也查confirmed[-1]
...
笔被反向二类分型确认时is_sure=True,不需要等下一笔。
- 跟踪confirmed[-1]变化→查新确认那笔自身的BSP
- 首轮也查confirmed[-1],避免漏掉监控启动前刚确认的BSP
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 13:59:02 +08:00
jackyu66git and Claude Opus 4.7
07f079067f
fix: 跟踪confirmed[-1],新笔确认时查上一轮confirmed[-1]的BSP
...
以前跟踪bi_list[-1](含未确认)导致时序不对。
现在跟踪confirmed[-1]的稳定ID,变化时在bi_list中精确定位
上一轮的那笔,查其end_klc是否为BSP。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 13:55:48 +08:00
jackyu66git and Claude Opus 4.7
ae4c79c133
fix: BSP检测用last_bi_id精确定位旧笔,替代confirmed[-2]索引
...
管线重算后笔列表可能变化,confirmed[-2]不一定是刚结束的笔。
改为用上一轮的last_bi_id在当前bi_list中精确查找,
找到后再检查其end_klc是否为BSP。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 13:35:20 +08:00
jackyu66git and Claude Opus 4.7
743c5d342e
fix: review修复 — 补回last_df_ts、枚举替换魔数、移除死代码
...
- SymbolState 补回 last_df_ts,无效新K线时跳过管线
- _bi_id 添加 start_klc None 防护
- last_bi.dir.value == 1 改为 Chan_BI_DIR.UP 枚举比较
- notify.py 移除未使用的 register_bsp_keys
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 12:56:17 +08:00
jackyu66git and Claude Opus 4.7
78d02cf2ef
refactor: BSP检测改为新笔驱动,不再逐tick对比BSP列表
...
- 用 last_bi_id (start_klc.start_time) 跟踪最后一笔
- 新笔确认时检查上一笔终点是否为 BSP → 推送
- 中枢更新同样在新笔产生时触发
- 移除时间过滤、BSP列表diff、持久化去重等冗余逻辑
- 无新笔时快速跳过,tick从40s降到15s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 12:52:36 +08:00
jackyu66git and Claude Opus 4.7
cf9097a540
fix: zs_id 使用稳定时间戳替代 DataFrame 位置索引
...
_make_zs_id 原来用 start_klc.index,每次新K线导致 index 偏移,
monitor 误判为新中枢,每 tick 都推送。改为 start_klc.start_time,
时间戳不随 DataFrame 窗口偏移变化。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 12:07:58 +08:00
jackyu66git and Claude Opus 4.7
881c9d5eac
bsp_monitor: 支持全部20个币对 + 数据源切换至data_provider + Python 3.9兼容
...
- fetcher.py: 数据源从CCXT改为data_provider HTTP API,新增get_symbols()自动获取所有币对
- main.py: 重构为多币对架构,每个币对独立SymbolState(pivot_monitor/BSP去重/首轮抑制)
- engine.py: format_bsp_detail()支持动态币对名
- ChanPivotMonitor/Classifier: 修复Python 3.9类型注解兼容(X|None → Optional[X])
- 首轮初始化时不推送中枢和BSP,避免启动时20条消息轰炸
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 11:55:23 +08:00
jackyu66git and Claude Opus 4.7
b1cbdca707
ChanPivotMonitor: 实时中枢特征跟踪 + Telegram推送
...
- ChanPivotClassifier: 提取 calc_duration/contraction/shift 为 @staticmethod,新增 compute_features()
- ChanPivotMonitor: 实时追踪当前中枢,bi_count 增长时重新计算 shift/contraction/duration
- bsp_monitor/fetcher: 改用 data_provider HTTP API 替代直连 CCXT
- bsp_monitor/notify: 新增 send_telegram_message() 通用推送
- bsp_monitor/main: 集成 ChanPivotMonitor,有新笔或 BSP 时推送到 Telegram
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 11:35:09 +08:00
jackyu66git and Claude Opus 4.6
5ad761fad4
添加 ChanPivotClassifier: 中枢结构特征提取 + 标签化
...
Phase 1 训练数据集构建工具,从笔中枢提取 3 特征 (duration_norm, contraction, shift_norm) + 1 标签 (break_direction)。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-25 18:33:56 +08:00
jackyu66git
9eae12f07d
修改了一点
2026-05-20 02:02:53 +08:00
jackyu66git
9b876c45ed
修改了bsp state,继续测试
2026-05-20 00:49:53 +08:00
jackyu66git
91148a648a
添加新的策略
2026-05-19 09:58:33 +08:00
jackyu66git
bc085171f4
添加新策略用第三类买卖点
2026-05-17 14:54:00 +08:00
jackyu66git
050ebeb849
添加tradingview advanced chart lib和实现chan_tv网页
2026-05-14 14:16:06 +08:00
jackyu66git and Claude Opus 4.6
ebcb3dce73
添加 StructureZone 结构价值区系统,支持多周期支撑/阻力分析
...
- 新增 ChanZone.py: 从笔中枢/线段中枢/EMA52 提取价格区,聚类评分
- ChanLun.py 新增 get_structure_zones() 方法
- web/app.py: 独立拉取多周期数据 + 缓存 + limit 传参避免全量传输
- web/index.html: 结构区勾选框 + K线数量输入 + 半透明填充区绘制
- tests/test_chan_zone.py: 24 个单元测试
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 01:31:56 +08:00
jackyu66git and Claude Opus 4.6
d8069e977f
添加 CLAUDE.md,为 Claude Code 提供项目指引
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-06 09:52:05 +08:00
jackyu66git
3f68a8305a
修改了一点
2026-05-03 15:43:56 +08:00
jackyu66git
deeea55237
ignore update
2026-05-02 02:12:46 +08:00
jackyu66git
5ab69c2a64
更新data_provider逻辑,能够更快开始提供服务,添加说明
2026-05-01 17:13:24 +08:00
jackyu66git
425d513a37
修改笔中枢第三类卖卖点识别,识别好后直接完成笔中枢
2026-04-30 15:20:37 +08:00
jackyu66git
8ff1515f8b
改了ema的颜色
2026-04-24 10:13:30 +08:00
jackyu66git
d8e3cdd9e9
修改小周期笔无法显示bug
2026-04-16 23:53:40 +08:00
jackyu66git
04d8f73b94
修正了刷新图表缩放和位置不变的bug
2026-04-16 02:31:48 +08:00
jackyu66git
7815eada00
添加动能理论,修改klc整体显示
2026-04-10 13:01:07 +08:00
jackyu66git
957ef62407
修改bug
2026-04-08 01:27:57 +08:00
jackyu66git
3fbcc354d8
去掉trim data,修改check_fx回去
2026-04-06 01:02:42 +08:00
jackyu66git
ee9b573762
添加macd周期参数设置
2026-04-05 19:12:31 +08:00
jackyu66git
c17539a7a5
web端进行优化,减少内存开销,data provider提供websocket服务
2026-04-05 18:24:08 +08:00
jackyu66git
2bf9fe5825
添加中枢延续
2026-04-05 17:55:09 +08:00
Porter
6a6d24f601
添加中枢识别在klc和笔
2026-04-05 11:43:30 +08:00
jackyu66git
ea317fb6f9
增加了新的笔中枢,但是还是线段的好些
2026-04-02 15:29:15 +08:00
jackyu66git
6538982d24
添加识别klc_state,macd参数调整
...
macd调整为26,52
顶底之间间隔7个klc
2026-04-01 11:11:51 +08:00
jackyu66git
b6b6cb94c0
添加波浪理论和klc状态识别
2026-03-31 01:07:18 +08:00
jackyu66git
89269198a0
添加None确认
2026-03-24 16:33:49 +08:00
jackyu66git
cc9dc1f79f
终于搞定中枢了
2026-03-24 01:24:34 +08:00
jackyu66git
2b10c889bc
添加分型确认
2026-03-21 01:40:25 +08:00
jackyu66git
0bc36e066f
添加识别中继分型
2026-03-20 18:39:02 +08:00
jackyu66git
f1b0daa55f
添加次次周期显示按钮
2026-03-16 16:26:14 +08:00
jackyu66git
e61af7b1a8
添加了次次周期的显示
2026-03-15 17:07:15 +08:00
jackyu66git
1c17cf1f11
添加分型识别
2026-03-14 02:03:27 +08:00
jackyu66git
aeced3c618
找到klc生成bug
2026-03-13 01:21:33 +08:00
jackyu66git
72196329d1
增加缠论说明,优化线段中枢
2026-03-12 17:20:57 +08:00
jackyu66git
ea47bfe9b7
中枢终于画对了,可以交易了
2026-03-11 11:33:21 +08:00
jackyu66git
5226c551d5
修改了线段中枢逻辑
2026-03-11 03:08:10 +08:00
jackyu66git
1c099be23e
添加移除fillna警告提示
2026-03-06 22:21:11 +08:00
jackyu66git and GitHub
512da40c96
Merge pull request #11 from jackyu66git/dev
...
添加新的策略
2026-03-06 22:09:04 +08:00
jackyu66git
d2107db6c0
添加新的策略
2026-03-06 22:08:24 +08:00
jackyu66git and GitHub
7376675e1c
Merge pull request #10 from jackyu66git/dev
...
添加识别笔破坏
2026-02-28 19:29:27 +08:00
jackyu66git
d8f2269a49
添加识别笔破坏
2026-02-28 19:27:36 +08:00
jackyu66git and GitHub
57464f4de6
Merge pull request #9 from jackyu66git/dev
...
本地测试和本地实盘测试分开配置,需要加载startup candles才能得到ema26和ema52数据
2026-02-27 12:10:43 +08:00
jackyu66git
a7ab32133b
本地测试和本地实盘测试分开配置,需要加载startup candles才能得到ema26和ema52数据
2026-02-27 12:10:05 +08:00
jackyu66git and GitHub
041db0dea5
Merge pull request #8 from jackyu66git/dev
...
添加ema26和ema52交叉策略,今年可以,还需要再看看细节
2026-02-26 17:45:43 +08:00
jackyu66git
eb039e9987
添加ema26和ema52交叉策略,今年可以,还需要再看看细节
2026-02-26 17:45:04 +08:00
jackyu66git and GitHub
29ee73b244
Merge pull request #7 from jackyu66git/dev
...
添加.config.json文件
2026-02-24 20:53:34 +08:00
jackyu66git
ba639901e8
添加.config.json文件
2026-02-24 20:52:53 +08:00
jackyu66git and GitHub
5a13e0c916
Merge pull request #6 from jackyu66git/dev
...
Dev
2026-02-24 20:31:29 +08:00