3. 时间切片法:将大单按时间均匀拆分

时间切片法,说白了就是把你手里的大单子,切成一小块一小块,然后每隔固定时间扔出去一小块。

比如你手里有10万手要卖,你设定每5秒卖1000手。就这么简单。

我刚开始做量化的时候,觉得这方法太笨了。后来在实盘里吃过亏,才发现——笨办法往往最管用。

3.1 核心逻辑

时间切片法的核心就一句话:用时间换空间

你想想看,大单直接砸下去,盘口瞬间就崩了。但如果你把单子拆成很多份,每份的量不大,市场就能慢慢消化。

我个人的习惯是,在低波动行情里,时间切片法几乎是首选。为什么?因为低波动的时候,市场流动性相对稳定,你按时间均匀拆单,不会引起太大的价格跳动。

适用场景:

  • 市场波动率低(比如日内振幅小于1%)
  • 流动性中等偏上
  • 你不需要急着成交(没有时间压力)

3.2 具体怎么做

假设你总共有30万手要卖出,计划在30分钟内完成。

那很简单:

  • 总时间:30分钟 = 1800秒
  • 总数量:30万手
  • 每秒钟需要卖:300,000 ÷ 1800 ≈ 167手

但实际交易中,你不会每秒钟都去下单。那样太频繁了,反而容易被盯上。

我建议的做法是:

  1. 设定一个时间间隔,比如5秒
  2. 每个间隔内下单量 = 167 × 5 = 835手
  3. 每5秒执行一次,持续30分钟

代码实现也很简单:

class TimeSliceAlgo:
    def __init__(self, total_qty, total_seconds, interval=5):
        self.total_qty = total_qty          # 总数量
        self.total_seconds = total_seconds  # 总时间(秒)
        self.interval = interval            # 时间间隔(秒)
        self.qty_per_slice = total_qty / (total_seconds / interval)
        
    def next_order(self):
        # 返回当前时间片应该下的单量
        return self.qty_per_slice

嗯,这里要注意:qty_per_slice 算出来可能不是整数。我一般会向下取整,然后把余数累积到下一个时间片。这样能保证总数量刚好用完。

3.3 避坑指南

我曾经踩过的坑:

  • 时间间隔太短:比如1秒一次。结果系统压力大,还容易被交易所限流。我建议至少3秒以上。
  • 忽略开盘/收盘:开盘和收盘的波动通常较大。时间切片法在中间时段效果最好。
  • 死板执行:如果盘口突然出现大单,你还按原计划拆单,那就亏了。要学会暂停或调整。

3.4 时间切片法的优缺点

优点 缺点
实现简单,逻辑清晰 对市场变化不敏感
低波动行情下效果稳定 高波动时容易吃亏
不容易被市场察觉 无法利用短期机会
适合大单分批出场 时间成本固定,无法加速

3.5 核心逻辑图

下面这张图展示了时间切片法的完整流程:

时间切片法核心逻辑 大单(30万手) 按时间均匀切片 每5秒切一次,每次835手 小单序列 逐笔执行,低波动下稳定成交 适用条件:低波动行情、流动性稳定、无时间压力

3.6 实战中的调整

理论说完了,聊聊实战。

我做过一个回测:在低波动行情下,时间切片法比直接大单成交的滑点降低了约60%。但前提是——你得选对时间间隔。

我个人经验:

  • 流动性好的股票:间隔可以短一些,3-5秒
  • 流动性一般的股票:间隔拉长到10-15秒
  • 期货或币圈:间隔可以更短,但要注意交易所的限流规则

一个小技巧:

如果你发现某个时间片内,盘口的买一单量突然变大了,可以适当加大这个时间片的单量。说白了就是「趁流动性好的时候多卖点」。但别太贪,加量不超过原计划的50%。

时间切片法虽然简单,但它是所有拆单策略的基础。你把它搞懂了,后面学更复杂的算法(比如VWAP、TWAP)就会轻松很多。

嗯,这一节就到这里。记住:低波动行情下,时间切片法是你最可靠的伙伴。