 jackandCursor
|
cef894376c
|
定位 inner_ms 的 3.3 倍:是争抢不是算法档,撤回 22/86 拆分
服务端跑 probe_inner.py 与本机对表:分档占比一致(TF_DF 两腿 68~74%,
信号链 16~21ms),此前报的「chan 构建 22ms / 信号链 86ms」是无效减法
——孤立环境的 1m append 减在场十币的 inner_ms,还漏了 5m 腿。
真实构成:inner_ms 100ms = 约 30ms 计算 × 3.3 倍争抢。逐个排除
_rebuild(1.6ms)、币种差异、周期重建(21.5%/1.5x)、批内次序(相关-0.083)
后,用外生的到达密集度确认(67→117ms),并以注入合成负载复现
(2 个满载进程 2.68x,3 个 2.86x,在场实测 2.24~3.34x)。
心跳判定不再推荐「继续压算法」,改为加核或减币。
第一版用 t_signal-inner_ms 反推并发区间得相关 0.533,是循环构造,
已废弃并在 §5.72 记下这个坑。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 16:19:25 +08:00 |
|
 jackyu66gitandCursor
|
bfdb2f2e2a
|
引擎四处「算了没人要的东西」,append_bar 13.9ms → 6.6ms
服务端把增量上线后回传两个热点:add_indicators 为加一根重算全表(占 34%)、
cal_bi_list 整表重扫(51%)。顺着查下来四处都不是算法慢,是算了没人读的结果。
1. cal_trend 挂到 lean 下。它不是笔的依赖(bi.py:221 在它自己的循环里读自身
序列状态),服务端 verify_incr_parity 三币 1800 根已对拍定论。web 走非
lean,klc_trend 图层不受影响。
2. check_fx_pattern 删掉拼完就丢的字符串。它把 klu.to_string() 拼成 p 只为
一行注释掉的 print——2000 根上近 3 万次 f-string 加 6 万次 enum 格式化,
而且在 cal_bi_list 内层。klu.pattern 只被 cal_klu_pattern 自己的双K/三K
判定读,不出模块不进 web,所以整个调用在 lean 下也跳过。
3. ChanBI.add_klc 去二次方。去重原本线性扫 klc_list,且每加一根就把整笔所有
KLU 的 macdhist 重累一遍,往一笔加 k 根是 O(k²)。改成下标集合加
macd_hist/macd_div 惰性求值。这两个值只有背驰判定(bsp.py)读,lean 下
bsp 根本不算。
4. add_indicators 批量挂列。2001 行上 TA 计算合计只有 2.5ms,而 30 多次
df['x']= 要 3.6ms——开销大头是 BlockManager 逐列插入不是计算,改为一次
concat。cal_volume_ratio 里为算一列 rolling 而 copy() 整张 40 列表,一并去掉。
实测(本机,2001 根窗口。服务端基线 21.8ms 是另一台机器,别直接比绝对值):
append_bar 13.9 → 6.6ms
└ rebuild_bi_zs 8.7 → 2.8ms
└ add_indicators 4.4 → 3.5ms
TF_DF lean 49.8 → 32.9ms
TF_DF full 72.7 → 64.9ms
对拍用 git worktree 检出改动前的提交,同一份 BTC 1m 4000 根跑 38 项指纹:
full 模式 19 项全部一致(web 那条路没动);lean 模式差 2 项,正是设计要它差
的 klc.trend 和 klu.pattern,而 lean 下 bi/zs/seg/bsp/dataframe 全部一致——
这就是「这两个字段没人读」的实测证据:打空它们,下游一位不变。
瓶颈已经换位置了。新增 probe_inner.py 拆 inner_ms 分档:本机 TF_DF 两条腿占
70%、build_htf_zones 13%、htf_fx_timeline 6%,而服务端报的是 chan 构建 22ms /
信号链 86ms,机器差解释不了这个四倍差距。曾怀疑是 payload 反序列化,实测
_rebuild 只有 1.0ms,假设不成立。两边跑同一探针对分档表才能定位。
HANDOFF 顺带修掉一处 5.6 重号(增量落地那节改为 5.7,本节挂 5.71)。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 16:01:26 +08:00 |
|
 jackyu66gitandCursor
