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 vs 无限 horizon 对比 有限 horizon 阈值随时间下降 t=0 t=T 无限 horizon 阈值恒定 t=0 t→∞ 决策阈值随时间变化 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