Açık defter · MIT lisanslı · 40 test

Simülasyon metodolojisi

Bu araç Singapur için yazılmış açık kaynaklı bir FIRE planlayıcısının mimarisi incelenerek kuruldu. Bu sayfa neyin alındığını, neyin alınmadığını ve Türkiye için nelerin yeniden türetilmek zorunda kaldığını anlatıyor — iddia olarak değil, formül ve test olarak.

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:

İşlemSüreNerede
Tek simülasyon (2.000 yol)66 msana iş parçacığı
Güvenli çekim (~40 simülasyon)1.476 msWeb 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.

Dayanaklar

  • Mimari kaynağı — RemarkRemedy/fireplanner (MIT), Singapur FIRE planlayıcısı. Yöntem alındı, Singapur kuralları alınmadı.
  • Monte Carlo, Cholesky ayrıştırması ve Student-t dağılımı — standart sayısal yöntemler; uygulama bu depoda açık.
  • Türkiye tarafındaki mevzuat hesapları ayrı çekirdeklerde: Bordro Motoru, BES, kredi.
  • Kaynak kodu ve testler — açık kaynak çekirdek (MIT)

Bilgilendirme amaçlıdır; bağlayıcı teklif değildir. Bir bilgi güncelliğini yitirdiyse bana bildirin.

Koray Öner

Bu aracı kim yaptı, nasıl hesaplıyor?

Bu aracı geliştirdi ve sürdürüyor. Kullanılan oran ve tutarların dayandığı mevzuat ile resmî kaynaklar bu sayfadaki Dayanaklar bölümünde tek tek belirtilir. Ücret ve bordro hesaplarında kullanılan ortak çekirdek olan Bordro Motoru ise metodolojisi, parametreleri ve değişiklik günlüğüyle birlikte açık yayımlanır.

Geliştiren
Yöntem
Sayfadaki Dayanaklar bölümü
Kaynak kod
GitHub