|
06928d1d5f
|
开仓前那段:量要小、势要有但不能过头,换掉 vr60 那个开关
用户提出看开仓之前的量与趋势方向。这是第三个位置——step50 管信号根、
step52 管持仓中,这里管入场前。step48 采集端补 vpre10/vpre30/mom10/mom60。
先纠正一个错的心智模型(我和用户都以为的):B4/S4 不是回抽后进场。mom10
中位 +3.47 ATR,为负的只占 6%。信号触发时价格在前 10 根里已经顺着你的方向
走了三个多 ATR,2 ATR 止损是架在一段已经走完的行情后面。这也解释了 step50:
信号根是突破根,放量 = 追在最后一棒上。
① 入场前的量单调,越小越好(样本外毛R,Q1→Q4):1.474 / 1.266 / 1.156 /
0.573。控 vr60 后仍成立(低量层 −0.284、高量层 −0.541),与 vr60 相关只有
+0.301,不是同一件事换个说法。
② 入场前的动量是驼峰形,不是单调(mom60 样本外毛R,Q1→Q4):1.252 /
1.473 / 1.141 / 0.603。势要有——完全没动过的 Q1 也不如 Q2;但不能过头——
Q4 在发现期余量只剩 1.44bp,等于不能做。
驼峰形意味着中位数二分法会把它测没:控制表里 mom10 的毛R差是 +0.044,
看着无效,那是二分把 Q1+Q2 和 Q3+Q4 各自平均了。对非单调因子不要用中位数
分层做检验。
③ 砍 mom60≥7 全面优于 §3.39 定的砍 vr60≥4(发现期):
等权 保留 100% 盈亏平衡 13.5bp R夏普 0.325 回撤 16.8 总R 596.6
砍 vr60≥4 保留 69% 盈亏平衡 15.6bp R夏普 0.411 回撤 10.8 总R 514.9
砍 mom60≥7 保留 78% 盈亏平衡 17.5bp R夏普 0.476 回撤 7.7 总R 657.7
每一项都赢,还多留 9 个点的笔数。更要紧的是总R 比不砍还高——被砍掉那 22%
期望为负,砍掉不是花钱买稳健,是纯赚。样本外同向。所以这个开关不需要等
影子测量:它在 0~20bp 每一档都不输等权。
附滑点决策表:5~12bp 区间砍 mom60≥7 通吃,只有 ≥15bp 才该上「三个都砍」,
而那时策略本身已在生死线上。
阈值 7 和 1.5 是贴着 Q4 边界取的整数,不是搜出来的,但也不是完全无关于数据
(看过分位表才取的整),上线前应确认阈值附近没有断崖敏感。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 15:55:49 +08:00 |
|
 jackyu66gitandCursor
