欢迎来到 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名在波动率上的差异:
图表解读:
- 绿色区域(0.5%-3.0%):这是我们定义的”甜点区”,是最适合T0的波动范围。
- 前20名(绿色柱):几乎全部落在甜点区内,平均波动率 1.82%,完美!
- 后20名(红色柱):平均波动率仅 0.05%,几乎是一条直线,扣除手续费后根本无利可图。
- 波动率差异:36倍!这就是”死水”和”活水”的区别。
实战启示:
- 波动率 < 0.5%:连手续费都覆盖不了,建议放弃
- 波动率 0.5%-3.0%:理想交易区间
- 波动率 > 3.0%:风险过大,需要更强的风控
ETF类别分布:谁是T0主力军?
不同类别的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)
这些标的通常呈现出极高的震荡特性和稳定的流动性。
图表解读:上图是排名第一的标的。请注意看它的价格走势(绿色线)。
- 频繁穿越均线:价格没有一直停留在上方或下方,而是频繁回归。
- 没有长尾风险:没有出现突然的 90 度直上直下。
- 成交量均匀:下方的成交量柱状图(红色区域)非常连贯,没有断层。
这种“心电图”一样的走势,是网格策略的最爱。每一次上下波动,都是一次低买高卖的获利机会。
Bottom 5 标的(不适合 T0)
这些标的通常表现为极度低波(死水)或者极端单边(大趋势)。
图表解读:上图是排名倒数的标的。
- 心电图拉直线:可以看到价格波动极小,几乎是一条直线。
- 单边漂移:或者呈现出长时间的单边下跌,如果在这种标的上跑网格,很容易出现“卖飞后买不回来”或者“一路补仓补到死”的惨状。
下一步计划
现在我们已经手握一份科学的“白名单”。下一篇文章,我将基于这些精选标的,讲解如何构建一个自适应网格交易策略 (Adaptive Grid Trading),并进行回测验证。
福利时刻:加入我的量化圈子
如果你对本文提到的 完整 T0 ETF 清单 和 Python 筛选源码 感兴趣,或者在运行代码时遇到问题,欢迎加入我的量化圈子。
特别福利:
对于还没有开通 MiniQMT 的朋友,通过我的专属推荐渠道免费开通还将获赠一年的量化圈子会员!
如果对此感兴趣,请关注公众号“看海的城堡”,在公众号页面下方点击相应标签获取开户方式,开通后联系作者即可加入。

