Strasmore Research
Eğitim Matt ConnorYazan Matt Connor · Güncellendi 2026-08-05

Zımni oynaklık nasıl hesaplanır

Zımni oynaklık hesaplamasında kullanılan yinelemeli yöntemler ve Black-Scholes modeli ile opsiyon fiyatlama süreci. Python çözümleyicileri ve veri tutarsızlıkları inceleniyor.

Zımni oynaklığın hesaplanması

Zımni oynaklık (implied volatility), bir formül ile değil, yinelemeli yöntemlerle hesaplanır. Bir opsiyonun piyasa fiyatını doğrudan oynaklık değerine dönüştüren kapalı formda bir ifade bulunmamaktadır. Bu nedenle bir çözümleyici (solver), önce bir oynaklık değeri tahmin eder, Black-Scholes modeli ile opsiyonu fiyatlar, elde edilen model fiyatını piyasa kotasyonu ile karşılaştırır ve iki değer kuruşu kuruşuna eşleşene kadar bu işlemi tekrarlar. Aşağıda yöntemin tamamı; fiyatlama fonksiyonu, standart Python kütüphanesindeki arama döngüsü ve iki farklı veri sağlayıcısının aynı sözleşme için neden farklı rakamlar yayınladığının gerekçeleri yer almaktadır.

Zımni oynaklığın neden kapalı formda bir formülü yoktur

Black-Scholes modeli tek yönlü çalışır. Modele spot fiyat, kullanım fiyatı, vadeye kalan süre, faiz oranı ve oynaklık değerlerini girdiğinizde, size teorik bir fiyat verir. Bu altı değişkenden beşi gözlemlenebilir niteliktedir. Oynaklık ise gözlemlenemez. Oynaklık, hissenin bugünden vade sonuna kadar ne kadar hareket edeceğine dair bir varsayımdır.

İşlemciler bu problemi tersine çevirir. Ekranda fiyat bellidir, bilinmeyen ise oynaklıktır. Zımni oynaklık (implied volatility), Black-Scholes fiyatını opsiyonun piyasa fiyatına eşitleyen oynaklık girdisidir. Oynaklığı temsil eden sigma terimi, normal dağılım fonksiyonunun içinde hem d1 hem de d2 değişkenlerinde yer alır ve hiçbir cebirsel düzenleme onu tek başına bırakmaya yetmez. Cebir burada tıkanır. Sayısal arama yöntemleri devreye girer. Zımni oynaklığın neyi ölçtüğü başlığı yorumlamayı, bu sayfa ise işleyişi ele almaktadır.

Modelin iki özelliği, bu arama işlemini kolaylaştırır. Bir call opsiyonunun model fiyatı, oynaklık arttığında istisnasız olarak yükselir ve bu hareket pürüzsüzdür. Sadece yükselen bir büyüklük, etrafına bir aralık daraltılarak kıstırılabilir.

Çözücü her sözleşme için bir kez çalışır

Çıktı, hisse başına değil, sözleşme başına tek bir sayıdır ve aynı vade aralığındaki aynı hisseye ait sözleşmeler birbirleriyle uyumsuzdur. 30 Haziran 2026 tarihinde işlem gören, 20 ila 45 gün vadesi kalmış tüm Apple (AAPL) opsiyonları, hisse fiyatının bir kesri olarak kullanım fiyatına göre gruplandırılmıştır:

SorgulaKontrat başına tek çözüm: AAPL kullanım fiyatı bölgesine göre zımni volatilite, 30 Haziran 2026
Her verinin arkasındaki tam SQL
WITH toFloat64(strike_price) / toFloat64(underlying_close) AS moneyness
SELECT multiIf(moneyness < 0.90, '0.80-0.90',
               moneyness < 0.95, '0.90-0.95',
               moneyness < 1.00, '0.95-1.00',
               moneyness < 1.05, '1.00-1.05',
               moneyness < 1.10, '1.05-1.10',
                                 '1.10-1.20') AS strike_vs_spot,
       round(100 * avg(toFloat64(implied_volatility)), 1) AS implied_vol_pct,
       count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
  AND date = toDate('2026-06-30')
  AND days_to_expiry BETWEEN 20 AND 45
  AND iv_converged = 1
  AND volume > 0
  AND moneyness BETWEEN 0.80 AND 1.20
