信号过滤与风控:虚假信号识别与仓位管理

做跨市场套利,最怕什么?

不是行情判断错了,而是信号出来了,你冲进去,结果发现是假信号。我早年吃过这个亏,有一次在股指期货和ETF之间做套利,系统哐哐哐出了三个信号,我全仓杀入,结果呢?滑点吃掉了我所有利润,还倒亏。从那以后,我就在信号过滤和风控上下了狠功夫。

这一章,咱们就聊聊怎么把那些「看起来很美」的假信号筛掉,以及怎么管住自己的手和仓位。

虚假信号的三大元凶

虚假信号不是凭空产生的。我总结下来,主要有三个来源:

  • 滑点:你看到的价差,和你实际成交的价差,不是一回事。尤其在流动性差的市场,滑点能让你怀疑人生。
  • 网络延迟:你的数据比别人晚到100毫秒,等你看到信号,别人已经吃完了。你进去就是接盘的。
  • 数据噪声:市场报价本身就有抖动,尤其是高频数据,一秒钟跳好几次,很多信号其实是随机波动。

怎么识别?我个人的习惯是,先做一层「信号可信度打分」。比如:

信号来源 滑点风险 延迟风险 可信度
同一交易所内跨品种
跨交易所同品种
跨市场跨品种

说白了,信号可信度越低,你的过滤就要越严格。

最小交易量过滤:别为了几块钱折腾

我见过有人设置套利策略,价差只要超过0.01个点就开仓。结果一天交易几百次,手续费和滑点加起来比利润还多。

所以,我建议加一个最小交易量过滤。什么意思?就是信号出来了,你先算一笔账:

def should_trade(signal, min_profit=0.02):
    # 预估滑点成本
    slippage_cost = signal.expected_slippage * 2  # 开仓+平仓
    # 手续费
    commission = signal.commission * 2
    # 总成本
    total_cost = slippage_cost + commission
    # 净收益
    net_profit = signal.expected_profit - total_cost
    
    if net_profit < min_profit:
        return False  # 不划算,放弃
    return True

嗯,这里要注意:min_profit 不是固定值。流动性好的市场可以设小一点,流动性差的市场要设大一点。我在做商品期货跨期套利时,这个值通常设在0.05%左右。

最大回撤控制:别让一次亏损毁掉所有

做套利的人容易有个错觉,觉得套利风险低,所以仓位放得很大。其实不然。跨市场套利最大的风险不是方向做反,而是价差长时间不回归

我曾经遇到过一次,两个品种的价差偏离了正常范围,我按历史规律开仓了。结果呢?价差继续扩大,连续三天都没回来。那三天我账面浮亏了20%。虽然最后回来了,但那种煎熬,我不想再经历第二次。

所以,我现在的策略是:

  • 单笔最大亏损:不超过总资金的1%
  • 单日最大回撤:达到3%就停止交易,当天不再开新仓
  • 连续亏损次数:连续3次亏损后,暂停交易,检查策略

这些参数怎么设?我建议用历史数据回测一下,看看最差情况下的回撤是多少,然后打个折扣。

仓位管理:别一把梭哈

仓位管理说白了就是:信号来了,你下多少手?

我见过两种极端:一种是信号一来就满仓干,另一种是信号来了只敢下1手。都不对。

我个人习惯用凯利公式的变体来做仓位管理。但凯利公式有个问题,它假设你知道胜率和赔率。实际交易中,这两个参数是动态变化的。

所以,我做了个简化版:

def position_size(signal, account_value, risk_per_trade=0.01):
    # 基于信号强度分配仓位
    signal_strength = signal.z_score  # 用z-score衡量偏离程度
    base_size = account_value * risk_per_trade
    
    # 信号越强,仓位越大,但有上限
    if signal_strength > 3.0:
        multiplier = 1.0
    elif signal_strength > 2.0:
        multiplier = 0.7
    elif signal_strength > 1.5:
        multiplier = 0.4
    else:
        multiplier = 0.2
    
    return base_size * multiplier

你想想看,这样做的好处是什么?信号弱的时候你只试仓,信号强的时候才加码。既不会错过机会,也不会一把亏光。

核心原则:仓位管理不是让你赚更多,而是让你活更久。

一个完整的过滤流程

把这些东西串起来,我画了个流程图,你看看就明白了:

信号过滤与风控流程 原始信号 滑点与延迟检查 预估滑点 > 阈值?延迟 > 阈值? 最小交易量过滤 净收益 > 最小利润? 回撤检查 当日回撤 < 3%?连续亏损 < 3次? 仓位计算 基于信号强度分配仓位 执行交易 拒绝 等待下一信号 拒绝 拒绝

小技巧:我建议把过滤逻辑做成可配置的。不同市场、不同品种,参数不一样。比如做股指期货套利,滑点容忍度可以设小一点;做商品期货跨品种套利,就要设大一点。

注意:过滤不是越严格越好。过滤太严,你会错过很多真实信号。我见过有人把过滤设得特别严,结果一年下来没做几笔交易,策略直接废了。找到那个平衡点,才是关键。

好了,这一章的内容就这些。信号过滤和风控,说白了就是用规则管住自己的贪婪和恐惧。你把这些规则写进代码里,让机器去执行,比你自己拍脑袋强得多。


公众号:蓝海资料掘金营,微信deep3321