IV Term Structure: কার্ভ কী জানায়
IV term structure মেয়াদপূর্তির বিপরীতে implied volatility দেখায়। ঊর্ধ্বমুখী ও inverted curve কী বোঝায়, তা real option data ও উদাহরণসহ জানুন।
IV term structure হলো মেয়াদপূর্তির বিপরীতে প্লট করা implied volatility। প্রতিটি মেয়াদপূর্তির জন্য একটি করে রিডিং থাকে। এতে বর্তমান শেয়ারদামের কাছাকাছি strike price-এর অপশন ব্যবহার করা হয়।
প্রায় সব পরিস্থিতিতে আপনি যে দুটি আকৃতি দেখতে পাবেন, সেগুলো হলো:
- শান্ত বাজারে ঊর্ধ্বমুখী slope, যেখানে দূরের মেয়াদপূর্তির implied volatility বেশি থাকে।
- সামনের মাসে কোনো নির্দিষ্ট তারিখের event থাকলে inverted curve।
নিচের দুটি আকৃতিই textbook diagram নয়; এগুলো প্রতি-চুক্তির option data থেকে তৈরি।
IV টার্ম স্ট্রাকচার কী পরিমাপ করে
Implied volatility হলো অন্তর্নিহিত শেয়ারের দামে সম্ভাব্য পরিবর্তনের বার্ষিকীকৃত মাত্রা, যা একটি অপশনের দাম নির্দেশ করে। এটি প্রতি কনট্র্যাক্টের ভিত্তিতে উদ্ধৃত হয়। তাই কোনো একটি শেয়ারের জন্য যেকোনো সময় শত শত রিডিং থাকতে পারে—বোর্ডে থাকা প্রতিটি strike এবং expiration-এর জন্য একটি করে। বর্তমান দামের কাছাকাছি strike নির্দিষ্ট রেখে expiration পরিবর্তন করলে রিডিংগুলো একটি বক্ররেখায় সাজে। এই বক্ররেখাই term structure।
বেশিরভাগ ব্যাখ্যায় sampling-এর গুরুত্ব যথেষ্টভাবে তুলে ধরা হয় না। এখানে প্রতিটি প্যানেলে এমন কনট্র্যাক্ট নেওয়া হয়েছে, যেগুলোর absolute delta 0.35 থেকে 0.65-এর মধ্যে। strike নির্দিষ্ট না করেই near the money বোঝাতে এটিই প্রচলিত পদ্ধতি। এরপর প্রতিটি maturity band-এর মধ্যে implied volatility-এর median নেওয়া হয়েছে। average নয়, median ব্যবহার করা হয়েছে। কারণ কম লেনদেন হওয়া কোনো কনট্র্যাক্টের পুরোনো quote থেকে অস্বাভাবিক একটি সংখ্যা আসতে পারে, আর average সেই প্রভাব ফলাফলেও নিয়ে আসে।
June 2026-এর ট্রেডিং সেশনজুড়ে ছয়টি liquid name-এর জন্য curve এখানে দেখানো হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH (
SELECT quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker))
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
AND date >= toDate('2026-06-01')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 3
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 20
) AS front_band_iv
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
days_to_expiry <= 45, '21-45 days',
days_to_expiry <= 90, '46-90 days',
days_to_expiry <= 180, '91-180 days',
'181-365 days') AS expiry_band,
round(100 * quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)), 1) AS median_iv_pct,
round(100 * (quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)) - front_band_iv), 1) AS pts_vs_front_band,
count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
AND date >= toDate('2026-06-01')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 3
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
ORDER BY min(days_to_expiry)Median implied volatility 19.6% হিসেবে 5-20 days band-এ এবং 21.5% হিসেবে 181-365 days band-এ মাপা হয়েছে। এটি front-এর চেয়ে 1.9 points বেশি। এই আকৃতির নাম futures market থেকে ধার করা: contango, যেখানে পরবর্তী delivery-র দাম বেশি থাকে। উল্টো curve-কে backwardation বলা হয়।
কেন কার্ভ সাধারণত ঊর্ধ্বমুখী হয়
দুটি প্রক্রিয়া এই স্বাভাবিক আকৃতি বজায় রাখে।
প্রথমটি হলো ইভেন্টের ঘনত্ব। 9 দিনে মেয়াদ শেষ হওয়া একটি কন্ট্র্যাক্ট 9 দিনের ক্যালেন্ডার-ঝুঁকি কভার করে। ওই সময়সীমার মধ্যে কোনো বড় মূলধনী শেয়ারে নির্ধারিত ইভেন্ট না থাকলে, দিনগুলো মূলত সাধারণ ট্রেডিং দিন। এক বছরে মেয়াদ শেষ হওয়া একটি কন্ট্র্যাক্টে চারটি ত্রৈমাসিক প্রতিবেদন, কেন্দ্রীয় ব্যাংকের একাধিক বৈঠক এবং এর মধ্যবর্তী সময়ের প্রতিটি অনির্ধারিত শিরোনাম অন্তর্ভুক্ত থাকে। প্রতিটি কন্ট্র্যাক্টে জানা-সম্ভব অনিশ্চয়তার সংখ্যা বেশি থাকায় বাজার যে annualized সংখ্যা দিতে প্রস্তুত থাকে, তা বেড়ে যায়।
দ্বিতীয়টি হলো volatility-এর নিজস্ব আচরণ। Realized volatility গুচ্ছাকারে দেখা যায়: শান্ত সপ্তাহের পর সাধারণত শান্ত সপ্তাহ আসে, আর অস্থির সপ্তাহের পর অস্থির সপ্তাহ আসে। বাজার শান্ত থাকলে near-dated option-এর দাম আজকের শান্ত volatility reading-এর কাছাকাছি থাকে। এক বছর পরে মেয়াদ শেষ হওয়া option-এর দাম থাকে দীর্ঘমেয়াদি গড়ের কাছাকাছি, যা সাধারণত বেশি। কোনো shock-এর পর একই হিসাব উল্টোভাবে কাজ করে। কোনো crash-এর পরবর্তী trading session-গুলোতে front expiry বোর্ডে সর্বোচ্চ implied volatility দেখায়। তখন পুরো দৈর্ঘ্যজুড়ে কার্ভ inverted হয়, আর far months তাদের স্বাভাবিক স্তরের কাছাকাছি থাকে।
কীভাবে কার্ভ বদলে যায়: নির্দিষ্ট তারিখের একটি ঘটনা
নির্ধারিত আয় প্রতিবেদন হলো আপনি যে inversion পর্যবেক্ষণ করতে পারেন, তার সবচেয়ে পরিষ্কার উদাহরণ। প্রতিবেদনটি জানা একটি তারিখে বাজার বন্ধের পর প্রকাশিত হয়। ওই তারিখের পরে settlement হওয়া প্রতিটি expiry-তে এই price move অন্তর্ভুক্ত থাকে, আর তার আগে settlement হওয়া কোনো expiry-তে তা থাকে না। ঘটনার সময়সীমা অন্তর্ভুক্ত করা সবচেয়ে কাছের expiry-তে এটিকে গড় করে নেওয়ার মতো সাধারণ দিন সবচেয়ে কম থাকে। তাই তার annualized reading সবচেয়ে বেশি বাড়ে। ছয় মাসের একটি option একই ঘটনাকে প্রায় 125 trading days জুড়ে ছড়িয়ে দেয় এবং এর প্রভাব খুব সামান্যই দেখা যায়।
NVIDIA 2025 সালের February 26, Wednesday, বাজার বন্ধের পর প্রতিবেদন প্রকাশ করে। প্যানেলটি পুরো curve দুবার দেখায়: print-এর আগের শেষ session, February 25-এ, এবং তার পরের প্রথম session, February 27-এ।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
days_to_expiry <= 45, '21-45 days',
days_to_expiry <= 90, '46-90 days',
days_to_expiry <= 180, '91-180 days',
'181-365 days') AS expiry_band,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-25')), 1) AS iv_before_print_pct,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-27')), 1) AS iv_after_print_pct,
round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-25'))
- quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-27'))), 1) AS iv_drop_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date >= toDate('2025-02-25')
AND date < toDate('2025-02-28')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.05 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
HAVING countIf(toDate(date) = toDate('2025-02-25')) >= 3
AND countIf(toDate(date) = toDate('2025-02-27')) >= 3
ORDER BY min(days_to_expiry)print-এর আগের session-এ 5-20 days band-এর reading ছিল 84.9% এবং পরের session-এ ছিল 66.4%; অর্থাৎ পরিবর্তন হয়েছে 18.5 points। একই দুই closing-এর মধ্যে 181-365 days band 1 points বদলেছে, যা সামনের band-এর পরিবর্তনের তুলনায় সামান্য অংশ। একই underlying, একই event, কিন্তু curve-এর দুই প্রান্তে অভিজ্ঞতা বিপরীত। সামনের প্রান্তের এই পতনই IV crush, এবং term structure-তেই এটি আগে থেকে দেখা যায়।
কার্ভ তৈরি ও সংকুচিত হওয়া পর্যবেক্ষণ
কোনো প্রতিবেদনের এক সেশন আগে বা পরে দেখা চিত্রটি কেবল একটি মুহূর্তের অবস্থা। এই গঠন তৈরি হতে কয়েক সপ্তাহ লাগে। কার্ভের দুই প্রান্তের ব্যবধান বাড়তে থাকলেই তা দেখা যায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT toDate(date) AS session_date,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 20), 1) AS front_iv_pct,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180), 1) AS back_iv_pct,
round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 20)
- quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180)), 1) AS front_minus_back_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date >= toDate('2025-02-10')
AND date < toDate('2025-03-15')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.05 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND ((days_to_expiry BETWEEN 5 AND 20) OR (days_to_expiry BETWEEN 91 AND 180))
GROUP BY session_date
HAVING countIf(days_to_expiry BETWEEN 5 AND 20) >= 3
AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
ORDER BY session_dateএই সময়সীমার প্রথম সেশনে ব্যান্ড দুটির ব্যবধান ছিল 12.4 পয়েন্ট, আর শেষ সেশনে ছিল 3.3 পয়েন্ট। মোট সেশন ছিল 24টি। সামনের লাইনের স্তরের বদলে এর আকৃতি লক্ষ্য করুন। প্রতিবেদন প্রকাশের সময় যত এগিয়ে আসে, এটি তত ওপরে ওঠে। প্রতিবেদন প্রকাশের আশপাশের সেশনগুলোতে এটি সর্বোচ্চ পর্যায়ে পৌঁছায়। এরপর এক সেশনের মধ্যেই আবার নেমে আসে। পেছনের লাইনটি পুরো সময়ে প্রায় অপরিবর্তিত থাকে। আয় প্রতিবেদন এবং option greeks পৃথক কনট্র্যাক্টে একই ঘটনা vega ও theta-কে কীভাবে প্রভাবিত করে, তা ব্যাখ্যা করে।
কার্ভ কত ঘন ঘন ইনভার্টেড থাকে?
ইনভার্সন বিরল নয়। কোনো নাম বছরের কতটা সময় এই অবস্থায় থাকে, তা ticker ভেদে ব্যাপকভাবে আলাদা হয়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH daily AS (
SELECT underlying_symbol,
toDate(date) AS session_date,
quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 30) AS front_iv,
quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180) AS back_iv
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('NVDA', 'AAPL', 'MSFT', 'AMZN', 'KO', 'JNJ', 'PG', 'SPY', 'XOM', 'WMT')
AND date >= toDate('2025-08-01')
AND date < toDate('2026-08-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND ((days_to_expiry BETWEEN 5 AND 30) OR (days_to_expiry BETWEEN 91 AND 180))
GROUP BY underlying_symbol, session_date
HAVING countIf(days_to_expiry BETWEEN 5 AND 30) >= 3
AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
)
SELECT underlying_symbol AS ticker,
count() AS sessions,
round(100 * countIf(front_iv > back_iv) / count(), 1) AS inverted_pct,
round(100 * quantileDeterministic(0.5)(front_iv - back_iv,
cityHash64(concat(underlying_symbol, toString(session_date)))), 1) AS median_spread_pts
FROM daily
GROUP BY underlying_symbol
ORDER BY inverted_pct DESCJuly 31, 2026-এ শেষ হওয়া 12 মাসে 251টি সেশনের মধ্যে XOM-এর ফ্রন্ট ব্যান্ড 91 থেকে 180 দিনের ব্যান্ডের ওপরে ছিল 68.5%টি সেশনে। 19.5%-এর ক্ষেত্রে এই সংখ্যা ছিল SPY। তাদের median gap ছিল যথাক্রমে 1.4 পয়েন্ট এবং -2.1 পয়েন্ট। নিয়মিত ক্যালেন্ডারভিত্তিক নির্ধারিত ইভেন্ট থাকা নামগুলো বছরের বেশি সময় ইনভার্টেড অবস্থায় থাকে। একটি broad index fund অধিকাংশ সময় contango-তে থাকে, আর ইনভার্সন সাধারণত selloff-এর সময় কেন্দ্রীভূত হয়। IV rank ভিন্ন একটি বিষয় পরিমাপ করে: আজকের level তার নিজস্ব গত 1 বছরের পরিসরের কোথায় রয়েছে, তা; expirations জুড়ে curve-এর গঠন কেমন, তা নয়।
একটি সমতল বা উল্টানো কার্ভ calendar spread-এ কী প্রভাব ফেলে
একটি calendar spread-এ একই strike-এ নিকট-মেয়াদি option বিক্রি করা হয় এবং দীর্ঘ-মেয়াদি option কেনা হয়। Diagonal spread-এও একই কাজ করা হয়, তবে দুটি ভিন্ন strike-এ। উভয় ক্ষেত্রেই position-টি পরবর্তী মেয়াদপূর্তির implied volatility-তে long এবং সামনের মেয়াদপূর্তির implied volatility-তে short থাকে। তাই term structure এখানে গৌণ বিষয় নয়; এটিই প্রধান ইনপুট।
কার্ভ ঊর্ধ্বমুখী হলে, নিকট-মেয়াদি leg-টি দীর্ঘ-মেয়াদি leg কেনার সময়কার implied volatility-এর চেয়ে কম implied volatility-তে বিক্রি হয়। কোনো event-এর আগে সামনের মাসের volatility inverted হলে সম্পর্কটি উল্টে যায়। তখন position-টি এমন একটি কার্ভে খোলা হয়, যার দুই প্রান্তের কোথাও না কোথাও convergence হওয়ার সম্ভাবনা থাকে। পরে সামনের মেয়াদপূর্তির volatility পিছনের মেয়াদপূর্তির দিকে দ্রুত নেমে আসে, পিছনের মেয়াদপূর্তিতে সামান্য পরিবর্তন হয়, এবং দুই reading-এর মধ্যকার spread আবার স্বাভাবিক আকারে ফিরে আসে। তবে position-টি শেষ পর্যন্ত কোথায় দাঁড়াবে, তা শেয়ারের দাম কতটা পরিবর্তিত হবে তার ওপরও নির্ভর করে। কার্ভ এ বিষয়ে কিছু বলে না। expected move পৃষ্ঠায় সমস্যাটির এই অংশটি ব্যাখ্যা করা হয়েছে।
সমতল কার্ভ হলো জটিল পরিস্থিতি। কোনো দিকেই কাজে লাগানোর মতো slope থাকে না। ফলে ফলাফল প্রায় পুরোপুরি শেয়ারের গতিপথ এবং সময়ের অতিক্রান্তির ওপর নির্ভর করে।
IV term structure সম্পর্কিত প্রায়শই জিজ্ঞাসিত প্রশ্ন
Options-এ IV term structure কী?
এটি near-the-money options-এর implied volatility, যা expiration date অনুযায়ী plot করা হয়। June 2026-এ ছয়টি liquid নামের ক্ষেত্রে median reading 19.6% band-এ 5-20 days এবং 21.5% band-এ 181-365 days ছিল।
Inverted IV term structure বলতে কী বোঝায়?
Inverted curve-এ সবচেয়ে কাছের expiration-গুলোতে implied volatility সর্বোচ্চ থাকে। Front month-এর মধ্যে কোনো নির্দিষ্ট তারিখের event থাকলে এমন curve দেখা যায়। তীব্র selloff-এর পরের session-গুলোতেও এটি দেখা যেতে পারে। সে সময় near-dated contract-গুলো সাম্প্রতিক বড় price move অনুযায়ী মূল্যায়িত হয়, আর দূরের contract-গুলো দীর্ঘমেয়াদি গড়ের কাছাকাছি থাকে।
Earnings-এর আগে front month implied volatility এত বেশি থাকে কেন?
Near-dated contract-এ একটি বড় প্রত্যাশিত overnight move-কে গড় করার জন্য সাধারণ trading day খুব কম থাকে। তাই সেটি হিসাবের মধ্যে আনতে annualized figure বেড়ে যায়। NVIDIA-এর 5-20 days band-এ reading তার February 26, 2025 report-এর আগের session-এ 84.9% এবং পরের session-এ 66.4% ছিল।
Term structure কি volatility skew-এর মতোই?
না। Skew একটি expiration-এর মধ্যে বিভিন্ন strike-এর implied volatility তুলনা করে। Term structure-এ moneyness মোটামুটি অপরিবর্তিত রেখে বিভিন্ন expiration-এর মধ্যে তুলনা করা হয়। একই surface-এর strike dimension নিয়ে Volatility skew আলোচনা করে।
উপরের প্রতিটি figure per-contract implied volatility-এর ওপর করা stored query থেকে নেওয়া হয়েছে। প্রতিটি panel-এর নিচে SQL expand করা যায়। Strasmore terminal-এ যেকোনো ticker-এর জন্য একই curve plot করুন।