GROUP BY strike_vs_spot
ORDER BY min(moneyness)
Run this yourself

Kullanım fiyatı basamakları yukarı doğru okunduğunda, 0.80-0.90 bölgesi 35.5%, 0.95-1.00 bölgesi 28.1% ve 1.10-1.20 bölgesi 27.3% olarak çözülmüştür. Tek bir şirket, tek bir seans, 6 yanıt. Bu eğrideki bükülmenin bir adı vardır; buna volatilite eğimi denir ve hisse başına tek bir volatilite değeri bu eğriyi çizemez.

Çözücünün eşleşmesi gereken Black-Scholes fiyatı

S hisse fiyatını, K kullanım fiyatını, T yıl cinsinden vadeye kalan süreyi, r risksiz faiz oranını ve N() standart normal kümülatif dağılım fonksiyonunu, yani standart normal bir değişkenin belirli bir noktanın altında kalma olasılığını ifade eder. Python bu son parçayı math.erf içinde barındırır, bu nedenle sadece yorumlayıcı yeterlidir.

apt-get update && apt-get install -y python3

Root yetkisine sahip olmadığınız bir makinede her iki komutun başına sudo ekleyin. Ardından bunu iv.py olarak kaydedin:

import math

def norm_cdf(x):
 return 0.5 * (1.0 + math.erf(x / math.sqrt(2.0)))

def bs_call(S, K, T, r, sigma):
 if T <= 0.0 or sigma <= 0.0:
 return max(S - K, 0.0)
 d1 = (math.log(S / K) + (r + 0.5 * sigma * sigma) * T) / (sigma * math.sqrt(T))
 d2 = d1 - sigma * math.sqrt(T)
 return S * norm_cdf(d1) - K * math.exp(-r * T) * norm_cdf(d2)

İleriye dönük modelin tamamı budur. Bir volatilite değeri girin ve fiyatı alın.

Zımni oynaklık adım adım nasıl hesaplanır

Bisection (ikiye bölme) yöntemi, öğrenilmesi gereken ilk yöntemdir. Iraksama yapmaz ve kalkülüs gerektirmez.

  1. Cevabı yüzde bir (yıllık yüzde bir) ile beş (yüzde beş yüz) arasına sıkıştırın. İşlem gören her opsiyon bu aralıkta yer alır.
  2. Opsiyonu aralığın orta noktasında fiyatlayın.
  3. Model fiyatı piyasa kotasyonunun üzerindeyse tahmin çok yüksektir: aralığın üst sınırını orta noktaya çekin. Eğer altındaysa, alt sınırı yukarı taşıyın.
  4. Model fiyatı kotasyonun bir cent yakınına geldiğinde durun.
def implied_vol(price, S, K, T, r, lo=0.01, hi=5.0, tol=0.01):
 for _ in range(100):
 mid = 0.5 * (lo + hi)
 diff = bs_call(S, K, T, r, mid) - price
 if abs(diff) < tol:
 return mid
 if diff > 0.0:
 hi = mid
 else:
 lo = mid
 return 0.5 * (lo + hi)

# 100 dolar hisse, 100 dolar kullanım fiyatı, üç ay, yüzde dört faiz, ekranda 5.00 dolar
print(round(implied_vol(5.00, 100.0, 100.0, 0.25, 0.04), 4))

python3 iv.py kodunu çalıştırın. Bu kod yaklaşık 0.226 değerini verir; yani söz konusu varsayımsal kotasyon için yıllık yüzde yirmi iki virgül altıya yakın bir zımni oynaklık söz konusudur. Her geçiş aralığı yarıya indirir ve dört virgül doksan dokuz genişliğindeki bir aralık yirmi kez yarıya bölündüğünde sıfır virgül sıfır sıfır sıfır bir değerinden daha dar hale gelir; bu nedenle yüz yinelemelik üst sınır hiçbir zaman kısıtlayıcı olmaz.

Newton-Raphson neden daha hızlı yakınsar ve nerede başarısız olur

