Strasmore Research
学習 Matt Connor著者: Matt Connor ・更新: 2026-07-24 · data as of July 24, 2026 · refreshed weekly

NBBOとは?米国株の最良気配値の定義

NBBOは米国株の統合気配値です。全ての取引所の最高買い値と最安値をまとめた、ブローカーが遵守すべき基準値について解説します。

NBBO(National Best Bid and Offer)は、米国株の統合気配値です。これは、すべての取引所における買い注文の最高値と、売り注文の最安値を同時に示したものです。アプリに表示される価格であり、ブローカーが注文に対して満たすべき、あるいは上回るべき基準値となります。以下の数値はすべて、実際の気配値記録に基づいています。

NBBOとは何か?平易な定義

米国株は一つの場所で取引されるわけではありません。NYSEやNasdaq、その他十数もの取引所が、同じティッカーに対してそれぞれ独自の最良気配(ベスト・ビッドおよびベスト・アスク)を持つオーダーブックを運用しています。NBBOはこれらを統合したものです。あらゆる場所における最高気配と最低気配を、それぞれの取引可能数量とともに並べて表示します。この統合は、各取引所が共同で運営する市場インフラであるSIPs(証券情報プロセッサー)によって行われます。

重要な点が2つあります。まず、ビッドとアスクが同時に異なる取引所に存在することがあります。次に、更新には価格の変動が必要ありません。同じ最良価格における数量の変更も、新しい記録として更新されます。トレーダーはこれら2つの最良価格をthe touchと呼び、その差を bid-ask spread と呼びます。

NBBOクオートの読み方:価格、サイズ、およびペース

以下は、直近のフルセッションにおける東部時間午後1時30分からの、Coca-Cola (KO) の連続する10件のNBBOレコードです。これは実際に配信されるナショナル・クオートです。

クエリKO — 直近のセッションにおける1:30 p.m. ETからのNBBO更新10件連続
各数値の背後にある正確なSQL
WITH (
    SELECT max(session_date)
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
               countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime(today() - 10)
          AND window_start < toDateTime(today() - 3)
        GROUP BY session_date
        HAVING regular_bars = 390
    )
) AS last_session
SELECT substring(toString(toTimeZone(sip_timestamp, 'America/New_York')), 12, 12) AS et_time,
       round((toUnixTimestamp64Nano(sip_timestamp) - min(toUnixTimestamp64Nano(sip_timestamp)) OVER ()) / 1e6, 2) AS elapsed_ms,
       bid_size AS bid_shares,
       toFloat64(bid_price) AS best_bid,
       toFloat64(ask_price) AS best_ask,
       ask_size AS ask_shares,
       round((toFloat64(ask_price) - toFloat64(bid_price)) * 100, 1) AS spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'KO'
  AND sip_timestamp >= toDateTime(last_session, 'America/New_York') + INTERVAL 13 HOUR + INTERVAL 30 MINUTE
  AND sip_timestamp < toDateTime(last_session, 'America/New_York') + INTERVAL 14 HOUR
  AND bid_price > 0
  AND ask_price > bid_price
ORDER BY sip_timestamp, sequence_number
LIMIT 10

最初の行は、13:30:02.886 ETに記録された2つの立札(standing offers)として読みます。買い手の最良気配は、$83.3200株です。売り手の最良気配は、$83.31200株です。両者のスプレッドは1¢でした。

株数はタッチ時のサイズ(size at the touch)、つまり最良の2つの価格における表示流動性を示します。指定されたサイズを超える注文が出た場合、そのサイズが消化され、残りの分は板の次の価格で約定します。表示されているサイズは下限であり、全在庫ではありません。ダークプールを含め、2つの価格内またはその価格において、表示されていない注文が残っていることがよくあります。

次に、行を順に見ていきます。10件のレコードはすべて、最初のレコードから484.95ミリ秒以内に発生しています。配信スケジュールはありません。SIPは、最良気配が変化するたびに配信されます。行が生成される要因は、より良いビッド、より良いアスク、いずれかの最良価格における株数の変化、またはトップの取引所が別の取引所に置き換わった場合の4つのイベントのいずれかです。セッション全体の詳細については、マイクロストラクチャの詳細解説を参照してください。

NBBOに端株は含まれますか?

原則として含まれません。ナショナル・クオートはラウンドロットの注文のみで構成されます。ラウンドロット未満の注文は「端株(odd lot)」と呼ばれます。端株は、ナショナル・ベスト・ビッド(NBBO)よりも有利な価格で取引所の板に存在し、そこで約定することがありますが、NBBOには表示されません。