|
431e776905
|
持仓中放量不是出场信号,恰恰是最好那批单子的标记
用户问:既然 step50 证明入场根放量是接盘,那持仓中出现放量根是不是也说明
这一波走完了、该直接平掉?测下来方向是反的,且比入场那条还干净。
规则:持仓期间任一根 vr60 ≥ 阈值就收盘市价平掉(taker)。同根内优先级
止损(盘中)> 目标(盘中)> 放量平仓(收盘)。10 币 3941 笔:
基线(不看量) 毛R 1.068 R夏普 0.627 PF 3.80 余量 18.45bp 均持仓 30.0
vr60≥3 就平 毛R 0.617 R夏普 0.459 PF 2.81 余量 7.81bp 均持仓 11.1
vr60≥5 就平 毛R 0.858 R夏普 0.568 PF 3.37 余量 12.85bp 均持仓 19.8
vr60≥8 就平 毛R 1.009 R夏普 0.617 PF 3.69 余量 16.68bp 均持仓 26.3
阈值越高、触发越少就越接近基线——这条曲线的最优点是「永不触发」,规则纯扣分。
「浮盈才平」的变体把胜率抬到 74.4%(基线 71.7%)而毛R 掉到 0.655,是过早
止盈的教科书特征:胜率上升、期望下降。
根因:vr60≥5 触发的 1769 笔若不平,止盈率 45.7%、止损率 16.6%,而全体基线
是 30.1% / 33.1%。持仓中的放量根标记的是最好的那批单子,平掉每笔让出 +0.484R。
幸存者偏差已控——按基线持仓 ≥K 根分层后 5/5 档同向,放量组止盈率约为无量组
两倍(K=5 时 41.2% vs 19.8%)。
同一个事件入场为负、持仓为正,区别只在站在它的哪一边:入场那根放量你是买方,
持仓中那根是资金来接你的货。用户「有资金的趋势才是好趋势」的直觉成立,
作用点在持仓期而非入场点。
自带逐根模拟器不走 walk_exits,所以先与它对拍基线(毛收益差 <1e-12、出场
原因零分歧),10/10 币通过才往下算。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 15:55:49 +08:00 |
|
 jackandCursor
|
34a8f37b39
|
HANDOFF:更正 cal_trend 依赖那句,补 §5.6 增量落地
原先写「cal_trend 不能跳过——bi.py:221 读 klc.trend,笔的计算依赖它」。这条
不成立:221 行在 cal_trend 自己的循环里,读的是它自身的序列状态,不是
cal_bi_list 的依赖。1,800 根对拍定论——增量追加的 klc 其 trend 恒为 UNKNOWN,
与批量构建(trend 有值)逐字段相同。这处偏差是读代码读出来的,对拍一次就
定论了,同类判断优先用对拍。
另标注「append_bar 32ms 对 800ms 有 25 倍余量」的口径问题:单币构建不是信号
总延迟,多币要串行清空,且 800ms 哨兵测的是数据到达、不与计算共享预算。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 06:19:00 +08:00 |
|
 jackyu66gitandCursor
|
d4fbe9d905
|
量因子该做成开关不是权重;前序因子不该进仓位
把 step49/50 两个分层结论做成仓位因子做组合层面评估,结果与分层表给人的印象
不一致,两个因子的命运相反。
方法上设了三道约束——分层结论转仓位规则最容易在这三处翻车:
1 阈值取整数(vr60 切 1/2/4)、权重取整数比,一个参数都不搜。观测到的四分位
边界在不同时段并不一致(样本外 0.63/1.26/2.28/5.34、发现期 0.62/1.48/
3.11/7.97),用样本分位数等于在同一批数据上既发现又调参
2 权重归一化到均值 1,各方案投出去的平均资金相同,均R 才可比
3 判据是四项一起看:均R / R夏普 / 最大回撤 / 峰值加权并发。只看均值必然误判
全样本 3941 笔,假定滑点 5bp/taker 腿:
盈亏平衡滑点 R夏普 回撤R 峰值并发 总R/峰值并发
等权(现状) 16.7bp 0.420 17.3 7.00 371.4
仅量因子(加权) 18.2bp 0.442 12.7 7.98 367.4
仅前序因子 17.0bp 0.421 19.2 8.46 312.6
硬砍高量档(vr60≥4) 18.6bp 0.496 11.2 6.00 389.3
硬砍 + 前序权重 19.0bp 0.500 11.0 7.19 332.1
① 前序因子不能做仓位。+6bp 余量在 5bp 滑点假设下只值约 0.011R,而这批信号
按定义 100% 发生在别的币已有仓位时——加权就是在敞口最集中的时刻加杠杆。
盈亏平衡只买到 +0.3bp,峰值并发 7.00→8.46、回撤 17.3→19.2,按峰值保证金归一
后是净负的(371→313)。§3.31 里「可用于加仓位权重」那句作废。出路可能是改用
放宽 ATR 门控兑现(多做几笔而非每笔做大),未测。
② 量因子「不做」优于「少做」。硬砍付笔数 −22%、总R −10%,换回撤 −35% 和峰值
并发 7→6。并发这一项单独就值:§3.31 已把峰值敞口列为扩币的前置约束。
③ 优势的形态是削尾不是抬均值。均R 差在各滑点档几乎恒定(0.085→0.082),但
基数在塌,所以相对优势随成本上升放大:15bp 处总R/回撤 2.57→11.86,靠的是回撤
从 150.5 掉到 60.3。这两个因子买的是尾部风险,不是收益。
可操作口径要用发现期:盈亏平衡滑点样本外 18.2bp、发现期只有 13.5bp(硬砍后
15.6bp),差距就是 2026 的 ATR 压缩。13.5 与 shadow_budget 的 15.19bp 同量级,
互为印证。影子测量要对标 13.5 / 15.6,不是 18.6。
开关先不上:只是 live 信号路径加一行,随时能加。等实测滑点出来再定——远低于
13.5bp 则等权就够,贴着 13.5bp 则这 2.1bp 就是生死线。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 05:08:34 +08:00 |
|
 jackyu66gitandCursor
