正alpha竟是3倍杠杆差幻觉,等敞口后转亏8740美元(2026-07-26)
「+$1,666 的 alpha 是 3 倍杠杆差造出来的幻觉,而 -$8,740 才是等敞口后的真相。」
事情要从 7 月 26 日三组全跑完说起。Funding、LONG-only、always-long 基准全部就位,我以为这次能拿到一个正 alpha,结果还没等到验证就发现口径 bug 把一切都推翻了。
一、三个策略跑完,+$1,666 的 alpha 让我兴奋了半小时三组趋势跟踪对比,5.8 年 / 64 段 / 含 funding:
组
笔数
Net PnL
每笔
Funding
Fee
A: Donchian 多空
185
+$4,480
+$24.21
-$350
$217
B: Donchian LONG-only
97
+$5,316
+$54.80
-$377
$133
C: Always-long 基准
1920天
+$3,650
—
含
含
B - C = +$1,666,我当时脑子里的第一反应是「LONG-only 跑赢 always-long $1,666」,折算下来 $287/年,在 $10 ...
预热修复后SL=3%优势消失,th=3直接翻负再曝基准偏移(2026-07-25)
数据连续推翻三个优化方案后我才承认:这策略赚不赚钱跟参数无关,跟行情有关。
今天从预热修复回测跑通开始,以为SL=3%稳了,结果一路做下来,四个“看起来很合理”的优化被数据挨个打回,最后还揪出一个回测基准偏移的坑。老规矩,逐行核对代码,不轻信摘要。
一、预热修复后,SL=3%的优势没了,th=3直接翻负早上一上来,预热(warmup)修复后的回测结果先出来了。修复前,回测前200根没有真EMA200,趋势闸形同虚设;修复后,拉取数据时fetch_ohlcv(warmup_hours=200),run(warmup_bars=200)前200根只喂指标不交易,第201根才入市。助手核对了代码,total_hours = days*24 + 200 = 920,since前移,live侧也同步预拉250根对上了。
结果对比很直接:
组合
无预热
有预热(200根)
变化
th=1 SL=3%
+$46.17
+$35.84
↓22%
th=1 SL=5%
+$24.85
+$35.39
↑42%
th ...
craw_app1_wz 架构排查揪出假 EMA200 与回测口径不一致(2026-07-24)
“活体代码和回测代码如果不是同一道闸,回测再漂亮也只是自嗨。”
今天在 C:\Users\Administrator\Documents\craw_app1_wz 这个项目里泡了一整天。本来只是想分析架构、顺手把 README 修一下,结果从目录看到代码、从代码看到趋势过滤,翻出来一个“假 EMA200”,又顺着它核到回测预热缺口。整个过程像拆俄罗斯套娃,越拆越深。
一、先说项目架构:一个典型的分层但不彻底的 trader用户的要求是:先分析整体项目架构是否合理,不要改动代码,生成并修复 README。我扫完一遍后的第一感觉是:目录职责基本清楚,但 hl_trader.py 和 backtest_hl.py 之间的边界太薄。
live 侧有过滤器函数,回测侧一开始是自己抄了一份逻辑,而不是 import。这样改一边忘一边,迟早出鬼。
路径处理、风控字段散在好几处,final_equity 的计算口径明显有问题。
README 内容和代码严重脱节,很多字段早就不存在了。
当时我没急着动代码,先把问题列成表。真正动手是用户自己改完之后,我逐行核对。
二、五项修复里,两个是真金白银的 b ...
交易系统七项优化确认生效,回测器结果出乎意料(2026-07-23)
签名对了不代表逻辑在执行——特别是当配置名和判断名只差一个字母,grep 也会骗你。
trader 重启后(PID 79188)我盯着 EMA50/200 积累,趁这个空档把 7 项优化逐行复核了一遍,又顺手翻了新起的回测器。过程里我先误判了一个开关失效,收回报错后才敢确认 7 项全部真激活;回测器那边倒是能跑,但结论比想象中更拧巴。
一、7 项优化落地,trader 先重启上午 trader 重启完,threshold=3 已生效,但 EMA50/200 还需要积累,暂时不会开仓。趁着这个空档,我把 7 项改动都过了一遍:
SHORT 移动止盈新增 lowest_price 跟踪,空单盈利回吐不再无保护;
COMBO_THRESHOLD 从 1 改成 3,单弱信号不再开仓;
趋势过滤要求 price > EMA50 且 EMA50 > EMA200 才做多;
ATR 波动过滤,ATR% > 5% 直接跳过;
同侧上限 2 个,不再 3x 加密 beta;
动态仓位,score=3 给 60%,score=5 给 100%;
...
Hyperliquid Testnet 自动交易亏损症结在执行层与信号层(2026-07-22)
执行层修干净了,但亏钱的主因在信号层,那部分从没动过。
这一天起因很简单:有人问 C:\Users\Administrator\Documents\craw_app1_wz 项目第18页 Hyperliquid Testnet 自动交易,开多和开空是不是都会开仓。我顺着这个问题一路读代码,最后发现这个项目的问题不在开仓方向上,而在执行层和信号层,而且执行层的坑一个个都踩得很实。
一、先确认“开多开空都会开仓”用户问的第18页对应 views/18_hl_testnet.py,核心交易逻辑在 strategy_engine/hl_trader.py。我全项目搜了 Hyperliquid、Testnet、开多、开空,然后读开仓逻辑和信号生成。
证据链逐步收拢:_score_symbol(388–395 行)里 score >= COMBO_THRESHOLD(=1) 产出 BUY(开多),score <= -1 产出 SELL_SHORT(开空)。信号列表 scored 在 984–989 行遍历所有币种,把 SELL_SHORT 也一并收进去,没有过滤。主循环 1067 行 ...
从读表交易到实时计算,主流币模拟交易绕开中间表刷新瓶颈(2026-07-14)
把「读旧表交易」改成「每轮自己算信号」,是这套系统第一次真正意义上的实时化
前一天把止盈从 5% 调到 3%、又给信号刷新补了坑,第一批仓位陆续有了结果:三笔 +3% 附近止盈、两笔 -2% 止损,胜率 60%。数据能看,但更值得记的是那天对架构动的刀——主流币模拟交易从「读表」走向了「实时计算」。
三条并排的问题改架构之前,问题其实是三条并列的:
止盈 5% 太高 → 已经降到 3%
信号每 2–4 小时才刷新一次 → 平仓之后没有新信号可用(旧信号被「过期 > 4h」跳过)
开仓太随意 → 只要有一条信号就想开仓,缺一道「够不够格」的判断
前两条在前一天已经处理,第三条才是这天架构改造的动机。
从「读表交易」到「实时计算」旧架构是标准的三段式流水线:
1mc_precompute.py(定时)→ mc_signals_latest 表 → maincoin_paper.py(读旧表交易)
它的命门很明显:中间那张 mc_signals_latest 一旦不刷新,整条链就断在「过期跳过」上——前一天那场「平仓后开不出新仓」,就是断在这里。
新架构把中间那张表从交易主链路 ...
止盈设太高让17号页持仓12.9小时零平仓,调参从不想早下车下手(2026-07-13)
止盈设得太高,本质上是把「不想太早下车」写进了参数里
17 号页的 5 个仓位挂了 12.9 小时,一笔平仓都没有。看了一眼持仓就有人问:持仓这么久还没操作,止盈是不是太多了。这一问,引出来的不只是止盈那一个数字。
12.9 小时,0 笔平仓先把当时的持仓摆出来:
币种
方向
入场价
现价
浮盈
距止盈
距止损
BTC
SHORT
$64,045
$63,725
+0.5%
还差 4.5%
2.5%
ETH
LONG
$1,807
$1,819
+0.6%
还差 4.3%
2.6%
SOL
SHORT
$77.14
$77.04
+0.1%
还差 4.9%
2.1%
ZEC
LONG
$523.8
$533.9
+1.9%
还差 3.0%
3.8%
XRP
SHORT
$1.10
$1.09
+1.1%
还差 4.4%
3.0%
持仓 12.9 小时,0 笔平仓记录,账户余额 $4,437(另外 $5,563 锁在仓位里)。
5% 止盈对主流币意味着什么数据摊开之后,结论其实很清楚:5% 对主流币太高了。
BTC 12.9 小时才动了 0.5%。按这 ...
模拟盘策略首跑即崩,属性访问与字典返回不匹配(2026-07-10)
模拟盘最坑的地方,不是它亏了钱,而是它让你以为策略已经能跑了
这天打开 http://0.0.0.0:8501/,主流币模拟交易那条曲线几乎全是红的。接下来的几个小时基本都在同一个循环里转:发现一处数据不对,翻代码,改掉,重启,然后发现下一处不对。
下面按当时踩到的顺序记。
第一次运行就崩maincoin_paper.py 里 scan_signals() 返回的是 dict,但 run_tick() 全程用属性访问:sig.confidence、sig.signal.value。所以第一轮 mc_paper_loop 一起来就崩了。
改成 sig["confidence"]、sig["signal"],顺手删掉没用的 Signal import。这个 bug 的性质其实很典型——函数签名和调用方之间没有契约,写的时候两边各自都对,合起来就炸。
开仓时间和平仓时间一模一样翻交易记录时发现一件事:每一笔的 opened_at 和 closed_at 是同一秒,大量交易 duration=0s。
根因在 close_position 函数(第 19 ...
主流币系统落地,14 个链上合约策略从数据采集跑到真实仓位(2026-07-07)
把"想做"变成"在做",中间隔的是一个能自己跑起来的系统
前一天定了方向:做链上合约可用的 14 个高级策略,全部做进去。
这天就是落地——数据采集层、14 个策略引擎、回测引擎、预计算脚本、展示页,以及第一批真实仓位。
14 个策略,分五类策略清单这么落:
类别
策略
A. 资金费率类
1. 费率反转 · 2. 费率趋势共振 · 3. 费率套利
B. 持仓量类
4. OI 背离 · 5. 多空比反转 · 6. 清算磁吸
C. 量价类
7. 盘口不平衡 · 8. 鲸鱼追踪 · 9. 放量突破
D. 技术指标类
10. ADX 多周期 · 11. SuperTrend · 12. RSI 背离+量
E. 宏观情绪类
13. BTC 主导率 · 14. 恐贪逆向
有几条是链上独有的:资金费率、未平仓量、多空比、链上订单簿——数据透明、CEX 拿不到。这也是"链上合约"这个选择真正的价值所在。
从数据到页面,一共六个模块落地的文件是这些:
文件
功能
maincoin_data.py
数 ...
模拟跟单新币 2301 笔亏损 1876 美元,策略转向 BTC 与主流币(2026-07-06)
承认一条路走不通,比修好它更难
新币模拟跟单这条路,我走了很久。
这天不再往里面加策略了,而是把一件早就该写下来的事写下来:经 http://0.0.0.0:8501/ 验证,模拟跟单新币完全不赚钱。 然后转了方向——用策略交易主流币,BTC、ETH、SOL 这些。
先把结论摆出来数据本身没有再辩的余地:
总交易 2301 笔,全部是新币 / meme 币
总亏损 −$1,876
平均每笔 −3.7%
涉及 518 个不同代币,全是 Sol / Bsc / Base 链上的垃圾币
亏钱不稀奇,稀奇的是 518 个代币、2301 笔之后,还是同一个方向的负收益。这说明问题不在某一次判断,而在策略依赖的那个市场本身。
盘一下手上的牌转赛道之前,先看清楚自己有什么。第一轮盘点是这样的:
资源
状态
能干什么
GMGN API Key
✅ 有
DEX 链上交易 SOL/ETH/BSC/Base——不支持 BTC
Helius Key
✅ 有
Solana RPC 节点
CoinGecko API
✅ 有(免费 ...