現在、ラウンドロットは一律100株ではありません。SECの改正Reg NMS引用規則に基づき、株価に応じて段階的に設定されています。250ドルまでは100株、250.01ドルから1,000ドルまでは40株、1,000.01ドルから10,000ドルまでは10株、それ以上は1株です。これらの区分はテープで確認できます。パネルには、6銘柄にわたる各価格帯のコンソリデーテッド・クオートに現れる最小のビッド・サイズが表示されます。

クエリNBBOの最小表示サイズ — 価格帯ごとの6銘柄
各数値の背後にある正確なSQL
WITH (
    SELECT max(session_date)
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
               countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime(today() - 10)
          AND window_start < toDateTime(today() - 3)
        GROUP BY session_date
        HAVING regular_bars = 390
    )
) AS last_session
SELECT ticker,
       round(quantileDeterministic(0.5)(toFloat64(bid_price), toUInt64(sequence_number)), 2) AS share_price,
       min(bid_size) AS smallest_quoted_size,
       round(quantileDeterministic(0.5)(toFloat64(bid_size), toUInt64(sequence_number)), 0) AS median_bid_size
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('F', 'KO', 'NVDA', 'AAPL', 'SPY', 'AZO')
  AND sip_timestamp >= toDateTime(last_session, 'America/New_York') + INTERVAL 10 HOUR
  AND sip_timestamp < toDateTime(last_session, 'America/New_York') + INTERVAL 11 HOUR
  AND bid_price > 0
  AND bid_size > 0
GROUP BY ticker
ORDER BY share_price

Fordは13.9付近で取引されていますが、この1時間において100株を下回るビッドは表示されませんでした。84.18のCoca-Colaも同様です。314.36のAppleは40まで減少します。3030.52のAutoZoneは10まで下がり、中央値として10のビッドが表示されます。フロアは価格帯を追跡します。より有利な価格の端株は、公開されているスプレッドの「内側」に表示されずに存在することがあるため、実際の最良価格がNBBOの示す価格よりも有利になる場合があります。

アプリの気配値がライブのNBBOと一致しない理由

スマートフォンに表示される気配値は、取引所のマッチングエンジンからSIP、データベンダー、ブローカー、そして画面へと伝送されます。各レコードには、取引所独自のタイムスタンプとSIPの公開時のタイムスタンプという2つの時刻が含まれており、その差が集約プロセスによる遅延となります。

クエリ取引所スタンプからSIPスタンプまでの集約時間(マイクロ秒)
各数値の背後にある正確なSQL
WITH (
    SELECT max(session_date)
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
               countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime(today() - 10)
          AND window_start < toDateTime(today() - 3)
        GROUP BY session_date
        HAVING regular_bars = 390
    )
) AS last_session
SELECT ticker,
       round(quantileDeterministic(0.5)((toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000.0, toUInt64(sequence_number)), 1) AS median_micros,
       round(quantileDeterministic(0.99)((toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000.0, toUInt64(sequence_number)), 1) AS p99_micros
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'KO')
  AND sip_timestamp >= toDateTime(last_session, 'America/New_York')
  AND sip_timestamp < toDateTime(last_session + 1, 'America/New_York')
  AND participant_timestamp > toDateTime64('2020-01-01 00:00:00', 9)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'NVDA', 'AAPL', 'KO'], ticker)

SPYの遅延の中央値は229.1マイクロ秒(100万分の1秒)であり、Appleは203.4でした。遅延の分布は、中央値よりも裾の部分が広くなっています。Nvidiaの99パーセンタイルは536.9マイクロ秒に達しました。SIPの遅延は、人間が感じるレベルの遅さではありません。遅延の原因は他に2つあります。

第一に、データが意図的に遅延されている可能性があります。リテール向けのアプリやチャートサイトで提供される無料の気配値フィードは、取引所のライセンス条項に基づき、通常15分遅延しています。リアルタイムのストリーミングは有料の権利です。

第二に、プロの運用会社はSIPを待ちません。各取引所は、自社のマッチングエンジンからのダイレクトフィードも販売しています。コロケーションを利用する企業は、SIPがイベントを公開する前にダイレクトフィードを読み取り、独自の最良気配値を算出します。この数マイクロ秒の優位性は、一日中両建てを行うマーケットメーカーにとって決定的な差となります。

NBBOの更新頻度:流動性の高い銘柄と低い銘柄の比較