|
ef584b8d49
|
成交量假设方向是反的:高量入场毛R 0.794,低量 1.421
用户假设「有资金的趋势才是好趋势」,预期开仓根成交量越大越好。成交量在信号根
收盘时可知,符合 step48 立的「只用开仓时已知信息」纪律,是合法的可交易切法。
10 币 × 80 万根、实盘口径 3941 笔,结论与假设相反。
按 vr60(当根量 / 前 60 根均量)四分位:
量最低(中位 0.63) 毛R 1.421 余量 27.18bp ← 样本外
量最高(中位 5.34) 毛R 0.794 余量 13.47bp
单调递减,且样本内外、两套量比基准(前 10 根 / 前 60 根)全部同向。稳健性达到
step49 那条的标准:ATR 四分位 4/4 同向、逐时段 7/7 同向,不是 ATR 换脸。
机制在出场结构里,伤害全在止损命中率:
量最低 止盈 33.5% 止损 22.5% 超时 44.0% 赢时均R 1.830 亏时均R −1.098
量最高 止盈 26.1% 止损 45.3% 超时 28.6% 赢时均R 1.651 亏时均R −1.106
亏损幅度四档全是 −1.10(止损就是止损),赢时均R 只降 10%,止损率翻倍是全部
损失来源。这里有个判别点:若只是「2 ATR 止损相对突然放大的波动太窄」的尺度
错配,超时单应按原比例分流进止盈和止损两侧;实际是超时(−15.4pp)和止盈
(−7.4pp)一起流进止损(+22.8pp)。方向本身在变差,不只是止损太窄。
为什么直觉会反:B4/S4 在突破根上进场。大量根意味着这一冲已经由别人的资金
完成,你在它的收盘价接手。「有资金」要能获利必须在资金到达之前进场,不是同时。
与「有前序」是两件独立的事(有前序组 vr10 中位 1.76 vs 无前序 1.46),可叠加:
低量 × 有前序 253 笔,毛R 1.398、余量 31.00bp,是目前见过最宽的执行容忍度。
step48 的采集加 vr10/vr60 两列。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-28 05:08:03 +08:00 |
|
 jackyu66gitandCursor
|
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 |
|
 jackyu66gitandCursor
|
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 |
|
 jackyu66gitandCursor
|
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 |
|
 jackyu66gitandCursor
|
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 |
|
 jackyu66gitandCursor
|
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 |
|
 jackyu66gitandCursor
|
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 |
|
 jackyu66gitandCursor
|
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 |
|
 jackyu66gitandCursor
|
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 |
|