Strasmore Research
Học tập Matt ConnorBởi Matt Connor · data as of August 6, 2026 · refreshed weekly

IV rank và IV percentile: Công thức và ví dụ

Tìm hiểu IV rank và IV percentile qua hai công thức, một ví dụ tự kiểm tra và trường hợp hai chỉ số lệch nhau rõ rệt trên cùng một ticker.

IV rank và IV percentile khác nhau ở hai phép tính dựa trên cùng một bộ dữ liệu. IV rank đo vị trí của implied volatility hôm nay trong biên độ 52 tuần, từ mức thấp nhất đến mức cao nhất. IV percentile tính tỷ lệ số ngày giao dịch trong khoảng thời gian xem xét có mức đóng cửa thấp hơn mức hôm nay. Cùng một ticker, vào cùng một buổi chiều, có thể đạt 18 theo một chỉ số và 70 theo chỉ số còn lại.

Hai công thức, viết đầy đủ

IV rank = (IV hiện tại trừ IV thấp nhất trong 52 tuần) / (IV cao nhất trong 52 tuần trừ IV thấp nhất trong 52 tuần) x 100

IV percentile = (số ngày giao dịch trong khoảng thời gian có IV thấp hơn IV hôm nay) / (tổng số ngày giao dịch trong khoảng thời gian) x 100

Cả hai đều nằm trong khoảng từ 0 đến 100. Cả hai cần cùng hai đầu vào: chuỗi biến động ngụ ý hằng ngày của cổ phiếu và một khoảng thời gian nhìn lại, thường là 252 ngày giao dịch. Bản thân biến động ngụ ý là ước tính thường niên của thị trường quyền chọn về mức độ biến động của cổ phiếu, được suy ra từ giá quyền chọn thực tế. biến động ngụ ý đo lường điều gì giải thích khái niệm này từ đầu.

Điểm khác biệt nằm ở mức độ dữ liệu trong khoảng thời gian mà mỗi chỉ báo sử dụng. IV rank chỉ xem xét đúng hai ngày trong 252 ngày: ngày có IV cao nhất và ngày có IV thấp nhất. Các mức IV ở giữa không ảnh hưởng đến kết quả. IV percentile xem xét mọi ngày như nhau và không quan tâm khoảng cách giữa các mức IV. Một chỉ báo đo vị trí trong một khoảng. Chỉ báo còn lại đếm số ngày.

Ví dụ minh họa có thể tự kiểm tra

Hãy lấy một chuỗi IV giả định trong mười ngày, mỗi phiên có một mức ghi nhận: 22, 24, 21, 60, 26, 25, 23, 27, 24 và hôm nay là 28. Mức thấp nhất là 21 và mức cao nhất là 60.

IV rank: (28 - 21) / (60 - 21) x 100 = 7 / 39 x 100 = 17,9.

Có bảy trong mười mức ghi nhận, gồm 22, 24, 21, 26, 25, 23 và 24, thấp hơn 28. Vì vậy, IV percentile: 7 / 10 x 100 = 70,0.

IV rank ở mức 17,9 cho thấy volatility đang ở mức thấp. IV percentile ở mức 70 cho thấy volatility từng thấp hơn mức hiện tại trong phần lớn số ngày của khoảng thời gian này. Cả hai đều mô tả đúng cùng một bộ mười số liệu.

Bây giờ thay đổi một giá trị. Thay 60 bằng 30 và giữ nguyên chín mức còn lại. IV rank trở thành (28 - 21) / (30 - 21) x 100 = 77,8. IV percentile không thay đổi, vẫn là 70,0. Một phiên duy nhất, tức phiên xác lập mức cao nhất, có ảnh hưởng 60 điểm đến IV rank nhưng hoàn toàn không ảnh hưởng đến IV percentile.

Đó là điểm yếu mang tính cấu trúc của IV rank. Một đợt tăng vọt đơn lẻ trong khoảng thời gian, chẳng hạn khoảng trống giá do công bố kết quả kinh doanh hoặc một phiên hoảng sợ, sẽ mở rộng mẫu số và ghim rank gần đáy trong mười hai tháng tiếp theo, rất lâu sau khi đợt tăng vọt đó không còn phản ánh trong chuỗi giá quyền chọn. Khi hai điểm số chênh lệch rõ rệt, nguyên nhân thường là có một outlier trong khoảng thời gian quan sát. Khi đó, percentile mô tả sát hơn mức độ volatility thực sự duy trì trong khoảng thời gian này. IV rank phù hợp hơn khi biên độ biến động tương đối ổn định và cả hai cực đều được xác lập trong nhiều hơn một phiên. Không chỉ số nào cho biết hướng biến động.

Hình dạng thực tế của một chuỗi IV

