Strasmore Research
গভীর বিশ্লেষণ Matt Connorদ্বারা Matt Connor

উচ্চ put/call ratio কি bullish?

উচ্চ put/call ratio-কে contrarian bullish সংকেত বলা হয়। equity ও index options-এর percentile band দেখুন এবং extreme reading-এর পরে বাস্তবে কী ঘটেছে জানুন।

উচ্চ put/call ratio-কে সাধারণত contrarian bullish সংকেত হিসেবে দেখা হয়: অস্বাভাবিক বেশি put কেনাকাটাকে ধরা হয় এমন একটি লক্ষণ হিসেবে যে বাজারের অধিকাংশ অংশ ইতিমধ্যে পতনের জন্য প্রস্তুত। এই ব্যাখ্যার ভিত্তিতে সিদ্ধান্ত নেওয়ার ক্ষেত্রে একটি সমস্যা আছে। “উচ্চ”-এর কোনো নির্দিষ্ট মান নেই। আপনার স্ক্রিনে 1.15 single-stock options-এর ক্ষেত্রে চরম মাত্রা হতে পারে, আবার index products-এর ক্ষেত্রে তা স্বাভাবিক একটি সেশনও হতে পারে।

এই প্রশ্নের উত্তর দিতে প্রয়োজন একটি reference distribution। এই পৃষ্ঠায় উভয় বাজারের জন্য এমন একটি distribution দেওয়া হয়েছে। এরপর উচ্চ readings-এর পরে কী ঘটেছে, তা পরিমাপ করা হয়েছে। put/call ratio-এর ব্যাখ্যা অংশে ratio কীভাবে তৈরি হয়, তা দেখানো হয়েছে। নিচের সব বিশ্লেষণ সেই সংজ্ঞা থেকেই শুরু হয়েছে।

পরিমাপ সম্পর্কে 2টি বিষয় মনে রাখা দরকার। এখানে প্রতিটি ratio ওই দিনে লেনদেন হওয়া contracts গুনে হিসাব করা হয়েছে। তাই এগুলো volume ratio। open interest এখনও খোলা থাকা positions গুনে এবং এটি আলাদা স্তরের একটি পরিমাপ (volume ও open interest-এর পার্থক্য অংশে দুটির পার্থক্য ব্যাখ্যা করা হয়েছে)। সংখ্যাগুলো একটি নির্দিষ্ট basket থেকেও নেওয়া হয়েছে: পুরো বাজারের tape নয়, বরং household-name single-stock-এর 10টি নাম এবং broad-market ETF-এর 3টি নাম। তাই শেষ দশমিকটির বদলে distribution-এর সামগ্রিক আকৃতি দেখুন।

কোন put/call ratio-কে উচ্চ বলা হয়?

একটি স্তর যে প্রশ্নের উত্তর দিতে পারে না, একটি percentile সেই প্রশ্নের উত্তর দিতে পারে। নিচের curve-এ January 2022 থেকে July 2026 পর্যন্ত প্রতিটি session-এর তথ্য রয়েছে। প্রতিটি book-এর জন্য প্রতি session-এ একটি করে ratio দেখানো হয়েছে।

কুয়েরিPut/call ভলিউম অনুপাতের পারসেন্টাইল: একক-স্টক বাস্কেট বনাম ইনডেক্স ETF, 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
)
Run this yourself

single-stock basket-এ median session-এ প্রতি call-এর বিপরীতে 0.67টি put ছিল। সবচেয়ে উচ্চ 10%-এর session শুরু হয়েছে 0.89 থেকে, আর সবচেয়ে চরম 1%-এর স্তর 1.34 অতিক্রম করেছে। নিচের দিকের শান্ত পরিসরও calibration-এর জন্য সমানভাবে কার্যকর। প্রতি 20টি session-এর 1টিতে ratio 0.48 বা তার নিচে শেষ হয়েছে।

curve-এর প্রতিটি বিন্দুতে ETF column একটি আলাদা distribution দেখায়। এর median session ছিল 1.45। এটি one-to-one রেখার ওপরে, যেখানে single-stock median অনেক নিচে রয়েছে। ETF-এর নিজস্ব উচ্চ 10%-এর পরিসর শুরু হয়েছে 1.77 থেকে। কোন book-এর ratio তা না জানালে উদ্ধৃত ratio প্রায় অর্থহীন। 1.15-এর ওই print কোন column থেকে এসেছে, তার ওপর নির্ভর করে এর অর্থ সম্পূর্ণ ভিন্ন হতে পারে।

সূচকের অনুপাত 1-এর ওপরে থাকা স্বাভাবিক, কিন্তু ইকুইটি অনুপাত 1-এর ওপরে থাকা স্বাভাবিক নয়

একই ভলিউমকে অন্তর্নিহিত সম্পদ অনুযায়ী ভাগ করলে স্তরগুলোর পার্থক্য স্পষ্ট হয়।

