如何量化筛选T0交易标的

欢迎来到 T0 交易策略专栏。经过一段时间的开发,“看海量化回测系统”已基本搭建完成。接下来的重点将转向策略思路的分享与探讨,而本专栏正是这一新阶段的开篇之作。

在接下来的系列文章中,我将分享从标的筛选、策略开发到回测验证的全流程经验。而这万里长征的第一步,也是最关键的一步,就是——选取一个合适的交易标的

俗话说“选择比努力更重要”。在 T0 交易(日内回转交易)中,选错了标的,再优秀的策略也可能颗粒无收,甚至因为流动性枯竭而面临巨大风险。

很多朋友一提到 T0,想到的就是“高频交易”、“手速快”。其实,对于大多数普通投资者或者非机构量化团队来说,更稳健的方式是网格交易 (Grid Trading)。这种策略不依赖对瞬间行情的判断,而是利用价格的自然波动来赚取差价。

那么,什么样的标的最适合网格交易呢?答案很简单:震荡、活跃、有量

一、 数据源:巧妇难为无米之炊

1. 什么是 T0 标的?

鉴于 A 股市场的 T+1 交易制度,普通股票当天买入后无法卖出。我们所说的 T0 交易通常针对以下两类标的:

  • 制度性 T0:跨境 ETF (QDII)、债券 ETF、黄金 ETF、货币 ETF。这些品种在规则上允许当天买入当天卖出。
  • 底仓 T0:通过持有底仓,变相实现 T0。

本系列目前主要聚焦于制度性 T0 ETF,因为它们无需底仓,资金利用率高,逻辑更纯粹。

2. 如何获取清单?

遗憾的是,MiniQMT 等常见量化接口并没有直接提供“支持 T0 交易”的筛选属性。
虽然同花顺等行情软件提供了这类清单,但网页版本查阅起来并不方便,且不支持批量导出,这给我们的后续量化分析带来了障碍。

