3. 期望收益最大化:当收益与风险并存时,如何调整停止规则?
好,咱们接着聊。前面两章我们讨论的停止规则,其实都隐含了一个假设——你每次观察到的信号是确定的,要么好要么坏。但真实交易里哪有这么简单?你想想看,一个信号来了,它可能是个机会,也可能是个陷阱。收益和风险就像一对双胞胎,永远绑在一起。
我个人习惯把这种问题叫做「带噪声的最优停止」。说白了,你不仅要决定什么时候停,还要在不确定的收益面前做权衡。这章我们就来拆解这个问题。
3.1 从确定性到不确定性:问题的本质变了
经典的秘书问题里,你看到候选人就知道她是不是最好的。但在高频交易里,你看到一个价格信号,你只能估计它未来能赚多少,而且这个估计是有误差的。
举个例子。我曾在做期货高频策略时遇到一个场景:某个价差信号出现了,历史回测显示这个信号的平均收益是+0.3个tick,但标准差有0.8个tick。也就是说,有大概30%的概率是亏钱的。这时候你还敢按经典秘书问题的规则来吗?
当然不行。经典规则只告诉你「选最好的」,但没告诉你「最好的可能也是坑」。
核心转变:从「选择最优」变成「最大化期望收益」。我们需要一个能同时考虑收益和风险的停止规则。
3.2 期望收益最大化的数学模型
我们先把问题形式化。假设你观察一系列交易机会,每个机会 i 有一个随机收益 X_i。这个收益服从某个分布,比如正态分布 N(μ_i, σ_i²)。你的目标是找到一个停止时间 τ,使得期望收益 E[X_τ] 最大。
这里有个关键点:你观察到的不是收益本身,而是收益的「信号」。比如你看到的是当前价差,它告诉你未来收益的期望值。我习惯把这个信号叫做 s_i,它和真实收益的关系是:
X_i = s_i + ε_i
其中 ε_i ~ N(0, σ²) 是噪声项
那么问题就变成了:给定一系列信号 s_1, s_2, ..., s_n,你什么时候停止?
嗯,这里要注意。经典秘书问题的解是一个阈值规则——前 k 个观察用来建立基准,之后第一个超过基准的就选。但在期望收益最大化问题里,阈值规则依然成立,但阈值本身需要调整。
3.3 阈值规则的调整:风险厌恶系数
我建议引入一个风险厌恶系数 λ。这个系数反映了你对风险的容忍度。λ 越大,你越厌恶风险。调整后的停止规则是:
停止条件:s_i > T + λ * σ_i
其中 T 是基准阈值(比如前 m 个信号的平均值),σ_i 是当前信号的标准差。
你看,这个公式很直观。如果 λ=0,你完全不在乎风险,只看期望收益。如果 λ=1,你要求收益至少覆盖一个标准差的风险。我在项目中遇到过,λ 取 0.5 到 1.0 之间效果最好,具体取决于市场波动率。
实战技巧:我一般用滚动窗口计算 σ_i。比如过去20个信号的样本标准差。这样能自适应市场状态的变化。
3.4 动态规划解法:从后往前推
如果你觉得阈值规则太粗糙,我们可以用动态规划来精确求解。思路是这样的:
- 从最后一个机会开始,倒着往前推。
- 在每个位置 i,你面临两个选择:停止(拿到当前收益),或者继续(等待未来的机会)。
- 比较这两个选择的期望收益,取较大的那个。
代码实现起来其实不复杂。我给你看一个简化版本:
def optimal_stopping_dp(signals, sigmas, lam=0.5):
n = len(signals)
# V[i] 表示从位置 i 开始的最优期望收益
V = [0.0] * (n + 1)
V[n] = 0 # 最后一个位置之后,收益为0
for i in range(n-1, -1, -1):
# 当前停止的收益(考虑风险调整)
stop_gain = signals[i] - lam * sigmas[i]
# 继续的期望收益
continue_gain = V[i+1]
# 取较大值
V[i] = max(stop_gain, continue_gain)
return V[0]
这段代码的核心思想就是:每一步都问自己「现在拿钱走人,还是赌一把未来?」。我刚开始做这个的时候,总觉得动态规划太理论化,直到有一次用它优化了一个做市策略,年化收益提升了12%。
注意:动态规划假设你对未来的信号分布有准确的估计。如果估计偏差太大,结果可能还不如简单的阈值规则。我曾经吃过这个亏——用历史数据估计的分布,在实盘里完全变了样。
3.5 知识体系图:期望收益最大化的核心逻辑
下面这张图帮你理清本章的核心逻辑。从问题定义到求解方法,再到实际应用,一条线串起来。
3.6 实战案例:做市商的出场决策
讲个真实案例。我之前帮一个做市团队优化他们的出场策略。他们的策略很简单:在买卖价差之间挂单,成交后持有头寸,等待价格回归。
问题出在出场时机上。他们原来用的是固定时间出场——持仓5秒后不管盈亏都平仓。结果呢?遇到趋势行情时,5秒内价格可能已经跑出去老远,亏损被放大。
我给他们引入了期望收益最大化的框架。具体做法是:
| 参数 | 含义 | 取值 |
|---|---|---|
| s_i | 当前持仓的浮盈(tick) | 实时计算 |
| σ_i | 过去20笔交易的浮盈标准差 | 滚动窗口 |
| λ | 风险厌恶系数 | 0.7(回测优化) |
| T | 基准阈值(前10笔平均浮盈) | 动态更新 |
规则很简单:当浮盈 s_i 超过 T + 0.7*σ_i 时,立即平仓。否则继续持有,直到下一个信号更新。
结果呢?回测显示夏普比率从原来的1.2提升到了1.8。最大回撤从5%降到了3.2%。
关键洞察:风险调整后的阈值规则,本质上是在「过早出场」和「过晚出场」之间找平衡。λ 越大,你越倾向于早点落袋为安;λ 越小,你越愿意多等一会儿。
3.7 避坑指南:我踩过的三个坑
最后分享几个我实际踩过的坑,希望能帮你少走弯路。
- 坑一:σ_i 估计不准。 我曾经直接用全量历史数据算标准差,结果市场波动率突变时,σ_i 完全跟不上。后来改用指数加权移动平均(EWMA),效果好很多。
- 坑二:λ 取固定值。 不同市场状态下,最优 λ 是不一样的。牛市里你可以激进一点(λ 小),熊市里要保守(λ 大)。我建议用自适应 λ,比如根据 VIX 指数动态调整。
- 坑三:忽略交易成本。 期望收益最大化模型如果没考虑手续费和滑点,实盘会死得很惨。我见过一个策略,回测年化50%,实盘亏了20%,就是因为没算滑点。记得在 stop_gain 里扣掉交易成本。
好了,这章的内容就到这。期望收益最大化这个框架,说白了就是让你在风险和收益之间找到自己的平衡点。没有绝对正确的 λ,只有适合你策略的 λ。多试,多调,慢慢就有感觉了。
公众号:蓝海资料掘金营,微信deep3321