交易信号生成:基于Z-score的阈值开仓、平仓、止损逻辑设计
信号生成,说白了就是给策略装上一双眼睛。
让它知道什么时候该进场,什么时候该离场。我个人习惯把信号系统拆成三块:开仓、平仓、止损。每一块都有自己的脾气,咱们一个一个聊。
一、Z-score:把价差变成标准分
先说说Z-score这个工具。它其实就是一个标准化公式:
Z = (当前价差 - 价差均值) / 价差标准差
嗯,就这么简单。但你别小看它。我刚开始做价差策略时,直接拿原始价差设阈值,结果被市场来回打脸。后来才明白,价差本身会漂移,不标准化根本没法用。
Z-score的好处在于:
- 它告诉你当前价差偏离均值多少个标准差
- 正数表示价差偏大,负数表示偏小
- 绝对值越大,回归的概率理论上越高
举个例子。假设某品种价差均值是10,标准差是2。当前价差是14,那Z-score就是(14-10)/2=2.0。意味着价差已经偏大了两个标准差,这时候做空价差(卖高买低)的胜率会比较高。
核心思路:Z-score的绝对值越大,价差回归的动力越强。但阈值设多少,这是个艺术活。
二、开仓逻辑:阈值怎么定?
开仓阈值,我一般设±1.5到±2.5之间。为什么是这个范围?
我在项目中遇到过,阈值设太小(比如±1.0),信号太多,手续费吃掉利润。设太大(比如±3.0),信号太少,一年开不了几单。
我的经验是:
- 保守型:±2.0以上开仓,信号少但胜率高
- 激进型:±1.5开仓,信号多但需要更严格的风控
- 动态调整:根据近期市场波动率调整阈值
代码实现其实不复杂:
def generate_signal(z_score, open_threshold=2.0):
if z_score > open_threshold:
return 'short' # 价差偏大,做空
elif z_score < -open_threshold:
return 'long' # 价差偏小,做多
else:
return 'neutral'
你想想看,这个逻辑其实就是在赌价差会回归均值。但市场有时候不按套路出牌,所以平仓和止损必须跟上。
三、平仓逻辑:见好就收
平仓比开仓难。为什么?因为人性贪婪,总想多赚一点。
我常用的平仓方式有两种:
- 阈值平仓:Z-score回归到0附近(比如±0.5)就平仓
- 时间平仓:持仓超过N个周期强制平仓
我个人更推荐第一种。因为价差回归策略的核心就是赚回归的钱,既然已经回归了,就别恋战。
代码示例:
def close_signal(z_score, close_threshold=0.5):
if abs(z_score) < close_threshold:
return True
return False
这里有个坑。我曾经遇到过价差回归到0附近后又迅速偏离,结果平仓早了。后来我加了一个“确认机制”:连续两个周期都在阈值内才平仓。
小技巧:平仓阈值可以设得比开仓阈值更严格。比如开仓用±2.0,平仓用±0.3。这样能吃到大部分回归利润。
四、止损逻辑:活下来最重要
止损,是策略的保险丝。没有止损的策略,就像没有刹车的车。
我常用的止损方式:
| 止损类型 | 触发条件 | 适用场景 |
|---|---|---|
| 固定价差止损 | 价差偏离开仓价X% | 波动稳定的品种 |
| Z-score止损 | Z-score超过±3.0 | 极端行情保护 |
| 时间止损 | 持仓超过N小时 | 防止死扛 |
我个人习惯用Z-score止损。因为开仓是基于Z-score的,止损也用Z-score,逻辑上更统一。
举个例子:开仓时Z-score是2.2,止损设在3.0。如果价差继续扩大,Z-score到了3.0,说明回归逻辑可能失效了,必须走。
def stop_loss(z_score, stop_threshold=3.0):
if abs(z_score) > stop_threshold:
return True
return False
注意:止损不是摆设。我曾经有一次没设止损,结果价差从2.0一直跑到4.5,单笔亏损把之前半年的利润全吐回去了。从那以后,止损成了我的铁律。
五、完整信号流程
把上面三块拼起来,就是一个完整的信号系统:
def trading_signal(z_score):
# 先检查止损
if abs(z_score) > 3.0:
return 'stop_loss'
# 再检查平仓
if abs(z_score) < 0.5:
return 'close'
# 最后检查开仓
if z_score > 2.0:
return 'short_open'
elif z_score < -2.0:
return 'long_open'
return 'hold'
这个流程的顺序很重要。止损优先,平仓次之,开仓最后。为什么?因为保住本金永远是第一位的。
六、知识体系图
下面这张图,把整个信号生成逻辑串起来了:
嗯,这张图把整个流程讲清楚了。从价差输入,到Z-score计算,再到三个判断模块,最后输出交易指令。每一步都环环相扣。
总结一下:开仓靠阈值,平仓靠回归,止损靠纪律。三者缺一不可。我见过太多人只关注开仓信号,忽略了平仓和止损,结果策略跑着跑着就崩了。
好了,这一章就聊到这儿。信号生成这块,说白了就是定规矩。规矩定好了,策略才能稳定运行。