退出规则的高级考量
“退出规则”的含义及高级考量的重要性
退出规则是预先定义的条件,用于确定何时以及如何平仓(或以其他方式终止头寸)。在高级语境下,目标不仅是选择一个概念性规则(例如,“在达到某个水平时平仓”),而是要明确指定输入和操作逻辑,使其他人也能应用相同的规则并复现推理过程。
高级考量之所以重要,是因为实际的退出结果很少仅由规则的措辞决定。它还取决于在回测假设与实盘执行之间可能变化的因素:交易成本、订单执行质量、市场跳空,以及用于计算触发水平的数据/提供商假设。由于这些因素各不相同,退出规则的逻辑应以清晰的方式编写,以便将稳定的机制与可变条件区分开来。
机制:稳定的规则机制 vs. 可变条件
分析退出规则的一种实用方法是将其分为(1)规则机制和(2)可变条件。
1) 规则机制(稳定部分)
规则机制定义了结束头寸的事件。常见的机制包括:
- 价格触发退出:当价格穿过某个阈值时平仓(例如,达到“止盈”水平或“止损”水平)。
- 时间触发退出:无论价格如何,在时间限制后平仓。
- 状态触发退出:当某个头寸状态发生变化时平仓(例如,订单失效或更高层级的条件不再成立)。
- 管理性退出:平掉部分头寸、移动保护性边界,或从一种平仓条件切换到另一种。
为了使这些机制可验证,高级规则通常会明确指定:
- 触发定义:“穿过”意味着什么(触及 vs. 严格不等式),以及相关价格是买价、卖价、最新价还是中间价。
- 订单类型假设:规则是否预期市价执行、限价执行或止损类行为。
- 评估时机:规则何时检查条件(每个报价、K线收盘时,或按计划间隔)。
2) 可变执行条件(可能不同的部分)
即使机制写得非常精确,如果执行条件不同,实际结果也可能不同。可变条件的例子包括:
- 点差和成本结构:成交价格之间的距离,以及佣金/掉期的影响。
- 滑点和流动性:请求价格与实际成交价格之间的差异。
- 订单成交限制:部分成交、最小规模和保证金限制。
- 数据源差异:历史价格序列可能代表与实盘交易不同的“有效”价格。
高级退出规则规范应为任何计算或示例明确说明这些假设。如果没有这些假设,两个人可能应用“相同”的退出规则,但仍会得出不同的结果。
基于证据和实例的思考:破坏简单退出的边缘情况
由于实际执行过程复杂,高级退出规则需要预见到边缘情况。关键是测试或推理规则解释变得模糊的情况。
边缘情况1:触发模糊性(触及 vs. 穿过,以及使用哪个价格)
假设一条规则说“当价格达到X时平仓”。其解释可能有所不同:
- “达到”是否包括触及(等于X)或仅指穿过(从低于到高于)?
- 使用哪个价格进行比较:买价、卖价、最新价还是中间价?
如果未定义这些,相同的阈值可能因评估方法不同而导致更早或更晚的退出。
边缘情况2:类跳空行为和订单未成交
许多退出规则隐含地假设市场将平稳地穿过阈值。实际上,市场可能在两次检查之间从一个区域跳到另一个区域。
- 如果规则假设止损类保护边界,但市场跳过了该边界,成交价格可能比边界更差。
- 如果规则使用限价订单退出,而价格远离,订单可能无法成交。
这是一个实质性限制:根据订单类型和价格变动的速度/结构,退出规则可能无法按预期执行。
边缘情况3:部分退出及规则组件间的不一致性
如果规则平掉部分头寸并随后更新边界,就会出现以下边缘情况:
- 剩余数量如何跟踪,
- 更新后的边界是否在部分成交后立即生效,
- 下一次评估是使用成交后的平均价格还是原始入场参考价。
如果实现不一致,可能会导致数量、边界或重复触发不匹配。
边缘情况4:基于时间的退出与价格触发的交互
组合规则(时间退出与价格保护)可能产生冲突:
- 如果时间到期与价格触发同时发生,哪个规则优先?
- 是否在该时间边界仅评估一次,还是在区间内持续评估?
高级实现会定义打破平局的规则:例如,评估顺序、优先级,或是否在决定前检查两个条件。
局限性和风险:可能出错的情况及如何承认
退出规则仅减少关于终止逻辑的不确定性。它们并不能消除关于执行的不确定性。
实质性局限
- 执行不确定性:滑点和点差差异意味着实际结果可能偏离预期。
- 实施风险:纸面上正确的规则可能因数据、时机或订单处理差异而被错误应用。
- 模型风险:历史关系不能确立未来结果,回测假设(尤其是关于成交的假设)可能与现实不符。
- 提供商/数据依赖性:触发评估取决于所选的价格源及其如何表示买价/卖价/最新价。
需要警惕的失败模式
- 未指定的假设:如果规则未定义检查哪个价格,比较将无法复现。
- 未成交的订单:限价类退出可能无法成交;保护性边界可能以比预期更差的价格执行。
- 模糊的规则优先级:多个退出条件之间的冲突可能导致不一致的结果。
验证和后续问题:独立检查退出规则的事实
要独立验证关于退出规则的主张,应关注可复现和可检查的要素。
需要验证的内容
- 规则规范的完整性:每个触发条件是否都定义了评估的价格类型和评估时机?
- 假设透明度:任何计算中是否都明确说明了成本、点差和滑点假设?
- 订单处理的现实性:实现是否以符合预期订单类型的方式模拟成交行为(包括部分成交和未成交)?
- 冲突解决:如果多个条件可能触发,规则是否说明了优先级和打破平局的方法?
有用的后续问题
- 触发条件使用哪个价格定义(买价/卖价/最新价/中间价)?
- 假设的评估节奏是什么(逐笔报价、K线收盘,或计划检查)?
- 如果满足退出条件但订单无法成交,会发生什么?