跳轉到

Momentum

一個內部研究工具:每個交易日收盤後對市場做一次篩選,尋找處於已確認且正在加速的上升趨勢中的股票——即技術派所說的「主升浪」。本頁完整記錄演算法本身:每個訊號、每條公式、每個權重。

描述性篩選,不是投資建議

本篩選器是僅營運者可用的實驗功能,不屬於 StockClaw 面向使用者的常規產品。候選股完全由確定性演算法在日線 OHLCV 資料上選出;LLM 只在其後撰寫描述性解讀,永遠不能新增、刪除或挑選任何股票。輸出是演算法篩選結果,僅供資訊參考,不構成投資建議

架構:嚴格分離的三層

職責 禁止事項
1. 量化篩選 在日線資料上做確定性訊號計算。同樣輸入永遠得到同樣輸出。 此層任何環節不使用 LLM。
2. LLM 解讀 為量化層已選出的每檔候選寫 2–4 句中英雙語描述。 不能挑選、剔除、重排或虛構股票;不能改寫任何數字;提及候選之外的股票或出現建議性措辭(「推薦」「買點」等)的輸出會被整條拒絕,降級為僅顯示指標。
3. 快照 快取每日結果;把 Top 5 摘要推送到營運者的 Telegram。

股票池

目前生產股票池以 S&P 500 ∪ Nasdaq 100 為核心(去重後約 518 檔),外加一個手工維護的 watchlist 收納指數之外的標的。成分股清單由靜態 CSV 引導,定期從指數成分列表刷新。Momentum Discovery 更寬:它從 grouped-daily DuckDB 日線表讀取 symbol,保留歷史足夠、價格達標、symbol 形態接近普通股且成交額達標的股票,並顯示自己的擴展股票池數量。

日線資料每個交易日透過一次 grouped-daily 批量請求取得(單次呼叫涵蓋全美市場),存入 DuckDB。篩選器對每檔股票評估最近 120 個交易日;歷史不足 65 個交易日的股票不參與篩選。

另有兩個免 key 的公開資料源提供上下文(永不參與評分):FINRA 每日 Reg SHO 檔案提供逐股場外(TRF)與做空成交量——展示為 off_exchange_share_20dshort_vol_ratio_20d(美東傍晚發布,故恆為 T+1);CBOE 的 VIX 歷史資料供市場概覽層使用。

在無限速(付費)行情方案下,還會出現兩個不計分的上下文欄:close_vs_vwap_pct(收盤價相對當日成交量加權均價的位置,來自日線)與 late_day_volume_share(常規時段最後 30 分鐘的成交量占比,來自逐候選的 1 分鐘 K 線——機構習慣把執行集中在尾盤窗口)。限速方案下這兩欄自動缺省。

FMP Premium 和 Unusual Whales 不再只是展示欄位:配置後,它們可以在技術分計算完成後,為主榜加入有上限的付費資料確認加分。該加分受成交量閘門約束,有明確上限,並在展開行中顯示。

六個訊號

所有視窗均為交易日,所有價格為復權收盤價。「MAₙ」指 n 日簡單移動平均。

1. 均線多頭排列 — 布林值

close > MA20 > MA50   且   MA20 > MA20[-5]   且   MA50 > MA50[-5]

價格在上升的 MA20 之上,MA20 又在上升的 MA50 之上(「[-5]」表示 5 個交易日前的值)。用於排除下跌趨勢中的反彈。

2. 平台突破創新高 — 布林值

最近 5 個交易日內存在某一天 d,其收盤價高於 d 之前 60 個交易日的所有收盤價——即衝破盤整區上緣並創出 60 日新高。第一個滿足條件的交易日作為下面量能檢驗的錨點。

3. 放量確認 — 連續比值

vol_surge = mean(突破日及之後的成交量)
          ÷ mean(突破日之前 20 個交易日的成交量)