Đây là dữ liệu đầu vào mà cả hai công thức sử dụng. Biểu đồ bên dưới xây dựng chỉ số biến động hàm ý tại giá thực hiện (at the money) hằng ngày cho AAPL, dựa trên các hợp đồng còn từ 20 đến 45 ngày đến ngày đáo hạn và có giá thực hiện nằm trong phạm vi 5% so với giá cổ phiếu. Sau đó, chỉ số được lấy trung bình theo tuần.

Truy vấnIV ATM của AAPL theo tuần, 52 tuần gần nhất
Câu lệnh SQL chính xác đằng sau mỗi con số
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)
Run this yourself

Chuỗi này gồm 54 điểm dữ liệu theo tuần, bắt đầu từ tuần của Jul 28, 2025 với mức trung bình 30.03%, và kết thúc ở tuần của Aug 3, 2026 với mức 27.7%. Hình dạng của đường này quyết định việc rank và percentile có cho cùng một kết quả hay không. Một đường có một đỉnh tăng vọt đơn lẻ sẽ tạo ra sự khác biệt giữa hai thước đo. Một đường dao động trong một biên độ ổn định sẽ khiến chúng có kết quả gần nhau. Trang biến động hàm ý của AAPL theo dõi mã này theo thời gian. Nếu bạn chỉ quan tâm đến mức tuyệt đối mà không cần dữ liệu lịch sử, hãy xem IV 30% có cao không.

So sánh IV rank và IV percentile trên tám ticker

Cùng công thức, cùng khoảng thời gian nhìn lại, tám mã có thanh khoản tốt trong một phiên. Cột gap là khoảng cách tuyệt đối giữa hai điểm số.

Truy vấnXếp hạng IV so với percentile IV, 8 mã thanh khoản cao, nhìn lại 52 tuần
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Run this yourself

Tính đến Aug 3, 2026, mức chênh lệch lớn nhất trong bảng là 35.6 điểm tại AAPL, khi IV rank ở mức 32.4 còn IV percentile là 68. Ở đầu kia của bảng, TSLA giữ khoảng cách giữa hai chỉ số trong phạm vi 6.5 điểm. Bộ lọc dựa trên một chỉ số sẽ trả về danh sách khác với bộ lọc dựa trên chỉ số còn lại. Đây là lý do thực tế để biết nền tảng của bạn hiển thị chỉ số nào. Bộ lọc cổ phiếu có IV rank cao nhất sắp xếp thị trường theo chỉ số đầu tiên.

Các dữ liệu đầu vào về biên độ được sử dụng cho mọi rank trong bảng

Đưa các cột hiện tại, thấp nhất và cao nhất vào công thức rank, bạn sẽ nhận lại cột rank ở trên.

Truy vấnIV ATM hiện tại, thấp nhất và cao nhất trong 52 tuần của từng mã
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Run this yourself

Vì sao hai nền tảng báo các giá trị khác nhau cho cùng một ticker

Không công thức nào trong hai công thức này là mơ hồ. Vấn đề nằm ở các dữ liệu đầu vào. Các nhà cung cấp hiếm khi công bố chuỗi IV nào được sử dụng. Những lựa chọn phổ biến thường nằm ở hai đầu khác nhau của chuỗi dữ liệu: IV có kỳ hạn cố định 30 ngày, được nội suy giữa hai kỳ hạn nằm hai bên mốc 30 ngày; hoặc hợp đồng at-the-money của tháng gần nhất, vốn biến động mạnh hơn nhiều. Một số nền tảng lại lấy bình quân của toàn bộ chuỗi quyền chọn. Phần này chạy cùng một cổ phiếu qua ba định nghĩa về dữ liệu IV đầu vào trong cùng 52 tuần.

Truy vấnMột cổ phiếu, một phiên, ba định nghĩa về đầu vào IV
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Run this yourself

Trong phiên gần nhất, Wide net, any expiry ghi nhận 37.6%, trong khi Near 30 day ATM ghi nhận 27.7%; IV rank của chúng lần lượt là 23.132.4. Cùng một cổ phiếu, cùng một phiên, cùng một công thức, nhưng định nghĩa về dữ liệu đầu vào khác nhau.

Yếu tố thứ hai là độ dài khoảng thời gian nhìn lại. 52 tuần là quy ước phổ biến. Nhiều nền tảng cũng cung cấp các tùy chọn 30, 60 hoặc 90 ngày.

Truy vấnCùng một phiên được chấm điểm theo 5 khung thời gian nhìn lại khác nhau
Câu lệnh SQL chính xác đằng sau mỗi con số
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
Run this yourself

