অস্বাভাবিক অপশন অ্যাক্টিভিটি গত সেশনের তালিকা
মার্কিন অপশন টেপ থেকে অস্বাভাবিক অপশন অ্যাক্টিভিটি দেখুন। কোন অ্যান্ডারলিংয়ের ভলিউম গত বিশ সেশনের গড়ের চেয়ে বেশি ছিল এবং কল ও পুটের অনুপাত কী ছিল তা জানতে পড়ুন।
অস্বাভাবিক অপশন অ্যাক্টিভিটি (unusual options activity) বলতে বোঝায় যখন কোনো একটি নির্দিষ্ট অ্যান্ডারলিং অ্যাসেট একটি সেশনে তার সাম্প্রতিক স্বাভাবিক অবস্থার তুলনায় অনেক বেশি অপশন কন্ট্রাক্ট ট্রেড করে। এই বোর্ডটি গত সম্পন্ন হওয়া অপশন সেশনের জন্য এটি র্যাঙ্ক করে, যেখানে Jul 21: হলো ওই অ্যান্ডারলিংয়ের গত ২০টি সেশনের গড় ভলিউমের বিপরীতে মোট ট্রেড করা কন্ট্রাক্টের সংখ্যা। অপশন টেপ ইক্যুইটি টেপের পরে নিষ্পত্তি হয়, তাই এখানে উল্লিখিত সেশনটি আজকের সেশন নয়, বরং আমাদের ডেটাতে থাকা সর্বশেষ সম্পূর্ণ সেশন।
টেবিলটি দেখার আগে একটি বিষয় স্পষ্ট করা প্রয়োজন: এটি একটি ভলিউম স্ক্রিন। বেশিরভাগ প্রকাশিত অস্বাভাবিক-অপশন অ্যালার্ট একদিনের ভলিউমকে ওপেন ইন্টারেস্টের (open interest) সাথে তুলনা করে, যা ক্লোজিংয়ের পর অবশিষ্টাংশ কন্ট্রাক্টের সংখ্যা। আমাদের সংরক্ষিত অপশন টেপে শুধুমাত্র ট্রেড থাকে, পজিশন নয়; এবং এতে কোথাও কোনো ওপেন-ইন্টারেস্ট ফিল্ড নেই। নিচে দেওয়া প্রতিটি রেশিও একটি অ্যান্ডারলিংয়ের ভলিউমকে তার নিজস্ব ভলিউম হিস্টোরির সাথে তুলনা করে। অপশন ভলিউম বনাম ওপেন ইন্টারেস্ট প্রতিটি পরিমাপ কী নির্দেশ করে তা ব্যাখ্যা করে।
অস্বাভাবিক অপশন অ্যাক্টিভিটি: শেষ সম্পন্ন হওয়া সেশন
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
day_root AS (
SELECT substring(ticker, 3, length(ticker) - 17) AS root,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY root, d
),
scored AS (
SELECT r.root AS root,
sumIf(r.vol, c.rn = 1) AS last_vol,
avgIf(r.vol, c.rn BETWEEN 2 AND 21) AS base_vol,
maxIf(r.vol, c.rn BETWEEN 2 AND 21) AS prior_high,
countIf(c.rn BETWEEN 2 AND 21) AS root_sessions,
max(c.baseline_sessions) AS baseline_session_count,
maxIf(toYYYYMMDD(c.d), c.rn = 1) AS session_id,
maxIf(formatDateTime(c.d, '%b %e'), c.rn = 1) AS session_label
FROM day_root r INNER JOIN cal c ON r.d = c.d
WHERE c.rn <= 21
AND r.root NOT IN ('SPCX')
AND r.root NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
GROUP BY r.root
HAVING last_vol >= 25000 AND base_vol >= 5000 AND root_sessions >= 18
)
SELECT root AS ticker,
round(last_vol / base_vol, 1) AS vol_ratio,
round(last_vol / 1000, 1) AS session_volume_k,
round(base_vol / 1000, 1) AS baseline_volume_k,
round(prior_high / 1000, 1) AS prior_high_volume_k,
session_label,
session_id,
baseline_session_count
FROM scored
ORDER BY vol_ratio DESC, ticker ASC
LIMIT 10তিনটি কলামের মাধ্যমে তথ্য প্রদান করা হয়েছে। অনুপাত (ratio) নির্দেশ করে যে সংশ্লিষ্ট সম্পদের লেনদেন তার স্বাভাবিক মাত্রার চেয়ে কত বেশি হয়েছে। বেসলাইন (baseline) নির্দেশ করে স্বাভাবিক মাত্রা কত ছিল; একটি ব্যস্ত লেনদেনের তুলনায় একটি কম লেনদেনের ক্ষেত্রে বড় গুণিতক একটি ছোট ঘটনা হিসেবে বিবেচিত হয়। ২০-সেশনের হাই (20-session high) নির্দেশ করে যে এই সেশনটি গত এক মাসের কোনো রেকর্ড অতিক্রম করেছে কি না। শেষ তিনটি কলাম হলো অডিট ট্রেইল: বোর্ডটি যে সেশনের ভিত্তিতে তৈরি করা হয়েছে তা লেবেল এবং সংখ্যা হিসেবে দেওয়া হয়েছে, সাথে বেসলাইনের পেছনে থাকা যোগ্য সেশনের সংখ্যা দেওয়া হয়েছে, যা এই পৃষ্ঠাটি প্রকাশের জন্য ২০ হতে হয়।
ASST2 তার নিজস্ব গড়ের 6.7 গুণ উপরে রয়েছে: 76 হাজার কন্ট্রাক্ট, যেখানে বেসলাইন ছিল 11.3 হাজার এবং পূর্ববর্তী ২০-সেশনের হাই ছিল 201.1 হাজার।
- MMM 6.3 গুণ হারে: 64.9 হাজার কন্ট্রাক্ট এবং বেসলাইন ছিল 10.4 হাজার।
- DHR 5.2 গুণ হারে, 28.6 হাজার কন্ট্রাক্ট এবং বেসলাইন ছিল 5.5 হাজার।
- GM 3.5 গুণ হারে, 58.8 হাজার কন্ট্রাক্ট এবং ২০-সেশনের হাই ছিল 57.2 হাজার।
- CVS 59.3 হাজার কন্ট্রাক্টের ওপর 3.2 গুণ হারে।
বোর্ডের শেষ সারি, HAL, এখনও তার নিজস্ব গড়ের 2.6 গুণ হারে লেনদেন করছে। গুণিতক এবং আকার আলাদা রিডিং, তাই উভয়ই বোর্ডে রয়েছে। শেয়ার বাজারের একই ধারণার সংস্করণ এই সপ্তাহের অস্বাভাবিক ভলিউম স্টক এ পাওয়া যাবে, এবং এর গাণিতিক হিসাব রিলেটিভ ভলিউম এ বিস্তারিত দেওয়া আছে।
Call নাকি put: মার্কেটের অবস্থান
Call এবং put ভলিউমের মধ্যকার পার্থক্যই মূলত একটি অ্যালার্টের আসল উদ্দেশ্য নির্দেশ করে। একই সেশনের ডেটা, call শেয়ার অনুযায়ী সাজানো:
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
day_root AS (
SELECT substring(ticker, 3, length(ticker) - 17) AS root,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol,
sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') AS calls,
sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P') AS puts
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY root, d
),
scored AS (
SELECT r.root AS root,
round(sumIf(r.vol, c.rn = 1) / avgIf(r.vol, c.rn BETWEEN 2 AND 21), 1) AS vol_ratio,
sumIf(r.calls, c.rn = 1) AS calls,
sumIf(r.puts, c.rn = 1) AS puts,
maxIf(toYYYYMMDD(c.d), c.rn = 1) AS session_id
FROM day_root r INNER JOIN cal c ON r.d = c.d
WHERE c.rn <= 21
AND r.root NOT IN ('SPCX')
AND r.root NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
GROUP BY r.root
HAVING sumIf(r.vol, c.rn = 1) >= 25000
AND avgIf(r.vol, c.rn BETWEEN 2 AND 21) >= 5000
AND countIf(c.rn BETWEEN 2 AND 21) >= 18
),
board AS (
SELECT root, vol_ratio, calls, puts, session_id
FROM scored
ORDER BY vol_ratio DESC, root ASC
LIMIT 10
)
SELECT root AS ticker,
round(calls / 1000, 1) AS call_volume_k,
round(puts / 1000, 1) AS put_volume_k,
round(100.0 * calls / (calls + puts), 0) AS call_share_pct,
session_id
FROM board
WHERE calls + puts > 0
ORDER BY call_share_pct DESC, ticker ASCCall-এর আধিক্য থাকা প্রান্তে, ASST2 তার মোট কন্ট্রাক্টের 100% শতাংশ call হিসেবে নিয়েছে: 76 হাজার call এর বিপরীতে 0 হাজার put। একই টেবিলের অন্য প্রান্তে, WBD 25% বার call করেছে, যা ছিল 78.6 হাজার বনাম 239.7 হাজার put।
এই বিভাজনটি বিশ্লেষণ করা গুরুত্বপূর্ণ, তবে এটি ভুলভাবে ব্যাখ্যা করার সম্ভাবনা থাকে। প্রতিটি নিবন্ধিত কন্ট্রাক্টের একজন ক্রেতা এবং একজন বিক্রেতা থাকে, এবং মার্কেটের ডেটা (tape) এটি রেকর্ড করে না যে কোন পক্ষ লেনদেনটি শুরু করেছে। উচ্চ Call ভলিউম সরাসরি একটি long পজিশন হতে পারে অথবা বিক্রেতার কাছে থাকা স্টকের বিপরীতে লেখা একটি covered call হতে পারে। Call option কেনা এবং বিক্রি প্রতিটি পক্ষের ঝুঁকি সম্পর্কে বিস্তারিত আলোচনা করে। যেখানে মার্কেটের লেনদেন বেশি হয়, সেখানে অপশন প্রাইসও সাধারণত বেশি থাকে, যা highest implied volatility stocks বোর্ডের বিষয়।
সেশনের চুক্তিসমূহ কীসের ওপর ভিত্তি করে গঠিত ছিল
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
bars AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(volume) AS v,
toDate(concat('20', substring(ticker, length(ticker) - 14, 2), '-',
substring(ticker, length(ticker) - 12, 2), '-',
substring(ticker, length(ticker) - 10, 2))) AS expiry
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 12, 'America/New_York')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM cal WHERE rn = 1)
),
scored AS (
SELECT multiIf(expiry - d <= 0, 1, expiry - d <= 7, 2, expiry - d <= 30, 3,
expiry - d <= 90, 4, expiry - d <= 365, 5, 6) AS bk,
v, d
FROM bars
)
SELECT arrayElement(['same day', '1 to 7 days', '8 to 30 days', '31 to 90 days', '91 to 365 days', 'over a year'], bk) AS dte_bucket,
round(sum(v) / 1e6, 2) AS contracts_m,
round(100.0 * sum(v) / sum(sum(v)) OVER (), 1) AS pct_of_volume,
toYYYYMMDD(max(d)) AS session_id
FROM scored
GROUP BY bk
ORDER BY bk ASCএকই দিনে মেয়াদের শেষ হওয়া চুক্তিসমূহ পুরো সেশনের 29.7% অংশ দখল করেছিল, যা ছিল 16.85 মিলিয়ন চুক্তি। আরও 30.8% চুক্তির মেয়াদ এক সপ্তাহের মধ্যে শেষ হয়ে যায়। অন্যদিকে, এক বছরের বেশি মেয়াদের চুক্তিসমূহ 2.1% অংশ ছিল।
এই মিশ্রণটি অস্বাভাবিক কার্যকলাপ সংক্রান্ত শিরোনামের অর্থ পরিবর্তন করে দেয়। এই ধরনের বোর্ডের অধিকাংশ ভলিউমই স্বল্পমেয়াদী হয় এবং একই দিনের চুক্তিসমূহ পরবর্তী সময়ের জন্য বহাল না রেখে বাজার বন্ধ হওয়ার আগেই নিষ্পত্তি করা হয়। 0DTE options এই চেইনের শেষ প্রান্তটি নির্দেশ করে।
এটি কি একটি এক্সপায়ারেশন সেশন ছিল?
মাসিক এক্সপায়ারেশনের সময় পুরো মার্কেটে অপশন ভলিউম বৃদ্ধি পায়, যখন তালিকাভুক্ত চুক্তির বৃহত্তম অংশ একবারে समाप्त হয়ে যায়। এক্সপায়ারেশন দিনে রেশিও স্ক্রিন মার্কেটের অর্ধেক অংশকে চিহ্নিত করে, তাই নিচের প্যানেলটি এই সময়ের প্রতিটি সেশনকে লেবেল করে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
w AS (
SELECT d, vol,
toStartOfMonth(d) + toIntervalDay(((5 - toDayOfWeek(toStartOfMonth(d)) + 7) % 7) + 14) AS third_friday
FROM cal
WHERE rn <= 25
),
marked AS (
SELECT d, vol,
(d = max(if(d <= third_friday, d, toDate('1970-01-01'))) OVER (PARTITION BY toStartOfMonth(d)))
AND (third_friday <= max(d) OVER ()) AS is_expiry
FROM w
),
latest AS (
SELECT d, vol, is_expiry,
max(if(is_expiry, d, toDate('1970-01-01'))) OVER () AS last_expiry_d
FROM marked
)
SELECT formatDateTime(d, '%b %e') AS session,
round(vol / 1e6, 1) AS contracts_m,
multiIf(is_expiry, 'monthly expiration', 'ordinary') AS session_type,
round(max(if(d = last_expiry_d, vol, 0)) OVER () / 1e6, 1) AS monthly_expiry_m,
toYYYYMMDD(d) AS session_id
FROM latest
ORDER BY d ASCএই প্যানেলের সবচেয়ে সাম্প্রতিক সেশনটি হলো বোর্ডের রিপোর্ট করা সেশন, যার তারিখ উভয় টেবিলে একই এবং এর লেবেল হলো ordinary। এটি পুরো US টেপে 56.8 মিলিয়ন চুক্তি সম্পন্ন করেছে। একই উইন্ডোর মধ্যে সাম্প্রতিকতম মাসিক এক্সপায়ারেশনে 76.8 মিলিয়ন চুক্তি সম্পন্ন হয়েছিল। বোর্ডের প্রতিটি রেশিও-র পেছনের ২০-সেশন বেসলাইন সাধারণত ঠিক একটি মাসিক এক্সপায়ারেশন ধারণ করে, তাই এর হরে (denominator) প্রতিটি সেশনে একই পরিমাণ ডেটা থাকে।
অস্বাভাবিক অপশন অ্যাক্টিভিটি কি স্টকের মুভমেন্টের পূর্বাভাস দেয়?
প্রকৃত প্রশ্নটি হলো, অপশন ট্রেডিংয়ের অত্যধিক ভলিউম কি পরবর্তী সেশনে সংশ্লিষ্ট স্টকের বড় কোনো মুভমেন্টের কারণ হয় কিনা। গত ২০০ দিনের তথ্যের ভিত্তিতে এটি পরিমাপ করা হয়েছে: প্রতিটি স্টকের ভলিউম তার নিজস্ব বেসলাইনের তুলনায় কত গুণ বেশি, তা বের করে পরবর্তী সেশনে স্টকের ক্লোজিং প্রাইসের পরিবর্তনের সাথে তুলনা করা হয়েছে। প্রতিটি স্টকের নিজস্ব মিডিয়ান ডেইলি চেঞ্জ বা মধ্যম মানের দৈনিক পরিবর্তনের সাথে তুলনা করার জন্য একটি কলাম ব্যবহার করা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH daily AS (
SELECT underlying_symbol AS sym,
date AS d,
sum(volume) AS vol,
max(underlying_close) AS px
FROM global_markets.options_greeks
WHERE date >= today() - 200
AND underlying_close > 0
AND underlying_symbol NOT IN ('SPCX')
AND underlying_symbol NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND underlying_symbol NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 230 AND today())
GROUP BY sym, d
),
seq AS (
SELECT sym, d, vol, px,
avg(vol) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS base,
count() OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS base_n,
any(px) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS next_px,
any(px) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM daily
),
moves AS (
SELECT sym, vol, base, base_n,
if(next_px > 0, 100 * abs(next_px / px - 1), -1) AS next_abs,
if(next_px > 0, 100 * (next_px / px - 1), -999) AS next_signed,
if(prev_px > 0, 100 * abs(px / prev_px - 1), -1) AS own_abs
FROM seq
),
typical AS (
SELECT sym, quantileExact(0.5)(own_abs) AS typ
FROM moves
WHERE own_abs >= 0
GROUP BY sym
)
SELECT arrayElement(['5x or more', '3x to 5x', '2x to 3x', '1x to 2x', 'below 1x'], bk) AS rvol_bucket,
count() AS event_count,
round(quantileExact(0.5)(next_abs), 2) AS median_next_move_pct,
round(quantileExact(0.5)(typ), 2) AS median_typical_move_pct,
round(quantileExact(0.5)(next_abs) - quantileExact(0.5)(typ), 2) AS gap_pp,
round(quantileExact(0.5)(next_signed), 2) AS median_next_signed_pct
FROM (
SELECT m.sym AS sym,
multiIf(m.vol / m.base >= 5, 1, m.vol / m.base >= 3, 2, m.vol / m.base >= 2, 3,
m.vol / m.base >= 1, 4, 5) AS bk,
m.next_abs AS next_abs,
m.next_signed AS next_signed,
t.typ AS typ
FROM moves m INNER JOIN typical t ON m.sym = t.sym
WHERE m.base_n = 20 AND m.base >= 5000 AND m.vol >= 25000 AND m.next_abs >= 0
)
GROUP BY bk
ORDER BY bk ASCযখন কোনো স্টকের ভলিউম তার নিজস্ব বেসলাইনের তুলনায় পাঁচ গুণ বা তার বেশি হয়, তখন পরবর্তী সেশনে তার মিডিয়ান অ্যাবসোলিউট চেঞ্জ ছিল 2.61%। অন্যদিকে, সাধারণ দিনে একই স্টকের ক্ষেত্রে এটি ছিল 1.96%, অর্থাৎ এর পার্থক্য হলো 0.65 শতাংশ পয়েন্ট। তালিকার সর্বনিম্ন ভলিউম সম্পন্ন স্টকের ক্ষেত্রে এই দুটি কলামের মান হলো 1.89% এবং 2.09%, যার পার্থক্য -0.2 পয়েন্ট।
সঠিক উত্তরটি হলো এই পরিবর্তনটি খুবই সামান্য এবং এটি মুভমেন্টের দিক নির্দেশ করে না, বরং মুভমেন্টের আকার নির্দেশ করে। অপশন ট্রেডিংয়ের উচ্চ ভলিউম পরবর্তী সেশনে স্টকের মুভমেন্টের আকার কিছুটা বাড়িয়ে দেয়, তবে মিডিয়ানের ক্ষেত্রে এই পার্থক্য হলো মাত্র এক শতাংশের ভগ্নাংশ। পাঁচ গুণ বেশি ভলিউম সম্পন্ন সেশনের পরের সেশনে মিডিয়ান সাইন্ড চেঞ্জ ছিল -0.35%, এবং বেসলাইনের নিচের ভলিউম সম্পন্ন সেশনের ক্ষেত্রে ছিল -0.04%। এই পরিবর্তনগুলো কোনো বড় সংবাদের মতো নয়। তথ্যের বিরলতাও লক্ষ্যণীয়: এই স্টাডি উইন্ডোতে 640টি স্টকের ভলিউম তার বেসলাইনের তুলনায় পাঁচ গুণ বেশি ছিল, যেখানে মাত্র 11567টি স্টকের ভলিউম বেসলাইনের নিচে ছিল।
এই স্ক্রিনটি যেভাবে পরিমাপ করা হয়
লুকানো নিয়মের একটি স্ক্রিন ডেটা হিসেবে প্রদর্শিত হয় যা আসলে একটি মতামত, তাই প্রতিটি নিয়ম এখানে দেওয়া হলো।
- উৎস। সম্পূর্ণ US options minute tape। প্রতিটি চুক্তির OCC symbol থেকে underlying বের করা হয়, তাই সাধারণ স্টক এবং ফান্ড চেইনের পাশাপাশি ইনডেক্স অপশন রুট এবং একই দিনের মেয়াদের অপশনগুলোও অন্তর্ভুক্ত করা হয়।
- অনুপাত। শেষ সম্পন্ন হওয়া সেশনের মোট চুক্তির ভলিউমকে ওই একই underlying-এর পূর্ববর্তী ২০টি যোগ্য সেশনের গড় ভলিউম দিয়ে ভাগ করা হয়। এই ২০টির মধ্যে অন্তত ১৮টিতে ভলিউম থাকতে হবে। বোর্ডটি একটি আলাদা কলামে উইন্ডো লেন্থ প্রদর্শন করে; যদি কোনো উইন্ডো ২০টির কম হয়, তবে ২০-সেশন লেবেলের অধীনে ছোট গড় প্রকাশ না করে সেই পৃষ্ঠাটি ধরে রাখে।
- ফ্লোর। সেশনে ২৫,০০০ চুক্তি এবং ৫,০০০ চুক্তির একটি বেসলাইন। এগুলো না থাকলে বোর্ডটি এমন চেইন দিয়ে পূর্ণ হয়ে যাবে যেখানে একটি অর্ডার ১০ গুণ বেশি রিডিং তৈরি করতে পারে।
- সেশন যোগ্যতা। এই পৃষ্ঠার প্রতিটি প্যানেল একই টেপ থেকে ৪৫ দিনের একটি উইন্ডো থেকে সেশনগুলো পড়ে, যা একটি নিয়মের অধীনে চলে: একটি সেশন তখনই গণনা করা হয় যখন বাজার-ব্যাপী ভলিউম সেই উইন্ডোর পুরনো সেশনগুলোর মিডিয়ানের ৭৫% এ পৌঁছায়। নতুনতম দিনটি মিডিয়ান গণনার বাইরে রাখা হয়, যাতে আংশিক লোড হওয়া কোনো দিন তার নিজস্ব বারকে মিডিয়ানের নিচে নামিয়ে দিতে না পারে। টেপটি খণ্ড খণ্ডভাবে সামনে আসে, এবং একটি সাধারণ সেশনের তিন চতুর্থাংশের কম ভলিউম থাকা দিনটি পূর্ণ না হওয়া পর্যন্ত বোর্ড থেকে বাদ থাকে। প্রতিটি প্যানেল তার সংশ্লিষ্ট সেশনটি প্রদর্শন করে, যাতে চারটি প্যানেলকে একে অপরের বিপরীতে পড়া যায়।
- বর্জন। Leveraged এবং inverse ফান্ডগুলো নাম অনুযায়ী বাদ দেওয়া হয়: একটি 3x প্রোডাক্টের চেইন তার মাল্টিপ্লায়ার অনুযায়ী পরিবর্তিত হয় এবং প্রতি সপ্তাহে তালিকাটি পূর্ণ করে ফেলত। একটি পুনঃব্যবহৃত ticker symbol-ও বাদ দেওয়া হয়েছে, কারণ ভেন্ডর হিস্ট্রিতে এটি দুটি কোম্পানিকে যুক্ত করে।
- Open interest নেই। ডেটাবেসে কোনো open-interest ফিল্ড নেই, তাই এই পৃষ্ঠার কোনো কিছুই ভলিউমকে outstanding positions-এর বিপরীতে তুলনা করে না। যেখানে প্রতিযোগীদের স্ক্রিনে বলা হয় ভলিউম open interest কে ছাড়িয়ে গেছে, সেখানে আমাদের স্ক্রিন বলে ভলিউম তার নিজস্ব ২০-সেশনের গড়কে ছাড়িয়ে গেছে।
- মেয়াদ শেষ হওয়ার দিন। মাসিক মেয়াদের অপশন বাজার-ব্যাপী অপশন ভলিউম বাড়িয়ে দেয়। সেশন প্যানেলটি এই অবস্থাটি লেবেল করে, এবং একটি expiration session-এর ওপর ভিত্তি করে তৈরি বোর্ডটি অন্যান্য expiration sessions-এর বিপরীতে পড়া উচিত।
Follow-through স্টাডি একটি দ্বিতীয় টেবিল বা daily options greeks ফাইল ব্যবহার করে, যাতে একটি পরিষ্কার underlying symbol এবং underlying-এর ক্লোজ থাকে। এটি একই দিনের মেয়াদের অপশন এবং ইনডেক্স অপশন বাদ দেয় এবং মিনিট টেপের তুলনায় কয়েক দিন পরে নিষ্পত্তি হয়, তাই এর পরিধি বোর্ডের তুলনায় কম। স্টাডি উইন্ডোর মধ্যে স্টক স্প্লিট হওয়া নামগুলো বাদ দেওয়া হয়, কারণ একটি স্প্লিট বিশাল মুভমেন্টের ভান করে।
FAQ
অস্বাভাবিক অপশন অ্যাক্টিভিটি (unusual options activity) কী?
যখন কোনো একটি নির্দিষ্ট অ্যান্ডারলিং স্টকের অপশন কন্ট্রাক্ট ট্রেডিংয়ের পরিমাণ তার সাম্প্রতিক গড়ের তুলনায় অনেক বেশি হয়, তখন তাকে অস্বাভাবিক অপশন অ্যাক্টিভিটি বলা হয়। এই পৃষ্ঠায় আমরা কোনো সম্পাদকীয় সিদ্ধান্তের পরিবর্তে গাণিতিক মানদণ্ড ব্যবহার করি: ওই দিনের কন্ট্রাক্ট ভলিউমকে ওই একই অ্যান্ডারলিংয়ের গত ২০ দিনের গড়ের সাথে ভাগ করা হয়। এখানে শর্ত হলো, ওই দিনের ভলিউম কমপক্ষে ২৫,০০০ কন্ট্রাক্ট এবং গড়ের মান কমপক্ষে ৫,০০০ হতে হবে।
অস্বাভাবিক অপশন অ্যাক্টিভিটি কি স্টকের মুভমেন্ট বা পরিবর্তন পূর্বাভাস দিতে পারে?
খুব সামান্য এবং কোনো নির্দিষ্ট দিকনির্দেশনা ছাড়াই। আমাদের গত ২০০ দিনের ডেটা অনুযায়ী, যখন কোনো অ্যান্ডারলিংয়ের অপশন ভলিউম তার গড়ের তুলনায় পাঁচ গুণ বেশি ছিল, তখন পরবর্তী সেশনে সেই স্টকের মিডিয়ান অ্যাবসোলিউট মুভমেন্ট ছিল 2.61%, যেখানে সাধারণ দিনে এই মান ছিল 1.96%। পরবর্তী সেশনে মিডিয়ান সাইন্ড চেঞ্জ ছিল -0.35%; অর্থাৎ, ভলিউম স্টকের মুভমেন্টের পরিমাণ সম্পর্কে ধারণা দিলেও কোন দিকে মুভমেন্ট হবে সে সম্পর্কে খুব কম তথ্য দেয়।
অপশন ভলিউম ডেটা কখন আপডেট করা হয়?
সেশন চলাকালীন কনসোলিডেটেড অপশন টেপে কন্ট্রাক্ট ভলিউম লাইভ প্রদর্শিত হয়। এই পৃষ্ঠার পেছনের সংরক্ষিত টেপটি কিছুটা সময় পরে আপডেট হয়, তাই এই বোর্ডটি চলমান সেশনের পরিবর্তে সর্বশেষ সম্পূর্ণ হওয়া সেশনের তথ্য এবং তারিখ প্রদর্শন করে। এখানে কোনো তথ্য রিয়েল-টাইম ফিড হিসেবে দেওয়া হয় না।
এই অস্বাভাবিক অপশন অ্যাক্টিভিটি স্ক্যানারে কেন ওপেন ইন্টারেস্ট (open interest) ব্যবহার করা হয় না?
ওপেন ইন্টারেস্ট ক্লিয়ারিংহাউস দ্বারা বাজার বন্ধ হওয়ার পর প্রকাশ করা হয় এবং আমাদের কাছে থাকা ডেটাতে ওপেন-ইন্টারেস্ট ফিল্ড নেই। কোনো একটি সেশনের ভলিউমকে ওই একই অ্যান্ডারলিংয়ের ভলিউম হিস্ট্রির সাথে তুলনা করা সরাসরি টেপ থেকে পরিমাপ করা সম্ভব এবং এটি একটি সদৃশ প্রশ্নর উত্তর দেয়: এই চেইনটি কি স্বাভাবিকের চেয়ে বেশি ব্যস্ত?
উপরে প্রতিটি সংখ্যা একটি সংরক্ষিত এবং ভার্সন করা কুয়েরি। পরিমাপ যাচাই করতে যেকোনো প্যানেলের নিচের SQL ফাইলটি ওপেন করুন, অথবা Strasmore টার্মিনালে আপনার পছন্দমতো যেকোনো সময়ের জন্য একই স্ক্রিনটি চালান।