無突破時退化為「最新成交量 ÷ 前 20 日均量」。比值 ≥ 1.5× 視為確認。這是篩選器對「真金白銀是否進場」(包括機構資金)最直接的讀數:有信念的買入必然體現為場內成交量的放大。

4. 斜率加速 — 連續比值

「加速主升浪」的核心量化定義:

accel = OLS_slope(最近 5 日收盤) ÷ OLS_slope(最近 20 日收盤)
        (要求兩個斜率均 > 0,否則 accel = 0)

兩個斜率均為收盤價對交易日序號的普通最小平方回歸。比值 > 1.5 意味著最近一週的爬升明顯快於最近一個月——走勢在變陡,而不只是延續。

5. 相對市場強度 — 連續值

RS = (close ÷ close[-20] − 1) − (SPY ÷ SPY[-20] − 1)

個股 20 日收益減去 SPY 的 20 日收益。RS 為正說明跑贏大盤——是領漲,不是隨波逐流。

6. 機構吸籌足跡代理 — 連續值,帶閘門

本檔位沒有 13F 或資金流資料,該訊號讀取的是有信念的買入在日線裡留下的足跡——兩個分量必須同時成立:

up_vol_share = Σ 上漲日成交量 ÷ Σ 總成交量          (近 20 個交易日)
A/D 閘門:     累積/派發線(cumsum((2C−H−L)/(H−L) × V))
              的 20 日回歸斜率必須 > 0

accumulation = A/D 斜率為正時取 up_vol_share,否則為 0

讀數 0.5 表示成交量在漲跌日間對稱;持續高於 0.5 說明放量集中在上漲日——經典的「悄悄吸籌」形態。A/D 閘門用於剔除收盤價總在日內低位的序列。

從訊號到 0–100 評分

每個訊號先映射為 [0, 1] 的子分,再加權求和得到綜合分:

訊號 子分映射 權重
均線多頭 真=1,假=0 18
突破新高 真=1,假=0 22
放量 clip((比值 − 1) / (3 − 1), 0, 1) —— ≤1× 均量不得分,3× 滿分 18
斜率加速 兩斜率為正時 clip(比值 / 1.5, 0, 1),否則 0 —— 達到 1.5 閾值即滿分 18
相對強度 RS > 0 時 clip(RS / 0.10, 0, 1),否則 0 —— 跑贏 SPY 10 個百分點滿分 14
吸籌 clip((份額 − 0.50) / (0.65 − 0.50), 0, 1) —— 對稱份額不得分,0.65 滿分 10
technical_score = 18·s_均線 + 22·s_突破 + 18·s_放量 + 18·s_加速 + 14·s_強度 + 10·s_吸籌   ∈ [0, 100]

技術分是可審計的基礎分。主頁面隨後按最終 score 排序;該分數可以包含有上限的 FMP/UW 確認加分,並且對「創出新高但沒有量能確認」的突破施加量能扣分。

實算示例 —— MRNA,2026-07-06 收盤(真實快照資料)

訊號 實測 子分 × 權重
均線多頭 收盤 81.80 > MA20 60.16 > MA50 53.18,兩均線均上升 1.0 18.00
突破 創 60 日新高(距高點 0.0%) 1.0 22.00
放量 1.455× (1.455−1)/2 = 0.2275 4.10
斜率加速 5 日斜率 3.39 / 20 日斜率 1.75 → 1.935× 1.935/1.5 → 封頂 1.0 18.00
相對強度 20 日跑贏 SPY +59.3 個百分點 0.593/0.10 → 封頂 1.0 14.00
吸籌 上漲日量能份額 0.810,A/D 斜率為正 (0.810−0.50)/0.15 → 封頂 1.0 10.00
合計 86.09

「為什麼某檔熱門股不在清單上?」