数据源地址:同花顺 T0 ETF 列表页面(http://data.10jqka.com.cn/funds/etf/)

为了解决这个问题,我编写了一个代码,每天会跟随同花顺数据源更新。大家可以直接下载我已经整理好的 CSV 格式清单,这将极大地便利后续的本地分析工作。

下载方式见文末

3. 初步过滤

在拿到的清单中,通常包含以下类别:

  • 货币型:波动率极低,几乎是一条直线,剔除
  • 债券型:波动较小,除非带杠杆,否则 T0 空间有限,慎选
  • 股票型/QDII:包括纳指、恒生、日经等跨境 ETF。波动大,流动性好,是我们的重点目标

二、 核心筛选逻辑:寻找完美的“震荡器”

既然有了候选池,我们如何从中挑出最适合 T0 的品种?
这让我想起来我以前在做信号处理分析时看过的一篇论文:

《An attention-based stacked BiLSTM framework for predicting》

这篇论文原本是为了寻找“容易预测”的信号。在信号处理和机器学习领域,如果一个信号单调性好(一直涨或一直跌)、趋势性强(方向明确)、可预测性高(历史能预测未来),那么它就是易于预测的“好信号”。

但是!

对于 网格/震荡型 T0 策略,我们的需求恰恰相反!我们最怕的就是单边暴涨(容易卖飞筹码)或单边暴跌(容易被套牢)。我们需要的是高频往复震荡——跌下去能涨回来,涨上去能跌下来。

因此,我将论文中的三个核心指标进行了逆向应用,这是一种非常有意思的思维转换:

1. Monotonicity (单调性)

  • 概念通俗化:想象你在爬山。如果你一直往上走,不会下坡,单调性就是 1。如果你走两步退一步,单调性就低。
  • 计算公式M = \frac{|\text{上涨次数} – \text{下跌次数}|}{\text{总变化次数}}
  • T0 筛选逻辑越小越好
    • 如果 M 接近 1,说明价格一直在涨或一直在跌(单边市),T0 很难做差价。
    • 如果 M 接近 0,说明上涨和下跌次数相当,价格呈现完美的锯齿状震荡,这正是 T0 梦寐以求的形态。

2. Trendability (趋势性)

  • 概念通俗化:这是衡量价格长期“漂移”程度的指标。简单来说,就是看价格是倾向于沿着一个方向(上涨或下跌)持续运动,还是在一个区间内来回波动。
  • 计算公式:基于线性回归斜率的归一化绝对值。
  • T0 筛选逻辑越小越好
    • 我们希望价格在一个箱体内运行(斜率接近 0),而不是长期向上或向下漂移。这样网格策略最安全,不容易破网。

3. Prognosability (可预测性)

  • 概念通俗化:如果今天的涨跌跟昨天的涨跌关系很大(惯性),那叫可预测性强。如果今天的涨跌完全随机,跟昨天没关系,那叫随机游走。
  • 计算公式:收益率的一阶自相关系数绝对值。
  • T0 筛选逻辑越小越好(或适中)
    • 高自相关性意味着“惯性”大,容易形成趋势。而我们希望价格随机游走,涨多了就跌,跌多了就涨(均值回归),而不是依靠惯性一直冲。

总结:论文寻找的是“确定性”,而我们寻找的是“稳定的波动性”。

三、 进阶指标:流动性与风控

仅有好的形态是不够的。在实际策略运行中,我们经常会遇到“看似完美”的标的,一买进去却发现根本卖不掉,或者手续费把利润吃光。
为了避免这些流动性陷阱,我在模型中特意增加了以下两个风控维度的指标:

4. Intraday Volatility (日内波动率)

  • 概念通俗化:就是一天之内价格上下跳动的幅度。
  • 计算:日内 (最高价-最低价)/开盘价 的百分比均值。
  • 评分逻辑:寻找“甜点区 (0.5% – 3.0%)”。
    • < 0.5%:波动太小(如银行股、短债),就像心电图拉直线,扣除手续费后无利可图。
    • > 3.0%:波动过大,风险不可控,容易单次亏损过大。
    • 0.5%~3.0%:最佳交易区间,既有肉吃,又不容易崩盘。

5. Liquidity Score (流动性得分)

  • 概念通俗化:想买买不到,想卖卖不掉,这就是流动性差。
  • 维度 A:日均成交量。必须足够大(如 >1000手),保证进出滑点低。
  • 维度 B:成交量变异系数 (CV)越小越好
    • CV 小意味着成交量很稳定,全天都有人交易。
    • CV 大意味着成交量忽大忽小(脉冲式),可能某分钟突然放量,然后半小时没人玩,这种标的非常危险。

四、 Python 实践与结果展示

为了验证上述理论,我编写了一套完整的 Python 筛选框架。这套框架不仅自动化了数据下载和指标计算,还能够自动生成可视化的对比报表。

1. 核心代码逻辑

为了方便大家实践,我整理了如下的核心代码结构,获取方式见文末:

T0_ETF筛选研究/
├── download_t0_etf_1min_data.py      # [第一步] 数据下载脚本
├── t0_etf_daily_metrics_screening.py # [第二步] 核心筛选算法脚本
├── visualize_t0_results.py           # [第三步] 结果可视化分析脚本
├── T0_ETF_List.csv                   # 基础 ETF 代码清单
└── README.md                         # 简要说明
  • download_t0_etf_1min_data.py: 利用 xtquant 接口,下载最近一年的 1 分钟级高频数据。
  • t0_etf_daily_metrics_screening.py: 这是筛选的核心引擎。它会遍历每一个 ETF,计算上述 5 大指标,并进行加权打分(Weighting)。

2. 加权模型设计

目前的评分模型如下(总分 100,分数越低越好):

  • 趋势性 (Trend): 高权重 (最重要,拒绝单边)
  • 单调性 (Mono): 中权重
  • 可预测性 (Prog): 中权重
  • 波动率 (Vol): 低权重 (惩罚过低或过高的波动)
  • 流动性 (Liq): 低权重 (一票否决差流动性)

3. 筛选结果分析

运行代码后,我们得到了针对 T0 策略的 ETF 优选榜单。让我们来对比一下“好学生”和“差学生”的区别。

免责声明与说明
本文提供的主要是筛选的思路和量化框架,而非具体的投资建议。
为了避免“荐股”嫌疑,同时也为了鼓励大家亲自动手实践,我在提供的源码中特意加入了微小的随机扰动因子。这意味着,大家每次运行代码筛选出的排名可能会有差别,但整体的优选逻辑是不变的。
建议大家在使用过程中,根据自己的实际需求,手动调整具体的筛选阈值和权重,打造属于自己的专属股票池。

波动率分布:寻找”甜点区”

波动率是T0交易能否盈利的关键。让我们看看前后20名在波动率上的差异:

日内波动率分布

图表解读

  1. 绿色区域(0.5%-3.0%):这是我们定义的”甜点区”,是最适合T0的波动范围。
  2. 前20名(绿色柱):几乎全部落在甜点区内,平均波动率 1.82%,完美!
  3. 后20名(红色柱):平均波动率仅 0.05%,几乎是一条直线,扣除手续费后根本无利可图。
  4. 波动率差异:36倍!这就是”死水”和”活水”的区别。

实战启示

  • 波动率 < 0.5%:连手续费都覆盖不了,建议放弃
  • 波动率 0.5%-3.0%:理想交易区间
  • 波动率 > 3.0%:风险过大,需要更强的风控

ETF类别分布:谁是T0主力军?

不同类别的ETF表现如何?让我们看看类别分布的秘密:

ETF类别分布

图表解读

左上角(饼图)- 全市场概况

  • 行业主题ETF(20.4%)和 QDII海外ETF(20.4%)占比最大
  • 其他类(23.3%)包含各种细分品种
  • 货币基金(14.5%)虽然数量多,但不适合T0

右上角(前20名类别)- 优等生画像

  • QDII海外 遥遥领先(9个),占45%!
  • 商品型(5个)表现突出,黄金、原油等波动适中
  • Smart Beta(4个)策略型ETF也有不错表现
  • 几乎没有货币基金

左下角(后20名类别)- 差等生画像

  • 货币基金 占据压倒性多数(15个),占75%!
  • 这些标的波动率极低(0.002%-0.05%),是典型的”心电图拉直线”

右下角(对比图)

  • 前20名:QDII + 商品 + Smart Beta = 主力
  • 后20名:货币基金 = 绝对主力
  • 结论:避开货币基金,重点关注QDII和商品型ETF!

Top 5 标的(适合 T0)

这些标的通常呈现出极高的震荡特性稳定的流动性

Top 1 ETF 连续分钟线图

图表解读:上图是排名第一的标的。请注意看它的价格走势(绿色线)。

  1. 频繁穿越均线:价格没有一直停留在上方或下方,而是频繁回归。
  2. 没有长尾风险:没有出现突然的 90 度直上直下。
  3. 成交量均匀:下方的成交量柱状图(红色区域)非常连贯,没有断层。
    这种“心电图”一样的走势,是网格策略的最爱。每一次上下波动,都是一次低买高卖的获利机会。

Bottom 5 标的(不适合 T0)

这些标的通常表现为极度低波(死水)或者极端单边(大趋势)

图表解读:上图是排名倒数的标的。

  1. 心电图拉直线:可以看到价格波动极小,几乎是一条直线。
  2. 单边漂移:或者呈现出长时间的单边下跌,如果在这种标的上跑网格,很容易出现“卖飞后买不回来”或者“一路补仓补到死”的惨状。

下一步计划

现在我们已经手握一份科学的“白名单”。下一篇文章,我将基于这些精选标的,讲解如何构建一个自适应网格交易策略 (Adaptive Grid Trading),并进行回测验证。


福利时刻:加入我的量化圈子

如果你对本文提到的 完整 T0 ETF 清单Python 筛选源码 感兴趣,或者在运行代码时遇到问题,欢迎加入我的量化圈子

特别福利
对于还没有开通 MiniQMT 的朋友,通过我的专属推荐渠道免费开通还将获赠一年的量化圈子会员
如果对此感兴趣,请关注公众号“看海的城堡”,在公众号页面下方点击相应标签获取开户方式,开通后联系作者即可加入。

点击此处链接,加入我的量化圈子,开启你的量化研究之路

显示验证码
没有账号?注册  忘记密码?

风险提示

投资有风险,开户需谨慎。本系统仅为投资者提供量化交易相关的数据处理与分析工具,不构成任何投资建议。 请您在审慎思考后作出选择。特别声明:本系统对您与券商之间的交易、合作不承担任何法律责任。 市场有风险,投资需谨慎。

© 2024 看海量化交易系统 版权所有

官网:www.khsci.com/khQuant