上場銘柄にはすべてNBBOが存在し、その更新頻度は流動性の指標となります。以下の表は、取引量の多い4銘柄と、流動性の低い小型株2銘柄(Nathan's Famous (NATH) および Seneca Foods (SENEA))の直近のフルセッションにおける平均値を示しています。

クエリセッションあたりのNBBO更新数 — 高流動性4銘柄 vs 低流動性小型株2銘柄
各数値の背後にある正確なSQL
SELECT ticker,
       uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS sessions,
       round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) AS avg_updates_per_session,
       round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) / 1e6, 3) AS avg_updates_per_session_m,
       round((count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) / min(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) OVER (), 0) AS multiple_of_quietest
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH')
  AND sip_timestamp >= toDateTime(today() - 10)
  AND sip_timestamp < toDateTime(today() - 3)
  AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) IN (
      SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
      FROM global_markets.delayed_stocks_minute_aggs
      WHERE ticker = 'SPY'
        AND window_start >= toDateTime(today() - 10)
        AND window_start < toDateTime(today() - 3)
      GROUP BY session_date
      HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) = 390
  )
GROUP BY ticker
ORDER BY indexOf(['SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH'], ticker)

S&P 500 ETFであるSPYは、1セッションあたり平均で3.428 million回のNBBO更新がありました。これは表の中で最も更新頻度が低い銘柄の2031倍にあたります。Nvidiaは平均1.85 million回、Appleは1.336 million回でした。一方で、数値は急落します。Seneca Foodsの平均更新回数は8097回、Nathan's Famousは1688回でした。SPYのような更新速度を人間が画面で読み取ることは不可能です。NBBOはソフトウェア向けに構築されたフィードです。

NBBOの更新が最も速い時間帯:市場開始時か、それとも日中か

更新頻度には日次リズムがあります。このチャートは、AppleのNBBOの1分あたりの平均更新回数を30分ごとの時間枠(東部時間)で示しています。最終列は、各時間枠の値を9:30の値を100%とした時の割合として示しています。

クエリAAPL — 30分ごとの平均NBBO更新数 (ET, 4 a.m. to 8 p.m.)
各数値の背後にある正確なSQL
SELECT et_time,
       avg_updates_per_minute,
       round(100 * avg_updates_per_minute / maxIf(avg_updates_per_minute, et_time = '09:30') OVER (), 1) AS pct_of_opening_bucket
FROM (
    SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
           round(count() / (uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) * 30)) AS avg_updates_per_minute
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= toDateTime(today() - 10)
      AND sip_timestamp < toDateTime(today() - 3)
      AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) IN (
      SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
      FROM global_markets.delayed_stocks_minute_aggs
      WHERE ticker = 'SPY'
        AND window_start >= toDateTime(today() - 10)
        AND window_start < toDateTime(today() - 3)
      GROUP BY session_date
      HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) = 390
  )
    GROUP BY et_time
    HAVING et_time >= '04:00' AND et_time < '20:00'
)
ORDER BY et_time

寄り付きのオークション後の30分間において、Appleのナショナル・クオートの更新回数は1分あたり平均で5657回でした。10:00の時間枠では、その89.5%のペースを維持しました。その後、日中にかけて取引量は減少します。2:30の時間枠の更新回数は1分あたり1973回で、寄り付き時のペースの34.9%でした。大引けに向けた3:30の動きは、その一部を回復するにとどまり、1分あたり3345回、寄り付き時の59.1%でした。したがって、最も更新が活発だったのは、大引けではなく最初の1時間でした。定時取引時間外では、午後4:00のベル以降、更新回数は1分あたり17回まで低下し、取引はほぼ停止状態となります。

取引停止中のNBBOはどうなるのか?

株価が短時間に急激に変動した場合、リミット・アップ/リミット・ダウン(LULD)ルールにより5分間の取引停止措置が取られます。この際、気配値(クオート)が消滅したり、そのまま更新され続けたりすることはありません。更新が停止し、停止直前の記録が画面に表示されたままとなります。GameStop (GME) は2024年5月14日東部時間午前11:00直後にこの停止措置が発生しました。本パネルでは、停止前後における気配値の更新と取引を分単位で追跡しています。

クエリGME, 2024-05-14 — 5分間のLULD停止中の分間NBBO更新数および約定数
各数値の背後にある正確なSQL
WITH spine AS (
    SELECT toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_min
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
      AND window_start < toDateTime('2024-05-14 11:12:00', 'America/New_York')
),
gme_trades AS (
    SELECT toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_min,
           sum(transactions) AS trades
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'GME'
      AND window_start >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
      AND window_start < toDateTime('2024-05-14 11:12:00', 'America/New_York')
    GROUP BY et_min
),
gme_quotes AS (
    SELECT toStartOfMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min,
           count() AS nbbo_updates
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'GME'
      AND sip_timestamp >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
      AND sip_timestamp < toDateTime('2024-05-14 11:12:00', 'America/New_York')
    GROUP BY et_min
)
SELECT formatDateTime(spine.et_min, '%H:%i') AS et_time,
       ifNull(gme_quotes.nbbo_updates, 0) AS nbbo_updates,
       toUInt64(ifNull(gme_trades.trades, 0)) AS trades