কুয়েরিআন্ডারলাইং অনুযায়ী Put/call ভলিউম অনুপাত: 1 জানুয়ারি থেকে 31 জুলাই 2026
প্রতিটি সংখ্যার পেছনের সঠিক 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
Run this yourself

2026 সালের প্রথম 7 মাসে, IWM প্রতি কলের বিপরীতে 2.73 পুট নিয়ে তালিকার শীর্ষে ছিল। 144টি সেশনের মধ্যে 98.6%টিতে অনুপাত 1-এর ওপরে ছিল। তালিকার নিচে থাকা XOM-এ লেনদেন হয়েছে 0.38। মোট সেশনের 2.8%টিতে অনুপাত 1-এর ওপরে ছিল।

এই পার্থক্য কাঠামোগত। পোর্টফোলিও হেজিং মূলত broad-market ETF option-এ করা হয়। কোনো ম্যানেজারের হাতে দুই শতটি পজিশন থাকলে তিনি প্রতিটি হোল্ডিংয়ের জন্য পুট না কিনে index put কেনেন। এই প্রবাহের বিপরীতে সমপরিমাণ কল লেনদেন থাকে না। Single-stock option-এর ভলিউমের প্রবণতা বিপরীত। সেখানে ঊর্ধ্বমুখী সম্ভাবনার জন্য কল কেনা হয় এবং আগে থেকে মালিকানাধীন শেয়ারের বিপরীতে কল লেখা হয়। "Total" অনুপাত দুই ধরনের লেনদেনকে একত্র করে। ফলে এটি দুই অনুপাতের মাঝামাঝি থাকে এবং বিনিয়োগকারীদের মনোভাবের পাশাপাশি দিনের product mix-এর সঙ্গেও পরিবর্তিত হয়।

আরেকটি স্তরগত পরিবর্তন জানা জরুরি। Index এবং ETF ভলিউমে এখন একই দিনের মেয়াদোত্তীর্ণ option-এর (0DTE option) অংশ বড়। পরিচিত threshold নির্ধারণের সময় এই শ্রেণিতে এত বড় পরিসরে লেনদেন হতো না। তাই ভিন্ন composition-যুক্ত বাজারে পুরোনো স্তরগুলো সরাসরি প্রয়োগ করা যায় না।

উচ্চ put/call ratio কি বুলিশ সংকেত? চরম মাত্রার পর কী ঘটেছিল

Contrarian ধারণাটি পরীক্ষা করা যায়। প্রতিটি সেশনকে ওই দিনের equity ratio অনুযায়ী পাঁচটি ভাগে সাজানো হয়েছে। এরপর পরবর্তী 5 এবং 20 সেশনে S&P 500 tracker কীভাবে বদলেছে, তা মাপা হয়েছে।

কুয়েরিইকুইটি Put/call অনুপাতের প্রতিটি পঞ্চমাংশের পর S&P 500 ট্র্যাকার মুভমেন্ট, 2022 থেকে জুলাই 2026
প্রতিটি সংখ্যার পেছনের সঠিক 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
Run this yourself

সবচেয়ে শান্ত পঞ্চমাংশের সেশন শুরু হয়েছে 0.34-এ। সবচেয়ে ব্যস্ত পঞ্চমাংশ শুরু হয়েছে 0.81-এ। তাই শীর্ষ ব্যান্ডে contrarian বিনিয়োগকারী যে সব রিডিংকে অতিরিক্ত প্রসারিত বলবেন, সেগুলো রয়েছে। ওই 226 সেশনে 20 সেশনের মধ্যম পরিবর্তন ছিল 3%। সবচেয়ে শান্ত পঞ্চমাংশের পর এই পরিবর্তন ছিল 0.91%। 5 সেশন পর একই দুই ব্যান্ডের ফল ছিল যথাক্রমে 0.82% এবং 0.3%।

মধ্যম মান গুরুত্বপূর্ণ তথ্য আড়াল করতে পারে। শীর্ষ পঞ্চমাংশে 20 সেশনের ফলাফলের মাঝের অর্ধেক -1.82% থেকে 5.71%-এর মধ্যে ছিল। সবচেয়ে শান্ত পঞ্চমাংশে মাঝের অর্ধেক ছিল -0.83% থেকে 2.67%-এর মধ্যে। দুই পরিসরই একই বিস্তৃত এলাকার অনেকটা জুড়ে আছে। কোনো সেশন কোন ব্যান্ডে পড়েছে, তা ফলাফলের বণ্টনের কেন্দ্র বদলায়। কিন্তু ওই কেন্দ্রের চারপাশের পরিসর খুব কমই সংকুচিত করে। সাধারণ নিয়মে এই দিকটি বাদ পড়ে।

