Momentum¶
取引日ごとに一度、確認済みで加速中の上昇トレンドにある銘柄を市場からスクリーニングする社内リサーチツールです。中国のテクニカルトレーダーが「主升浪(メインの上昇波)」と呼ぶ形状を対象とします。本ページではアルゴリズムの全て——各シグナル、各数式、各ウェイト——を記載します。
記述的スクリーニングであり、投資助言ではありません
本スクリーナーは運営者専用のラボ機能であり、通常の StockClaw アプリの一部ではありません。候補銘柄の選定は日足 OHLCV データ上の純粋に決定的なアルゴリズムで行われ、LLM は選定後に記述的な解説を書くだけで、銘柄の追加・削除・選定は一切できません。出力はアルゴリズムによるスクリーニング結果であり、情報提供のみを目的とし、投資助言ではありません。
アーキテクチャ:厳格に分離された 3 層¶
| 層 | 役割 | 禁止事項 |
|---|---|---|
| 1. クオンツ・スクリーン | 日足データ上の決定的なシグナル計算。同じ入力は常に同じ出力。 | この層では LLM を一切使用しない。 |
| 2. LLM 解説 | クオンツ層が選定済みの各候補に 2–4 文の説明(中国語+英語)を書く。 | 銘柄の選定・除外・並べ替え・捏造は不可。数値の書き換えも不可。候補外の銘柄への言及や助言的表現(「recommend」「買点」等)を含む出力は棄却され、指標のみの表示にフォールバック。 |
| 3. スナップショット | 日次結果をキャッシュし、Top 5 サマリーを運営者の Telegram に送信。 | — |
ユニバース¶
現在の本番ユニバースは S&P 500 ∪ Nasdaq 100(重複排除後 約 518 銘柄)を中核とし、指数外の銘柄を収容する手動管理のウォッチリストを加えたものです。Momentum Discovery はより広く、grouped-daily DuckDB の日足テーブルから十分な履歴、最低価格、普通株に近いシンボル形状、最低ドル流動性を満たす銘柄を読み取り、独自の拡張ユニバース数を表示します。
日足データは取引日ごとに 1 回の grouped-daily 一括リクエスト(1 コールで米国市場全体をカバー)で取得し、DuckDB に保存。各銘柄について直近 120 営業日を評価し、履歴が 65 営業日未満の銘柄は対象外です。
さらに 2 つのキー不要の公開ソースがコンテキストを提供します(スコアには一切入りません):FINRA の日次 Reg SHO ファイルが銘柄別の場外(TRF)・空売り出来高を提供(off_exchange_share_20d・short_vol_ratio_20d として表示。米東部夕方公表のため常に T+1)、CBOE の VIX ヒストリーはマーケットサマリー層で使用します。
無制限(有料)プランでは、さらに 2 つのスコア外コンテキスト列が加わります:close_vs_vwap_pct(日足の出来高加重平均価格に対する終値の位置)と late_day_volume_share(通常セッション最後の 30 分に取引された出来高シェア。候補ごとの 1 分足から算出——機関投資家は執行を引け際に集中させます)。スロットル付きプランでは両列とも単に省略されます。
FMP Premium と Unusual Whales は、設定されている場合、技術スコア算出後にメインリーダーボードへ上限付きの有料データ確認ボーナスを加えることができます。このボーナスは出来高ゲート付きで、展開行に内訳を表示します。
6 つのシグナル¶
ウィンドウは全て営業日、価格は全て調整済み終値。「MAₙ」は n 日単純移動平均。
1. 移動平均の強気配列(均線多頭排列)— ブール値¶
上昇中の MA20 の上に価格があり、その MA20 が上昇中の MA50 の上にある(「[-5]」は 5 営業日前の値)。下降トレンド内の自律反発を除外します。
2. 保ち合いブレイクの新高値(平台突破創新高)— ブール値¶
直近 5 営業日のいずれかの日 d の終値が、d 以前の 60 営業日の全終値を上回っていれば真——保ち合い上限を突破し 60 日新高値を付けたことを意味します。最初に条件を満たした日が下記の出来高検証のアンカーになります。
3. 出来高による確認(放量確認)— 連続比率¶
ブレイクがない場合は「直近出来高 ÷ 直前 20 日平均」に退化。比率 ≥ 1.5× で確認成立。機関投資家を含む実需資金が動いているかをスクリーナーが直接読む数値です:確信を伴う買いは必ず取引所出来高の拡大として現れます。
4. スロープ加速(斜率加速)— 連続比率¶
「加速する主升浪」の中核的な定量定義:
両スロープは終値を営業日インデックスに回帰した最小二乗法の傾き。比率 > 1.5 は、直近 1 週間の上昇が直近 1 か月より明確に速い——トレンドが単に継続しているのではなく急峻化していることを意味します。
5. 市場に対する相対強度(相対強度)— 連続値¶
銘柄の 20 営業日リターンから SPY の同リターンを引いた値。正の RS は指数を上回る——ベータではなくリーダーシップを示します。
6. 機関投資家アキュムレーション・プロキシ — 連続値、ゲート付き¶
このティアには 13F もファンドフローのフィードもないため、確信を伴う買いが日足に残す足跡を読みます——2 つの成分が同時に成立する必要があります:
up_vol_share = Σ 上昇日の出来高 ÷ Σ 総出来高 (直近 20 営業日)
A/D ゲート: A/D ライン(cumsum((2C−H−L)/(H−L) × V))の
20 営業日回帰スロープが > 0 であること
accumulation = A/D スロープが正のとき up_vol_share、そうでなければ 0
0.5 は出来高が上昇日と下落日で対称であることを意味し、それを持続的に上回る読みは出来高が上昇日に集中している——古典的な「静かなアキュムレーション」パターンです。A/D ゲートは終値が日中安値付近で終わり続ける series を排除します。
シグナルから 0–100 スコアへ¶
各シグナルを [0, 1] のサブスコアに写像し、加重合計で総合スコアを算出:
| シグナル | サブスコア写像 | ウェイト |
|---|---|---|
| MA 配列 | 真=1、偽=0 | 18 |
| ブレイク新高値 | 真=1、偽=0 | 22 |
| 出来高 | clip((比率 − 1) / (3 − 1), 0, 1) — 平均以下は 0 点、3× で満点 |
18 |
| スロープ加速 | 両スロープ正のとき clip(比率 / 1.5, 0, 1)、それ以外 0 — 閾値 1.5 で満点 |
18 |
| 相対強度 | RS > 0 のとき clip(RS / 0.10, 0, 1)、それ以外 0 — SPY +10pp で満点 |
14 |
| アキュムレーション | clip((シェア − 0.50) / (0.65 − 0.50), 0, 1) — 対称シェアは 0 点、0.65 で満点 |
10 |
技術スコアは監査可能な基礎点です。メインページはその後、最終 score で順位付けします。この値には上限付き FMP/UW 確認ボーナスと、出来高確認を欠く新高値ブレイクへの出来高ペナルティが含まれる場合があります。
計算例 — MRNA、2026-07-06 終値(実スナップショットデータ)¶
| シグナル | 実測 | サブスコア | × ウェイト |
|---|---|---|---|
| MA 配列 | 終値 81.80 > MA20 60.16 > MA50 53.18、両 MA 上昇 | 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.3pp 上回る | 0.593/0.10 → 上限 1.0 | 14.00 |
| アキュムレーション | 上昇日出来高シェア 0.810、A/D スロープ正 | (0.810−0.50)/0.15 → 上限 1.0 | 10.00 |
| 合計 | 86.09 |
「なぜあの人気銘柄がリストにないのか?」¶
理由は 2 つしかなく、ほぼ常に 2 つ目です:
- ユニバース外。 S&P 500 ∪ Nasdaq 100 ∪ ウォッチリストのみが対象。それ以外はウォッチリストへの追加が必要。
- 今この瞬間、主升浪にいない。 メディアの話題性とテクニカルな形状は別物です。2026-07-08 スナップショットの実例:LITE(Lumentum)——大いに話題の光学/AI 銘柄で、ユニバースに含まれているにもかかわらず、当日スコアは 0.0:終値 731 は MA20(851)と MA50(895)を下回り、60 日高値から −30.6%、20 日リターン −22.6%、出来高比 0.66×、SPY を 21.9pp アンダーパフォーム。5 シグナル全て不成立。深い調整中の人気銘柄こそ、このスクリーナーが設計上除外すべき対象です。再び底固めして出来高を伴いブレイクすれば、自然にリストへ戻ります。
スクリーナーが意図的に「見ない」もの¶
- 無制限なファンダメンタルズ — 決算、バリュエーション、ガイダンス、アナリスト文脈は、壊れたテクニカル構造を置き換えられません。
- 生のニュースとセンチメント — 一般的なヘッドラインやソーシャルの話題性は銘柄を選びません。正規化された明確な触媒だけが文脈になります。
- 独立した機関フロー選定 — FMP と Unusual Whales は技術的に妥当な候補を確認できますが、リーダーボードは価格/出来高優先です。有料データは上限付き、出来高ゲート付きで、説明可能なサブスコアとして表示されます。
- 日中の値動き — 日足終値のみ。米国市場クローズ後に 1 日 1 回スナップショットを生成。
閾値はエンジニアリング上のデフォルトであり、検証済み最適値ではありません
上記の全定数(60 日ブレイクウィンドウ、1.5× 出来高倍率、1.5 加速閾値、各ウェイト…)は一元管理された妥当な初期値であり、バックテストによる最適化は未実施です。ランキングはチャートで自ら確認すべき候補リストとして扱い、結論として扱わないでください。
ニュース触媒、セクター共振、出来高品質¶
本番スクリーナーは意図的に価格と出来高を優先します。v3 確認レイヤーもこの規律を維持し、決定的な technical_score を最初の候補入りゲートと履歴検証の基準として残したまま、触媒、同テーマ/同業の参加、出来高品質、FMP、Unusual Whales フロー確認を説明します。
追加される任意フィールドは5つです:
| フィールド | 意味 | 境界 |
|---|---|---|
catalyst_context |
新しいニュース/イベントの文脈:触媒タイプ、鮮度、ソース数、信頼度、短い根拠要約。 | 見出しだけでテクニカルに崩れた銘柄を Top 20 に入れることはできません。 |
sector_resonance |
同テーマ/同業が同時に動いているか:ピアの広がり、リーダー、相対強度、Top20 による確認。 | セクター回転を細分化するだけで、個別シグナルを置き換えません。 |
volume_quality |
参加が改善しているか:1日出来高比と5日/20日基準、上昇日出来高トレンド、ブレイク参加品質、日中データがある場合の引け前確認。 | 日中データ欠損はコンテキスト欠損として表示し、マイナス点にはしません。 |
trade_character |
記述用の取引特性:大型機関型、高ベータ成長、標準モメンタム。初期ではない、高値付近、バリュエーション高め、低/高ボラ、伸び切りなどのフラグを含みます。 | 取引特性の説明であり、推奨でも新しい選定条件でもありません。 |
paid_confirmation |
FMP と Unusual Whales の確認。fmp_confirmation、flow_confirmation、上限付き bonus、volume_factor、volume_penalty を含みます。 |
有料文脈は技術ゲートと出来高ゲートの後でのみ最終順位に影響します。 |
report_score |
表示用のブレンド:技術スコア、明確な触媒、共振、出来高改善、取引特性品質。任意コンテキストが欠ける場合は利用可能な重みで再正規化します。 | 技術スコアは監査とリプレイのために残ります。 |
ニュース触媒は momentum_screener/ 内に新しいニュースクローラーを作るのではなく、可能な限り StockClaw 既存の ingestion / signal データを再利用します。イベントは決算/ガイダンス、アナリスト、製品、政策/規制、M&A、AI設備投資/サプライチェーン、セクターマクロ、その他に正規化されます。汎用的な routine_news/other はニュース熱度として表示し、触媒とは表示せず、report_score の触媒成分にも入りません。セクター共振も広い大分類より細分テーマを優先し、テクノロジー銘柄は cybersecurity、AIネットワーク/光学、半導体設備などのバケットに寄せます。取引特性は AAPL/MSFT のような安定した大型機関トレンドと LITE/ALAB/FTNT のような高ベータ成長の動きを分け、機関型、高値付近、初期ではない、低弾性、バリュエーション感応度などを説明できるようにしますが、元の技術スコアは変更しません。LLM はこの正規化済み事実だけを要約でき、銘柄選択、数値変更、入力外ティッカーへの言及、助言的表現は禁止のままです。
デイリーリサーチノート¶
2026-07 以降、スクリーナーは「事実が先、言語が後」の順で完全な日次ノートを生成します:
- 決定的アグリゲート層(LLM 不使用):マーケット概況(SPY/QQQ/DIA は自前の日足、VIX は CBOE、全市場の騰落銘柄数)、Top 20 セクター構成、リスト統計(新高値数、出来高確認済みブレイク比率、出来高比中央値、平均加速、乖離度と ATR)、モメンタム状態ラベル、6 枚のインサイトカード、銘柄別レポート項目(グレード、乖離度、形状、リーダーフラグ)——すべて
screener_config.pyの固定ルールテーブルです。 - ヒストリカル検証——実リプレイであり、約束ではありません。 本番閾値で直近 30 営業日を日次リプレイし(クオンツ層のみ)、実際のその後と照合します:銘柄別 5 日先リターン(勝率・平均・対 SPY 超過)、日次リバランスの Top 5 バスケット(累積リターン・最大ドローダウン)。等ウェイト、終値対終値、コスト無し。勝率に加えて、ペイオフ構造(平均利益/平均損失、ペイオフレシオ、1 件あたり期待値)と同一ウィンドウでのベンチマーク自身の上昇確率も報告します——モメンタムの優位は非対称な損益に宿るため、五分五分近辺の勝率それ自体は結論になりません。これらは過去の挙動の記述であり、予測ではありません。
- 言語層:LLM がマーケットサマリー、銘柄別解説(アグリゲートと前日リスト比較を文脈に、なぜ今日か/何が変わったか/何が独自かに回答)、日次総括を執筆——すべて同一の機械検証契約(助言的表現禁止、リスト外銘柄禁止;違反時は決定的テンプレートへフォールバック)の下にあります。
- モメンタム・ライフサイクル分類:各候補は優先ルールカスケードで 初期ブレイク / 確認済み / 延伸 / 消耗リスク に分類されます(閾値は
screener_config.py:まず消耗——進行済みかつ出来高減衰・加速平坦化などの衰弱確認;次に初期——新高値、20日上昇<12%、MA20 からの乖離<6%、Top20 入り 3 日以内、利用可能な出来高確認;次に延伸;確認済みがデフォルト中段)。setup_stageがbreakout_confirmedまたはpost_breakout_follow_throughの場合、過度に延伸していなければ初期分類を補助できます。履歴入力は不変のreport_historyテーブル由来です。 - 初期モメンタムレーダー:
early_setupとbreakout_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 候補を押し上げます。未設定または API 失敗時は量価のみのモデルに戻ります。/momentum/earlyの各行にはfmp_confirmation、news_event_score、earnings_event_score、analyst_revision_score、price_target_score、insider_score、institutional_flow_score、fundamental_quality_scoreの完全な FMP 内訳が表示されます。FMP データがない行でも同じフィールドをプレースホルダーとして表示し、理由があれば併記します。UNUSUAL_WHALES_API_KEYを設定すると、直近 options flow、dark-pool trades、lit-flow trades、options pulse からフロー確認層も追加され、flow_confirmation、options_flow_quality、darkpool_accumulation、lit_flow_quality、dealer_pressure、flow_resonanceに正規化されます。これは株式の初期モメンタム研究用であり、オプション取引推奨レイヤーではありません。FMP と Unusual Whales は endpoint 単位の best effort で、部分失敗はpartial_query_failedとして表示し、成功した同一レイヤーの endpoint は引き続きサブスコアに入ります。全 endpoint が失敗した場合だけquery_failedになります。
各初期行には entry_timing_profile も付き、すでに起きた上昇を「これから起きる」初期機会と混同しないようにします。分類は early_setup、catalyst_repricing、confirmed_breakout、extended_chase_risk、pullback_preferred で、20日上昇率、60日高値への距離、MA20 からの乖離、出来高スパイク、メガキャップ/機関投資家型の性格、明確な触媒を使います。採用と表示順はどちらもタイミング調整後スコアで決まり、raw score から timing/profile ペナルティを差し引きます。触媒後再評価や追随リスクの行は調整後スコアが足りなければ Early Setup 閾値を通過せず、通過しても真の初期セットアップより後ろに並びます。UI と Telegram にはタイミング調整後のランキングスコアだけを表示します。
レーダーはさらに細かい setup_stage も出力します: ベース形成、ボラティリティ収縮、ブレイク準備、ブレイク試行、ブレイク確認、ブレイク後フォロースルー、ブレイク失敗、過度な延伸、またはセットアップなし。ブレイク確認は 60日高値への接近からは推定せず、明確なベースピボット、ブレイクバッファ、終値確認、出来高確認、終値位置を必要とします。各行にはピボット、ピボット距離、ブレイク出来高比、トレンドスコア、材料スコア、ブレイク品質、データ完全性、支持/反対 reason code、無効条件が表示されます。FMP または Unusual Whales の partial_query_failed はデータ品質オブジェクトに入り、失敗したコンポーネントは実際の 0 点ではなく unavailable/null として扱います。
Telegram はまず完全な Momentum 日次インテリジェンスを送り、初期候補がある場合は別メッセージで Early Momentum Radar も送信します。初期メッセージは /momentum/early の行を展開し、レーダースコア、技術スコア、FMP 確認、Unusual Whales フロー確認、partial-data の理由、利用可能なリプレイ文脈を含めます。メイン日次レポートには Telegram の長さ制限を避けるため、簡潔な初期サマリーだけを残します。
6. Momentum Discovery:/momentum/discovery は同じスナップショットの discovery_screens を読み、流動性のあるブレイク、初期ベースブレイク、高 FMP/UW 確認、低品質フィルター行に分けます。拡張 bars ユニバースを使い、メイン Top 20 は引き続き curated core universe に留まります。FMP/UW は上限付きの Discovery 技術候補にだけ再取得され、全 backfilled symbol には呼びません。
7. 隣接スクリーン:同じ評価結果上の 4 つの閾値バリアント(台頭モメンタム、ブレイク接近、トレンド内押し目、RS 首位・未ブレイク)、完全に決定的。
LLM 層のハード契約¶
解説モデルはスクリーニング済み候補と実測値のみを受け取り、候補ごとに中国語と英語の説明を返します。出力は機械検証されます:
- 候補リスト外の銘柄コードへの言及 → 棄却。
- 助言的表現(推荐 / 建议买入 / 买点 / 必涨 / recommend / buy signal / price target / …)→ 棄却。
- 出来高の形容が実測値と矛盾する場合(例:0.99× で「出来高激増」)→ 棄却(数値と記述の整合性チェック、ルールは
VOLUME_CLAIM_RULES)。 - 棄却または解析不能な出力は 1 回リトライ。再失敗した候補は定量指標のみ表示。
UI に表示される数値は常にクオンツ層由来であり、LLM 由来のものは一切ありません。
本コンテンツは公開市場データに基づくアルゴリズムのスクリーニング結果と記述的説明であり、情報提供のみを目的とし、投資助言を構成しません。