IV Rank वि. IV Percentile: सूत्रे आणि उदाहरण
IV rank वि. IV percentileची दोन्ही सूत्रे, हाताने तपासता येणारे उदाहरण आणि त्याच tickerवर दोन्ही आकडे मोठ्या प्रमाणात वेगळे का दिसू शकतात, हे समजून घ्या.
IV rank आणि IV percentile यांतील फरक त्याच डेटावर केलेल्या दोन गणनांवर आधारित असतो. IV rank आजची implied volatility तिच्या 52-week rangeमध्ये कुठे आहे हे मोजतो—सर्वात कमी readingपासून सर्वाधिक readingपर्यंत. IV percentile lookback windowमधील आजच्या readingपेक्षा कमी पातळीवर बंद झालेल्या trading daysचा हिस्सा मोजतो. त्याच दुपारी, त्याच tickerसाठी, एका मोजमापाचा score 18 तर दुसऱ्याचा 70 असू शकतो.
दोन्ही सूत्रे पूर्ण स्वरूपात
IV rank = (सध्याचा IV वजा 52 आठवड्यांतील किमान IV) / (52 आठवड्यांतील कमाल IV वजा 52 आठवड्यांतील किमान IV) x 100
IV percentile = (दिलेल्या कालावधीत आजच्या IVपेक्षा कमी IV असलेले trading days) / (दिलेल्या कालावधीतील एकूण trading days) x 100
दोन्ही मूल्ये 0 ते 100 दरम्यान असतात. दोन्हींसाठी समान दोन inputs आवश्यक असतात: शेअरसाठी दररोजची implied volatility series आणि मागील कालावधीची window, जी सामान्यतः 252 trading daysची असते. Implied volatility म्हणजे live option pricesवरून उलट गणना केलेला, शेअरची किंमत किती बदलू शकते याचा option marketने annualized स्वरूपात दिलेला अंदाज. implied volatility काय मोजते या लेखात त्याचे सुरुवातीपासून स्पष्टीकरण दिले आहे.
दोन्हींमधील फरक म्हणजे प्रत्येक सूत्र त्या windowमधील किती माहिती वापरते. IV rank 252 दिवसांपैकी नेमके दोन दिवस पाहतो: कमाल आणि किमान. मधील सर्व मूल्ये त्याच्यासाठी गौण असतात. IV percentile मात्र प्रत्येक दिवसाला समान महत्त्व देतो आणि त्या मूल्यांमधील अंतर किती आहे हे पाहत नाही. एक म्हणजे rangeमधील स्थान. दुसरे म्हणजे दिवसांची संख्या.
हाताने पडताळता येणारे उदाहरण
दहा दिवसांची काल्पनिक IV मालिका घ्या. प्रत्येक सत्रासाठी एक रीडिंग आहे: 22, 24, 21, 60, 26, 25, 23, 27, 24 आणि आजचे रीडिंग 28. नीचांकी मूल्य 21 आणि उच्चांकी मूल्य 60 आहे.
IV rank: (28 - 21) / (60 - 21) x 100 = 7 / 39 x 100 = 17.9.
दहा रीडिंगपैकी सात रीडिंग—22, 24, 21, 26, 25, 23 आणि 24—ही 28च्या खाली आहेत. त्यामुळे IV percentile: 7 / 10 x 100 = 70.0.
17.9 असा IV rank volatility तुलनेने स्वस्त असल्याचे दर्शवतो. 70 असा IV percentile दर्शवतो की या कालावधीतील बहुतेक दिवस volatility आजच्या पातळीपेक्षा कमी होती. समान दहा आकड्यांचे हे दोन्ही अचूक वर्णन आहेत.
आता एक मूल्य बदला. 60च्या जागी 30 ठेवा आणि इतर नऊ रीडिंग तशीच ठेवा. IV rank: (28 - 21) / (30 - 21) x 100 = 77.8. IV percentileमध्ये कोणताही बदल होत नाही; तो 70.0च राहतो. उच्चांकी मूल्य ठरवणाऱ्या एका सत्राचे IV rankमध्ये 60 pointsचे महत्त्व असते, पण IV percentileमध्ये त्याचे अजिबात महत्त्व नसते.
हीच IV rankची संरचनात्मक कमकुवत बाजू आहे. कालावधीत आलेली एकच तीव्र उसळी—उत्पन्न जाहीर झाल्यानंतरची gap किंवा एका दिवसाची भीती—denominator मोठा करते आणि त्यानंतरच्या बारा महिन्यांसाठी rankला तळाच्या पातळीच्या जवळ रोखून ठेवते. तो spike option chainमधून निघून गेल्यानंतरही हे घडते. दोन्ही scoresमध्ये मोठा फरक दिसल्यास, त्या कालावधीतील एखाद्या outlierकडे हा फरक सहसा निर्देश करतो. Volatilityने प्रत्यक्षात आपला वेळ कुठे घालवला हे percentile अधिक अचूकपणे दर्शवतो. Range गुळगुळीत असेल आणि दोन्ही टोकांवर एकापेक्षा अधिक सत्रांची नोंद असेल, तेव्हा IV rank अधिक उपयुक्त संकेत ठरतो. यापैकी कोणताही आकडा दिशेबद्दल काहीही सांगत नाही.
खरीखुरी IV मालिका कशी दिसते
दोन्ही सूत्रे ज्या कच्च्या डेटावर चालतात तो येथे दिला आहे. खालील पॅनेल AAPL साठी दररोजची at-the-money implied volatility मोजते. त्यासाठी expiryला 20 ते 45 दिवस बाकी असलेले आणि शेअरच्या किमतीच्या 5%च्या आत असलेले contracts घेतले जातात. त्यानंतर या readingsची आठवड्यानुसार सरासरी काढली जाते.
प्रत्येक आकड्यामागील अचूक SQL
WITH daily AS
(
SELECT
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
)
SELECT
toString(toMonday(date)) AS week,
formatDateTime(toMonday(date), '%b %e, %Y') AS week_label,
round(avg(atm_iv), 2) AS aapl_atm_iv_pct,
round(min(atm_iv), 2) AS week_low_iv_pct,
round(max(atm_iv), 2) AS week_high_iv_pct
FROM daily
GROUP BY toMonday(date)
ORDER BY toMonday(date)या मालिकेत 54 साप्ताहिक points आहेत. ती Jul 28, 2025च्या आठवड्यापासून सुरू होते, ज्याची सरासरी 30.03% होती, आणि Aug 3, 2026च्या आठवड्यापर्यंत येते, जिथे ती 27.7% होती. त्या रेषेचा आकार rank आणि percentile एकमेकांशी जुळतात की नाही हे ठरवतो. एकच उंच, वेगळा spike असल्यास दोन्ही मोजमापांमध्ये फरक पडतो. स्थिर bandमध्ये फिरणारी रेषा दोन्ही मोजमापे जवळ ठेवते. आमचे AAPL implied volatility पेज या नावातील बदल काळानुसार दाखवते. इतिहासाशी संबंध नसलेल्या केवळ absolute levelच्या प्रश्नासाठी 30% IV जास्त आहे का पहा.
आठ tickersमध्ये IV rank आणि IV percentileची तुलना
समान सूत्रे, समान lookback, आठ liquid stocks आणि एकच session. gap स्तंभ हा या दोन scoresमधील absolute distance दाखवतो.
प्रत्येक आकड्यामागील अचूक SQL
WITH daily AS
(
SELECT
underlying_symbol AS symbol,
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'SPY', 'QQQ', 'KO')
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY symbol, date
),
latest AS
(
SELECT
symbol,
argMax(atm_iv, date) AS iv_now,
max(date) AS as_of
FROM daily
GROUP BY symbol
)
SELECT
d.symbol AS symbol,
round(100 * (l.iv_now - min(d.atm_iv)) / nullIf(max(d.atm_iv) - min(d.atm_iv), 0), 1) AS iv_rank,
round(100 * countIf(d.atm_iv < l.iv_now) / count(), 1) AS iv_percentile,
round(abs(iv_rank - iv_percentile), 1) AS gap,
formatDateTime(any(l.as_of), '%b %e, %Y') AS as_of_label
FROM daily AS d
INNER JOIN latest AS l ON l.symbol = d.symbol
GROUP BY d.symbol, l.iv_now
ORDER BY gap DESCAug 3, 2026 पर्यंत, या तक्त्यातील सर्वाधिक फरक 35.6 pointsचा आहे. तो AAPL येथे दिसतो, जिथे IV rank 32.4 आहे, तर IV percentile 68 आहे. तक्त्याच्या दुसऱ्या टोकाला, TSLA या दोन्ही मोजमापांमधील फरक 6.5 pointsच्या आत ठेवतो. एका संख्येवर आधारित screen केल्यास दुसऱ्या संख्येवर आधारित screenपेक्षा वेगळी यादी मिळते. त्यामुळे तुमचे platform कोणती संख्या दाखवते हे जाणून घेणे व्यवहाराच्या दृष्टीने महत्त्वाचे आहे. सर्वाधिक IV rank असलेल्या stocksची screen यापैकी पहिल्या मोजमापानुसार marketची क्रमवारी लावते.
त्या तक्त्यातील प्रत्येक rankमागील range inputs
Current, low आणि high स्तंभ rank formulaमध्ये टाकल्यास वरचा rank स्तंभ पुन्हा मिळतो.
प्रत्येक आकड्यामागील अचूक SQL
WITH daily AS
(
SELECT
underlying_symbol AS symbol,
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'SPY', 'QQQ', 'KO')
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY symbol, date
),
latest AS
(
SELECT
symbol,
argMax(atm_iv, date) AS iv_now,
max(date) AS as_of
FROM daily
GROUP BY symbol
)
SELECT
d.symbol AS symbol,
round(l.iv_now, 2) AS current_iv_pct,
round(min(d.atm_iv), 2) AS low_52w_iv_pct,
round(max(d.atm_iv), 2) AS high_52w_iv_pct,
count() AS observations,
formatDateTime(any(l.as_of), '%b %e, %Y') AS as_of_label
FROM daily AS d
INNER JOIN latest AS l ON l.symbol = d.symbol
GROUP BY d.symbol, l.iv_now
ORDER BY current_iv_pct DESCएकाच tickerसाठी दोन प्लॅटफॉर्म वेगवेगळी मूल्ये का दाखवतात
कोणतेही formula संदिग्ध नाही. संदिग्धता inputsमध्ये आहे. Vendors ते कोणती IV series वापरतात हे क्वचितच जाहीर करतात. प्रचलित पर्याय या साखळीच्या दोन टोकांवर असतात: 30 दिवसांची constant maturity IV, जी 30 दिवसांच्या आधी आणि नंतरच्या दोन expiriesमधून interpolation करून काढली जाते; किंवा front-month at-the-money contract, ज्यात चढ-उतार अधिक तीव्र असतात. काही प्लॅटफॉर्म संपूर्ण chainची सरासरीही काढतात. या panelमध्ये एकाच stockवर, त्याच 52 आठवड्यांच्या कालावधीत, IV inputच्या तीन व्याख्या वापरल्या आहेत.
प्रत्येक आकड्यामागील अचूक SQL
WITH contracts AS
(
SELECT
date,
days_to_expiry,
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS moneyness,
toFloat64(implied_volatility) * 100 AS iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
),
defs AS
(
SELECT
spec.1 AS iv_series,
spec.2 AS min_dte,
spec.3 AS max_dte,
spec.4 AS max_moneyness
FROM
(
SELECT arrayJoin([
('Near 30 day ATM', 20, 45, 0.05),
('Front month ATM', 1, 19, 0.05),
('Wide net, any expiry', 1, 400, 0.30)
]) AS spec
)
),
daily AS
(
SELECT
s.iv_series AS iv_series,
c.date AS date,
avg(c.iv_pct) AS atm_iv
FROM contracts AS c
CROSS JOIN defs AS s
WHERE c.days_to_expiry BETWEEN s.min_dte AND s.max_dte
AND c.moneyness < s.max_moneyness
GROUP BY iv_series, date
),
latest AS
(
SELECT
iv_series,
argMax(atm_iv, date) AS iv_now
FROM daily
GROUP BY iv_series
)
SELECT
d.iv_series AS iv_series,
round(l.iv_now, 2) AS current_iv_pct,
round(min(d.atm_iv), 2) AS low_52w_iv_pct,
round(max(d.atm_iv), 2) AS high_52w_iv_pct,
round(100 * (l.iv_now - min(d.atm_iv)) / nullIf(max(d.atm_iv) - min(d.atm_iv), 0), 1) AS iv_rank,
round(100 * countIf(d.atm_iv < l.iv_now) / count(), 1) AS iv_percentile
FROM daily AS d
INNER JOIN latest AS l ON l.iv_series = d.iv_series
GROUP BY d.iv_series, l.iv_now
ORDER BY current_iv_pct DESCसर्वात अलीकडील sessionमध्ये, Wide net, any expiryचे मूल्य 37.6% आहे, तर Near 30 day ATMचे मूल्य 27.7% आहे. त्यांचे IV ranks अनुक्रमे 23.1 आणि 32.4 आहेत. Stock तोच, session तेच, formula तेच; inputची व्याख्या मात्र वेगळी.
दुसरा महत्त्वाचा घटक म्हणजे lookback length. 52 आठवडे ही प्रचलित पद्धत आहे. अनेक प्लॅटफॉर्म त्यासोबत 30, 60 किंवा 90 दिवसांच्या settingsही देतात.
प्रत्येक आकड्यामागील अचूक SQL
WITH daily AS
(
SELECT
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= today() - 800
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
),
latest AS
(
SELECT
argMax(atm_iv, date) AS iv_now,
max(date) AS as_of
FROM daily
),
windows AS
(
SELECT
spec.1 AS lookback_label,
spec.2 AS lookback_days
FROM
(
SELECT arrayJoin([
('1 month', 30),
('3 months', 90),
('6 months', 180),
('12 months', 371),
('24 months', 742)
]) AS spec
)
)
SELECT
w.lookback_label AS lookback_label,
round(100 * (l.iv_now - min(d.atm_iv)) / nullIf(max(d.atm_iv) - min(d.atm_iv), 0), 1) AS iv_rank,
round(100 * countIf(d.atm_iv < l.iv_now) / count(), 1) AS iv_percentile,
count() AS observations
FROM daily AS d
CROSS JOIN windows AS w
CROSS JOIN latest AS l
WHERE d.date >= l.as_of - w.lookback_days
GROUP BY w.lookback_label, w.lookback_days, l.iv_now
ORDER BY w.lookback_days1 month lookbackमध्ये या stockचा IV rank 0.4 आणि IV percentile 4.8 आहे. Window 24 monthsपर्यंत वाढवल्यावर त्याच sessionमध्ये हे आकडे अनुक्रमे 23.4 आणि 63.3 होतात. या दोन rowsदरम्यान option chainमध्ये कोणताही बदल झालेला नाही. बदल फक्त windowमध्ये झाला. दोन screensवर एका tickerसाठी वेगवेगळी मूल्ये दिसली, तर प्रथम lookback setting आणि IV series तपासा.
दोन्ही आकडे कसे वापरले जातात
दोन्ही मोजमापे धोरण निवडीसाठी गाळणी म्हणून वापरली जातात; अंदाज म्हणून नाही. Premium विकणारे ट्रेडर्स, यामध्ये covered calls आणि cash secured puts विकणाऱ्यांचाही समावेश आहे, सामान्यतः उच्च readings शोधतात. अशा वेळी optionची किंमत त्या कालावधीत शेअरने प्रत्यक्षात दिलेल्या हालचालीपेक्षा अधिक हालचालीचा अंदाज दर्शवत असते. Premium खरेदी करणारे ट्रेडर्स कमी readingsकडे पाहतात. येथे हाच तर्क उलट दिशेने लागू होतो. या कामासाठी मूळ IV आकड्यापेक्षा सापेक्ष score अधिक उपयुक्त ठरतो. एका शेअरसाठी 40% IV सामान्य असू शकतो, तर दुसऱ्यासाठी तो अत्यंत उच्च असू शकतो. शेअरची तुलना त्याच्या स्वतःच्या इतिहासाशी केल्यास ही अडचण दूर होते. उच्च implied volatility चांगली असते का याचे उत्तर दोन्ही बाजूंच्या trade-offsवर अवलंबून असते.
या आकड्यांमधून मिळत नाही अशी एक महत्त्वाची माहिती लक्षात घ्या. उच्च reading आणखी वाढू शकते. तसेच, सोमवारी 95 असलेला rank तुमच्या positionमध्ये कोणताही बदल न होता शुक्रवारी 60 होऊ शकतो. कोणताही score दिशेबाबत माहिती देत नाही. Elevated IV म्हणजे बाजाराने मोठ्या हालचालीची किंमत optionमध्ये समाविष्ट केली आहे. मात्र हालचाल कोणत्या दिशेने होईल, याबाबत तो कोणताही अंदाज देत नाही.
वारंवार विचारले जाणारे प्रश्न
IV rank की IV percentile — कोणते अधिक चांगले?
ते वेगवेगळ्या प्रश्नांची उत्तरे देतात. Lookback windowमध्ये एक तीव्र spike असल्यास IV percentile अधिक उपयुक्त ठरतो, कारण तो एका टोकाच्या मूल्याशी तुलना करण्याऐवजी दिवसांची मोजणी करतो. Rangeमध्ये पुरेशी निरीक्षणे असल्यास IV rank अधिक सहज समजतो, कारण आजचे मूल्य twelve month highच्या किती जवळ आहे हे तो थेट दाखवतो.
उच्च IV rank म्हणजे काय?
बहुतेक trading desks 50पेक्षा जास्त readingsना एखाद्या शेअरच्या स्वतःच्या rangeचा वरचा अर्धा भाग मानतात. 80पेक्षा जास्त readings त्या शेअरसाठी प्रत्यक्षात elevated मानल्या जातात. हा score रचनेनुसार relative असतो. त्यामुळे स्थिर consumer stapleचा 80 rank आणि volatile growth nameचा 80 rank हे absolute IVच्या दृष्टीने खूप वेगवेगळे स्तर दर्शवतात.
IV rank आणि IV percentileसाठी एकच lookback वापरला जातो का?
साधारणतः दोन्हीसाठी 252 trading days वापरले जातात. मात्र बहुतेक platformsवर ही setting बदलता येते आणि default vendorनुसार वेगळा असतो. वरील panelमध्ये एकाच शेअरला प्रत्येक window lengthवर वेगवेगळे score मिळताना दिसतात. दोन toolsमध्ये विसंगती दिसल्यास तपासण्याची ही पहिली बाब आहे.
IV rank 0 किंवा 100 असू शकतो का?
होय. एखाद्या शेअरच्या implied volatilityने नवीन 52 week high गाठलेल्या दिवशी IV rank 100 होतो. नवीन low गाठल्यास तो 0 होतो, कारण आजचे reading हे rangeच्या एका endpointवरच असते. IV percentile क्वचितच या दोन्ही टोकांना पोहोचतो, कारण denominatorमध्ये आजचे sessionदेखील समाविष्ट असते.
IVमध्ये बदल झाला नसताना माझा IV rank का बदलला?
प्रत्येक sessionनंतर window पुढे सरकते. मागील 52 weeksमधील एखादा जुना spike windowबाहेर पडल्यावर denominatorमधील high कमी valueवर reset होतो. त्यामुळे आजच्या IVमध्ये बदल नसतानाही rank वाढतो. IV crush हा दुसरा सामान्य आश्चर्यकारक बदल स्पष्ट करतो: earnings reportनंतर लगेच IVमध्ये होणारी घसरण.
येथील प्रत्येक panelखाली अचूक SQL दिलेले आहे. वेगळ्या nameचा score मिळवण्यासाठी त्यापैकी कोणत्याही panelमधील ticker Strasmore terminalवर बदला.