ওজন নিয়ে একটি সতর্কতা আছে। January 2022 থেকে July 2026 পর্যন্ত সময়ে একটি bear market এবং তার পরের recovery রয়েছে। প্রতি ব্যান্ডে মোটামুটি 226 সেশন পড়ে। এটি একটি বাস্তব sample। তবে এটি বাজার ইতিহাসের একটি নির্দিষ্ট সময়পর্ব মাত্র।

বাজারের নিম্নস্তরে কি চরম রিডিংগুলো গুচ্ছবদ্ধ হয়?

এগুলো পতনশীল মাসগুলোতে গুচ্ছবদ্ধ হয়, যা ভিন্ন দাবি। 2022 থেকে প্রতিটি মাসে ট্র্যাকারটি মাসের মধ্যে কীভাবে পরিবর্তিত হয়েছে, তার ভিত্তিতে মাসগুলোকে গোষ্ঠীবদ্ধ করুন। এরপর প্রতিটি গোষ্ঠীতে শীর্ষ-ডেসাইল put/call রিডিং কতটি পড়েছে, তা গণনা করুন।

কুয়েরিপ্রতি মাসে শীর্ষ-ডেসাইল Put/call রিডিং, S&P 500 ট্র্যাকার কীভাবে মুভ করেছে অনুযায়ী গোষ্ঠীবদ্ধ
প্রতিটি সংখ্যার পেছনের সঠিক 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
Run this yourself

ট্র্যাকার যে মাসগুলোতে 3% বা তার বেশি কমে শেষ হয়েছে, সেসব মাসে গড়ে প্রতি মাসে 4.2টি শীর্ষ-ডেসাইল রিডিং ছিল। বিপরীতে, 3% বা তার বেশি বেড়ে শেষ হওয়া মাসগুলোতে এই সংখ্যা ছিল 1.9। প্রতিটি গোষ্ঠীর median daily reading শেষ কলামে রয়েছে। সবচেয়ে খারাপ গোষ্ঠীর জন্য তা 0.75 এবং সেরা গোষ্ঠীর জন্য 0.62। টেবিলের দুই প্রান্তে যথাক্রমে 12 এবং 22 মাস রয়েছে।

চরম put/call রিডিং এবং পতনশীল দাম একসঙ্গে দেখা যায়। এটি সহঘটনা, এবং আগের অংশের forward numbers থেকেই এর মূল্যায়ন করা উচিত। এই অনুপাত একই দিনের বাজারচিত্রের একই দিনের পরিমাপ। তাই এর spikes পতনের মধ্যে দেখা যায়, পতন শুরু হওয়ার আগে নয়। নিম্নস্তর হলো এমন একটি label, যা পরে যুক্ত হয়।

একটি distribution-এর বিপরীতে কোনো স্তর পড়া

উপরের সংখ্যাগুলো থেকে দুটি অভ্যাস তৈরি হয়।

প্রথমত, তুলনীয় বিষয়ের সঙ্গে তুলনা করুন। কোনো reading-এর অর্থ তখনই থাকে, যখন সেটিকে একই সূচকের তুলনীয় সময়সীমার নিজস্ব অতীতের সঙ্গে মেলানো হয়। percentile table ঠিক এই তথ্য দেয়। মনে রাখা কোনো threshold তা দেয় না।

দ্বিতীয়ত, denominator-এর দিকে নজর রাখুন। put buying অপরিবর্তিত থাকলেও call volume বেড়ে গেলে ratio কমে যায়। fraction-এর এক পাশ একাই পরিবর্তিত হলে ratio কমতেও পারে, বাড়তেও পারে। তাই put volume এবং call volume আলাদাভাবে দেখলে হিসাবটি স্পষ্ট থাকে।

শুধু একটি সংখ্যা হিসেবে প্রকাশিত প্রতিটি sentiment gauge-এর ক্ষেত্রেও একই শৃঙ্খলা প্রযোজ্য। VIX এবং 30% implied volatility print-এর নিজস্ব distribution না জানলে সেগুলোর পাঠোদ্ধার করা যায় না। একইভাবে, contrarian sentiment rules কেবল তখনই data-তে কার্যকর প্রমাণিত হয়, যখন reference level অনুমান না করে পরিমাপ করা হয়।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

উচ্চ put/call ratio কি bullish?

Contrarian ব্যাখ্যায়, বিপুল put কেনাকাটা বোঝায় যে বাজারের অনেক অংশগ্রহণকারী ইতিমধ্যে পতনের জন্য অবস্থান নিয়েছেন। উপরের single-stock basket-এর তুলনায়, সর্বোচ্চ এক-পঞ্চমাংশ readings-এর সেশনগুলোর পর S&P 500 tracker-এ 20-session median move ছিল 3%। সবচেয়ে শান্ত এক-পঞ্চমাংশের পর এই হার ছিল 0.91%। সর্বোচ্চ এক-পঞ্চমাংশের ফলাফলের মধ্যবর্তী অর্ধেক -1.82% থেকে 5.71%-এর মধ্যে ছিল।

