在做 BTC 合约策略研究时,一个很自然的问题是:
如果最终准备在 OKX 上交易,为什么不从信号到执行全部使用 OKX 数据?
这个问题看起来很合理。
但经过几轮研究后,我最终没有走向“单一交易所全链路”,而是选择把系统拆成两个职责:
- Binance:负责信号研究与信号生成
- OKX:负责真实下单、止损、动态保护和最终盈亏
这并不是因为 Binance “更准”,也不是因为 OKX “不适合做研究”。
更准确地说,这是一次关于研究稳定性与执行真实性如何分工的选择。
1. 数据源一致,不等于研究质量更高
最开始,一个很强的直觉是:
既然最终在 OKX 上交易,那就应该直接用 OKX 数据重新研究整个策略。
我确实沿这个方向做过多轮尝试。
结果并不是完全无效。
一些 OKX 原生组合也能在历史中得到不错的结果,甚至能筛出多个年度表现都为正的版本。
问题在于:
- 参数延续性不够理想;
- 月度、周度、日度的稳定性并没有同步增强;
- 一些改善集中在特定历史阶段;
- 继续调参以后,研究越来越像是在适配已经发生过的历史。
这时候我开始意识到:
“数据源一致”本身不是研究目标。
真正的目标应该是:
让信号层尽量保持稳定,让执行层尽量接近真实。
2. Signal Layer 和 Execution Layer 是两个不同问题
一个完整交易系统至少包含两个不同问题。
Signal Layer
负责回答:
现在有没有一个值得参与的方向机会?
它关注的是:
- 市场结构;
- 趋势与反转;
- 波动;
- 成交行为;
- 多种形态之间的组合关系。
Execution Layer
负责回答:
如果要交易,实际应该如何在目标交易所完成?
它关注的是:
- 当前可成交价格;
- 盘口深度;
- 下单延迟;
- 止损触发;
- 动态保护;
- 滑点;
- 手续费;
- 资金费率;
- 真实仓位和账户状态。
这两层之间有关联,但它们不是同一个研究问题。
如果把它们完全绑定,就容易出现一个情况:
为了适配执行交易所的数据特征,反过来重写本来更稳定的信号结构。
这未必是好事。
3. 为什么保留 Binance 作为信号层?
Binance 的价值,不在于“价格一定比 OKX 更正确”。
它更像一个研究数据源。
对于长期量化研究而言,一个数据源是否好用,通常取决于:
- 历史长度;
- 数据连续性;
- 成交信息完整度;
- volume / taker 等微观信息可用性;
- 时间戳一致性;
- 研究工具成熟度;
- 数据清洗成本。
如果一套信号结构已经在这个环境下经历了多阶段研究,而且在较长时间中保持了相对稳定,那么仅仅为了“交易所一致”就重新搭一套信号体系,未必值得。
更合理的做法是:
保留信号层,再把执行层搬到真正准备交易的市场。
4. 为什么 OKX 必须负责执行层?
因为只要真实交易发生在 OKX,以下问题就只能由 OKX 决定:
- 实际成交价;
- 止损价是否触发;
- 动态保护何时更新;
- 永续合约的 basis / premium;
- 极端行情中的价格路径;
- 资金费率;
- 强平机制;
- 手续费;
- 订单成交质量。
即使 Binance 和 OKX 的 BTC 价格大部分时间非常接近,它们也不是同一个市场。
尤其在:
- 波动突然放大;
- 永续合约偏离现货;
- 盘口快速重定价;
- 止损或动态保护接近触发线
这些时刻,几个基点的差异都可能改变一笔交易的退出路径。
所以:
信号可以跨市场,执行不能脱离实际交易市场。
5. 一个更干净的系统结构
现在我更倾向于把完整系统理解成:
Binance Market Data
→ Signal Engine
→ Execution Gate
→ OKX Order Execution
→ OKX Position Management
→ Account Risk State
这样每一层的职责都比较清楚。
如果以后:
- 信号研究升级,可以尽量只动 Signal Layer;
- OKX API 改变,可以只调整执行层;
- 换到另一个交易所,也可以先重新验证执行层,而不是整套策略推倒重来。
这种分层的价值,不只是代码工程上的整洁。
更重要的是:
它让研究问题彼此隔离。
6. 跨市场架构也不是没有代价
这种结构当然也有新的问题。
最大的一个是:
Signal Market ≠ Execution Market。
这意味着必须额外研究:
- 同一时间边界是否真正对齐;
- Binance 信号出现时,OKX 的即时价格是多少;
- 两边价格路径差异是否会改变退出;
- 同一个信号在两个市场上的风险曲线是否仍然可接受。
因此跨市场系统不能简单做成:
Binance 回测成功 → OKX 直接实盘。
中间还需要:
Target Market Replay
也就是把相同信号放到 OKX 历史价格里重新跑完整的执行路径。
7. 研究和实盘的时序也必须分开
当前信号是在 Binance 5 分钟 K 正式收盘后确定。
实盘流程应该是:
K 线收盘确认
→ 信号生成
→ 立即向 OKX 发单
而不是:
信号生成
→ 再等下一根 5 分钟 K
→ 才交易
研究里使用 OKX 新 K 的开盘价,只是因为历史 OHLC 数据中,它是信号确认之后最接近“即时成交”的可观察代理。
它不是实盘等待逻辑。
这个区别非常重要。
8. 为什么我没有继续硬调 OKX 原生策略?
因为研究的目标不是:
必须找到一个 OKX 原生信号版本。
而是:
找到一个可以长期继续验证的系统结构。
如果某个方向需要越来越多参数,才能维持历史表现,那么即使最后结果很好看,也要问:
这是结构性优势,还是历史适配?
几轮研究以后,我更倾向于接受一个不那么“纯粹”,但研究逻辑更清楚的架构:
稳定的信号源 + 真实的执行市场。
9. 这套结构未来真正需要验证什么?
接下来真正重要的,不是继续修改信号。
而是逐步把执行层补完整:
- 真实 FAK 成交滑点;
- 网络延迟;
- API 延迟;
- 部分成交;
- 盘口深度;
- 资金费率;
- 交易所托管保护单;
- mark / last 等不同触发价格;
- 极端行情中的执行质量。
这些因素才决定:
一个历史上有效的信号,在真实市场里到底还能剩下多少。
最后
这次研究让我越来越明确一个观点:
研究数据源和交易执行市场,不一定必须是同一个。
真正重要的是:
- 信号层是否稳定;
- 执行层是否真实;
- 两者之间是否经过严格的跨市场验证。
如果为了“数据源统一”而牺牲信号稳定性,并不划算。
如果为了“信号方便”而忽略真实执行市场,也同样危险。
所以现在的结构是:
Binance 决策,OKX 执行。
不是为了复杂。
恰恰是为了把两个不同的问题分开研究。
本文仅记录研究过程,不构成投资、交易或财务建议。历史回放不代表未来表现。