株式と指数のプット/コール比率、何が高い?
株式と指数ではプット/コール比率の通常レンジが異なります。算出方法や指数の数値が高くなる理由、比較に必要な条件を解説します。
プット/コールレシオが高いことを示す数値は、一つではありません。同じオプション取引データから、少なくとも三つの指標が公表されています。一つは個別株オプションだけを集計します。もう一つは指数商品だけを集計します。三つ目は両方を合算します。それぞれ通常のレンジが異なるため、1.20という数値が、ある系列では異常値でも、別の系列では通常の取引日を示すことがあります。この指標自体が初めてであれば、プット/コールレシオが何を示すかで基本を確認できます。
なぜ指数のプット/コール比率は株式の比率より高くなるのか
まず、誰が買っているかを考える。指数プットは、分散されたポートフォリオ全体をカバーできる、最も安価な単一商品である。四百銘柄を保有するファンドが、四百銘柄それぞれのプットを買うことはない。指数のプットを買い、カレンダーに沿ってロールし、プレミアムを保険コストとして計上する。この取引量は、ファンドがすでに保有する株式に対するヘッジであり、運用担当者が強気かどうかにかかわらず発生する。
個別株オプションは、取引の構成が異なる。取引量の多くは個別銘柄のコール買いであり、カバードコールの売りが反対側のコール取引をさらに増やす。個別銘柄のプット買いも実際に存在するが、より大きなコールフローの隣に位置している。
この計算式では、こうしたフローを区別できない。ヘッジ中心のプットフローを、薄いコールフローで割れば、商は1.00前後またはそれ以上になる。控えめなプットフローを、厚いコールフローで割れば、0.50前後になる。一つの計算式でも、通常のレンジは二つある。
下のパネルでは、主要銘柄八銘柄と広範な市場を対象とするETF四本について、直近六十セッションの契約取引量を集計し、それぞれの原資産についてプット取引量をコール取引量で割っている。
各数値の背後にある正確なSQL
SELECT
underlying_symbol AS symbol,
if(underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'),
'broad-market ETF',
'single stock') AS bucket,
round(sumIf(volume, startsWith(lower(option_type), 'p'))
/ sumIf(volume, startsWith(lower(option_type), 'c')), 2) AS put_call_ratio,
round(sumIf(volume, startsWith(lower(option_type), 'c')) / 1e6, 1) AS call_volume_millions,
round(sumIf(volume, startsWith(lower(option_type), 'p')) / 1e6, 1) AS put_volume_millions
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 60
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
GROUP BY symbol
HAVING sumIf(volume, startsWith(lower(option_type), 'c')) > 0
ORDER BY put_call_ratio ASCサンプル内の差は大きい。最低値は0.43のMSFTで、最高値は2.86のIWMである。この銘柄では、対象期間中にコール契約が9.6百万枚取引された。bucket列は、各行が個別株か広範な市場を対象とするETFかを示している。比率列は、この区分と照らし合わせて読む必要がある。
先に一つ注意点がある。公表されている指数比率は、指数そのものを対象とするオプションを用いる。満期時には株式を受け渡さず、現金決済される。小口指数オプションは、この契約の想定元本を小さくしたものである。ここでのパネルは、同じヘッジフローに対応する原資産の代替として、広範な市場を対象とするETFオプションを用いている。まさにこの点で、データベンダー間に見解の違いがある。
各公表比率は何を集計しているのか
- 株式のみ:個別企業の株式を対象とするオプションです。単一銘柄のフローを示し、多くのセッションでコールが中心となります。
- 指数のみ:指数水準を対象とするオプションです。現金決済で、ポートフォリオ・ヘッジの取引量の大部分を占めます。
- 合計:両方の区分に含まれるすべての契約です。コールを上回るプットの取引量を示します。
三つの比率はいずれも取引量を集計します。つまり、セッション中に受け渡しされた契約数であり、その後も未決済のまま残るポジションではありません。取引量と未決済建玉の違いで、この二つの概念を区別しています。
プット/コール総合比率は、他の二つの平均ですか?
いいえ。総合比率は加重平均であり、重みはコール取引高です。両方のバケットにおけるコール取引高のうち、指数バケットが占める割合を w とします。総合比率は、株式バケットの比率に、二つの比率の差へ w を乗じた値を加えたものです。指数バケットのコール取引高がごく一部であれば、総合比率は株式バケットの比率にほぼ一致します。指数バケットが大半を占めると、総合比率は指数バケットの比率に近づきます。
次のパネルでは、両構成要素を実測した六十セッションの水準に固定し、w をゼロから一〇〇%まで変化させます。
各数値の背後にある正確なSQL
WITH components AS
(
SELECT
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')), 3) AS equity_ratio,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')), 3) AS index_ratio
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 60
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
HAVING sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
AND sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
)
SELECT
concat(toString(step * 10), '%') AS index_share_of_call_volume,
equity_ratio,
index_ratio,
round(equity_ratio + (index_ratio - equity_ratio) * (step / 10), 3) AS blended_total_ratio
FROM
(
SELECT
equity_ratio,
index_ratio,
arrayJoin(range(11)) AS step
FROM components
)
ORDER BY step構成要素を 0.562 と 1.396 に固定すると、指数バケットのコール取引高がゼロの場合、加重平均は 0.562 となり、すべてを指数バケットが占める場合は 1.396 となります。均等配分、つまり指数バケットがコール取引高の 50% を占める場合、総合比率は 0.979 です。十一行を通じて、どちらの構成要素も変化していません。変わったのは配分だけです。
両方の内訳が低下しているのに、合計比率が上昇することはあるか
ある。これが、単一の見出し数値に潜む落とし穴だ。算術を分かりやすくするため、概数を使った仮想的な二セッションの例を示す。
一日目:株式バケットではコールを1,000,000枚、プットを600,000枚取引し、比率は0.60だった。指数バケットではコールを200,000枚、プットを280,000枚取引し、比率は1.40だった。合計では、コール1,200,000枚に対してプット880,000枚、比率は0.73となる。
二日目:両方の比率が低下した。株式バケットはコール600,000枚、プット330,000枚で0.55。指数バケットはコール800,000枚、プット1,040,000枚で1.30だった。合計では、コール1,400,000枚に対してプット1,370,000枚、比率は0.98となる。
両方の内訳は低下した。それでも合計は0.25ポイント上昇した。変化したもう一つの要素は、高い比率のバケットに属するコール出来高の割合で、17%から57%へ上昇した。合計だけを見ていた読者は、どちらのバケットでも生じていないプット取引の急増を記録することになる。
この割合は、実際のデータでは一定ではない。下のパネルは、セッションごとに両バケットの比率と、ETFバケットがコール出来高に占める割合を追跡している。
各数値の背後にある正確なSQL
SELECT
toString(date) AS session_date,
formatDateTime(date, '%b %e') AS session_label,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS equity_ratio,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS index_style_ratio,
round(index_style_ratio - equity_ratio, 2) AS ratio_gap,
round(100 * sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c')), 1) AS etf_share_of_calls_pct
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 45
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
GROUP BY date
HAVING sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
AND sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
ORDER BY date表示対象の最初のセッションであるJun 29には、単一株バケットの比率は0.5、ETFバケットは1.55となり、その差は1.05だった。コール出来高に占めるETFバケットの割合は45.2%だった。Aug 12には、各列の数値は0.55、1.34、差は0.79となり、ETFの割合は49.5%だった。表示された32セッションの両端で差の列はプラスであり、その下で割合の列が動いている。
なぜ同じ日のプット・コール比率が、情報源によって異なるのですか?
分類方法が異なるためです。ETFオプションがその典型です。ETFは上場証券であるため、株式に分類する根拠があります。一方で、指数に連動するため、指数に分類する根拠もあります。情報提供会社によって処理は異なります。ETFオプションを株式比率に含める会社もあれば、上場商品として別系列で報告する会社もあります。指数商品とまとめる会社もあります。どの場合も、チャート上のラベルは同じに見えます。
この選択による差は測定できます。下のパネルでは、同じセッションについて、ある分類の比率を二通り計算しています。一方はETFオプションを除外し、もう一方はETFオプションを含めています。
各数値の背後にある正確なSQL
SELECT
toString(date) AS session_date,
formatDateTime(date, '%b %e') AS session_label,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS equity_ratio_etfs_excluded,
round(sumIf(volume, startsWith(lower(option_type), 'p'))
/ sumIf(volume, startsWith(lower(option_type), 'c')), 2) AS equity_ratio_etfs_included
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 30
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
GROUP BY date
HAVING sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
ORDER BY dateAug 12のパネル最終セッションでは、個別株のみの数値は0.55、ETFオプションを含めた数値は0.94でした。同じ日で、同じ売買データを使っていても、軸上の表記は同じです。ある情報提供会社の系列から導いた閾値を、別の会社の系列にそのまま適用することはできません。
どの程度ならプット・コールレシオは高いのか
実務上の基準は限定的です。レシオは、同じデータソースと同じ算出方法による過去の推移とのみ比較します。パーセンタイルを使えば、同じ系列の過去一年間における今日の値の位置を確認できます。一方、1.00という固定ラインでは不十分です。株式の系列では1.00が極端な値でも、指数の系列では通常の水準になり得るためです。
比較の妥当性を保つには、二つの点に注意します。まず、数値を引用する前に算出方法の注記を確認します。特にETFの扱いが重要です。次に、合計値だけでなく構成要素も併せて確認します。構成比の変化だけで合計値が動くことがあるためです。高いプット・コールレシオは強気材料かでは解釈をさらに掘り下げ、プット・コールレシオの計算方法では算出手順を段階的に説明します。
データ注記と区分の定義
ETF区分はSPY、QQQ、IWM、DIAです。個別株区分はAAPL、MSFT、NVDA、AMZN、TSLA、JPM、KO、JNJです。いずれも各カテゴリーの一部を抽出したサンプルであり、市場全体ではありません。そのため、ここで示す水準は区分の違いを示すもので、いずれかの情報提供会社が公表する代表値を再現するものではありません。
各パネルでは、セッションごとの契約出来高をコールとプットに分けて合計し、その後に割り算を行います。ドル金額やプレミアムによる加重はありません。
各期間の起点は暦日ではなく、出来高が記録された直近のセッションです。また、プットとコールは契約タイプの先頭文字で照合します。そのため、データフィードがputやcallではなくPやCと表記していても、正しく区分できます。
対象契約は、当該セッションで出来高が記録されていれば集計します。大幅なアウト・オブ・ザ・マネーの行使価格も含みます。遠い行使価格はヘッジ目的のプット出来高で大きな比率を占めるため、これを除外するとETF区分を過小評価することになります。
指数水準を対象とするオプションは、現金決済で欧州型行使の別商品です。原資産別のパネルでは、上記で示した区分の論点に合わせ、指数ヘッジフローの代替としてETFオプションを使用しています。
直近のセッションまたは二セッションは、その日の記録が反映されるまで、データの先頭部分で欠落する場合があります。
よくある質問
株式オプションの通常のプット/コールレシオはどの程度ですか?
単一銘柄のオプションは通常、1.00を下回る水準で取引されます。大半のセッションでは、コールの出来高が多い側です。上記の直近60セッションのパネルに含まれる12銘柄では、最低値は0.43でした。個別のシリーズにとっての通常水準は、共通の基準値ではなく、そのシリーズ固有の過去推移によって決まります。
なぜ指数のプット/コールレシオは通常1を上回るのですか?
指数プットはポートフォリオの標準的なヘッジ手段です。すでに株式を保有している運用者が、一定のスケジュールで買い付けます。このヘッジ取引の出来高は、方向性取引で使われる同じ分数のプット側に計上されます。そのため、シリーズ全体を通じて高い水準になります。
センチメントチャートでは、通常どのプット/コールレシオが表示されますか?
公表されているチャートの多くは、総合系列または株式のみの系列を示しています。しかし、どちらかを軸ラベルで明記していないケースも少なくありません。別の場所で示された基準値とチャートを比較する前に、算出方法の注記を確認してください。系列ごとに水準が異なるためです。
異なる二つのプロバイダーのプット/コールレシオを比較できますか?
水準をそのまま比較することはできません。プロバイダーによって、ETFの扱いや出来高を集計する取引所が異なります。比較に有効なのは、同一プロバイダーの系列内における方向性とパーセンタイル順位です。
ここに掲載した各パネルには、生成に使ったSQLが付属しています。そのため、対象ユニバースや期間を変えて、これらの集計を再構築できます。Strasmore terminalで同じ質問を平易な英語で入力してください。