FROM spine
LEFT JOIN gme_quotes ON gme_quotes.et_min = spine.et_min
LEFT JOIN gme_trades ON gme_trades.et_min = spine.et_min
ORDER BY spine.et_min

停止前の1分間において、11:00、GameStopのコンソリデーテッド・クオートは12419件の取引に対し、4511回更新されました。その後、両方の数値が急減します。0件の気配値記録が11:02件、0件の取引が11:03件となり、それに対応する取引は0件でした。これは、取引が停止した銘柄において、気配値の動きも止まったことを意味します。取引再開の11:06には、4155件の更新と14007件の取引が発生し、表の中で最も取引が活発な分となりました。取引停止中の銘柄の最終的なNBBOは、取引可能な価格ではなく、過去の記録(化石)となります。2021年1月のGameStopのセッションでは、このような連続的な停止がティックデータにどのような影響を与えるかが示されています。

ブローカーがNBBOまたはそれ以上の価格で約定させるべき理由

NBBOは規制上のベンチマークです。2005年に採択されたSECの市場構造規則であるRegulation NMSには、注文保護規則であるRule 611が含まれています。これにより、取引所は他の取引所に表示されている保護された気配値(protected quote)よりも不利な価格で執行することはできません。また、ブローカーは顧客に対して最良執行(best execution)の義務を負います。これはNBBOを基準として測定されます。成行買いの場合は全国最良売気配(national best ask)以下、成行売りの場合は全国最良買気配(national best bid)以上で約定する必要があります。

多くの個人投資家が見落としている点があります。それは、成行注文が取引所に到達することは通常ないという点です。ほとんどの個人による成行注文は、執行の権利に対して対価を支払うオフエクスチェンジのマーケットメーカーであるホールセラー(卸売業者)にルーティングされ、内部で執行されます。その後、オフエクスチェンジの報告施設に記録されます。ホールセラーも依然としてNBBOの規制を受けます。ホールセラーは執行の瞬間に全国の気配値と同等またはそれ以上の価格で一致させる必要があり、スプレッド内で数セントの価格改善(price improvement)を行うことで、注文の獲得競争を行います。NBBOは取引所ではなく、参照価格です。選択した注文タイプによって、スプレッドを挟んで約定するかどうかが決まります。

FAQ

NBBOに端株(odd lots)は含まれますか?

含まれません。ナショナル・クオートはラウンドロットの引用価格のみで構成されます。Reg NMSでは、価格に応じてラウンドロットの定義が異なります。250ドル未満は100株、10,000ドル超は1株となります。Fordの最小買い気配は100株でしたが、株価の高いAutoZoneは10株でした。より有利な価格の端株は、公開されているスプレッド内に存在しますが、表示はされません。

証券アプリの価格がリアルタイムのNBBOと異なるのはなぜですか?

理由は2つありますが、いずれもSIPのせいではありません。取引所のライセンス規則により、無料の個人向けフィードは通常15分遅延しています。リアルタイムデータを利用するには料金が必要です。また、コンソリデート・データは公開されたスナップショットです。SPYの中央値におけるコンソリデーション工程の所要時間は229.1マイクロ秒でしたが、取引所のダイレクト・フィードを利用する企業は、これよりも早く事象を検知します。

銘柄の取引が停止(ハルト)されるとNBBOはどうなりますか?

価格は固定されます。GameStopが5分間のリミット・アップ/リミット・ダウンによる一時停止を行っていた際、テープには11:03秒間に0回のクオート更新と0回の取引が記録されました。最後のクオートは画面に表示され続けますが、取引はできません。次のクオートは再開オークションによって設定されます。

時間外取引中もNBBOは存在しますか?

はい。コンソリデート・クオートは東部時間午前4時から午後8時まで配信されるため、プリマーケットおよびアフターアワーズ取引を通じてナショナル・クオートが存在します。ただし、日中のペースとは大きく異なります。プリマーケットの最後の1分間におけるAppleの更新数は65回に対し、取引開始後の更新数は5657回でした。

データに関する注記:ウィンドウとフィルタ

ローリング・ウィンドウは、生成の3日前に終了します(フィードの最前段に短い取り込み遅延があります)。また、SPYが390分の定時取引バーをすべて記録した日のみ、完全なセッションとしてカウントします。Coca-Colaのパネルでは、片方向(one-sided)およびクロスしたレコードは除外されています。カウント用パネルはすべてのレコードをそのまま処理します(除外されたレコードはロックおよびクロスした市場で確認できます)。GameStopのパネルは特定の日付に固定されており、SPYの分足が基準となっているため、停止中の分はゼロとして表示されます。


すべてのパネルには、生成に使用されたSQLが付属しています。SQLを開き、任意のティッカーに置き換えて、StrasmoreターミナルでNBBOの更新回数を確認してください。