只有兩種可能,而且幾乎總是第二種:

  1. 不在股票池裡。 只篩 S&P 500 ∪ Nasdaq 100 ∪ watchlist;池外標的需要加入 watchlist。
  2. 它此刻不在主升浪裡。 媒體熱度和技術形態是兩回事。2026-07-08 快照的真實案例:LITE(Lumentum)——一檔討論度極高的光模組/AI 概念股,而且就在股票池裡——當日得分 0.0:收盤 731 低於 MA20(851)也低於 MA50(895),距 60 日高點 −30.6%,20 日收益 −22.6%,量比僅 0.66×,20 日跑輸 SPY 21.9 個百分點。五個訊號全部不成立。一檔處於深度回調中的熱門股,恰恰是這個篩選器設計上要排除的對象;當它重新築底、再次放量突破時,自然會回到清單裡。

篩選器刻意「不看」什麼

  • 不受約束的基本面 —— 財報、估值、指引和分析師資料不能替代已經損壞的技術結構。
  • 原始新聞與輿情 —— 泛化標題和社群熱度不會直接選股;只有被歸一化的明確催化欄位才會進入上下文。
  • 獨立資金流選股 —— FMP 和 Unusual Whales 可以確認技術上已經合理的候選,但主榜仍然以價格和成交量為先。付費資料有上限、受量能閘門約束,並以可解釋子分展示;它不是另一套單獨選股器。
  • 盤中行情 —— 只用日線收盤,每個交易日美股收盤後生成一次快照。

閾值是工程預設值,不是回測驗證的最優值

上文所有常數(60 日突破視窗、1.5× 量比、1.5 加速閾值、各權重……)都是集中配置的合理起點,尚未經過回測最佳化——請把排名當作需要自行到圖上二次確認的候選短名單,而不是結論。

新聞催化、板塊共振、量能改善

生產版篩選器刻意以價格和成交量為先。v3 確認層保持這個紀律:確定性的 technical_score 仍然是第一道入選門檻和歷史驗證基線,新增確認資訊用於說明技術領跑股是否同時具備新鮮催化、同主題/同行業共振、量能品質改善、FMP 證據或 Unusual Whales 資金流確認。

該層新增五類可選欄位:

欄位 含義 邊界
catalyst_context 新鮮新聞或事件上下文:催化類型、時效、來源數量、置信度和簡短證據摘要。 新聞標題不能把技術形態已經破壞的股票強行推入 Top 20。
sector_resonance 同主題或同行業是否同步走強:同伴寬度、領漲同伴、相對強度、是否被 Top20 驗證。 它細化板塊輪動,不替代個股技術訊號。
volume_quality 參與度是否改善:1日量比相對5日/20日基準、上漲日量能趨勢、突破參與品質,以及有逐分鐘資料時的尾盤確認。 缺少盤中資料時顯示為上下文缺失,而不是負面分數。
trade_character 描述性交易性格:大型機構型、高彈性成長或標準動能,並附帶非早期、接近新高、估值偏高、低/高波動、延伸等標籤。 只解釋交易性質,不是推薦,也不是新的入選門檻。
paid_confirmation FMP 和 Unusual Whales 確認分,包括 fmp_confirmationflow_confirmation、有上限的 bonusvolume_factorvolume_penalty 付費上下文只能在技術閘門和量能閘門之後影響最終排序。
report_score 展示用混合分:技術分、明確催化、共振、量能改善和交易性格品質;可選上下文缺失時會重新歸一化權重。 技術分仍保留用於審計和重放。

新聞催化優先復用 StockClaw 現有 ingestion 和 signal 資料,而不是在 momentum_screener/ 內另起新聞爬蟲。事件會被歸一化為財報/指引、分析師、產品、政策/監管、併購、AI資本開支/供應鏈、板塊宏觀和其他等類型。泛化的 routine_news/other 只顯示為新聞熱度,不顯示為催化,也不參與 report_score 的催化分量。板塊共振也優先使用細分主題而不是寬泛大板塊,科技股應儘量落到 cybersecurity、AI 網路/光模組、半導體設備等桶中。交易性格會把 AAPL/MSFT 這類穩定的大型機構趨勢和 LITE/ALAB/FTNT 這類高彈性成長走勢分開,讓報告能描述機構型、接近新高、非早期、低彈性或估值敏感,但不改變原始技術分。LLM 只能總結這層提供的歸一化事實;仍然不能挑選股票、改寫數字、提及輸入載荷外的股票代碼,或使用建議性措辭。

