1. Mimari nereden geldi, ne alınmadı
Bu aracın mimarisi RemarkRemedy/fireplanner (MIT) incelenerek çıkarıldı: Singapur için yazılmış, %100 istemci tarafı çalışan bir FIRE planlayıcısı. Ondan alınan şey yöntem:
- Monte Carlo ile belirsizliği ölçmek, tek bir tahmin vermemek
- Yüzdelik bantlar (aynı seti kullanıyoruz: 5, 10, 25, 50, 75, 90, 95)
- Başarı oranı tanımı:
1 − başarısız / toplam - Sequence-of-returns riskini modele sokmak
- Yağlı kuyruk için Student-t (kaynakta df=5; burada da varsayılan 5)
- Ağır hesabı Web Worker'a vermek
Alınmayan şey kurallar. CPF hesapları ve faiz kademeleri, SRS indirimi, BSD/ABSD damga vergileri, Bala's Table arsa payı değer kaybı, HDB parasal hale getirme — hiçbirinin Türkiye'de karşılığı yok. Türkiye tarafındaki karşılıklar zaten sitenin kendi çekirdeklerinde: bordro motoru (kümülatif matrah), BES (devlet katkısı, tavan, hak kazanma), kredi, ev/kira.
Tarihi veriyle bootstrap yöntemi de taşınmadı. Kaynak araç Singapur borsası (1987–2024) ve enflasyonu (1961–2024) için gerçek seriyle yeniden örnekleme yapıyor. Elimizde aynı güvenilirlikte, doğrulanabilir bir BIST/TÜFE serisi yok; olmayan veriyi ezberden yazmaktansa parametreleri kullanıcıya sormayı tercih ettik.
2. Türkiye farkı: enflasyon da rastgeledir
Kaynak araç getiriyi rastgeleleştirip enflasyonu büyük ölçüde sabit tutuyor. Düşük ve istikrarlı enflasyona sahip bir ülkede bu savunulabilir bir basitleştirme. Türkiye'de baskın belirsizlik enflasyonun kendisidir; onu sabitleyip yalnızca getiriyi oynatan bir plan tehlikeli biçimde iyimser çıkar.
Burada iki şok birlikte üretiliyor ve aralarındaki korelasyon girdi. 2×2 Cholesky ayrıştırması elle yazıldı, kütüphane yok:
z₂ = ρ·z₁ + √(1−ρ²)·z₀
Bir test üretilen korelasyonu ölçüp isteneni tutturduğunu doğruluyor (0,0 · 0,5 · 0,9 için ayrı ayrı).
3. Yağlı kuyruk ve birim varyans tuzağı
Normal dağılım uç yılları olduğundan seyrek gösterir. Varsayılan dağılım bu yüzden Student-t (df=5) — kaynaktaki değerin aynısı.
Burada sessiz bir tuzak var: Student-t'nin varyansı 1 değil df/(df−2)'dir. df=5 için bu 1,667, yani standart sapma %29 fazla. Ölçeklenmezse kullanıcının girdiği oynaklık sessizce büyür ve bütün sonuçlar kötümserleşir. Üretilen değer bu yüzden √(df/(df−2))'ye bölünüyor ve bir test varyansın 1'e yakın kaldığını doğruluyor.
4. Başarısızlık ne demek?
Kaynakta başarı ölçütü "bakiye sıfırın altına düşmesin". Yüksek enflasyonda bu ölçüt aldatıcı olur: para nominal olarak durur, alım gücü biter. Burada çekim her yıl enflasyon kadar artırılır — yani alım gücü sabit tutulur — ve bir yol o çekimi karşılayamadığı anda başarısız sayılır. Raporlanan bakiyeler ayrıca bugünün parasına indirgenir.
Bunun bir sonucu var ve testte ortaya çıktı: çekim sıfırsa hiçbir yol başarısız olamaz, çünkü karşılanacak bir yükümlülük yoktur. İlk sürümde "çekimsiz bile yetmiyor" diye ulaşılamaz bir dal yazmıştım; test onu yakaladı, dal kaldırıldı ve yerine anlamlı olan kondu: sürdürülebilir çekim pratikte sıfıra düşüyorsa bunu söylemek.
5. Sequence-of-returns riski
Emeklilik döneminde çekim yılın başında yapılır, getiri sonra uygulanır. Kötü bir yıl böylece doğrudan anaparayı vurur ve sonraki iyi yıllar daha küçük bir anapara üzerinde çalışır. Aynı ortalama getiriyle bile oynaklık arttıkça başarı oranının düşmesi bu etkinin gözlemlenebilir izidir; bir test tam olarak bunu sınıyor.
6. %4 kuralı yerine çözücü
Kaynakta varsayılan güvenli çekim oranı %4. O kural düşük ve istikrarlı enflasyonda türetildi; Türkiye'de kullanmak yanlış olurdu. Burada güvenli oran varsayılmıyor: hedef başarı olasılığını (varsayılan %90) sağlayan en yüksek çekim ikiye bölmeyle bulunuyor ve tanımıyla sınanıyor — bulunan çekimde başarı hedefi tutmalı, %25 fazlası tutmamalı.
7. Web Worker — ölçümle gerekçelendirildi
Worker "mimari olsun diye" değil, ölçüm gerektirdiği için var:
| İşlem | Süre | Nerede |
|---|---|---|
| Tek simülasyon (2.000 yol) | 66 ms | ana iş parçacığı |
| Güvenli çekim (~40 simülasyon) | 1.476 ms | Web Worker |
66 ms'lik iş için worker kurmak gereksiz karmaşıklık olurdu; 1,5 saniyelik iş ise arayüzü gözle görülür biçimde dondurur. Worker kurulamazsa (eski tarayıcı, dosya protokolü) hesap ana iş parçacığında yapılır: yavaş ama çalışır. Kullanıcıya "hesaplanamadı" göstermek en kötü seçenek olurdu.
8. Tekrar edilebilirlik
Rastgelelik tohumlu: aynı girdi her zaman aynı sonucu verir. Tohumsuz bir Monte Carlo'da ne test yazılabilir ne de kullanıcı "az önce %87 diyordu" dediğinde cevap verilebilir. Üreteç mulberry32; bir test aynı tohumun aynı diziyi ürettiğini doğruluyor.
9. İki fiziksel taban
Yağlı kuyruk dağılımı %−100'den kötü getiri üretebiliyor. Kaldıraçsız bir portföyde bu imkânsızdır — her şeyinizi kaybetmekten fazlasını kaybedemezsiniz — ve bakiyeyi negatife çeviriyordu. Bunu da test yakaladı: "çekim sıfırken hiçbir yol başarısız olamaz" iddiası düştü. Getiriye −%95, enflasyona −%90 taban kondu.
10. Grafik neden karekök ölçekli?
Doğrusal ölçekte en iyi senaryolar (yağlı kuyruk + bileşik getiri) o kadar yükseğe çıkıyor ki ortanca çizgi tabana yapışıyor ve grafik asıl bilgiyi gizliyor. Dikey eksen bu yüzden karekök ölçekli: sıralamayı ve sıfırı korur, büyük değerleri sıkıştırır. Hiçbir senaryo kesilmiyor ve ölçek grafiğin altında açıkça yazılı; kesin sayılar tabloda.
11. Testler
Çekirdek DOM bilmez; node finansal-ozgurluk-hesaplama/test.js
ile çalıştırılır ve 40 test her yayından önce CI'da koşar.
Testlerin çoğu istatistiksel değişmezleri sınıyor: üreteçlerin ortalama ve
varyansı, üretilen korelasyon, belirsizlik sıfırken elle doğrulanabilir
sonuç (1.000.000 × 1,2³ = 1.728.000), bantların sıralılığı, çözücülerin
tanımı.
12. Neyi hesaplamıyor?
- Tarihi veri yok. Parametreleri siz giriyorsunuz; araç geçmişten örnekleme yapmıyor.
- Vergi yok. Getiri stopajı, istisnalar ve beyan yükümlülüğü kapsam dışı; net getiriyi girin.
- Tek portföy. Varlık sınıfı kırılımı ve aralarındaki korelasyon modellenmiyor. Kaynak araç 8 varlık sınıfı ve 8×8 korelasyon matrisi kullanıyor; doğrulanabilir Türkiye matrisimiz olmadığı için tek getiri/oynaklık çiftine indirgendi.
- SGK aylığı yok. Devletin yaşlılık aylığı hesaba girmez.
- Ömür belirsizliği yok. Süreyi siz veriyorsunuz; yaşam süresi rastgeleleştirilmiyor.
- Olasılık garanti değildir. Sonuç sizin varsayımlarınız altında geçerli; varsayımlar yanlışsa olasılık da yanlıştır.