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>
This commit is contained in:
@@ -31,6 +31,10 @@ research/live/cache/
|
||||
# Scratch outputs from short shakedown runs, superseded by the real collection.
|
||||
research/out/archive/
|
||||
|
||||
# Per-trade simulation dumps from research/step*.py. 70MB+ and regenerable by
|
||||
# rerunning the step; the summaries they feed live in HANDOFF.md.
|
||||
research/out/*.feather
|
||||
|
||||
# Virtualenvs. venv writes its own .gitignore since 3.11, but only for the
|
||||
# directory it creates — declare it here so other layouts are covered too.
|
||||
.venv/
|
||||
|
||||
Reference in New Issue
Block a user