每日研報

自 2026-07 起,篩選器產出完整的每日研報,以「先事實、後語言」的順序構建:

  1. 確定性聚合層(全程無 LLM):市場概覽(SPY/QQQ/DIA 來自自有日線,VIX 來自 CBOE,全市場漲跌家數寬度)、Top 20 板塊構成(來自成分股檔案)、榜單統計(新高數、量能確認突破占比、量比中位數、平均加速、延伸度與 ATR 讀數)、動能狀態標籤、六張洞察卡、以及逐股報告欄位(評級、延伸度、形態、領先旗標)——每一項都是 screener_config.py 裡的固定規則表。
  2. 歷史驗證——真實重放,不是承諾。 用生產閾值把篩選器在最近 30 個交易日逐日重放(僅量化層),對照真實後續走勢:逐筆 5 日前瞻收益(勝率、均值、對 SPY 超額),以及每日再平衡的 Top 5 組合(累計收益、最大回撤)。口徑:等權、收盤對收盤、不含成本。除勝率外,該區塊同時報告盈虧結構(平均盈利/平均虧損、盈虧比、單筆期望)與基準在相同視窗的上漲機率——動能策略的優勢來自不對稱的盈虧,而非高命中率,接近五五開的勝率本身不構成結論。這些統計描述篩選器的歷史行為,絕不是預測
  3. 語言層:LLM 撰寫市場概覽、逐股解讀(以聚合資料和昨日榜單對比為上下文,回答為什麼是今天 / 什麼變了 / 有何獨特)與每日收束段——全部受同一套機器校驗契約約束(禁建議性措辭、禁榜單外股票;違規降級為確定性模板)。
  4. 動能生命週期分期:每檔候選被規則級聯分為 早期突破 / 確認動能 / 延伸動能 / 透支風險(閾值在 screener_config.py:先判透支——已深入行情且伴隨量能衰減或加速走平等衰竭確認;再判早期——新高、20日漲幅<12%、高於 MA20 不超過 6%、進入 Top20 不超過 3 天,且有可用量能確認;再判延伸;確認動能為預設中段)。setup_stagebreakout_confirmedpost_breakout_follow_through 時,如果走勢沒有過度延伸,也可輔助早期判定。歷史感知輸入(連續在榜天數、分數/排名日變化、新進旗標)來自不可變的 report_history 表。目的:剛突破的股票和已上漲 35% 的股票可能同分——但絕不該同一種敘事。
  5. 早期動能雷達:early_setupbreakout_watch 掃描完整股票池,不要求進入 Top20。Early Setup 強調 5日/10日加速、接近60日高點、量能改善、窄幅整理後放量、RS 改善和細分主題共振。Breakout Watch 要求距離60日高點 -3% 至 0%、MA20/MA50 多頭、5日量比改善,且主題內已有同伴走強。新聞只有被歸一化為明確事件時才顯示為催化,routine news 不會被提升為催化。完整日報保留在 /momentum; 聚焦早期候選的 Early Momentum Radar 獨立為 /momentum/early,並在管理員 dashboard 中提供入口。當 MOMENTUM_FUNDAMENTALS_PROVIDER=fmp 且配置 FMP_API_KEY 時,早期模型會對放寬後的技術候選池調用 FMP Premium:股票新聞/通稿、財報日曆、分析師評級、目標價共識、內部人交易統計、機構持倉/13F 摘要和財務增長數據。這些字段會歸一化為 FMP 確認子分,可把接近閾值的 Early Setup / Breakout Watch 候選推入榜單;未配置或接口失敗時自動回退為純量價模型。/momentum/early 的逐股展示會列出完整 FMP 拆分:fmp_confirmationnews_event_scoreearnings_event_scoreanalyst_revision_scoreprice_target_scoreinsider_scoreinstitutional_flow_scorefundamental_quality_score;沒有 FMP 數據的行也會顯示同樣字段的占位和可用的不可用原因。配置 UNUSUAL_WHALES_API_KEY 後,早期模型還會加入資金流確認層,讀取近期 options flow、dark-pool trades、lit-flow trades 和 options pulse,歸一化為 flow_confirmationoptions_flow_qualitydarkpool_accumulationlit_flow_qualitydealer_pressureflow_resonance。這層用於股票早期動能研究,不是 options 下單建議層。FMP 和 Unusual Whales 都是 endpoint 級 best effort:部分 endpoint 失敗時顯示 partial_query_failed,成功的同層 endpoint 仍參與子分;只有整層全失敗時才顯示 query_failed

