4. 有限 horizon 与无限 horizon:不同时间尺度下的最优停止策略
做量化交易这些年,我越来越觉得时间尺度是个被低估的变量。很多人研究最优停止,上来就套公式,结果实盘一跑就崩。为什么?因为没搞清楚你的交易是在有限时间内结束,还是理论上可以无限等下去。
说白了,有限 horizon 和无限 horizon 对应的是两种完全不同的决策逻辑。你想想看,一个期权到期前最后一分钟,和一个永续合约的持仓,能一样吗?
4.1 有限 horizon:倒计时下的最优停止
有限 horizon 的核心特征是——你知道什么时候结束。比如期权到期日、财报发布前、或者你的策略只在某个时间段内有效。
这种情况下,最优停止策略会随着时间推移而变化。我习惯用动态规划来解这类问题,因为越接近终点,你的选择空间越小,决策阈值也会跟着变。
核心结论:有限 horizon 下,最优停止阈值是时间的函数。越靠近终点,阈值越低(或越高,取决于你是买还是卖)。
举个例子,假设你有一个策略,需要在 10 个交易日内卖出某个资产。每天你观察价格,决定是否卖出。如果你一直没卖,第 10 天必须强制平仓。
这个问题可以用逆向归纳法求解。我直接上代码:
import numpy as np
def finite_horizon_optimal_stop(T, prices, r=0.05):
"""
T: 总天数
prices: 每日价格序列(模拟或真实)
r: 无风险利率
"""
n = len(prices)
# 价值函数 V[t] 表示在时间 t 时,最优策略下的期望收益
V = np.zeros(T+1)
# 阈值数组
threshold = np.zeros(T)
# 最后一天:必须卖出
V[T] = prices[-1]
# 逆向递推
for t in range(T-1, -1, -1):
# 当前价格
current_price = prices[t]
# 继续持有的期望价值(简化版:假设价格随机游走)
hold_value = np.exp(-r) * V[t+1]
# 最优决策:比较立即卖出 vs 继续持有
V[t] = max(current_price, hold_value)
# 阈值:当价格高于这个值就卖
threshold[t] = hold_value
return V, threshold
# 模拟价格
np.random.seed(42)
prices = 100 + np.cumsum(np.random.randn(10))
V, thresh = finite_horizon_optimal_stop(10, prices)
print("每日阈值:", np.round(thresh, 2))
这段代码虽然简单,但抓住了有限 horizon 的精髓——阈值随时间衰减。我在实盘里遇到过类似场景:一个事件驱动策略,在财报发布前 5 天开始建仓,每天根据最新信息调整止盈点。结果发现,越靠近发布日,止盈点越低,因为时间价值在缩水。
避坑指南:我曾经在期权策略里忽略了这个衰减效应,硬套固定阈值。结果最后两天价格波动大,该止盈没止盈,利润回吐了大半。后来我改成动态阈值,情况好多了。
4.2 无限 horizon:永远等下去?
无限 horizon 听起来很爽——你可以一直等,直到出现最理想的价格。但现实是,你等不起。资金成本、机会成本、还有你的耐心,都是隐形成本。
无限 horizon 的最优停止,通常用最优停止规则来刻画。最经典的例子是「秘书问题」的变种——你要从无限多个候选人中选一个,但每次面试都要花钱。
在交易里,无限 horizon 对应的是永续合约、或者没有明确结束日期的趋势跟踪策略。这时候,最优停止策略往往是一个固定阈值,而不是随时间变化的函数。
核心结论:无限 horizon 下,最优停止阈值是常数。这个常数由你的风险偏好、资金成本和市场波动率共同决定。
为什么会这样?因为时间无限,你不需要着急。但注意,这里的「无限」只是理论上的。实际上,你的资金是有限的,市场结构也会变。所以无限 horizon 模型更多是提供一个基准,而不是直接拿来用。
4.3 有限 vs 无限:一张图说清楚
我画了一张对比图,帮你快速理解两者的区别:
这张图很直观。左边是有限 horizon,阈值像滑梯一样往下走;右边是无限 horizon,阈值是一条水平线。你想想看,如果你的策略是追涨杀跌,用有限 horizon 的模型去套,阈值不断下降,你可能会在错误的时间点频繁交易。
4.4 实际交易中怎么选?
我个人经验是:先判断你的交易有没有「死线」。有死线,就用有限 horizon;没有死线,也别直接套无限 horizon,而是加一个「虚拟死线」。
比如,我做高频做市的时候,每个订单的生命周期其实很短,几秒到几分钟。这就是典型的有限 horizon。而做趋势跟踪时,持仓可能几天到几周,我会人为设定一个最大持仓时间,比如 20 个交易日,然后按有限 horizon 来算。
注意:无限 horizon 模型有个隐含假设——你的资金是无限的。这在实盘里不成立。所以即使理论上可以无限等,我也建议你设一个时间上限,否则可能陷入「等一个永远不会来的价格」的陷阱。
下面这个表格总结了两种场景的关键区别:
| 维度 | 有限 horizon | 无限 horizon |
|---|---|---|
| 时间范围 | 已知终点 T | 无明确终点 |
| 阈值特性 | 随时间变化(通常递减) | 常数 |
| 求解方法 | 动态规划 / 逆向归纳 | 最优停止规则 / 阈值策略 |
| 典型场景 | 期权到期、事件驱动、日内交易 | 永续合约、趋势跟踪、长期投资 |
| 风险点 | 时间压力导致过早或过晚出场 | 无限等待导致资金效率低下 |
4.5 一个实战案例:从有限到无限的过渡
我记得有一次做加密货币的网格交易策略。网格本身是无限 horizon 的——只要市场在震荡,你就一直吃差价。但问题来了,如果市场突然单边上涨,网格会卖飞。
我的解决方案是:给网格加一个「有限 horizon 的出场触发器」。具体来说,当价格突破某个阈值时,启动一个倒计时机制。如果在 3 小时内价格没有回到网格区间,就清仓离场。这样既保留了网格的长期优势,又避免了单边行情下的无限亏损。
嗯,这里要注意:有限和无限不是非此即彼的。你可以把它们组合起来用。比如,大部分时间用无限 horizon 的固定阈值,但在极端行情下切换到有限 horizon 的动态阈值。
我的习惯:在策略回测时,我会同时跑有限和无限两种版本。如果两者差异不大,说明时间因素不重要,用简单的固定阈值就行。如果差异很大,那就要仔细分析时间衰减的影响了。
最后说一句,别被数学公式吓到。有限 horizon 和无限 horizon 的区别,说白了就是「你知不知道什么时候结束」。知道,就动态调整;不知道,就固定一个值。但别忘了,现实世界很少有真正的无限——你的资金、你的耐心、你的策略有效期,都是隐形的「死线」。
公众号:蓝海资料掘金营,微信deep3321