Bisection yöntemi, modelin halihazırda sahip olduğu bilgileri göz ardı eder. Vega, bir opsiyonun fiyatının volatilitedeki bir birimlik değişime karşı hassasiyetidir ve Black-Scholes modeli bunu kapalı formda sunar. Newton-Raphson ise bunu bir eğim olarak ele alır: fiyatlama hatasını ölçer, vega değerine böler ve tahmin edilen değeri bu oranda günceller.

def bs_vega(S, K, T, r, sigma):
 d1 = (math.log(S / K) + (r + 0.5 * sigma * sigma) * T) / (sigma * math.sqrt(T))
 return S * math.sqrt(T) * math.exp(-0.5 * d1 * d1) / math.sqrt(2.0 * math.pi)

def implied_vol_newton(price, S, K, T, r, sigma=0.5):
 for _ in range(20):
 v = bs_vega(S, K, T, r, sigma)
 if v < 1e-8:
 return None # eğim kalmadı, işlemi bisection yöntemine devret
 step = (bs_call(S, K, T, r, sigma) - price) / v
 sigma -= step
 if sigma <= 0.0:
 return None # adım anlamsız bir bölgeye taştı
 if abs(step) < 1e-6:
 return sigma
 return None

Paranın içindeki (near the money) opsiyonlarda bu yöntem, bisection yönteminin on iki adımına karşılık üç veya dört adımda sonuca ulaşır. Başarısızlık modu paydada yatar: kullanım fiyatı (strike) hisse fiyatından uzaklaştıkça vega küçülür. Aynı AAPL sözleşmeleri için her bölgenin ortalama vegasının, paranın içindeki (at the money) değerin yüzdesi olarak gösterimi şöyledir:

SorgulaNewton adımının hatalı sonuç verdiği durumlar: AAPL kullanım fiyatı bölgesine göre vega, 30 Haziran 2026
Her verinin arkasındaki tam SQL
WITH toFloat64(strike_price) / toFloat64(underlying_close) AS moneyness,
     (
         SELECT avg(toFloat64(vega))
         FROM global_markets.options_greeks
         WHERE underlying_symbol = 'AAPL'
           AND date = toDate('2026-06-30')
           AND days_to_expiry BETWEEN 20 AND 45
           AND iv_converged = 1
           AND volume > 0
           AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.025
     ) AS atm_vega
SELECT multiIf(moneyness < 0.90, '0.80-0.90',
               moneyness < 0.95, '0.90-0.95',
               moneyness < 1.00, '0.95-1.00',
               moneyness < 1.05, '1.00-1.05',
               moneyness < 1.10, '1.05-1.10',
                                 '1.10-1.20') AS strike_vs_spot,
       round(100 * avg(toFloat64(vega)) / atm_vega, 1) AS vega_pct_of_atm,
       count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
  AND date = toDate('2026-06-30')
  AND days_to_expiry BETWEEN 20 AND 45
  AND iv_converged = 1
  AND volume > 0
  AND moneyness BETWEEN 0.80 AND 1.20
GROUP BY strike_vs_spot
ORDER BY min(moneyness)
Run this yourself

Kanatlar, hassasiyetin yalnızca bir kısmını taşır: 33.1% bölgesinde paranın içindeki (at the money) vega değerinin 0.80-0.90 kadarı, 1.10-1.20 bölgesinde ise 31.6% kadarı mevcuttur. Fiyatlama hatasını bu kadar küçük bir sayıya bölmek, tahminin sıfırın altına düşmesine neden olabilecek devasa bir adıma yol açar; bu noktada modelin verecek bir cevabı kalmaz. Üretim ortamındaki çözücüler, önce aralık daraltma (bracketing) yapıp ardından Newton ile hassaslaştırma yaparak iki yöntemi birleştirir. Vega bu yunan harfi (greek) ile ilgili detayları kapsar.

İki farklı kaynağın neden farklı zımni volatilite bildirdiği