每個早期行還會帶 entry_timing_profile,避免把已經發生的上漲誤寫成「即將發生」的早期機會。画像分為 early_setupcatalyst_repricingconfirmed_breakoutextended_chase_riskpullback_preferred,依據 20 日漲幅、距 60 日高點、相對 MA20 乖離、量能突增、大盤機構股屬性和明確催化判斷。入選和展示順序都看時機調整分,也就是原始分扣除時機/profile 扣分。催化後再定價或追高風險如果時機調整分不夠,會直接不過 Early Setup 閾值;即使仍過線,也會排在真正早期候選後面。UI 和 Telegram 只顯示時機調整後的分數。

早期雷達還會輸出更細的 setup_stage:蓄勢整理、波動收縮、突破準備、突破嘗試、突破確認、突破後跟隨、突破失敗、延伸過高或無形態。突破確認不再由「接近60日高」推導,而是要求明確平台樞軸、突破緩衝、收盤站穩、成交量確認和收盤位置等證據。每行會展示平台樞軸、距樞軸、突破量比、趨勢評分、催化評分、突破品質、資料完整度、支持/反對 reason codes 和失效條件。FMP 或 Unusual Whales 的 partial_query_failed 會進入資料品質物件;失敗組件顯示為不可用/null,不會被當成真實 0 分參與平均。

Telegram 會先推送完整主升浪每日情報,當存在早期候選時再單獨推送一條 Early Momentum Radar。早期消息會展開 /momentum/early 行:雷達分、技術分、FMP 確認、Unusual Whales 資金流確認、partial-data 原因,以及可用的歷史重放摘要;主日報只保留精簡早期摘要,避免超過 Telegram 長度限制。 6. Momentum Discovery:/momentum/discovery 從同一份 snapshot 讀取 discovery_screens,把候選拆成流動性突破、早期平台突破、高 FMP/UW 確認和低品質過濾行。它使用擴展 bars 股票池,而主升浪 Top 20 仍保留核心高流動性股票池。FMP/UW 只會對有上限的 Discovery 技術候選重新讀取,不會對每個已回填 symbol 全量調用。 7. 相鄰篩選架:同一評估結果上的四個閾值變體(蓄勢動能、臨近突破、趨勢內回調、RS 領先未突破),完全確定性。

LLM 層的硬性契約

解讀模型收到已篩出的候選及其實測數字,須為每檔候選返回一段中文加一段英文描述。其輸出經機器校驗:

  • 提及候選清單之外的任何股票代碼 → 拒絕
  • 出現任何建議性措辭(推薦 / 建議買入 / 買點 / 必漲 / recommend / buy signal / price target / ……)→ 拒絕
  • 量能形容詞與實測數字矛盾(如量比 0.99× 卻稱「放量激增」)→ 拒絕(數值-定性一致性,規則見 VOLUME_CLAIM_RULES)。
  • 被拒或無法解析的輸出重試一次;再失敗則該候選僅展示量化指標。

介面上顯示的數字永遠來自量化層,絕不來自 LLM。


本內容為基於公開行情資料的演算法篩選結果與描述性說明,僅供資訊參考,不構成任何投資建議。