Piyasa yapıcılar neden zarar eder: Ters seçim analizi
Piyasa yapıcıların zarar etmesinde temel faktör olan ters seçim kavramı, markout eğrileri, envanter riski ve sıra pozisyonu maliyetleri üzerinden detaylıca incelenmektedir.
Piyasa yapıcılar, ters seçim (adverse selection) nedeniyle zarar ederler: Bir satış teklifini (offer) kabul eden yatırımcı, genellikle o teklifin güncelliğini yitirdiğini zaten bilen kişidir. Her işlem (fill), spread'in yaklaşık yarısı kadar küçük bir kredi ile başlar ve takip eden saniyeler, bu kredinin ne kadarının korunacağını belirler. Ölçüm aracı, bir işlemden sonra sabit bir vadede fiyatın ne yöne değiştiğini gösteren "markout"tur. Aşağıdaki paneller, işlem ve kotasyon kayıtlarından gerçek markout eğrileri oluşturur. Piyasa yapıcıların nasıl para kazandığına dair tamamlayıcı makalemiz, aynı defterin gelir tarafını ele almaktadır.
İşlemde ters seçim nedir?
Bir piyasa yapıcı aynı anda iki fiyat verir: alış (bid) ve satış (offer) kotasyonu; her biri belirli bir büyüklük için geçerlidir. İkisi arasındaki fark bid-ask spread'dir ve bu işin temeli aritmetiktir. Alış kotasyonundan al, satış kotasyonundan sat; bunu günde on binlerce kez tekrarla. Ortalama bir gidiş-dönüş işlem, spread'e yakın bir kazanç sağlar.
Bu aritmetik, iki tarafın dengeli geldiğini varsayar. Ancak durum böyle değildir. Bekleyen bir kotasyon, herkesin dilediği an kullanabileceği bir opsiyondur ve en dikkatli yatırımcılar en iyi anları seçer. Büyük bir ana emir üzerinde çalışan bir fon, satış kotasyonu ucuz kaldığı sürece alıma devam eder. Korelasyonlu bir enstrümanın hareket ettiğini gören bir sistem, henüz fiyatı güncellenmemiş tarafta işlem yapar.
Ters seçim, bu karışımdaki sapmanın adıdır: Piyasa yapıcının gerçekleştirdiği işlemler, o işlemleri en çok isteyen yatırımcılar lehine ağırlıklanır. Bunun belirtisi, piyasa yapıcının kotasyonunu verdiği spread ile elinde tuttuğu spread arasındaki farktır.
Piyasa yapımında markout nedir?
Markout, her işlemden sonra sorulan tek bir soruyu yanıtlar: İşlemden sabit bir süre sonra fiyat neredeydi? Varsayalım ki bir piyasa yapıcı, orta nokta (midpoint) 50,00 dolar iken 50,02 dolardan 100 hisse satıyor. Bu işlem, hisse başına iki sentlik (desk birimlerinde 20 mil; 1 mil = 0,1 sent) bir kredi ile başlar. Eğer 60 saniye sonra orta nokta 50,04 dolara yükselmişse, 60 saniyelik markout eksi 20 mildir. Başlangıçtaki kredi gitmiş, üzerine bir o kadar daha zarar eklenmiştir.
Bunu bir zaman aralığındaki her işlem için ortalayıp vadeye karşı grafikleştirirseniz, sonuç bir markout eğrisi olur. Aşağıdaki panel, 14 Mayıs 2026 Perşembe günü, gün ortasındaki üç saatlik AAPL verisi için bir tane oluşturur. Her işlem, gerçekleştiği saniyenin orta noktasına göre işaretlenir: Orta noktanın üzerindeki bir işlem, alıcının (taker) alış yaptığını, dolayısıyla piyasa yapıcının satış tarafında kaldığını gösterir.
Her verinin arkasındaki tam SQL
WITH
qs AS (
SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
avg((toFloat64(bid_price) + toFloat64(ask_price)) / 2) AS mid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-05-14 14:00:00'
AND sip_timestamp < '2026-05-14 17:06:00'
AND bid_price > 0 AND ask_price > bid_price
GROUP BY ts
),
fills AS (
SELECT t.ts AS ts, t.px AS px, t.shares AS shares, q.mid AS mid_at_fill,
if(t.px > q.mid, 1, -1) AS taker_side
FROM (
SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
toFloat64(price) AS px, toUInt64(size) AS shares
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-05-14 14:00:00'
AND sip_timestamp < '2026-05-14 17:00:00'
AND size > 0
) AS t
INNER JOIN qs AS q ON q.ts = t.ts
WHERE t.px != q.mid AND abs(t.px / q.mid - 1) < 0.02
)
SELECT
concat('+', toString(e.secs), 's') AS horizon,
round(1000 * avg(e.taker_side * (e.px - e.mid_at_fill)), 2) AS edge_at_fill_mils,
round(1000 * avg(e.taker_side * (e.px - f.mid)), 2) AS edge_after_mils
FROM (
SELECT toUInt32(ts + secs) AS future_ts, secs, px, mid_at_fill, taker_side
FROM (SELECT *, arrayJoin([1, 5, 15, 30, 60, 300]) AS secs FROM fills)
) AS e
INNER JOIN qs AS f ON f.ts = e.future_ts
GROUP BY e.secs
ORDER BY e.secsİlk seri, işlemin gerçekleştiği andaki kredidir; yani işlem fiyatı ile orta nokta arasındaki mesafedir ve hisse başına ortalama 19.66 mildir. İkinci seri, orta noktanın hareket etmesiyle bu işlemlerin değeridir: Bir saniye sonra 20.5 mil, beş dakika sonra 9.81 mil. Herhangi bir vadede bu iki seri arasındaki mesafe markout'tur ve bu değer, piyasa yapıcının kotasyonunu verdiği spread'den karşılanır.
Hızla düşüp ardından yataylaşan bir eğri, piyasa yapıcının anlık fiyat güncellemelerinin maliyetini ödediğini ve kalanını koruduğunu gösterir. Her vadede aynı yönde eğimini koruyan bir eğri ise, fiyatın sürekli gittiği yönde gerçekleşen işlemleri tanımlar. İlk şekil işin maliyetidir. İkincisi ise değiştirilmesi gereken bir kotasyondur.
Hangi işlemler toksik akıştır?
"Toksik" kelimesi burada teknik bir işlev görür. Bir akış, markout eğrisi geniş bir örneklem üzerinde her vadede piyasa yapıcı aleyhine eğim gösteriyorsa toksiktir. Masalar işlemleri görebildikleri her etikete göre sınıflandırır: işlem büyüklüğü, platform, emir tipi, karşı taraf tanımlayıcısı. Büyüklük, halka açık bantta (tape) taşınan etikettir.
Her verinin arkasındaki tam SQL
WITH
qs AS (
SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
avg((toFloat64(bid_price) + toFloat64(ask_price)) / 2) AS mid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-05-14 14:00:00'
AND sip_timestamp < '2026-05-14 17:06:00'
AND bid_price > 0 AND ask_price > bid_price
GROUP BY ts
),
fills AS (
SELECT t.ts AS ts, t.px AS px, t.shares AS shares, q.mid AS mid_at_fill,
if(t.px > q.mid, 1, -1) AS taker_side
FROM (
SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
toFloat64(price) AS px, toUInt64(size) AS shares
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-05-14 14:00:00'
AND sip_timestamp < '2026-05-14 17:00:00'
AND size > 0
) AS t
INNER JOIN qs AS q ON q.ts = t.ts
WHERE t.px != q.mid AND abs(t.px / q.mid - 1) < 0.02
)
SELECT
multiIf(s.shares < 100, 'under 100 shares',
s.shares < 500, '100 to 499',
s.shares < 1000, '500 to 999',
'1,000 or more') AS size_bucket,
count() AS fills_count,
round(1000 * avg(s.taker_side * (s.px - s.mid_at_fill)), 2) AS edge_at_fill_mils,
round(1000 * avg(s.taker_side * (s.px - f.mid)), 2) AS edge_after_60s_mils
FROM (SELECT *, toUInt32(ts + 60) AS future_ts FROM fills) AS s
INNER JOIN qs AS f ON f.ts = s.future_ts
GROUP BY size_bucket
ORDER BY min(s.shares)100 hissenin altındaki işlemler hisse başına 19.47 mil kredi ile başlar ve bir dakika sonra 15.22 mil değerindedir. 1.000 hisse ve üzerindeki işlemler 36.26 mil ile başlar ve aynı vadede 21.34 mil değerindedir. Aynı enstrüman, aynı üç saat, hisse başına farklı ekonomi. En büyük emirler genellikle halka açık kuyruktan tamamen kaçınır; blok işlem (block trade) tam olarak bunu yapmak için düzenlenir.
Envanter riski: Zamanında hedge edilemeyen pozisyon
Markout vadesi aynı zamanda bir saattir. Alış kotasyonundan 5.000 hisse alan bir piyasa yapıcı, 5.000 hisselik bir pozisyon tutar ve bu pozisyon hedge edilene veya satılana kadar fiyatın sonraki hareketlerine maruz kalır. Hedge işlemi nadiren anlıktır: Tek bir hisse senedi pozisyonu, korelasyonlu bir ETF veya opsiyon pozisyonu ile dengelenebilir ve bunların her birinin aşılması gereken kendi spread'i vardır. Envanter riski, bu zaman penceresine sığan hareketin büyüklüğüdür ve her isim için aynı şekilde ölçülür. Fiyat bir sonraki dakika ve bir sonraki saat içinde tipik olarak ne kadar yol kat eder?
Her verinin arkasındaki tam SQL
WITH
bars AS (
SELECT ticker, window_start,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'NVDA')
AND window_start >= '2026-05-01 00:00:00'
AND window_start < '2026-06-01 00:00:00'
AND transactions >= 50
AND close > 0
),
starts AS (
SELECT ticker, et_date, px, mins,
window_start + toIntervalMinute(mins) AS future_start
FROM (SELECT *, arrayJoin([1, 2, 5, 15, 30, 60]) AS mins FROM bars)
)
SELECT
concat(toString(s.mins), ' min') AS hold_horizon,
round(avgIf(abs(f.px / s.px - 1) * 10000, s.ticker = 'SPY'), 1) AS spy_drift_bps,
round(avgIf(abs(f.px / s.px - 1) * 10000, s.ticker = 'NVDA'), 1) AS nvda_drift_bps
FROM starts AS s
INNER JOIN bars AS f
ON f.ticker = s.ticker AND f.et_date = s.et_date AND f.window_start = s.future_start
GROUP BY s.mins
HAVING countIf(s.ticker = 'SPY') > 0 AND countIf(s.ticker = 'NVDA') > 0
ORDER BY s.minsMayıs 2026 boyunca, SPY'deki ortalama mutlak hareket bir dakika içinde 1.9 baz puan (yüzde birin yüzde biri) olarak ölçülmüştür. NVDA aynı dakika içinde 5.5 ölçülmüştür. Saati bir saate çıkardığınızda bu rakamlar 14.1 ve 40.4 olur. Bir dakika içinde pozisyonunu kapatabilen bir piyasa yapıcı ilk çiftle yaşar. Bir saat boyunca pozisyon tutan ise ikinci çiftle yaşar; işlem anında toplanan kredi ise her iki durumda da aynıdır.
Piyasa yapıcılar neden kuyruğun sonunda para kaybeder?
Borsalar, bekleyen emirleri geliş sırasına göre eşleştirir: önce fiyat, sonra zaman. Alış tarafında 40.000 hisselik bir kuyruğun sonunda bekleyen bir emir, önündeki 40.000 hissenin temizlenmesini bekler ve kuyruk pozisyonunu tahmin etmek başlı başına bir disiplindir.
İşin zor kısmı, temizlenmenin ne anlama geldiğidir. Bir kuyruk iki şekilde boşalır: Satıcılar seviye tükenene kadar alış kotasyonuna vurmaya devam eder ya da fiyat seviyenin altına düşer ve onu geride bırakır. Ön tarafa yakın bir emir her ikisinde de pay alır. Kuyruğun sonundaki bir emir ise çoğunlukla ikinci yolla, yani seviye eski fiyat haline gelmek üzereyken gerçekleşir. İki piyasa yapıcı aynı enstrümanı aynı fiyattan alıp satabilir ancak farklı miktarlarda kazanç elde edebilirler. Kuyruk sırası kotasyon spread'inde asla görünmez, çünkü her iki piyasa yapıcı da aynı fiyatı vermiştir. Bu durum markout eğrisinde ortaya çıkar.
Kotasyonu genişletmek neden bedava bir çözüm değildir?
Kötü bir markout eğrisine verilecek bariz yanıt, kotasyonu genişletmektir. Daha geniş bir kotasyon, işlem başına daha fazla kazandırır ancak daha az işlem gerçekleşmesini sağlar. Bu takasın her iki yarısı da aynı günün işlemlerinde, her bir işlemin orta noktadan ne kadar uzakta gerçekleştiğine göre sıralanmış olarak yer alır.
Her verinin arkasındaki tam SQL
WITH
qs AS (
SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
avg((toFloat64(bid_price) + toFloat64(ask_price)) / 2) AS mid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-05-14 14:00:00'
AND sip_timestamp < '2026-05-14 17:06:00'
AND bid_price > 0 AND ask_price > bid_price
GROUP BY ts
),
fills AS (
SELECT t.ts AS ts, t.px AS px, t.shares AS shares, q.mid AS mid_at_fill,
if(t.px > q.mid, 1, -1) AS taker_side
FROM (
SELECT toUnixTimestamp(toDateTime(sip_timestamp)) AS ts,
toFloat64(price) AS px, toUInt64(size) AS shares
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-05-14 14:00:00'
AND sip_timestamp < '2026-05-14 17:00:00'
AND size > 0
) AS t
INNER JOIN qs AS q ON q.ts = t.ts
WHERE t.px != q.mid AND abs(t.px / q.mid - 1) < 0.02
)
SELECT
multiIf(s.cents <= 0.5, '0.5 cents or less',
s.cents <= 1.0, '0.5 to 1 cent',
s.cents <= 2.0, '1 to 2 cents',
'over 2 cents') AS distance_from_mid,
round(100 * sum(s.shares) / sum(sum(s.shares)) OVER (), 2) AS share_of_volume_pct,
round(1000 * avg(s.taker_side * (s.px - f.mid)), 2) AS edge_after_60s_mils
FROM (
SELECT *, toUInt32(ts + 60) AS future_ts, abs(px - mid_at_fill) * 100 AS cents
FROM fills
) AS s
INNER JOIN qs AS f ON f.ts = s.future_ts
GROUP BY distance_from_mid
ORDER BY min(s.cents)Orta noktanın yarım sent yakınındaki işlemler, penceredeki hisselerin 27.58'ini oluşturmuş ve bir dakika sonra hisse başına 0.95 mil değerinde olmuştur. İki sentten daha uzakta gerçekleşen işlemler ise hisselerin 33.19'ünü oluşturmuş ve 46.86 mil değerinde olmuştur. Orta noktadan daha uzağa yerleştirilen bir kotasyon, günün hacminin daha küçük bir kısmı tarafından karşılanır.
İşlem oranının düşmesi, geri adım atmanın ilk maliyetidir. Borsa iadeleri (rebates) ikincisidir; çünkü birçok platform piyasa yapıcıya gerçekleşen hisse başına ödeme yapar ve bu gelir kotasyonun genişliğinden ziyade hisse miktarıyla ölçeklenir. İade oranını belirleyen hacim kademeleri aylık olarak hesaplanır, bu nedenle durgun bir ay, sonraki ayın her işlemini yeniden fiyatlandırır. Kuyruk sırasını kaybetmek ise son maliyettir; çıkarken ödenir ve girerken kuyruğun sonunda tekrar ödenir. Her piyasa yapıcı bu eğri üzerinde bir yerdedir ve kendi markout'larını en hassas şekilde ölçenler, "touch"a (en iyi fiyat) en yakın durup krediyi koruyabilenlerdir. Bu ölçüm, en büyük piyasa yapıcıların savunduğu avantajdır.
SSS
Piyasa yapıcılar bireysel işlemlerde para kaybeder mi?
Düzenli olarak. Bir piyasa yapıcı defteri, küçük kazançlar ve küçük kayıpların bir dağılımıdır; zarar ettiren işlemler fiyat hareket etmeden hemen önceki anlarda kümelenir. İş, milyonlarca işlemin ortalamasına dayanır.
İşlemde markout nedir?
Markout, bir işlemden sonra sabit bir vadede piyasa fiyatında meydana gelen değişimdir; bir tarafın bakış açısından işaretlenir, pozitif bir sayı o tarafın kazandığını gösterir. Hisse senedi masaları markout'ları hisse başına mil, opsiyon masaları ise kontrat başına tick olarak belirtir.
Toksik emir akışı ne anlama gelir?
Markout eğrisi, işlemi gerçekleştiren piyasa yapıcı aleyhine sürekli olarak eğim gösteren emir akışını tanımlar; yani her işlemden sonra fiyat uzaklaşmaya devam eder. Bu etiket, bir emir akışının istatistiksel bir özelliğidir ve herhangi bir yatırımcı hakkında bir yargı içermez.
Piyasa yapıcılar neden kotasyonlarını çekmek yerine spread'leri genişletir?
Daha geniş bir kotasyon, piyasa yapıcıyı daha kötü bir markout eğrisini karşılayan bir fiyatta piyasada tutar. Kotasyonu çekmek hiçbir şey kazandırmaz ve beraberinde kuyruk pozisyonunu da teslim eder. Masalar her ikisini de yapar; seçim, kotasyonun ne kadar süre güncelliğini yitirmiş kalacağının beklentisine bağlıdır.
Ters seçim nasıl ölçülür?
Markout'lar ile. Her işlemi piyasa yapıcının bulunduğu tarafa göre işaretleyin, ardından sonrasındaki sabit vadelerde orta nokta değişimini ortalayın. İşlem anındaki kredi ile her vadedeki değer arasındaki fark, spread ile aynı birimlerde ters seçim maliyetidir.
Bu rakamlar nasıl oluşturuldu?
Her AAPL paneli iki halka açık kaydı okur: işlem bandı ve kotasyon bandı. 14 Mayıs 2026 tarihinde 14:00 ile 17:00 UTC arasındaki her işlem, gerçekleştiği saniyenin ortalama ulusal en iyi alış ve satış (NBBO) orta noktasıyla eşleştirilir ve ardından işaretlenir. Orta noktanın üzerindeki bir işlem alıcının alışını temsil eder, bu da piyasa yapıcının satış tarafında olduğunu gösterir. Tam olarak orta noktada gerçekleşen işlemler tarafsız kabul edilerek elenir; orta noktadan yüzde 2'den fazla uzaklıktaki işlemler de aynı şekilde elenir. Alışın satışı karşıladığı veya geçtiği kotasyon kayıtları, kilitli veya çapraz piyasa kullanılamaz bir orta noktaya sahip olduğu için hariç tutulur.
İkinci seviye eşleştirme, işlemin mikrosaniyesinde geçerli olan kotasyonu yaklaşık olarak belirler ve en hızlı güncellemeleri düzeltir. Vade fiyatları aynı ikinci seviye orta noktalardan gelir. Envanter paneli bir dakikalık çubuklar kullanır ve yalnızca en az 50 işlem içeren çubukları tutar; bu da örneklemi günün en yoğun saatlerinde yoğunlaştırır.
Buradaki her panel, onu üreten SQL kodunu içerir, böylece markout matematiği satır satır incelenebilir. Eğriyi farklı bir isim veya farklı bir gün için yeniden oluşturmak isterseniz, Strasmore terminalinde sade bir dille talep edin.