স্বাভাবিক put/call ratio কত?

কোন options গণনা করা হচ্ছে, তার ওপর এটি পুরোপুরি নির্ভর করে। দশটি বহুল লেনদেন হওয়া single-stock নামের basket-এ 2022 থেকে July 2026 পর্যন্ত median session-এ প্রতি call-এর বিপরীতে 0.67 put ছিল। একই সেশনগুলোতে তিনটি broad-market ETF-এর median ছিল 1.45

Index put/call ratio equity put/call ratio-এর চেয়ে বেশি কেন?

Portfolio hedging-এর জন্য broad index এবং ETF options সাধারণত ব্যবহৃত হয়। কোনো hedger index put কিনলে তার বিপরীতে matching call trade নাও থাকতে পারে। Single-stock volume-এ upside-এর জন্য কেনা call এবং ইতিমধ্যে ধরে রাখা শেয়ারের বিপরীতে লেখা call-এর প্রাধান্য থাকে। ফলে ওই book-এর ratio কম থাকে।

put/call ratio কি market timing-এর জন্য কার্যকর?

উপরের পরিমাপটি প্রতিটি এক-পঞ্চমাংশ readings-এর পরে কী ঘটেছে, তার distribution দেখায়। যেকোনো একটি band-এর ভেতরের spread band-গুলোর median-এর পার্থক্যের তুলনায় অনেক বেশি। সর্বোচ্চ decile readings এমন মাসগুলোতেও বেশি দেখা যায়, যেসব মাসে index নিম্নমুখীভাবে শেষ হয়েছে। সবচেয়ে খারাপ group-এ এই হার ছিল প্রতি মাসে 4.2

Volume put/call ratio এবং open interest put/call ratio-এর মধ্যে পার্থক্য কী?

Volume ratio একটি session-এ লেনদেন হওয়া contract গণনা করে। তাই এটি প্রতিদিন reset হয় এবং দ্রুত পরিবর্তিত হয়। Open interest ratio এখনও outstanding থাকা position গণনা করে। এটি ধীরে পরিবর্তিত হয় এবং নিজস্ব একটি স্তরে থাকে। দুটি ratio পরস্পরের বিকল্প নয়। একটির threshold অন্যটির ক্ষেত্রে ব্যবহার করলে ভুল ব্যাখ্যা হবে।

এই সংখ্যাগুলো কীভাবে তৈরি করা হয়েছে
  • উৎস: প্রতি session-এ প্রতি option contract-এর জন্য একটি করে row, যেখানে ওই session-এর traded volume অন্তর্ভুক্ত আছে। OCC contract code থেকে put এবং call আলাদা করা হয়েছে। শেষ 8টি character strike নির্দেশ করে, আর তার আগের character-টি call-এর জন্য C এবং put-এর জন্য P। সঠিক table ও filter দেখতে যেকোনো panel-এর SQL খুলুন।
  • এই পৃষ্ঠার প্রতিটি ratio volume ratio। Open interest গণনায় অন্তর্ভুক্ত নয়। তাই এখানে কোনো open-interest ratio নেই।
  • Implied-volatility-এর গুণগত মান যাচাইয়ের কোনো filter প্রয়োগ করা হয়নি। Contract কেবল traded volume-এর ভিত্তিতে অন্তর্ভুক্ত হয়েছে, কারণ এই panel-গুলো trading activity গণনা করে, volatility পরিমাপ করে না।
  • Basket-এ single-stock book-এর জন্য AAPL, MSFT, NVDA, AMZN, META, TSLA, GOOGL, JPM, KO এবং XOM রয়েছে। Index-ETF book-এ রয়েছে SPY, QQQ এবং IWM। Exchange-প্রকাশিত ratio পুরো market-কে অন্তর্ভুক্ত করে এবং SPX-এর মতো index product-ও এতে থাকে। তাই তাদের level আলাদা।
  • Index price হিসেবে প্রতিদিন S&P 500 tracker-এর regular session-এর শেষ print নেওয়া হয়েছে। Sample-এর শেষ 20টি session forward return থেকে বাদ দেওয়া হয়েছে, কারণ সেগুলোর পরবর্তী 20-session data নেই। Monthly move প্রতিটি মাসের প্রথম session-এর close থেকে একই মাসের শেষ session-এর close পর্যন্ত গণনা করা হয়েছে।

উপরের প্রতিটি panel খুললে তার পেছনের SQL দেখা যায়। Strasmore terminal-এ আপনি যে কোনো underlying অনুসরণ করলেও একই percentile query চালানো যায়।

#put-call ratio#sentiment#options structure#contrarian#reference levels