Với khoảng thời gian nhìn lại 1 month, cổ phiếu này có IV rank là 0.4 và IV percentile là 4.8. Khi kéo dài khoảng thời gian lên 24 months, cùng phiên đó cho kết quả lần lượt là 23.463.3. Chuỗi quyền chọn không thay đổi giữa hai dòng dữ liệu. Chỉ có khoảng thời gian nhìn lại thay đổi. Khi hai màn hình cho kết quả khác nhau về một ticker, độ dài khoảng thời gian nhìn lại và chuỗi IV là hai yếu tố đầu tiên cần kiểm tra.

Cách sử dụng hai chỉ số

Cả hai chỉ số đều được dùng để sàng lọc việc lựa chọn chiến lược, không phải để dự báo. Những trader bán premium, trong đó có covered call và put có tài sản bảo đảm bằng tiền mặt, thường tìm các mức cao. Ở đó, quyền chọn được định giá cho mức biến động lớn hơn mức cổ phiếu thường ghi nhận trong khoảng thời gian được xét. Trader mua premium lại chú ý đến các mức thấp, vì logic tương tự diễn ra theo chiều ngược lại. Điểm số tương đối phù hợp hơn con số IV tuyệt đối cho mục đích này: IV 40% là mức bình thường với một cổ phiếu nhưng có thể là mức cực đoan với cổ phiếu khác. Việc so sánh một cổ phiếu với chính lịch sử của nó giúp loại bỏ vấn đề đó. Implied volatility cao có tốt không phụ thuộc vào sự đánh đổi ở mỗi phía.

Có một điểm mà các chỉ số này không thể trả lời thay bạn. Một mức cao có thể tiếp tục tăng. Xếp hạng 95 vào thứ Hai có thể trở thành xếp hạng 60 vào thứ Sáu dù vị thế của bạn không thay đổi. Không chỉ số nào cho biết hướng biến động: IV cao nghĩa là thị trường đã định giá một biến động lớn, nhưng không thể hiện quan điểm biến động sẽ đi theo hướng nào.

Câu hỏi thường gặp

IV rank hay IV percentile tốt hơn?

Hai chỉ báo này trả lời những câu hỏi khác nhau. IV percentile phù hợp hơn khi khoảng thời gian quan sát có một phiên tăng vọt mạnh, vì chỉ báo này đếm số ngày thay vì so sánh với một cực trị duy nhất. IV rank trực quan hơn khi dữ liệu trong khoảng dao động đủ dày, vì nó cho biết trực tiếp IV hôm nay đang gần mức cao nhất trong 12 tháng đến đâu.

IV rank ở mức nào được xem là cao?

Hầu hết trading desk xem mức trên 50 là nửa trên trong biên độ riêng của cổ phiếu, còn mức trên 80 là thực sự cao đối với mã đó. Điểm số này mang tính tương đối theo bản chất. Vì vậy, IV rank ở mức 80 trên một cổ phiếu hàng tiêu dùng ổn định và IV rank ở mức 80 trên một cổ phiếu tăng trưởng biến động mạnh thể hiện hai mức IV tuyệt đối rất khác nhau.

IV rank và IV percentile có dùng cùng khoảng thời gian quan sát không?

Thông thường, cả hai đều dùng 252 ngày giao dịch, dù người dùng có thể điều chỉnh thiết lập này trên hầu hết các nền tảng và giá trị mặc định thay đổi tùy nhà cung cấp. Bảng phía trên cho thấy cùng một cổ phiếu có điểm số khác nhau ở mỗi độ dài khoảng thời gian. Đây là điều đầu tiên cần kiểm tra khi hai công cụ cho kết quả không giống nhau.

IV rank có thể bằng 0 hoặc 100 không?

Có. IV rank đạt 100 vào ngày cổ phiếu ghi nhận mức cao mới trong 52 tuần của implied volatility, và đạt 0 khi lập mức thấp mới, vì mức IV hôm nay chính là một đầu mút của biên độ. IV percentile hiếm khi chạm một trong hai mức cực trị này, vì phiên hôm nay cũng nằm trong mẫu số.

Vì sao IV rank thay đổi dù IV không biến động?

Khoảng thời gian quan sát được cập nhật sau mỗi phiên. Khi một mức tăng vọt cũ rời khỏi 52 tuần gần nhất, mức cao trong mẫu số giảm xuống và IV rank tăng lên, dù IV hôm nay không đổi. IV crush mô tả một bất ngờ phổ biến khác: IV tự giảm mạnh ngay sau khi doanh nghiệp công bố kết quả kinh doanh.


Mỗi bảng tại đây đều đi kèm câu lệnh SQL chính xác ở phía dưới. Hãy thay ticker trong bất kỳ bảng nào để chấm điểm một mã khác trên terminal Strasmore.