IV rank и IV percentile: разница и формулы расчета
Разбираем отличия IV rank и IV percentile. В статье представлены формулы, наглядный пример расчета и объяснение ситуаций, когда показатели дают противоречивые данные для одного тикера.
Разница между IV rank и IV percentile
IV rank и IV percentile — это два разных математических показателя, рассчитываемых на основе одних и тех же данных. IV rank показывает положение текущей подразумеваемой волатильности (implied volatility) внутри её диапазона за пятьдесят две недели, от минимального до максимального значения. IV percentile определяет долю торговых дней за выбранный период, когда значение волатильности было ниже текущего. Для одного и того же тикера в один и тот же день показатели могут сильно различаться, например, восемнадцать и семьдесят.
Две формулы в развернутом виде
IV rank = (текущая IV минус 52-недельный минимум IV) / (52-недельный максимум IV минус 52-недельный минимум IV) x 100
IV percentile = (количество торговых дней в периоде с IV ниже текущей) / (общее количество торговых дней в периоде) x 100
Оба показателя принимают значения от нуля до ста. Для обоих требуются одни и те же два параметра: ряд значений дневной подразумеваемой волатильности для акции и ретроспективный период, который традиционно составляет двести пятьдесят два торговых дня. Сама подразумеваемая волатильность — это рыночная оценка ожидаемого годового диапазона движения цены акции, выведенная из текущих цен опционов; подробнее об этом читайте в что измеряет подразумеваемая волатильность.
Различие между ними заключается в том, какой объем данных за период учитывает каждый из показателей. IV rank опирается ровно на два дня из двухсот пятидесяти двух: день с самым высоким и день с самым низким значением. Все, что находится между ними, не учитывается. IV percentile учитывает каждый день в равной степени и не принимает во внимание величину разброса значений. Первый показатель определяет положение внутри диапазона. Второй — это подсчет количества дней.
Пример для самостоятельной проверки
Возьмем условный ряд значений 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.
IV percentile: семь из десяти значений (22, 24, 21, 26, 25, 23 и 24) находятся ниже 28, что дает 7 / 10 x 100 = 70,0.
IV rank на уровне 17,9 указывает на дешевую волатильность. IV percentile на уровне 70 означает, что в большинство дней за рассматриваемый период волатильность была ниже текущего значения. Оба показателя верно описывают один и тот же набор из десяти чисел.
Теперь изменим одно значение. Заменим 60 на 30, оставив остальные девять показателей без изменений. IV rank станет равен (28 - 21) / (30 - 21) x 100 = 77,8. IV percentile не изменится: он по-прежнему равен 70,0. Одна сессия, установившая максимум, дает 60 пунктов для IV rank, но никак не влияет на IV percentile.
В этом заключается структурная слабость IV rank. Единичный всплеск в рамках периода — например, гэп на отчетности или кратковременный рыночный испуг — резко увеличивает знаменатель и удерживает ранг на низких значениях в течение следующих двенадцати месяцев, даже когда этот всплеск уже давно вышел из опционной цепочки. Если показатели сильно расходятся, это обычно указывает на наличие выброса внутри периода, и в таком случае percentile более точно отражает реальное распределение волатильности во времени. IV rank лучше использовать, когда диапазон значений стабилен, а оба экстремума сформированы более чем одной сессией. Ни один из этих показателей не дает информации о направлении движения.
Как выглядит реальный ряд IV
Ниже представлены исходные данные, на которых работают обе формулы. На графике ниже строится ежедневное значение подразумеваемой волатильности (implied volatility) для AAPL «на деньгах» (at the money) по контрактам со сроком экспирации от двадцати до сорока пяти дней и отклонением в пределах пяти процентов от цены акции, после чего эти значения усредняются по неделям.
Точный 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 еженедельных точек: от недели Jul 28, 2025 со средним значением 30.03% до недели Aug 3, 2026 со значением 27.7%. Форма этой линии определяет, совпадают ли ранг и процентиль. Линия с одним высоким изолированным пиком разделяет их. Линия, которая колеблется внутри стабильного диапазона, удерживает их близко друг к другу. Наша страница подразумеваемая волатильность AAPL отслеживает этот инструмент в динамике; для оценки абсолютного уровня без привязки к истории см. является ли IV 30% высоким значением.
IV rank и IV percentile для восьми тикеров
Используются одинаковые формулы и период анализа для восьми ликвидных инструментов в рамках одной сессии. Столбец gap отражает абсолютную разницу между двумя показателями.
Точный 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 DESCПо состоянию на Aug 3, 2026, максимальное расхождение в таблице составляет 35.6 пунктов и наблюдается по AAPL: здесь IV rank равен 32.4, тогда как IV percentile составляет 68. На другом конце спектра находится TSLA, где разница между показателями не превышает 6.5 пунктов. Скрининг, основанный на одном показателе, выдает список, отличный от скрининга по другому, и именно поэтому важно понимать, какой из них отображает ваша торговая платформа. В инструменте акции с самым высоким IV 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Почему две платформы показывают разные значения для одного тикера
Ни одна из формул не является двусмысленной. Двусмысленны входные данные. Поставщики редко раскрывают, какой ряд IV они используют, а стандартные варианты находятся на противоположных концах цепочки: либо IV с постоянным сроком погашения тридцать дней, интерполированная между двумя экспирациями по обе стороны от тридцатидневного рубежа, либо контракт «на деньгах» (at the money) ближайшего месяца, который гораздо более волатилен. Некоторые платформы вместо этого усредняют всю цепочку. На этой панели одна акция прогоняется через три определения входных данных IV за одни и те же пятьдесят две недели.
Точный 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На последней сессии Wide net, any expiry показывает 37.6%, в то время как Near 30 day ATM показывает 27.7%, а их ранги IV составляют 23.1 и 32.4. Одна и та же акция, одна и та же сессия, одна и та же формула, но разное определение входных данных.
Второй рычаг — это период ретроспективного анализа (lookback). Пятьдесят две недели — это стандарт, и многие платформы предлагают настройки на тридцать, шестьдесят или девяносто дней наряду с ним.
Точный 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_daysПри ретроспективном периоде 1 month эта акция получает 0.4 по рангу IV и 4.8 по процентилю IV. Увеличьте окно до 24 months, и на той же сессии показатели составят 23.4 и 63.3. В цепочке опционов между этими строками ничего не изменилось. Изменилось только окно. Если два экрана показывают разные данные по одному тикеру, настройки ретроспективного периода и ряд IV — это первые два параметра, которые следует проверить.
Как используются эти два показателя
Оба значения служат фильтром для выбора стратегии, а не прогнозом. Трейдеры, продающие волатильность, включая тех, кто использует covered calls и cash secured puts, обычно ищут высокие показатели. В таких случаях опцион оценивается рынком исходя из более значительного движения, чем то, которое акция демонстрировала на данном отрезке времени. Трейдеры, покупающие волатильность, ориентируются на низкие значения, где та же логика работает в обратном направлении. Для этой задачи относительный показатель лучше, чем «сырое» значение IV: сорок процентов IV — это обычное явление для одной акции и экстремальное для другой, а оценка акции относительно её собственной истории устраняет эту проблему. Статья Is high implied volatility good подробно разбирает преимущества и недостатки для обеих сторон.
Есть один нюанс, на который эти цифры не дают ответа. Высокое значение может вырасти ещё сильнее, а ранг девяносто пять в понедельник может превратиться в ранг шестьдесят в пятницу без каких-либо изменений в вашей позиции. Ни один из этих показателей не содержит информации о направлении движения: повышенная IV означает, что рынок заложил в цену ожидание сильного движения, не указывая при этом, в какую сторону оно произойдет.
Часто задаваемые вопросы
Что лучше: IV rank или IV percentile?
Они отвечают на разные вопросы. IV percentile лучше работает, когда в расчетном периоде был один резкий скачок, так как этот показатель учитывает количество дней, а не сравнивает текущее значение с одним экстремумом. IV rank более интуитивен, когда диапазон значений хорошо заполнен, поскольку он прямо показывает, насколько текущий уровень близок к максимуму за двенадцать месяцев.
Какой IV rank считается высоким?
Большинство торговых отделов рассматривают значения выше пятидесяти как верхнюю половину собственного диапазона акции, а значения выше восьмидесяти — как существенно повышенные для данного инструмента. Показатель по своей природе относительный, поэтому IV rank восемьдесят для спокойной акции потребительского сектора и для волатильной акции роста описывают совершенно разные абсолютные уровни IV.
Используют ли IV rank и IV percentile одинаковый период ретроспективного анализа?
Обычно для обоих показателей это двести пятьдесят два торговых дня, хотя на большинстве платформ настройки можно менять, а значения по умолчанию зависят от поставщика данных. На панели выше показано, как одна и та же акция получает разные оценки при разной длине окна; это первое, что нужно проверить, если данные двух инструментов расходятся.
Может ли IV rank быть равен нулю или ста?
Да. IV rank достигает ста в день, когда акция фиксирует новый пятидесятидвухнедельный максимум по подразумеваемой волатильности, и нуля — при новом минимуме, так как текущее значение само по себе является одной из границ диапазона. IV percentile редко достигает этих экстремумов, поскольку текущая сессия также учитывается в знаменателе.
Почему мой IV rank изменился, хотя IV осталась прежней?
Окно анализа сдвигается каждую сессию. Когда старый скачок волатильности выпадает из расчетного периода в пятьдесят две недели, максимум в знаменателе снижается, и ранг растет, даже если текущая IV не изменилась. IV crush описывает другой распространенный сюрприз — падение самой IV сразу после публикации отчетности.
Каждая панель здесь содержит соответствующий SQL-запрос. Замените тикер в любой из них, чтобы получить оценку для другого инструмента в терминале Strasmore.