Model halka açıktır ve aritmetiği bellidir; bu nedenle anlaşmazlık girdi verilerinden kaynaklanır.

  • Orta nokta ile son işlem fiyatı. Çözücü tek bir fiyat gerektirir. İki dolar alış ve iki dolar yirmi sent satış kotasyonu olan bir sözleşmenin orta noktası iki dolar on senttir; ancak doksan dakika önceki son işlem fiyatı iki dolar iki sent olabilir. Bu tür bir sözleşmede, on sentlik fiyat farkı bir puanlık volatiliteden daha değerlidir.
  • Temettüler ve taşıma maliyeti. Yukarıdaki fonksiyon, temettü ödemeyen bir hisse senedi üzerindeki Avrupa tipi bir alım opsiyonunu fiyatlar. Vadeye kadar ödenecek bir temettü ileri fiyatı düşürür; her işlem masası kendi düzeltmesini ve kendi faiz oranını uygular.
  • Amerikan tipi erken kullanım. ABD tekil hisse senedi opsiyonları her gün kullanılabilir ve bu hak, Avrupa tipi formülün dahil edemediği bir değer taşır. Bunu göz ardı eden bir çözücü, aradaki farkı volatiliteye yansıtır. Binom ağaçları, kullanım hakkını doğrudan fiyatlar.
  • Güncel olmayan kotasyonlar. Salı günü son işlemi gerçekleşmiş bir kullanım fiyatı hala kotasyon gösterir ve çözücü, kendisine sunulan veriyi gerçek kabul eder.

Yakınsama, son iki maddeyi görünür kılar. Aşağıdaki panel, otuz Haziran iki bin yirmi altı tarihi itibarıyla sekiz bilindik şirketi ele alır, yirmi ila kırk beş gün vadesi kalmış işlem görmüş sözleşmeleri sayar ve hem paritedeki (at the money) volatiliteyi hem de çözücünün yakınsadığı sözleşmelerin oranını raporlar:

SorgulaBaşabaş zımni volatilite ve çözümleyici yakınsaması, sekiz hisse, 30 Haziran 2026
Her verinin arkasındaki tam SQL
WITH abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS distance_from_spot
SELECT underlying_symbol AS symbol,
       round(100 * avgIf(toFloat64(implied_volatility), iv_converged = 1 AND distance_from_spot < 0.05), 1) AS atm_iv_pct,
       round(100 * countIf(iv_converged = 1) / count(), 1) AS solved_pct,
       count() AS contract_count
FROM global_markets.options_greeks
WHERE date = toDate('2026-06-30')
  AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'SPY', 'KO', 'JNJ')
  AND days_to_expiry BETWEEN 20 AND 45
  AND volume > 0
GROUP BY symbol
HAVING countIf(iv_converged = 1 AND distance_from_spot < 0.05) > 0
ORDER BY atm_iv_pct DESC
Run this yourself

TSLA, 8 şirket arasında 47.7% ile en yüksek paritedeki volatilite değerine sahipken, listenin sonunda SPY için 14.4% yer almaktadır. TSLA opsiyon zincirinde, işlem gören sözleşmelerin 97.8% oranında yakınsayan bir sonuç elde edilmiştir. Geri kalanlar, çözücüye sunulan fiyatın herhangi bir volatilite değeriyle açıklanamadığı, içsel değerin altında kalan veya çapraz piyasa oluşan kullanım fiyatlarıdır. Otuz gibi bir rakamın yüksek sayılıp sayılmayacağı ayrı bir sorudur: yüzde otuz zımni volatilite yüksek mi konusu bunu ele alır ve beklenen hareket bunu dolar bazlı bir aralığa dönüştürür.

Her seansta yeniden çözülen aynı sözleşme

Zımni oynaklığa (implied volatility) dair hiçbir veri saklanmaz. Söz konusu değer, ekrandaki mevcut fiyattan her seferinde yeniden hesaplanır. Aşağıda, 17 Temmuz 2026 vadeli ve 1 Haziran'dan vade sonuna kadar takip edilen, en yüksek işlem hacmine sahip AAPL sözleşmesi yer almaktadır. Kullanım fiyatı (strike price) ve vade tarihi değişmemiştir:

SorgulaTek bir AAPL kontratı, 17 Temmuz 2026 vadesine kadar her seansta yeniden çözümlenmiştir
Her verinin arkasındaki tam SQL
WITH (
         SELECT ticker
         FROM global_markets.options_greeks
         WHERE underlying_symbol = 'AAPL'
           AND date = toDate('2026-06-30')
           AND expiration_date = toDate('2026-07-17')
           AND iv_converged = 1
           AND volume > 0
         ORDER BY volume DESC
         LIMIT 1
     ) AS pinned_contract
