آیا نسبت بالای put/call صعودی است؟
دیدگاه خلافگرایانه نسبت بالای put/call را صعودی میداند. باندهای صدکی اختیار سهام و شاخص را ببینید و بررسی کنید پس از قرائتهای افراطی چه رخ داد.
نسبت بالای put/call، قرائت کلاسیکِ صعودی از دیدگاه خلافگرایانه است: خرید غیرمعمول و سنگین اختیار فروش، نشانهای تلقی میشود از اینکه عموم معاملهگران از قبل خود را برای افت قیمت آماده کردهاند. با این حال، اقدام بر اساس این برداشت با یک مشکل روبهروست. «بالا» مقدار ثابتی ندارد و عدد 1٫15 روی صفحه شما میتواند در اختیار معاملههای تکسهمی یک مقدار افراطی، اما در محصولات شاخصی یک جلسه معاملاتی عادی باشد.
برای پاسخ به این پرسش، به یک توزیع مرجع نیاز است. این صفحه برای هر دو گروه داده، یک توزیع مرجع ارائه میکند و سپس پیامد قرائتهای بالا را میسنجد. توضیح نسبت put/call نحوه محاسبه این نسبت را شرح میدهد و تمام مطالب زیر بر همان تعریف استوار است.
در مورد روش اندازهگیری، دو نکته را باید در نظر گرفت. هر نسبتی در اینجا قراردادهای معاملهشده در همان روز را شمارش میکند؛ بنابراین با یک نسبت حجمی روبهرو هستیم. بهره باز، موقعیتهایی را میشمارد که هنوز باز هستند و در سطحی متفاوت قرار دارد؛ مطلب حجم در برابر بهره باز تفاوت این دو را توضیح میدهد. ارقام همچنین از یک سبد ثابت به دست آمدهاند: ده نماد تکسهمی شناختهشده در برابر سه ETF بازار گسترده، نه از کل جریان معاملات بازار. بنابراین شکل توزیع را بررسی کنید، نه آخرین رقم اعشار را.
چه نسبتی از put/call بالا محسوب میشود؟
صدک به پرسشی پاسخ میدهد که یک سطح بهتنهایی نمیتواند. منحنی زیر همه نشستهای معاملاتی از ژانویه 2022 تا ژوئیه 2026 را پوشش میدهد؛ برای هر دفتر، یک نسبت در هر نشست.
کد دقیق SQL پشت هر عدد
WITH book_days AS (
SELECT date AS day,
if(underlying_symbol IN ('SPY', 'QQQ', 'IWM'), 'index_etf', 'equity') AS book,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
FROM global_markets.options_greeks
WHERE date >= toDate('2022-01-01')
AND date <= toDate('2026-07-31')
AND volume > 0
AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMZN',
'META', 'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
GROUP BY day, book
HAVING call_volume > 0
),
paired AS (
SELECT day,
toFloat64(sumIf(put_volume, book = 'equity'))
/ toFloat64(sumIf(call_volume, book = 'equity')) AS equity_pcr,
toFloat64(sumIf(put_volume, book = 'index_etf'))
/ toFloat64(sumIf(call_volume, book = 'index_etf')) AS index_pcr
FROM book_days
GROUP BY day
HAVING sumIf(call_volume, book = 'equity') > 0
AND sumIf(call_volume, book = 'index_etf') > 0
),
curves AS (
SELECT arrayMap(v -> round(v, 2),
quantilesDeterministic(0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95, 0.99)
(equity_pcr, cityHash64(day))) AS eq,
arrayMap(v -> round(v, 2),
quantilesDeterministic(0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95, 0.99)
(index_pcr, cityHash64(day))) AS idx
FROM paired
)
SELECT z.1 AS percentile,
z.2 AS equity_pcr,
z.3 AS index_etf_pcr
FROM (
SELECT arrayJoin(arrayZip(['p05', 'p10', 'p25', 'p50', 'p75', 'p90', 'p95', 'p99'], eq, idx)) AS z
FROM curves
)در سبد تکسهمی، نسبت میانه در هر نشست 0.67 put به ازای هر call بود. دهک بالایی نشستها از 0.89 آغاز شد و افراطیترین یک درصد از 1.34 فراتر رفت. بخش آرام توزیع نیز برای کالیبراسیون به همان اندازه مفید است: از هر 20 نشست، یکی در 0.48 یا پایینتر به پایان رسید.
ستون ETF در همه نقاط منحنی توزیع متفاوتی دارد. نسبت میانه آن 1.45 بود؛ رقمی بالاتر از خط one-to-one که میانه سبد تکسهمی بهمراتب پایینتر از آن قرار دارد. دهک بالایی این ستون نیز از 1.77 آغاز شد. بیان یک نسبت بدون مشخصکردن دفتر مربوط، تقریباً بیمعناست. عدد 1.15 بسته به اینکه از کدام ستون آمده باشد، دو معنای متفاوت دارد.
چرا نسبت بالاتر از یک در شاخصها عادی است، اما در سهام عادی نیست
با تفکیک همین حجم معاملات بر اساس دارایی پایه، سطوح بهروشنی از یکدیگر جدا میشوند.
کد دقیق SQL پشت هر عدد
WITH symbol_days AS (
SELECT underlying_symbol AS symbol,
date AS day,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
FROM global_markets.options_greeks
WHERE date >= toDate('2026-01-01')
AND date <= toDate('2026-07-31')
AND volume > 0
AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMZN',
'META', 'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
GROUP BY symbol, day
HAVING call_volume > 0
)
SELECT symbol,
round(toFloat64(sum(put_volume)) / toFloat64(sum(call_volume)), 2) AS put_call_ratio,
round(100 * countIf(put_volume > call_volume) / count(), 1) AS above_one_pct,
count() AS observations
FROM symbol_days
GROUP BY symbol
ORDER BY put_call_ratio DESCدر هفت ماه نخست سال 2026، IWM با ثبت 2.73 اختیار فروش بهازای هر اختیار خرید در صدر جدول قرار گرفت و در 98.6% مورد از 144 جلسه معاملاتی خود، نسبت بالاتر از یک داشت. در پایین جدول، XOM با نسبت 0.38 معامله شد و این نسبت در 2.8% درصد از جلسات بالاتر از یک بود.
این شکاف ساختاری است. اختیارهای ETFهای بازار گسترده محل انجام پوشش ریسک پرتفوی هستند. مدیری که دویست موقعیت معاملاتی دارد، بهجای خرید اختیار فروش برای هر سهم، اختیار فروش شاخص میخرد. این جریان نیز الزاماً معامله اختیار خرید متناظری در کنار خود ندارد. حجم معاملات اختیار سهام منفرد در جهت دیگری متمایل است؛ یعنی خرید اختیار خرید برای بهرهگیری از رشد قیمت و فروش اختیار خرید در برابر سهامی که از قبل در مالکیت معاملهگر است. نسبت «کل» هر دو دسته معاملات را با هم ترکیب میکند. در نتیجه، این نسبت بین دو سطح قرار میگیرد و بهاندازه احساسات بازار، از ترکیب محصولات معاملهشده در همان روز نیز تأثیر میپذیرد.
تغییر سطح دیگری نیز وجود دارد که باید به آن توجه کرد. اکنون بخش بزرگی از حجم معاملات شاخصها و ETFها به سررسیدهای همانروز، یعنی اختیارهای 0DTE، اختصاص دارد؛ دستهای که هنگام تدوین آستانههای رایج، در مقیاسی مشابه امروز معامله نمیشد. سطوح قدیمی را نمیتوان به بازاری با ترکیب متفاوت تعمیم داد.
آیا نسبت put/call بالا نشانه صعودی است؟ پس از مقادیر حدی چه رخ داد
مبنای رویکرد خلافنگر قابلآزمون است. هر جلسه معاملاتی را بر اساس نسبت سهام همان روز به پنج گروه تقسیم کنید، سپس تغییرات شاخص S&P 500 را طی پنج و 20 جلسه بعد اندازه بگیرید.
کد دقیق SQL پشت هر عدد
WITH raw AS (
SELECT date AS day,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
FROM global_markets.options_greeks
WHERE date >= toDate('2022-01-01')
AND date <= toDate('2026-07-31')
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'META',
'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
GROUP BY day
HAVING call_volume > 0
),
equity_pcr AS (
SELECT day, toFloat64(put_volume) / toFloat64(call_volume) AS pcr
FROM raw
),
spy_daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
toFloat64(argMax(close, window_start)) AS close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2022-01-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-08-01')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY day
),
forward AS (
SELECT day,
close,
any(close) OVER (ORDER BY day ASC ROWS BETWEEN 5 FOLLOWING AND 5 FOLLOWING) AS close_5,
any(close) OVER (ORDER BY day ASC ROWS BETWEEN 20 FOLLOWING AND 20 FOLLOWING) AS close_20
FROM spy_daily
),
joined AS (
SELECT p.day AS day,
p.pcr AS pcr,
100 * (f.close_5 / f.close - 1) AS fwd_5d_pct,
100 * (f.close_20 / f.close - 1) AS fwd_20d_pct
FROM equity_pcr AS p
INNER JOIN forward AS f ON p.day = f.day
WHERE f.close_5 > 0 AND f.close_20 > 0
),
cuts AS (
SELECT quantilesDeterministic(0.2, 0.4, 0.6, 0.8)(pcr, cityHash64(day)) AS q
FROM joined
)
SELECT multiIf(pcr < q[1], 'lowest fifth',
pcr < q[2], 'second fifth',
pcr < q[3], 'middle fifth',
pcr < q[4], 'fourth fifth',
'highest fifth') AS pcr_band,
count() AS observations,
round(min(pcr), 2) AS band_floor_ratio,
round(quantileDeterministic(0.5)(fwd_5d_pct, cityHash64(day)), 2) AS fwd_5d_median_pct,
round(quantileDeterministic(0.5)(fwd_20d_pct, cityHash64(day)), 2) AS fwd_20d_median_pct,
round(quantileDeterministic(0.25)(fwd_20d_pct, cityHash64(day)), 2) AS fwd_20d_p25_pct,
round(quantileDeterministic(0.75)(fwd_20d_pct, cityHash64(day)), 2) AS fwd_20d_p75_pct
FROM joined CROSS JOIN cuts
GROUP BY pcr_band
ORDER BY band_floor_ratio ASCآرامترین یکپنجم جلسات از 0.34 آغاز میشود و شلوغترین یکپنجم از 0.81؛ بنابراین، نوار بالایی شامل تمام قرائتهایی است که یک معاملهگر خلافنگر آنها را بیشازحد کشیده میداند. در میان آن 226 جلسه، میانه تغییرات 20جلسهای 3% بود؛ در مقابل، این رقم پس از آرامترین یکپنجم 0.91% بود. پس از پنج جلسه، همین دو گروه بهترتیب 0.82% و 0.3% بودند.
میانهها بخش مهم ماجرا را پنهان میکنند. در یکپنجم بالایی، نیمه میانی نتایج 20جلسهای از -1.82% تا 5.71% بود. در آرامترین یکپنجم، نیمه میانی از -0.83% تا 2.67% قرار داشت. این دو دامنه بخش بزرگی از محدوده یکسانی را پوشش میدهند. گروهی که یک جلسه در آن قرار میگیرد، مرکز توزیع را جابهجا میکند؛ اما دامنه پیرامون آن مرکز را، که در قواعد سرانگشتی نادیده گرفته میشود، تقریباً محدود نمیکند.
یک نکته درباره وزن مشاهدات وجود دارد. دوره ژانویه 2022 تا ژوئیه 2026 شامل یک بازار نزولی و روند بهبود پس از آن است و در هر گروه تقریباً 226 جلسه قرار دارد. این نمونهای واقعی است، اما فقط یک مقطع از تاریخ بازار را پوشش میدهد.
آیا قرائتهای افراطی در کفهای بازار خوشهای میشوند؟
این قرائتها در ماههای کاهشی خوشهای میشوند؛ اما این ادعای متفاوتی است. همه ماهها از سال 2022 به بعد را بر اساس تغییرات شاخص درون هر ماه گروهبندی کنید، سپس بشمارید چند قرائت put/call در دهک بالایی در هر گروه قرار گرفته است.
کد دقیق SQL پشت هر عدد
WITH raw AS (
SELECT date AS day,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,
sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume
FROM global_markets.options_greeks
WHERE date >= toDate('2022-01-01')
AND date <= toDate('2026-07-31')
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'META',
'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')
GROUP BY day
HAVING call_volume > 0
),
equity_pcr AS (
SELECT day, toFloat64(put_volume) / toFloat64(call_volume) AS pcr
FROM raw
),
cut AS (
SELECT quantileDeterministic(0.90)(pcr, cityHash64(day)) AS p90
FROM equity_pcr
),
by_month AS (
SELECT toStartOfMonth(day) AS month_start,
countIf(pcr >= cut.p90) AS extreme_reads,
quantileDeterministic(0.5)(pcr, cityHash64(day)) AS median_pcr
FROM equity_pcr CROSS JOIN cut
GROUP BY month_start
),
spy_daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
toFloat64(argMax(close, window_start)) AS close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2022-01-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY day
),
spy_month AS (
SELECT toStartOfMonth(day) AS month_start,
100 * (argMax(close, day) / argMin(close, day) - 1) AS move_pct
FROM spy_daily
GROUP BY month_start
)
SELECT multiIf(s.move_pct <= -3, 'index down 3% or more',
s.move_pct < 0, 'index down under 3%',
s.move_pct < 3, 'index up under 3%',
'index up 3% or more') AS index_move_bucket,
count() AS observations,
round(avg(m.extreme_reads), 1) AS top_decile_reads_avg,
round(quantileDeterministic(0.5)(m.median_pcr, cityHash64(m.month_start)), 2) AS typical_pcr_ratio
FROM by_month AS m
INNER JOIN spy_month AS s ON m.month_start = s.month_start
GROUP BY index_move_bucket
ORDER BY min(s.move_pct) ASCماههایی که شاخص در پایان آنها 3 درصد یا بیشتر کاهش یافت، بهطور میانگین 4.2 قرائت در دهک بالایی داشتند؛ این رقم در ماههایی که شاخص 3 درصد یا بیشتر رشد کرد، 1.9 بود. میانه قرائت روزانه هر گروه در ستون آخر قرار دارد؛ برای بدترین گروه 0.75 و برای بهترین گروه 0.62. دو سر جدول بهترتیب شامل 12 و 22 ماه هستند.
قرائتهای افراطی put/call و افت قیمتها همزمان ظاهر میشوند. این هموقوعی است و ارزش آن را باید در ارقام پیشنگر بخش قبل سنجید. این نسبت، سنجهای مربوط به همان روز و نوار معاملات همان روز است؛ بنابراین جهشهای آن در دل افتها رخ میدهند، نه پیش از آنها. «کف» برچسبی است که بعداً به این وضعیت زده میشود.
سنجش یک سطح در برابر توزیع
از اعداد بالا، دو عادت حاصل میشود.
نخست، موارد مشابه را با یکدیگر مقایسه کنید. یک سنجه فقط در مقایسه با سابقه همان مجموعهداده در یک بازه زمانی قابلمقایسه معنا دارد؛ و این دقیقاً همان چیزی است که جدول صدکی ارائه میکند، نه آستانهای که صرفاً به خاطر سپرده شده باشد.
دوم، مخرج کسر را زیر نظر بگیرید. اگر حجم اختیار خرید افزایش یابد، حتی در صورت ثابت ماندن خرید اختیار فروش، این نسبت کاهش پیدا میکند. کاهش یا جهش نسبت میتواند فقط از حرکت یکی از دو طرف کسر ناشی شود. بنابراین، بررسی جداگانه حجم اختیار فروش و حجم اختیار خرید باعث میشود محاسبات شفاف بماند.
همین انضباط درباره هر سنجه احساسات بازار که بهصورت یک عدد خام گزارش میشود نیز صدق میکند. شاخص VIX و یک سنجه 30درصدی از نوسان ضمنی بدون توزیعهای مربوط به خود قابل تفسیر نیستند. همچنین، قواعد احساسات خلافگرا تنها زمانی در برابر دادهها اعتبار دارند که سطح مرجع اندازهگیری شده باشد، نه اینکه صرفاً مفروض گرفته شود.
پرسشهای متداول
آیا نسبت put/call بالا نشانه صعودی بودن بازار است؟
برداشت خلافگرایانه این است که خرید سنگین put نشان میدهد معاملهگران از پیش برای ریزش قیمت موضع گرفتهاند. در مقایسه با سبد تکسهمی بالا، در جلساتی که نسبت در یکپنجم بالایی قرائتها قرار داشت، میانه حرکت 20جلسهای بعدی در شاخص S&P 500 برابر با 3% بود؛ این رقم پس از آرامترین یکپنجم، به 0.91% رسید. نیمی از نتایج یکپنجم بالایی نیز در دامنه -1.82% تا 5.71% قرار داشتند.
نسبت عادی put/call چقدر است؟
این موضوع کاملاً به اختیارهایی بستگی دارد که در محاسبه لحاظ میشوند. در سبدی متشکل از 10 سهم شناختهشده، میانه نسبت در جلسات معاملاتی از سال 2022 تا ژوئیه 2026، 0.67 put به ازای هر call بود. در سه ETF بازار گسترده طی همان جلسات، میانه این نسبت 1.45 بود.
چرا نسبت put/call شاخص از نسبت put/call سهام بیشتر است؟
اختیارهای شاخصهای گسترده و ETFها ابزار استاندارد پوشش ریسک پرتفوی هستند. معاملهگری که برای پوشش ریسک put شاخص میخرد، لزوماً معامله متناظری در call کنار آن ندارد. در مقابل، حجم معاملات تکسهمها بیشتر به خرید call برای بهرهگیری از رشد قیمت و فروش call روی سهام از قبل خریداریشده متمایل است. این موضوع نسبت آن سبد را پایینتر نگه میدارد.
آیا نسبت put/call برای زمانبندی بازار کاربرد دارد؟
اندازهگیری بالا توزیع نتایج پس از هر یکپنجم از قرائتها را نشان میدهد. دامنه نتایج در هر گروه بسیار گستردهتر از فاصله میان میانه گروههاست. قرائتهای واقع در یکدهم بالایی نیز بیشتر در ماههایی دیده میشوند که شاخص با کاهش به کار خود پایان داده است؛ این نرخ در بدترین گروه، 4.2 در ماه بوده است.
تفاوت نسبت put/call بر مبنای حجم معاملات با نسبت مبتنی بر موقعیتهای باز چیست؟
نسبت حجمی، قراردادهای معاملهشده در طول یک جلسه را میشمارد. بنابراین هر روز از نو محاسبه میشود و سریع واکنش نشان میدهد. نسبت مبتنی بر موقعیتهای باز، موقعیتهای همچنان باز را میشمارد؛ این موقعیتها آهستهتر تغییر میکنند و در سطح خاص خود قرار دارند. این دو نسبت قابل جایگزینی با یکدیگر نیستند. استفاده از آستانهای که برای یکی از آنها تعیین شده باشد در مورد دیگری، به برداشت نادرست منجر میشود.
این اعداد چگونه محاسبه میشوند
- منبع داده، برای هر قرارداد اختیار و هر جلسه معاملاتی، یک ردیف شامل حجم معاملات همان جلسه است. putها و callها از کد قرارداد OCC تفکیک میشوند. در این کد، 8 نویسه پایانی نشاندهنده قیمت اعمال هستند و نویسه پیش از آن برای call، حرف C و برای put، حرف P است. برای مشاهده جدول و فیلترهای دقیق، SQL زیر هر پنل را باز کنید.
- تمام نسبتهای این صفحه، نسبت حجمی هستند. موقعیتهای باز در محاسبات لحاظ نشدهاند؛ بنابراین هیچیک از اعداد این صفحه نسبت مبتنی بر موقعیتهای باز نیست.
- هیچ فیلتر کیفی برای نوسان ضمنی اعمال نشده است. قراردادها تنها بر اساس حجم معاملات وارد محاسبه میشوند، زیرا این پنلها فعالیت معاملاتی را میشمارند، نه اینکه نوسان را اندازهگیری کنند.
- سبد تکسهمی شامل AAPL، MSFT، NVDA، AMZN، META، TSLA، GOOGL، JPM، KO و XOM است. سبد شاخص و ETF نیز SPY، QQQ و IWM را دربرمیگیرد. نسبتهای منتشرشده از سوی بورس، کل بازار را پوشش میدهند و محصولاتی مانند SPX را نیز شامل میشوند؛ بنابراین سطح آنها متفاوت است.
- قیمت شاخص، آخرین معامله عادی جلسه در هر روز برای شاخص S&P 500 است. برای محاسبه بازده آتی، 20 جلسه پایانی نمونه حذف میشوند، زیرا هنوز بازده 20جلسهای آینده برای آنها وجود ندارد. حرکت ماهانه نیز از قیمت پایانی نخستین جلسه تا قیمت پایانی آخرین جلسه هر ماه محاسبه میشود.
هر پنل بالا با باز شدن، SQL پشت آن را نشان میدهد. همین پرسوجوهای صدکی را میتوان برای هر دارایی پایهای که در پایانه Strasmore دنبال میکنید نیز اجرا کرد.