Early Momentum¶
Early Momentum 是 /momentum/early 背后的早期动能研究页。它扫描完整股票池,不要求股票已经进入 Momentum Top 20,目标是把“蓄势、波动收缩、接近枢轴、尝试突破”的股票单独展示出来。
Momentum Discovery 位于 /momentum/discovery,用于更宽的候选发现和质量审计。Early Momentum 仍然专注于 setup 时机,不把 Discovery 的全局发现任务混进早期雷达。
描述性筛选,不是投资建议
Early Momentum 是算法研究工具,不是买卖建议,也不是 options 下单工具。页面展示的是公开行情、FMP、Unusual Whales 等数据源归一化后的筛选结果和证据,用于帮助理解股票当前处于什么技术阶段。
和 Momentum 的区别¶
Momentum 主页面偏“确认榜”:它关注已经在价格、均线、相对强度和动能上表现突出的股票,更适合回答“谁已经进入主升浪或确认动能”。
Early Momentum 偏“早期候选”:它不把“已经涨起来”当作优先项,而是更关注:
- 是否正在形成平台或底部结构;
- 波动率是否收缩;
- 均线是否靠拢;
- 成交量是否在突破前枯竭、在突破时改善;
- 价格是否接近明确平台枢轴;
- 是否有主题、催化、资金流或基本面确认;
- 数据是否完整,结论是否足够可靠。
因此,Early Momentum 不是把 Momentum Top 20 重新排序,而是另一套更早期的筛选框架。
股票池和运行方式¶
股票池与 Momentum 一致:以 S&P 500 ∪ Nasdaq 100 为核心,再加手工维护的扩展 watchlist。每只股票使用截至 snapshot_date 当天及以前的日线 OHLCV,不会使用未来数据。
管理员点击 /momentum/early 的 Run now 时,会触发 Momentum pipeline 重建最新可用交易日的 snapshot。周末或美股休市日的手动运行会强制重建最近已有交易日的数据,用于刷新页面结构和外部确认层;定时任务仍只在交易日自动运行。
两个榜单¶
Early Setup¶
Early Setup 关注“正在形成或接近早期机会”的股票。它不要求进入 Top 20,也不要求已经完成强突破。核心条件包括:
- 5日/10日斜率开始改善;
- 价格接近平台枢轴或重要高点,但没有明显过度延伸;
- 波动收缩或平台整理质量较好;
- 相对强度改善;
- 主题内有同伴走强;
- 外部事件或资金流可以加分,但不能替代趋势结构。
Breakout Watch¶
Breakout Watch 更接近“等待有效突破确认”的观察列表。它关注:
- 价格距离平台枢轴或近期高点很近;
- MA20/MA50 结构没有恶化;
- 量能从低迷转向改善;
- 主题内已有同伴突破或走强;
- 还没有被判定为过度延伸或突破失败。
阶段模型¶
每只股票会被归入一个 setup_stage。页面显示的“阶段”来自这里。
| 阶段 | 含义 |
|---|---|
| 蓄势整理 | 股票正在形成平台,但波动收缩或突破准备证据还不够强。 |
| 波动收缩 | ATR、周振幅、布林带宽度、成交量或均线距离出现收缩,筹码可能进入等待状态。 |
| 突破准备 | 已识别平台枢轴,价格接近枢轴,但还没有满足突破确认。 |
| 突破尝试 | 盘中或收盘短暂越过枢轴,但成交量、收盘位置或突破幅度不足。 |
| 突破确认 | 收盘站上明确枢轴,突破幅度达到缓冲要求,成交量确认,且收盘位置较强。 |
| 突破后跟随 | 突破已经发生,价格继续运行并保持在枢轴上方。 |
| 突破失败 | 突破后很快跌回枢轴下方,或出现放量长上影等失败特征。 |
| 延伸过高 | 当前价格离枢轴或短期均线太远,不再属于早期布局。 |
| 无形态 | 没有识别到可用的早期结构。 |
关键原则是:接近 60 日高点不等于突破确认。系统会分别计算 20日高点、60日高点、120日高点、52周高点和平台枢轴。
平台枢轴和突破确认¶
Early Momentum 会尝试识别最近 20-60 日的 swing high 集群和多次触及未突破的价格区域,生成:
pivot_price: 平台枢轴价;pivot_zone_low/pivot_zone_high: 枢轴容差区间;pivot_touch_count: 触及次数;pivot_quality_score: 平台质量;distance_to_pivot_pct: 当前价距离枢轴;breakout_volume_ratio: 突破日成交量相对 50 日均量;breakout_confidence: 突破置信度。
有效突破不是只看“价格在高位”。默认需要:
- 收盘价站上明确 pivot;
- 突破幅度至少达到缓冲要求;
- 成交量达到确认阈值;
- 收盘位于当日振幅较上部;
- 没有明显长上影假突破。
如果只有盘中冲过 pivot,或成交量不足,系统会显示“突破尝试”,而不是“突破确认”。
VCP / 波动收缩评分¶
波动收缩评分用于识别类似“平台整理、均线靠拢、等待突破”的形态。它综合:
- ATR 收缩;
- 最近几周振幅是否逐步收窄;
- 成交量是否枯竭;
- MA20/MA50 是否靠拢;
- 价格是否仍在中期均线附近或之上;
- 当前价距离 pivot 是否合理;
- 相对强度是否稳定或改善。
低成交量不是永远负面。系统会按阶段解释:
- 在“波动收缩 / 突破准备”阶段,缩量可能代表筹码惜售,是积极特征;
- 在“突破确认”阶段,低量突破会降低突破质量和置信度。
FMP 确认层¶
配置 MOMENTUM_FUNDAMENTALS_PROVIDER=fmp 和 FMP_API_KEY 后,Early Momentum 会对技术候选调用 FMP Premium 数据。页面上的蓝色 FMP 字段来自这些 API:
- 新闻和公司通稿;
- 财报日历和确认财报日期;
- 分析师评级调整;
- 目标价变化;
- 内部人交易;
- 机构持仓 / 13F 摘要;
- 收入、利润率、增长等基本面字段。
这些字段会归一化为:
fmp_confirmation;news_event_score;earnings_event_score;analyst_revision_score;price_target_score;insider_score;institutional_flow_score;fundamental_quality_score。
当某个 FMP 端点不可用时(套餐档位或故障),财报日历、分析师评级、内部人三个组件会自动回退到 Finnhub,财务增长组件回退到 Massive 的 SEC 申报数据;被替补的组件会在该行的数据质量对象中标记。
FMP 可以提升“已有技术结构”的候选,但不能把没有趋势结构的股票直接变成突破确认。
Unusual Whales 资金流层¶
配置 UNUSUAL_WHALES_API_KEY 后,Early Momentum 会加入 Unusual Whales 的资金流确认。页面上的绿色 UW 字段来自这些 API:
- options flow;
- dark pool trades;
- lit flow trades;
- options pulse;
- 主题内资金流共振。
这些字段会归一化为:
flow_confirmation;options_flow_quality;darkpool_accumulation;lit_flow_quality;dealer_pressure;flow_resonance。
这层用于股票早期动能研究,不是告诉用户买哪个 option 合约。期权流、暗池和明池大单可以提供“资金提前异动”的证据,但误报也会更多,所以只能作为确认层或预警层。
数据完整度和 partial_query_failed¶
如果 FMP 或 Unusual Whales 某些 endpoint 失败,页面会显示 partial_query_failed。这不代表所有数据都没用,而是表示:
- 成功的 endpoint 仍参与子分;
- 失败的字段显示为 unavailable / null;
- 失败字段不会被当作真实 0 分;
- 可用字段会重新加权;
data_completeness_pct会下降;- 结论置信度会被降低。
例如,分析师接口失败时,analyst_revision_score 应是 null,而不是 0。0 只表示真实查询到“没有正面证据”;失败则表示“没有可靠数据”。
页面字段解释¶
| 字段 | 含义 |
|---|---|
| 阶段 | 当前技术结构处于哪个 setup stage。 |
| 趋势 | 趋势结构分,包括 VCP、pivot、RS、均线和平台质量。 |
| 催化 | 新闻、财报、公司事件、分析师、目标价等事件分。 |
| 突破质量 | 是否真正站上 pivot、量能是否确认、收盘位置是否强。 |
| 数据完整度 | FMP/UW 等外部数据是否完整,失败组件是否降低置信度。 |
| 距60日高 | 当前价距离 60 日最高价,保留两位小数,避免 0.42% 被显示成 0%。 |
| 枢轴 | 识别到的平台突破参考价。 |
| 距枢轴 | 当前价距离平台枢轴的百分比。 |
| 突破量比 | 最新成交量相对 50 日均量。 |
| 支持 | 正面 reason codes,如 ATR 收缩、缩量蓄势、接近平台枢轴。 |
| 反对 | 风险 reason codes,如突破量能不足、仍低于主枢轴、过度延伸。 |
| 失效条件 | 若价格跌破某个关键位或均线并放量,该 setup 应被视为失败。 |
为什么有时数量很少¶
Early Momentum 的阈值故意偏严格。少于 3 只并不一定表示算法坏了,通常是因为:
- 量能没有改善;
- 距离 pivot 或高点仍太远;
- 主题共振不足;
- RS 不够强;
- 已经涨太多,被归为延伸过高;
- 外部数据缺失导致置信度下降。
这比简单放宽 Early Breakout 阈值更稳健,因为目标不是“多给股票”,而是把阶段和证据讲清楚。
输出限制¶
Early Momentum 不会输出“买入点”“目标价”“必涨”或 options 合约建议。它只描述:
- 当前处于哪个阶段;
- 哪些证据支持;
- 哪些证据反对;
- 哪些数据缺失;
- 什么条件下 setup 会失效。
最终判断仍需要用户结合自身研究、风险承受能力和交易计划。