SELECT date,
       round(100 * avg(toFloat64(implied_volatility)), 1) AS implied_vol_pct,
       round(avg(days_to_expiry)) AS days_to_expiry
FROM global_markets.options_greeks
WHERE ticker = pinned_contract
  AND date BETWEEN toDate('2026-06-01') AND toDate('2026-07-17')
  AND iv_converged = 1
  AND volume > 0
GROUP BY date
ORDER BY date
Run this yourself

29 seans boyunca, çözümlenen değer 25.1% seviyesinden açılmış, vadeye 46 gün kala başlamış ve 26.6% seviyesinden kapanarak vadeye 4 gün kala sona ermiştir. Bu çizgi üzerindeki her nokta, yukarıdaki döngünün ilgili seanstaki kotasyon üzerinden bir kez çalıştırılmasıyla elde edilmiştir. Ticker bazlı sayfalarımızda aynı çözümleme yayımlanmaktadır: AAPL zımni oynaklığı verisi, tüm opsiyon zinciri üzerinde günlük olarak çalıştırılır; böylece bir okuyucu, bu sayfadaki kod ile oradaki herhangi bir rakamı yeniden hesaplayabilir.

Zımni oynaklık hesaplaması SSS

Zımni oynaklık için bir formül var mı?

Hayır. Black-Scholes modeli oynaklığı fiyata eşler ve sigma değeri normal dağılım içerisinde iki kez yer aldığından, bu eşlemenin temel bir ters fonksiyonu yoktur. Burada veya başka herhangi bir yerde karşılaştığınız her zımni oynaklık değeri, yinelemeli bir çözücüden elde edilir.

Hesaplama kaç yineleme sürer?

Her ikiye bölme (bisection) adımı aralığı yarıya indirir; bu nedenle sıfır virgül sıfır bir ile beş virgül sıfır arasındaki bir aralık yirmi adımda sıfır virgül sıfır sıfır sıfır sıfır birin altına düşer. Bir kotasyonu en yakın sente eşlemek genellikle yaklaşık on iki adım sürer. Newton-Raphson yöntemi ise kullanım fiyatına yakın seviyelerde üç veya dört adımda sonuca ulaşır; ancak bu yöntem, vega değerinin düşük olduğu durumlarda hatalı sonuç verebilen adımlar atma riskini taşır.

Aracı kurumum ve veri sağlayıcım neden farklı zımni oynaklık değerleri gösteriyor?

Çözücüye farklı girdiler sağlamışlardır. Yaygın farklar; orta fiyat (mid quote) ile son işlem fiyatı, faiz ve temettü varsayımları ve modelin Amerikan tipi opsiyonlarda erken egzersizi dikkate alıp almamasıdır. Düşük hacimli bir kullanım fiyatında, yalnızca güncelliğini yitirmiş bir kotasyon bile sonucu birkaç puan değiştirebilir.

Aynı kullanım fiyatındaki call ve put opsiyonları aynı zımni oynaklığı mı verir?

Teorik olarak evet; put-call paritesi, aynı kullanım fiyatı ve vade sonundaki opsiyonları birbirine bağlar. Uygulamada ise iki kotasyon bağımsız olarak belirlenir ve hesaplanan değerler küçük farklılıklar gösterir; bu da opsiyon zinciri genelindeki ortalamaların sağlayıcılar arasında değişmesinin bir diğer nedenidir.

Piyasa verisi olmadan zımni oynaklık hesaplayabilir miyim?

Evet, varsayımsal bir kotasyon için hesaplanabilir. Yukarıdaki kod; fiyat, kullanım fiyatı, spot fiyat, vadeye kalan süre ve faiz oranı gibi elle girilen verileri kullanır. Canlı bir veri sağlayıcısının rakamlarını tutturmak ise işin daha zor kısmıdır; bunun için sağlayıcının kullandığı girdilerin aynısına sahip olmak gerekir.


Buradaki her panel, arkasındaki SQL sorgusunu saklar. Birini açın ve ardından Strasmore terminalinde canlı bir opsiyon zinciri üzerinde aynı çözümü çalıştırın.

#implied volatility#options#black-scholes#python#how-to