Predixum · market-engine · main @ 242e7024 · 8 Ekim 2026
Bir piyasada kim, ne kadar kaybedebilir?
Bu not iki soruyu kanıtlarıyla yanıtlıyor: Operatör bir piyasada en çok ne kadar kaybedebilir, Predixum ne kadar kaybedebilir? Kanıtlar spesifikasyonlara (spec) ve services/market-engine/src/pricing.rs koduna dayanıyor. Bölüm 2'deki örnekler 60 basamak hassasiyetli ondalık aritmetikle, bölüm 3'teki simülasyonlar 64 bit kayan noktalı aritmetikle hesaplandı.
Sade anlatım: 100 bin dolarlık bir piyasa
Bir operatör "X takımı şampiyon olur mu?" diye bir piyasa açıyor. Fiyatlar EVET için 50 sent, HAYIR için 50 sent ile başlıyor. Operatör "bu piyasaya 100 bin dolar likidite koydum" diyor. İki soru var: Operatör para kaybedebilir mi? Predixum para kaybedebilir mi?
Kısa cevap: Operatör kaybedebilir. Normal şartlarda kaybı 100 bin doları geçmez, ama iki özel durumda bu tavan da aşılabilir. Predixum ise kendi defterinde para kaybetmez, çünkü para tutmaz ve hiçbir kâr ya da zarar Predixum'un hesabına yazılmaz.
"Kazanan hisse 1 dolar öder" neden operatörü korumaz?
Kazanan her hisse gerçekten 1 dolar öder. Ama kullanıcı o hisseyi 1 dolara değil, daha ucuza alır: 50 sente, 70 sente, 90 sente. Kazandığında aradaki farkı birinin ödemesi gerekir.
Polymarket gibi bir borsada bu farkı karşı taraftaki kullanıcı öder. EVET'e 60 sent veren biriyle HAYIR'a 40 sent veren biri eşleşir ve 1 doları ikisi birlikte koyar. Borsanın kendisi hiçbir risk almaz.
Bizim sistemimizde böyle bir eşleşme yoktur. Her alımın karşısında sistemin kendisi, yani operatör durur. Herkes EVET alırsa HAYIR tarafını tutan tek kişi operatördür. EVET kazanırsa farkı operatör öder.
"100 bin dolar likidite" bizde ne demek?
Bizde likidite bir kasaya yatırılan para değildir. Sistemdeki karşılığı b adlı tek bir ayardır. Bu ayar iki şeyi birlikte belirler: bir alımın fiyatı ne kadar oynattığını ve operatörün bu piyasada en kötü durumda ne kadar kaybedeceğini.
İki sonuçlu bir piyasada en kötü kayıp b \times 0{,}693'tür. "En fazla 100 bin dolar kaybetmeye razıyım" diyen bir operatör için b yaklaşık 144 270 olmalıdır. Aşağıdaki bütün örnekler bu değerle hesaplandı.
Ayara doğrudan 100 000 yazılırsa en kötü kayıp 69 315 dolar olur.
Operatör bu parayı önceden bir yere yatırmaz. Zarar olursa, piyasa sonuçlandığında operatörün hesabına borç olarak yazılır.
Bu ayarı operatör değil, piyasayı onaylayan Predixum yöneticisi girer.
Yedi senaryo
Hepsinde fiyat 50 / 50 başlar, işlem komisyonu yoktur ve b = 144 270'tir.
Ne oldu?
Kullanıcıların ödediği
Kazananlara ödenen
Operatörün sonucu
1. Herkes EVET aldı ve fiyat 90 sente çıktı. EVET kazandı.
232 193 $
316 993 $
−84 800 $
2. Aynı alımlar yapıldı ama HAYIR kazandı.
232 193 $
0 $
+232 193 $
3. İki taraftan eşit alındı: 200 bin EVET, 200 bin HAYIR hissesi. Fiyat 50 sentte kaldı.
200 000 $
200 000 $
0 $
4. Herkes EVET aldı ve fiyat 99 sente çıktı. EVET kazandı.
564 386 $
662 936 $
−98 550 $
5. Olayın gerçek ihtimali %80 ve fiyat 80 sente oturdu. Favori kazanırsa:
132 193 $
200 000 $
−67 807 $
Favori kaybederse:
132 193 $
0 $
+132 193 $
Bu tür 10 piyasanın ortalaması (8'inde zarar, 2'sinde kâr):
·
·
piyasa başına −27 807 $
Bu beş senaryoda zarar 100 bin doları hiç geçmez. Fiyat 1 dolara ne kadar yaklaşırsa zarar da 100 bin dolara o kadar yaklaşır (4. senaryo). Aşağıdaki iki senaryoda ise tavan aşılır.
6. Aynı piyasa iki operatörde açık
Fiyat bütün operatörler için ortaktır, ama her operatör kendi kullanıcılarına kendisi öder. B operatörünün kullanıcıları 564 386 dolarla HAYIR alır ve EVET'in fiyatı 1 sente düşer. Sonra A operatörünün kullanıcıları ucuzlamış EVET'ten 98 550 dolarlık alır ve fiyat yeniden 50 sente çıkar. EVET kazanır.
A, kendi kullanıcılarına 662 936 dolar öder ve 564 386 dolar kaybeder. Bu, 100 bin dolarlık tavanın 5,6 katıdır. B ise aynı tutarı kazanır. İki operatörün toplamı sıfırdır. Yani tavan bütün operatörlerin toplamı için geçerlidir, tek bir operatör için geçerli değildir.
7. Piyasa iptal edildi
İptalde açık pozisyonu olan herkes parasını geri alır. Pozisyonunu daha önce satıp kârla çıkan kişi ise kârını tutar. Sorun burada başlar:
Adım
Para
EVET fiyatı
Ali 100 bin EVET hissesi alır.
58 496 $ öder
67 sent
Banu 300 bin EVET hissesi alır.
250 250 $ öder
94 sent
Ali hisselerini sisteme satar.
91 754 $ alır (kâr 33 258 $)
89 sent
Deniz 500 bin HAYIR hissesi alır.
215 200 $ öder
20 sent
Ece 300 bin HAYIR hissesi alır.
272 247 $ öder
3 sent
Deniz hisselerini sisteme satar.
404 439 $ alır (kâr 189 239 $)
50 sent
Piyasa sonuçlansaydı, EVET de kazansa HAYIR da kazansa, operatör tam başa baş çıkacaktı. Ama olay iptal edildi. Banu ile Ece paralarının tamamını geri aldı. Ali ile Deniz'in kârını ödeyecek kimse kalmadı ve bu kârı operatör ödedi: 222 497 dolar zarar. Bu, tavanın 2,2 katıdır.
Kârlı çıkanlar ile parasını geri alanlar aynı kişilerin hesapları olabilir. İptal edileceği önceden tahmin edilen bir olayda bu, operatörden para çekmenin bir yoludur. Kişi başına yatırım limiti tek bir hesabı sınırlar, ama hesap sayısını sınırlamaz.
Akılda kalması gerekenler
Kalabalık haklı çıkarsa operatör kaybeder, yanılırsa kazanır. Fiyat hep kalabalığın tarafına kayar. Favori kazandığında operatör kaybeder.
Operatör sık sık az kaybeder, seyrek ama çok kazanır. %80 ihtimalli bir favoride 10 piyasanın 8'i zararla, 2'si kârla biter. Ortalamada her piyasa yaklaşık 28 bin dolar kayıp yazar.
Sonucu baştan belli olan olaylar neredeyse kesin zarar yazar. Fiyat her zaman 50 sentten başlar ve başlangıç fiyatını ayarlayacak bir alan yoktur. Herkesin bildiği favori için kullanıcılar 50 sentten ucuz hisse alır.
Bu zararı dengeleyen bir gelir yok. Sistemde işlem komisyonu tanımlı değil.
100 bin dolarlık tavan iki durumda aşılabilir. Aynı piyasa birden fazla operatörde açıksa (6. senaryo) ve piyasa iptal edilirse (7. senaryo).
Predixum para kaybedebilir mi?
Predixum'un defterinde kendine ait bir hesap yoktur. Gerçek para sistemimizden hiç geçmez. Kullanıcılara gerçek ödemeyi operatör kendi sisteminde yapar. Kâr da zarar da her zaman operatörün hesabına yazılır. Bu yüzden Predixum, piyasanın sonucu ne olursa olsun kendi defterinde para kaybetmez.
Predixum için risk iki yerden gelir. Birincisi yazılım hatasıdır: Operatör gerçek parayı bizim kayıtlarımıza göre öder, bu yüzden yanlış bir kayıt gerçek bir zarara dönüşebilir. İkincisi verilen sözdür: Operatöre "en fazla 100 bin dolar kaybedersin" denirse, 6. ve 7. senaryolar bu sözü bozar. Bu iki durumda kimin ödeyeceği henüz sözleşmede yazılı değil.
Aşağıdaki bölümler aynı sonuçları formüllerle kanıtlar. Oradaki örnekler b = 1000 ile hesaplandı. Bütün tutarlar b ile doğru orantılı olduğu için 4., 5. ve 6. senaryolar oradaki örneklerin 144,27 katıdır.
Teknik bölüm
Buradan sonrası aynı sonuçların matematiksel kanıtı, simülasyonları ve kaynaklarıdır.
Operatör (tenant)
Kaybedebilir
L = b\ln(N\,\pi_w) + \rho \;\lt\; b\ln N + \rho
Sonuçlandırılan bir piyasada zarar, kazanan sonucun son fiyatına bağlıdır. İkili piyasada üst sınır b\ln 2 \approx 0.693\,b olur.
Bu sınır bütün operatörlerin toplam zararı için geçerlidir; tek bir operatör bunun birkaç katını kaybedebilir.
Erken kapatılmış pozisyon bulunan bir piyasa iptal (void) edilirse sınır b'ye bağlı değildir.
Predixum
Defterde (ledger) kaybedemez
\textstyle\sum_{a \in A_t} \mathrm{bal}(a) = 0 \quad \forall t
Defterde Predixum'a ait bir hesap yoktur; bütün hesaplar bir operatöre bağlıdır.
Gerçek para sistemimizden geçmez; gerçek ödemeyi operatör yapar.
Geriye kalan risk matematiksel değildir: yazılım hataları ve sözleşmede tanımlanacak sorumluluklarla ilgilidir.
Spesifikasyonlarda eksik ya da yanlış ifade edilen iki nokta
İptal ve erken kapanış. Defter bu durumu doğru kaydeder: iptalde erken kapanmış pozisyonu olan her operatör için hesap kapatma kaydı atılır (spec 14 settlement_commands, spec 19 LI-05). Eksik olan, zararın büyüklüğüdür. Spec 19 position_close_credit (satır 144–147) bu açığı "kapatma kaydının karşıladığı LMSR riskiyle aynı" diye tanımlar, yani b\ln N ile sınırlı olduğunu ima eder. İptal yolunda bu doğru değildir. Bir kullanıcı pozisyonunu kârla kapatır, ardından piyasa iptal edilirse, o kârı ödeyen pozisyonun yatırılan tutarı (stake) iade edilir ve zarar b\ln N sınırını aşar. Önerme 6'da kesin bir örnek var: b = 100 için zarar 2069.31, yani b\ln 2'nin 29.9 katıdır.
Yuvarlama terimi \rho. HALF-UP yuvarlama fiyatı aşağı yuvarladığında kullanıcı, ödediğinden fazla hisse alır. Orta fiyatlarda bu etki milyonda bir mertebesindedir. Taban fiyata yakın büyük bir harekette tek bir işlemde yatırılan tutarın %96'sına çıkabilir, ama mutlak değeri birkaç birimi geçmez. Gerçekçi her b için \rho, b\ln N yanında önemsizdir. Asıl sorun, kullanıcının bedelini ödemediği hisseleri almasıdır (Önerme 4).
1. Model ve gösterim
Fiyatı LMSR belirler ve motor her pozisyonun karşı tarafında yer alır; piyasada bir havuz yoktur. Fiyat durumu piyasa başına tutulur ve bütün operatörlerin açık hisselerini toplar (spec 18 sharding.unit). Emanet hesabı (escrow) ise her (operatör, piyasa) çifti için ayrıdır (spec 19).
N,\ b
Sonuç sayısı ve likidite parametresi. b \gt 0 piyasa süresince sabittir.
q \in \mathbb{R}^N
Her sonuçtaki açık hisse sayısı (bütün operatörlerin toplamı). Piyasa q = 0 ile açılır.
C(q)
b \ln \sum_j e^{q_j/b}. Maliyet fonksiyonudur; diğer bütün büyüklükler bundan türetilir.
p_i(q)
\dfrac{e^{q_i/b}}{\sum_j e^{q_j/b}} = \dfrac{\partial C}{\partial q_i}. Marjinal fiyattır. q = 0 iken her sonucun fiyatı 1/N olur; ikili piyasadaki %50 / %50 buradan gelir.
Açılış
Yatırılan tutar \sigma olsun. \Delta, C(q + \Delta e_i) - C(q) = \sigma denkleminin çözümüdür. Saklanan fiyat, HALF-UP ile yuvarlanıp [10^{-6},\,1-10^{-6}] aralığına sıkıştırılmış \hat p = \mathrm{round}_6(\sigma/\Delta) değeridir. Kanonik hisse sayısı s = \sigma / \hat p olur ve durum q \leftarrow q + s\,e_i biçiminde güncellenir.
Kazanan sonuçtaki her açık pozisyon s \times 1 birim ödeme (payout) alır; kaybeden pozisyonlar 0 alır.
Lemma A
\max_i q_i \le C(q) \le \max_i q_i + b\ln N.
Kanıt
m = \max_i q_i olsun. Toplamdaki en büyük terim e^{m/b}'dir ve N terimin her biri en fazla bu değere eşittir. Buradan e^{m/b} \le \sum_j e^{q_j/b} \le N e^{m/b} elde edilir. Eşitsizliğin her tarafına b\ln uygulanırsa sonuç çıkar. ∎
Lemma C: 0 \lt p_i \lt 1 olduğundan C her q_i değişkenine göre kesin artandır ve bu yöndeki eğimi 1'den küçüktür. Bu, ortalama değer teoreminden doğrudan çıkar.
2. Operatörün zararı
İşlemler k = 1, \dots, T biçiminde sıralansın ve c_k operatöre giren nakit olsun: açılışta +\sigma_k, erken kapanışta -\text{getiri}_k. Limit emirlerinin gerçekleşmesi sıradan bir açılıştır (spec 18, satır 239); bu yüzden ayrıca ele alınmaz. Yuvarlama terimi şöyle tanımlanır:
İkinci eşitlik teleskopik toplamdan gelir. Yuvarlama olmasaydı her açılışta c_k = C(q_k) - C(q_{k-1}) olurdu ve \rho = 0 kalırdı.
Teorem 1 Sonuçlandırılan piyasada zarar
Kazanan sonuç w ve bu sonucun son marjinal fiyatı \pi_w = p_w(q_T) olsun. Operatörlerin piyasa genelindeki toplam zararı tam olarak şudur:
L \;=\; b\,\ln(N\,\pi_w) \;+\; \rho
Kanıt
Kazanan açık pozisyonların toplam hisse sayısı q_{T,w}'dir, çünkü q kanonik hisseleri toplar ve erken kapanış kendi hissesini durumdan çıkarır. Her hisse 1 birim öder. Operatörün elinde kalan nakit ise \sum_k c_k kadardır. O hâlde
Sonuç 1.1.\pi_w \lt 1 olduğundan L \lt b\ln N + \rho olur. Spec 18 operator_exposure'daki b\ln N sınırı budur; kod da common::lmsr::max_operator_loss ile aynı değeri hesaplar.
Sonuç 1.2.\rho = 0 iken L \gt 0 \iff \pi_w \gt 1/N. Yani kazanan sonucun fiyatı başlangıç fiyatının üstünde kapanırsa operatör kaybeder, altında kapanırsa kazanır.
Sonuç 1.3. Yuvarlama terimi \rho dışında zarar işlemlerin sırasına bağlı değildir, yalnızca son duruma bağlıdır.
"Tam olarak" ifadesinin tek istisnası ödemenin kendisidir: Her kazanan pozisyona ödenen tutar, yatırılan tutar / fiyat değerinin 6 haneye yuvarlanmış halidir (common::money::payout_for, yarıda kalınca çift haneye). Bu, kazanan pozisyon başına en çok 5\cdot 10^{-7} fark yaratır.
Örnek: b = 1000, ikili piyasa, herkes YES alıyor
Değer
YES fiyatını 0.99'a çıkaran hisse sayısı, b\ln 99
4 595.12
Kullanıcıların yatırdığı toplam tutar, C(q_T) - C(0)
3 912.02
YES kazanırsa: ödeme
4 595.12
YES kazanırsa: operatör zararı, 1000\ln 1.98
683.10
NO kazanırsa: operatör zararı, 1000\ln 0.02
−3 912.02
Üst sınır, 1000\ln 2
693.15
İkili piyasa, \rho = 0. Dikey eksen: L/b = \ln(2\pi_w). Eğri sınıra yaklaşır ama hiçbir zaman ona ulaşmaz. Negatif tarafta bir sınır yoktur; yine de operatörün kazancı kullanıcılardan toplanan tutarları aşamaz.
Hesaplayıcı
Üst sınır b·ln N693.15Sonuçlandırılan piyasada, ρ hariç
Zarar L = b·ln(N·π_w)683.10Kazanan sonuç bu fiyatta kapanırsa
Fiyat doğruysa beklenen zarar368.06b·(ln N − H(θ)); diğer sonuçlar kalan olasılığı eşit paylaşır
Teorem 2 Beklenen zarar
Kazanan sonuç gerçek olasılık dağılımı \theta'ya göre seçilsin ve son fiyat vektörü \pi olsun. Bu durumda
Teorem 1'den \mathbb{E}[L] = b\ln N + b\sum_i \theta_i \ln \pi_i + \rho elde edilir. Öte yandan \sum_i \theta_i \ln \pi_i = \sum_i \theta_i \ln\theta_i - \sum_i \theta_i \ln(\theta_i/\pi_i) = -H(\theta) - D_{\mathrm{KL}}(\theta\|\pi) eşitliği geçerlidir. ∎
Fiyat doğruysa (\pi = \theta) operatör ortalamada b(\ln N - H(\theta)) \ge 0 kadar kaybeder; bu değer yalnızca \theta düzgün dağılım olduğunda sıfırdır. Kullanıcılar fiyatı yanlış yöne iterse KL terimi operatörün lehine işler. Spesifikasyonlarda işlem ücreti ya da fiyat marjı (spread, overround) yoktur; bu nedenle bu sübvansiyonu dengeleyen bir gelir kalemi de bulunmaz.
\theta (ikili, b = 1000)
0.5
0.6
0.7
0.8
0.9
0.95
0.99
\mathbb{E}[L], fiyat doğruysa
0.00
20.14
82.28
192.74
368.06
494.63
637.15
Önerme 3 Erken kapanış sınırı bozmaz
Her erken kapanışın \rho'ya katkısı sıfır ya da negatiftir.
Kanıt
\hat p \le 1 - 10^{-6} olduğundan \min(\hat p + 5\cdot10^{-7}, 1) \ge \hat p ve dolayısıyla \mathrm{paid} \le \sigma/\hat p = s olur. C artan olduğu için kapanış getirisi \le C(q'+\mathrm{paid}\,e_i) - C(q') \le C(q' + s\,e_i) - C(q') = C(q) - C(q') olur; altı basamağa kesme bu değeri yalnızca küçültebilir. Böylece katkı [C(q') - C(q)] + \text{getiri} \le 0 olur. ∎
\sigma_k = C(q_{k-1} + \Delta_k e_i) - C(q_{k-1}) ve q_k = q_{k-1} + s_k e_i olduğundan katkı C(q_{k-1}+s_k e_i) - C(q_{k-1}+\Delta_k e_i) farkına eşittir; ayrıca \partial C/\partial q_i = p_i \gt 0 olur. ∎
Fiyat yukarı yuvarlanırsa s \lt \Delta ve \varepsilon \lt 0 olur, yani etki operatörün lehinedir. Aşağı yuvarlanırsa kullanıcı bedelini ödemediği hisseler alır ve \varepsilon \gt 0 olur. Bu hisseler hareketin sonundaki marjinal fiyattan değerlenir. Ortalama fiyat çok küçük, hareket ise büyük olduğunda etki büyür.
Durum
Kesin fiyat
Saklanan fiyat
\varepsilon
Yatırılan tutara oranı
b{=}1000,\ q{=}(0,0),\ \sigma{=}100
0.5238267
0.523827
−0.0000587
−0.00006%
b{=}100,\ q{=}(0,1300),\ \sigma{=}1
0.0011905
0.001190
0.00329
0.33%
b{=}100,\ q{=}(0,20000),\ \sigma{=}1
0.0000512
0.000051
0.9616
96.2%
b{=}500,\ N{=}3, 300 rastgele işlem
·
·
\rho = 0.0129
·
Üçüncü satır, pricing.rs içindeki execute_prices_a_longshot_far_behind_the_leader testinin girdisidir. Test yalnızca hisse farkını (%0.35) ölçer, \varepsilon'u ölçmez. Bu nedenle kesin sınır b\ln N + \rho^{+}'dır. Çözümlerden biri, işlem (execution) fiyatını yukarı yuvarlamaktır; o zaman 0.999999 tavanına sıkıştırılan fiyatlar dışında s \le \Delta ve \varepsilon \le 0 olur. Ancak bu bir spesifikasyon değişikliğidir ve karar gerektirir.
Önerme 5 Operatör başına sınır yok
A operatörünün zararı için yalnızca şu sınır vardır:
Toplam zarar operatörlere ayrışır: L = \sum_t L_t. Her operatör için ödeme \ge 0 olduğundan L_t \ge -(\sum\sigma_t - \sum\text{getiri}_t) olur. L_A = L - \sum_{t\ne A} L_t eşitliği ve Teorem 1 birlikte sınırı verir. ∎
Örnek: b = 1000, ikili piyasa. B operatörünün kullanıcıları NO alır ve YES fiyatı 0.01'e iner: yatırılan tutar 3 912.02, NO hissesi 4 595.12. Ardından A operatörünün kullanıcıları YES alır ve fiyat 0.50'ye döner: yatırılan tutar 683.10, YES hissesi 4 595.12. YES kazanır. A, 4 595.12 öder ve 3 912.02 kaybeder; bu, b\ln 2'nin 5.64 katıdır. B ise 3 912.02 kazanır. Toplamda L = 0 = b\ln(2 \cdot 0.5) olur. Spec 41 risk_exposure bunu açıkça belirtir: ekran platform genelindeki sınırı gösterir, operatör başına bir iddiada bulunmaz.
Önerme 6 İptal: erken kapatılmış pozisyon varsa sınır b'ye bağlı değildir
İptal durumunda açık pozisyonlar yatırdıkları tutarı geri alır, erken kapatılmış pozisyonlar ise kapanış getirilerini korur. Operatörün zararı V = \sum_{\text{kapalı}}(\text{getiri} - \sigma) olur ve
V \;\le\; b\ln N + \rho + \Big(\textstyle\sum_i q_{T,i} - \max_i q_{T,i}\Big)
Kanıt
İadelerden sonra operatörde \sum_k c_k - \sum_{\text{açık}}\sigma kalır, yani V = \sum_{\text{açık}}\sigma - \sum_k c_k olur. Her açık pozisyon için \sigma = \hat p\,s \le s olduğundan \sum_{\text{açık}}\sigma \le \sum_i q_{T,i} elde edilir. Lemma A'dan \sum_k c_k = C(q_T) - b\ln N - \rho \ge \max_i q_{T,i} - b\ln N - \rho bulunur. İki eşitsizlik birleştirilince sonuç çıkar. ∎
Sınır b'ye değil, iptal anında açık kalan hisselere bağlıdır. Aşağıdaki örnekte zarar bu sınırın yalnızca 0.005 altında kalır; yani sınır pratikte sıkıdır. b = 100, ikili piyasa, yuvarlama yok:
A, 2000 YES hissesi alır; yatırdığı tutar 1 930.69.
B, 2000 YES hissesi alır. Fiyat neredeyse 1'dir; yatırdığı tutar 2 000.00.
A pozisyonunu kapatır. Kapanış getirisi 2 000.00, kârı 69.31.
D, 5000 NO hissesi alır; yatırdığı tutar 3 000.00.
E, 3000 NO hissesi alır; yatırdığı tutar 3 000.00.
D pozisyonunu kapatır. Kapanış getirisi 5 000.00, kârı 2 000.00.
Piyasa nasıl sonlanır
Operatör zararı
b\ln 2'ye oranı
NO kazanır
69.31
1.00
YES kazanır
−930.69
·
İptal
2 069.31
29.9
D'nin kârını aslında B'nin yatırdığı tutar karşılar. Piyasa sonuçlanırsa B'nin pozisyonu kaybeder ve bu tutar operatörde kalır. İptalde ise B'nin yatırdığı tutar iade edilir ve D'nin kârını yalnızca operatör öder. İptal edilmesi beklenen bir olayda birlikte hareket eden hesaplar (collusion) bundan yararlanabilir. max_open_stake_per_user tek bir hesabın payını sınırlar, hesap sayısını sınırlamaz. Defter bu açığı iptalde de kapatma kaydıyla karşılar (spec 14 settlement_commands). Ama spec 18 operator_exposure ve spec 19 position_close_credit açığın b\ln N ile sınırlı olduğunu söyler ya da ima eder; spec 41 risk ekranı da yalnızca b\ln N değerini gösterir. İptal yolunda bu sınır geçerli değildir.
3. Piyasa açılışı senaryoları
Bir piyasa açılırken ayarlanabilen yalnızca üç şey vardır: b, sonuç sayısı N ve yatırılan tutar limitleri. Başlangıç fiyatı her zaman 1/N'dir. Önerilen sonuçlara ait başlangıç olasılıkları ve başlangıç likiditesi (seed) alanları onay ekranından kaldırıldı (spec 41 approvals_queue, PRE-198). Olayın gerçek olasılığı \theta bir parametre değildir, ama beklenen zararı belirleyen odur.
Simülasyon modeli
Her senaryo 20 000 koşu (Monte Carlo denemesi) olarak çalıştırılır; her koşuda 200 işlem vardır (S9'da 20).
Her işlem tek bir pozisyondur ve yatırılan tutar en çok 100'dür (max_stake_per_position).
İşlem yapan kullanıcı f olasılıkla bilgili kullanıcıdır (informed trader): inancı, logit ölçeğinde \sigma = 0.3 gürültüyle \theta'dır. Diğerleri bilgisiz kullanıcıdır (noise trader): inançları, \sigma = 1.0 gürültüyle o anki fiyattır.
Kullanıcı, inanç / fiyat oranı en büyük olan sonucu alır. Fiyat inancına eşitlendiğinde ya da yatırılan tutar limite ulaştığında alımı durdurur.
Pozisyonlar sonuçlandırmaya kadar tutulur. Erken kapanış, iptal, birlikte hareket eden hesaplar ve yuvarlama modelde yer almaz (\rho = 0).
Kazanan sonuç \theta'ya göre çekilir. Her koşuda L nakit akışından ayrıca hesaplanır ve b\ln(N\pi_w) ile karşılaştırılır; en büyük fark 10⁻¹⁰'un altında çıkmıştır.
Senaryo
b
N
Favorinin \theta değeri
Sınır b\ln N
Fiyat doğru olsaydı
\mathbb{E}[L]
P(L \gt 0)
%5 … %95
Zarar / hacim
S1 Yazı-tura
1000
2
0.50
693.15
0.00
−6.2
50.6%
−218 … 178
−0.04%
S2 Net favori
1000
2
0.80
693.15
192.74
172.8
79.9%
−794 … 488
0.98%
S3 Neredeyse kesin
1000
2
0.95
693.15
494.63
444.5
95.1%
120 … 635
2.40%
S4 Net favori, düşük b
250
2
0.80
173.29
48.19
39.0
77.3%
−265 … 140
0.32%
S5 Net favori, yüksek b
5000
2
0.80
3465.74
963.72
889.8
80.0%
−3404 … 2144
4.54%
S6 Turnuva, 8 takım
1000
8
0.35
2079.44
297.43
229.7
69.9%
−930 … 982
1.46%
S7 Net favori, çoğunluk bilgisiz (f = 0.2)
1000
2
0.80
693.15
192.74
81.2
69.6%
−454 … 410
0.43%
S9 Neredeyse kesin, az işlem (20)
1000
2
0.95
693.15
494.63
403.8
94.9%
−251 … 604
20.65%
S7 dışındaki bütün senaryolarda f = 0.7 alınmıştır. S6'nın olasılıkları: 0.35, 0.20, 0.15, 0.10, 0.08, 0.06, 0.04, 0.02. "Fiyat doğru olsaydı" sütunu, Teorem 2'deki b(\ln N - H(\theta)) değeridir. "Zarar / hacim", beklenen zararın toplam yatırılan tutara oranıdır. Standart hata en çok 14.2'dir (S5).
S8: Bilgili kullanıcıların tek bir operatörde toplanması
b = 1000, ikili piyasa, \theta = 0.8. İşlemlerin yarısı A operatörünün bilgili kullanıcılarından, diğer yarısı B operatörünün bilgisiz kullanıcılarından gelir. Fiyat iki operatör için de aynıdır.
Taraf
\mathbb{E}[L]
P(L \gt 0)
%95
En kötü durum
P(L \gt b\ln 2)
Operatör A (bilgili)
1 193.9
80.0%
3 679.1
4 944.1
80.0%
Operatör B (bilgisiz)
−1 038.7
20.0%
·
·
·
Piyasa toplamı
155.2
79.2%
473.6
580.6
0%
Piyasa toplamı sınırın altında kalır. A ise koşuların %80'inde b\ln 2'den fazla kaybeder; en kötü durumda kaybı sınırın 7.1 katına ulaşır. Bu kaybın sınırını Önerme 5 verir.
Çıkarımlar
Operatör sık sık az kaybeder, seyrek olarak çok kazanır. Fiyat favoriye doğru hareket eder ve favori kazanırsa operatör kaybeder; bu yüzden P(L \gt 0) yaklaşık olarak favorinin kazanma olasılığına eşittir. S2'de koşuların %80'i zararla biter. Buna karşılık en iyi %5'lik dilimde operatörün kazancı 794'ü aşar.
Asıl maliyet, eşit başlangıç fiyatıdır. Gerçek olasılık 1/N'den uzaklaştıkça beklenen zarar b(\ln N - H(\theta))'ya yaklaşır: S1'de sıfır, S2'de 173, S3'te 445.
Zarar b ile neredeyse doğrusal olarak büyür. S4, S2 ve S5'te b sırasıyla 250, 1000 ve 5000; beklenen zarar ise 39, 173 ve 890'dır. Tam doğrusal olmamasının sebebi son fiyatın dağılımıdır: b küçükken fiyat daha çok dalgalanır (S4'te standart sapma 0.11, S5'te 0.026). Üç senaryoda da favorinin son fiyatı ortalama 0.73–0.75 arasında kalır ve 0.80'e ulaşmaz. Bunun sebebi b değil, simülasyondaki kullanıcı modelidir: aynı yatırım limitiyle favorinin fiyatını düşürmek, yükseltmekten daha ucuzdur.
Az işlem koruma sağlamaz. S9'da 20 işlem de fiyatı favoriye taşır; beklenen zarar 404, yani toplam yatırılan tutarın %21'idir. b beklenen hacme göre seçilmezse küçük bir piyasa da sınıra yakın kaybeder.
Bilgisiz kullanıcılar operatöre kazandırır. Simülasyonda beklenen zarar S2'de 173, S7'de 81'dir. Bu, Teorem 2'deki KL teriminin etkisidir.
Çok sonuçlu piyasada sınır büyür, ancak beklenen zarar aynı ölçüde büyümez. S6'da sınır 2079, beklenen zarar ise 230'dur.
Sonuç 3.1 Başlangıç fiyatı belirlenebilseydi
Piyasa q_0 \ne 0 durumuyla, yani p^0 = p(q_0) başlangıç fiyatıyla açılsın. Kullanıcıların kazanan hisseleri q_{T,w} - q_{0,w} olur ve
L = b\ln\frac{\pi_w}{p^0_w} + \rho, \qquad \mathbb{E}[L]\big|_{\pi = \theta} = b\,D_{\mathrm{KL}}(\theta \,\|\, p^0), \qquad L \lt b\ln\frac{1}{\min_i p^0_i} + \rho
Kanıt
Teorem 1'deki adımlar C(0) yerine C(q_0) ile tekrarlanır: L = [q_{T,w} - C(q_T)] - [q_{0,w} - C(q_0)] + \rho = b\ln\pi_w - b\ln p^0_w + \rho (Lemma B). ∎
Başlangıç fiyatı gerçek olasılığa yakın seçilirse beklenen zarar sıfıra iner. Bunun bedeli şudur: başlangıç fiyatı en düşük olan sonuç kazanırsa en kötü durumdaki zarar b\ln N'den büyük olur. Bu özellik bugün mevcut değildir; geri getirilmesi bir spesifikasyon kararıdır.
4. Predixum'un zararı
Teorem 7 Defter Predixum'a kayıp yazamaz
Her operatör t için ve her an \sum_{a \in A_t} \mathrm{bal}(a) = 0 eşitliği geçerlidir. Predixum'a ait bir hesap yoktur.
Kanıt
(i) Yalnızca üç hesap türü vardır: user, market_escrow, tenant_aggregate. Üçü de bir operatöre bağlıdır (spec 19 account_model). Yeni bir hesap türü ancak onu gerektiren yeni bir işlem türüyle birlikte eklenebilir.
(ii) LI-01: Her işlemin kayıt satırlarının (leg) toplamı sıfırdır.
(iii) Bir işlemin bütün kayıt satırları tek bir operatörün hesaplarındadır. Defteri yazan çalışma rolü app_rw'nin RLS'yi atlama yetkisi yoktur (bu yetki yalnızca denetlenen yönetici rolündedir, spec 21 satır 158). RLS WITH CHECK başka bir operatöre satır yazılmasını, bileşik yabancı anahtar (composite FK) ise başka bir operatörün hesabına başvuruyu reddeder (spec 21, satır 156 ve 159).
(iv) LI-02: Kayıtlar yalnızca eklenir, değiştirilmez.
Başlangıçta defter boştur ve toplam 0'dır. (ii) ve (iii) uyarınca her işlem her operatörün toplamını 0 kadar değiştirir; tümevarımla toplam her an 0'dır. (i) uyarınca hiçbir kayıt satırı Predixum'u borçlandıramaz. ∎
Sonuç 7.1.\mathrm{bal}(\texttt{tenant\_aggregate}_t) = -\big(\sum \mathrm{bal}(\texttt{user}) + \sum \mathrm{bal}(\texttt{market\_escrow})\big). Kapatma kaydı her (operatör, piyasa) çifti için ayrı atılır. Operatör t'nin payı L_t, settlement_closeout sırasında açığı (shortfall) karşılayan kayıt satırıyla bu hesaba yazılır (spec 19). Bu payların toplamı Teorem 1'deki L'dir. Hiçbir pay başka bir operatöre ya da bize geçmez.
Sonuç 7.2. Gerçek para bizden geçmez; spec 19 ve spec 00 bunu açıkça belirtir. Defter, iki tarafın üzerinde uzlaştığı bir kayıttır ve para tutmaz. Kullanıcıya gerçek ödemeyi operatör kendi sisteminde yapar.
Kanıtın kapsamadığı riskler
Yazılım hatası. Operatör gerçek parayı bizim kayıtlarımıza göre öder; defter yanlış bir sayı yazarsa fark gerçek paraya dönüşür. Farkı kimin ödeyeceği sözleşmede belirlenir. Spec 30 liability caps and indemnities bugün "Counsel to draft" diyor; yani bu madde henüz yazılmadı.
Yanlış sonuçlandırma. Sonuçlandırma düzeltme akışı (settlement correction) farkı correction_shortfall_credit ile operatörün tenant_aggregate hesabına yazar; defterde yine bize bir şey düşmez. Sözleşme açısından konu bir önceki maddeyle aynıdır.
b'yi biz seçiyoruz. Piyasa kataloğu bütün operatörler için ortaktır (global). b, yönetim panelindeki piyasa sihirbazında (market wizard, PRE-126) ve öneri onayında (submission, PRE-186) girilir. Dolayısıyla operatörün en çok ne kadar kaybedeceğini bizim personelimiz belirler.
Verilen söz. Operatöre "en çok b\ln N kaybedersin" denirse Önerme 5 ve 6 bu sözü geçersiz kılar. Bizim için sözleşme riski buradan doğar.
Gelir modeli. Spesifikasyonlarda işlem ücreti yoktur ve gelir modeli tanımlanmamıştır. Bu not o konuyu kapsamaz.
docs/v1/specs/41-admin-panel.yaml: approvals_queue (221, başlangıç olasılıklarının kaldırılması 240–246), risk_exposure (1088), operatör başına sınır olmadığını belirten not (1113).
docs/v1/specs/21-multi-tenancy.yaml: RLS ve bileşik yabancı anahtar (156, 159).