1. 尾段价格回落识别:分时均价与瞬时价背离初筛
任务拆解:把“感觉在跌”变成可核对的背离清单
尾段回落的第一层识别,不是先算跌幅,而是先回答一个问题:14:30 之后,瞬时价是否持续运行在分时均价下方,并且偏离得足够明显?分时均价(当日累计成交额 ÷ 累计成交量)代表全天成交的平均成本线,瞬时价跌破它并拉开距离,说明尾段新增成交在压低整体持仓成本,是回落初筛的可靠信号。
本例对单个交易日做三件事:取 14:30 之后的分时数据,逐分钟计算背离幅度 D = (P_avg − P) / P_avg × 100%(正值表示瞬时价低于均价),筛出 D ≥ 阈值 的时段,输出时段清单。阈值取 0.30% 作为初筛线,它足够宽松以捕捉真实回落,又足够严格以过滤正常抖动。
计算口径与判定规则
- P:该分钟收盘瞬时价;P_avg:该分钟的分时均价(累计成交额/累计成交量)。
- 背离幅度 D:以均价为基准的百分比偏离,正值为价格低于均价。
- 初筛条件:D ≥ 0.30% 记为“背离时段”;连续背离时段合并为一段,段内最长持续分钟数记为持续时长。
- 排除项:若某分钟成交量极小(如低于尾段均量的 10%),该分钟背离不计入,避免零星成交造成的假信号。
示例数据与逐分钟计算
下表为某交易日 14:30 后的分时片段(示例数据,用于演示计算过程)。均价由累计成交额与累计成交量推算,D 按上式逐分钟计算。
| 时间 | 瞬时价 P | 分时均价 P_avg | 背离 D | 成交量占比 | 判定 |
|---|---|---|---|---|---|
| 14:30 | 10.42 | 10.43 | 0.10% | 正常 | — |
| 14:40 | 10.38 | 10.41 | 0.29% | 正常 | 临界 |
| 14:47 | 10.33 | 10.37 | 0.39% | 正常 | 背离 |
| 14:52 | 10.28 | 10.35 | 0.68% | 正常 | 背离 |
| 14:58 | 10.24 | 10.33 | 0.87% | 正常 | 背离 |
| 15:00 | 10.22 | 10.32 | 0.97% | 正常 | 背离 |
按规则合并后,输出清单为:14:47–15:00,持续 13 分钟,最大背离 0.97%,平均背离约 0.73%。14:40 的 0.29% 未达阈值,不进入清单,但可作为“临界观察点”保留,便于次日对比。
可执行的计算脚本
把分时数据整理为 time, price, avg_price, vol_ratio 四列后,用下面脚本直接产出时段清单。脚本自包含,输入为示例列表,替换数据即可复用。
from datetime import datetime
THRESHOLD = 0.30 # 背离阈值 %
MIN_VOL_RATIO = 0.10 # 低量过滤线
bars = [
("14:30", 10.42, 10.43, 1.0),
("14:40", 10.38, 10.41, 1.0),
("14:47", 10.33, 10.37, 1.0),
("14:52", 10.28, 10.35, 1.0),
("14:58", 10.24, 10.33, 1.0),
("15:00", 10.22, 10.32, 1.0),
]
def divergence(p, avg):
return (avg - p) / avg * 100
segments, cur = [], None
for t, p, avg, vr in bars:
d = divergence(p, avg)
hit = d >= THRESHOLD and vr >= MIN_VOL_RATIO
if hit:
if cur is None:
cur = {"start": t, "end": t, "max_d": d, "sum_d": d, "n": 1}
else:
cur["end"] = t
cur["max_d"] = max(cur["max_d"], d)
cur["sum_d"] += d
cur["n"] += 1
elif cur is not None:
segments.append(cur); cur = None
if cur is not None:
segments.append(cur)
for s in segments:
print(f"{s['start']}-{s['end']} 最大背离 {s['max_d']:.2f}% "
f"平均背离 {s['sum_d']/s['n']:.2f}% 分钟数 {s['n']}")
预期输出:14:47-15:00 最大背离 0.97% 平均背离 0.73% 分钟数 4。若把阈值改为 0.20%,14:40 会被并入,清单起点提前到 14:40,说明阈值选择直接决定初筛灵敏度,需在固定口径下横向比较不同交易日。
初筛清单只回答“是否出现背离”,不回答“跌了多少”。最大背离与持续时长是两个独立维度:短时大背离多为集中抛压,长时小背离多为持续阴跌,两者在后续量化中应分开处理。
分时均价依赖累计成交数据,若数据源在尾段存在延迟或缺失,均价会被拉偏,导致 D 失真。使用前先核对尾段每分钟成交量是否连续,缺失分钟应标记而非插值。