Skip to main content

Kapsamlı aktüeryal ve finans matematiği hesaplamaları için Türkçe Python kütüphanesi

Project description

Anuite ve Faiz Hesaplamalari - Aktüeryal Hesaplama Kütüphanesi

PyPI version Python 3.8+ License: MIT

Türkçe aktüeryal ve finans matematiği hesaplamaları için kapsamlı Python kütüphanesi.


📦 Kurulum

PyPI'dan Kurulum (Önerilen)

pip install anuite-ve-faiz-hesaplamalari

GitHub'dan Kurulum

pip install git+https://github.com/zzeynepibis/anuite-ve-faiz-hesaplamalari.git

Manuel Kurulum

git clone https://github.com/zzeynepibis/anuite-ve-faiz-hesaplamalari.git
cd anuite-ve-faiz-hesaplamalari
pip install -e .

🚀 Hızlı Başlangıç

from anuiteler import *

# Devre sonu anüite - Bugünkü değer
bd = ds_bd_hesapla(odeme=1000, n=5, i=0.10)
print(f"Bugünkü Değer: {bd:.2f} TL")  # 3790.79 TL

# Aylık kredi taksiti hesaplama
taksit = aylik_taksit_hesapla(ana_para=100000, yillik_faiz=0.20, ay_sayisi=36)
print(f"Aylık Taksit: {taksit:.2f} TL")

# Hızlı hesaplama
sonuc = anuite_hesapla(bugunku_deger=50000, n=24, i=0.015)
print(f"Aylık Ödeme: {sonuc['odeme']:.2f} TL")

📚 Modüller ve Özellikler

1️⃣ Tek Ödeme Modülü (tek_odeme)

Tek bir ödemenin bugünkü ve gelecek değer hesaplamaları.

# Gelecek değer
gd = tek_odeme_gd(bugunku_deger=1000, i=0.10, t=5)

# Bugünkü değer
bd = tek_odeme_bd(gelecek_deger=1610.51, i=0.10, t=5)

# Faiz oranı hesaplama
i = tek_odeme_faiz(bugunku_deger=1000, gelecek_deger=1610.51, t=5)

# Süre hesaplama
t = tek_odeme_sure(bugunku_deger=1000, gelecek_deger=1610.51, i=0.10)

Formüller:

  • Gelecek Değer: GD = BD × (1+i)^t
  • Bugünkü Değer: BD = GD × v^t (v = 1/(1+i))

2️⃣ Devre Sonu Anüiteler (devre_sonu_anuite)

Ödemeler her dönemin SONUNDA yapılır.

# Bugünkü Değer Hesaplamaları
bd = ds_bd_hesapla(odeme=1000, n=5, i=0.10)
odeme = ds_odeme_bd(bugunku_deger=3790.79, n=5, i=0.10)
n = ds_sure_bd(bugunku_deger=3790.79, odeme=1000, i=0.10)
i = ds_faiz_bd(bugunku_deger=3790.79, odeme=1000, n=5)

# Gelecek Değer Hesaplamaları
gd = ds_gd_hesapla(odeme=1000, n=5, i=0.10)
odeme = ds_odeme_gd(gelecek_deger=6105.10, n=5, i=0.10)
n = ds_sure_gd(gelecek_deger=6105.10, odeme=1000, i=0.10)
i = ds_faiz_gd(gelecek_deger=6105.10, odeme=1000, n=5)

# Amortisman tablosu
tablo = ds_tablo(odeme=1000, n=5, i=0.10)

Formüller:

  • Bugünkü Değer: BD = a × [(1 - v^n) / i]
  • Gelecek Değer: GD = a × [(1+i)^n - 1] / i

3️⃣ Devre Başı Anüiteler (devre_basi_anuite)

Ödemeler her dönemin BAŞINDA yapılır.

# Bugünkü Değer
bd = db_bd_hesapla(odeme=1000, n=5, i=0.10)

# Gelecek Değer
gd = db_gd_hesapla(odeme=1000, n=5, i=0.10)

# Ters formüller
odeme = db_odeme_bd(bugunku_deger=4169.87, n=5, i=0.10)
n = db_sure_bd(bugunku_deger=4169.87, odeme=1000, i=0.10)
i = db_faiz_bd(bugunku_deger=4169.87, odeme=1000, n=5)

Formüller:

  • Bugünkü Değer: BD = a × (1+i) × [(1 - v^n) / i]
  • Gelecek Değer: GD = a × (1+i) × [(1+i)^n - 1] / i
  • İlişki: ä(n,i) = a(n,i) × (1+i)

4️⃣ Sürekli Anüiteler (surekli_anuite)

Ödemeler sonsuza kadar devam eder (n → ∞).

# Devre sonu sürekli anüite
bd = surekli_ds_bd(odeme=1000, i=0.10)  # 10000 TL
odeme = surekli_ds_odeme(bugunku_deger=10000, i=0.10)
i = surekli_ds_faiz(bugunku_deger=10000, odeme=1000)

# Devre başı sürekli anüite
bd = surekli_db_bd(odeme=1000, i=0.10)  # 11000 TL

# Ertelenmiş sürekli anüite
bd = ertelenmis_surekli_anuite(odeme=1000, i=0.10, erteleme_suresi=3)

Formüller:

  • Devre Sonu: BD = a / i
  • Devre Başı: BD = a × (1+i) / i

5️⃣ Ertelenmiş Anüiteler (ertekenmis_anuite)

Ödemeler m dönem sonra başlar.

# Devre sonu ertelenmiş
bd = ert_ds_bd(taksit=10000, i=0.30, n=8, m=4)
taksit = ert_ds_taksit_bd(bugunku_deger=32000, i=0.30, n=8, m=4)

# Devre başı ertelenmiş
bd = ert_db_bd(taksit=10000, i=0.30, n=8, m=4)

# Gecikme süresi hesaplama
m = ert_gecikme_hesapla(bugunku_deger=32000, taksit=10000, i=0.30, n=8)

# Faiz oranı hesaplama
i = ert_faiz_hesapla(bugunku_deger=32000, taksit=10000, n=8, m=4)

# Çabuklaştırılmış + Ertelenmiş
bd = ert_cabuklas_bd(taksit=10000, i=0.30, n=8, m=4, c=2)

Formüller:

  • Devre Sonu: BD = a × [(1+i)^n - 1] / [(1+i)^(n+m) × i]
  • Devre Başı: BD = a × (1+i) × [(1+i)^n - 1] / [(1+i)^(n+m) × i]

6️⃣ Geometrik Anüiteler (geometrik_anuite)

Taksitler geometrik dizi şeklinde değişir: a, a(1+r), a(1+r)², ...

# Devre sonu
bd = geo_ds_bd(ilk_taksit=5000, i=0.05, r=0.20, n=6)
gd = geo_ds_gd(ilk_taksit=5000, i=0.05, r=0.20, n=6)

# Devre başı
bd = geo_db_bd(ilk_taksit=5000, i=0.05, r=0.20, n=6)

# İlk taksit hesaplama
ilk_taksit = geo_ilk_taksit_bd(bugunku_deger=40000, i=0.05, r=0.20, n=6)

# i = r özel durumu
bd = geo_ds_bd(ilk_taksit=5000, i=0.10, r=0.10, n=6)  # n × a × (1+i)^(n-1)

Formüller:

  • i ≠ r: BD = a × (1+i)^n × [(1+i)^n - (1+r)^n] / [(1+i)^n × (i-r)]
  • i = r: BD = n × a × (1+i)^(n-1)

7️⃣ Aritmetik Anüiteler (aritmetik_anuite)

Taksitler aritmetik dizi şeklinde değişir: a, a+b, a+2b, ...

# Devre sonu (artan taksitler)
bd = arit_ds_bd(ilk_taksit=5000, degisim=500, i=0.30, n=6)
gd = arit_ds_gd(ilk_taksit=5000, degisim=500, i=0.30, n=6)

# Devre sonu (azalan taksitler)
bd = arit_ds_bd(ilk_taksit=5000, degisim=-500, i=0.30, n=6)

# İlk taksit hesaplama
ilk_taksit = arit_ds_ilk_taksit_bd(bugunku_deger=18000, degisim=500, i=0.30, n=6)

# Değişim miktarı (b) hesaplama
degisim = arit_ds_degisim(bugunku_deger=18000, ilk_taksit=1101, i=0.40, n=5)

# Devre başı
bd = arit_db_bd(ilk_taksit=5000, degisim=500, i=0.30, n=6)

Formül:

  • Devre Sonu: BD = (a + b/i) × [(1+i)^n - 1] / i - b×n / i

8️⃣ Çabuklaştırılmış Anüiteler (cabuklas_anuite)

Ödemeler c dönem erken yapılır (öne çekilir).

# Devre sonu çabuklaştırılmış
bd = cab_ds_bd(taksit=10000, i=0.30, n=8, c=2)
gd = cab_ds_gd(taksit=10000, i=0.30, n=8, c=2)

# Devre başı çabuklaştırılmış
bd = cab_db_bd(taksit=10000, i=0.30, n=8, c=2)

# Taksit hesaplama
taksit = cab_taksit_bd(bugunku_deger=48000, i=0.30, n=8, c=2)

# Çabuklaştırma süresi hesaplama
c = cab_sure_hesapla(bugunku_deger=51815.69, taksit=10000, i=0.30, n=8)

# Faiz oranı hesaplama
i = cab_faiz_hesapla(bugunku_deger=51815.69, taksit=10000, n=8, c=2)

Formüller:

  • Devre Sonu: BD = a × (1+i)^c × [(1+i)^n - 1] / [(1+i)^n × i]
  • Devre Başı: BD = a × (1+i)^(c+1) × [(1+i)^n - 1] / [(1+i)^n × i]

9️⃣ Yardımcı Fonksiyonlar (yardimci)

Faiz Oranı Çevrimleri

# Efektif ↔ Nominal
efektif = efektif_faiz_orani(nominal_oran=0.12, m=12)  # Aylık bileşik
nominal = nominal_faiz_orani(efektif_oran=0.1268, m=12)

# Sürekli faiz (Force of Interest)
delta = surekli_faiz_orani(efektif_oran=0.10)  # δ
efektif = efektif_from_surekli(delta=0.0953)

# Faiz ↔ İskonto
d = faizden_iskonto_orani(i=0.10)  # d = i/(1+i)
i = iskontodan_faiz_orani(d=0.0909)  # i = d/(1-d)

Zaman Çevrimleri

aylik = yillik_aylik_cevir(yillik_oran=0.12)
yillik = aylik_yillik_cevir(aylik_oran=0.0095)
gunluk = yillik_gunluk_cevir(yillik_oran=0.12)
ceyreklik = yillik_ceyreklik_cevir(yillik_oran=0.12)

Enflasyon Düzeltmeleri

# Fisher denklemi
reel = reel_faiz_orani(nominal_oran=0.15, enflasyon_orani=0.08)
nominal = nominal_from_reel(reel_oran=0.0648, enflasyon_orani=0.08)

Duration ve Convexity

nakit_akislari = [(1, 1000), (2, 1000), (3, 1000), (4, 1000), (5, 101000)]

# Macaulay Duration
mac_dur = macaulay_duration(nakit_akislari, faiz_orani=0.05)

# Modified Duration
mod_dur = modified_duration(nakit_akislari, faiz_orani=0.05)

# Convexity (Dışbükeylik)
conv = convexity(nakit_akislari, faiz_orani=0.05)

# DV01
dv01_deger = dv01(nakit_akislari, faiz_orani=0.05)

NPV ve IRR

# Net Bugünkü Değer
npv = net_bugunku_deger(nakit_akislari, faiz_orani=0.10, baslangic_yatirim=-10000)

# İç Verim Oranı (Internal Rate of Return)
irr = ic_verim_orani(nakit_akislari, baslangic_yatirim=-10000)

Kredi Hesaplamaları

# Aylık taksit
taksit = aylik_taksit_hesapla(ana_para=100000, yillik_faiz=0.20, ay_sayisi=36)

# Kalan borç
kalan = kalan_borc_hesapla(ana_para=100000, yillik_faiz=0.20, ay_sayisi=36, gecen_ay=12)

# Erken ödeme
erken_odeme = erken_odeme_tutari(ana_para=100000, yillik_faiz=0.20, ay_sayisi=36, gecen_ay=12)

🎯 Örnek Kullanımlar

Örnek 1: Kredi Hesaplama

from anuiteler import *

# 100.000 TL kredi, %20 yıllık faiz, 36 ay vade
ana_para = 100000
yillik_faiz = 0.20
vade = 36

# Aylık taksit
taksit = aylik_taksit_hesapla(ana_para, yillik_faiz, vade)
print(f"Aylık Taksit: {taksit:.2f} TL")

# 12. ay sonu kalan borç
kalan = kalan_borc_hesapla(ana_para, yillik_faiz, vade, gecen_ay=12)
print(f"12. Ay Kalan Borç: {kalan:.2f} TL")

# Toplam ödenen tutar
toplam = taksit * vade
print(f"Toplam Ödeme: {toplam:.2f} TL")
print(f"Toplam Faiz: {toplam - ana_para:.2f} TL")

Örnek 2: Yatırım Analizi

from anuiteler import *

# 5 yıllık tahvil: Her yıl 1000 TL kupon, son yılda 10.000 TL anapara
nakit_akislari = [
    (1, 1000),
    (2, 1000),
    (3, 1000),
    (4, 1000),
    (5, 11000)
]

# %8 faizle NPV
npv = net_bugunku_deger(nakit_akislari, faiz_orani=0.08, baslangic_yatirim=-10000)
print(f"NPV: {npv:.2f} TL")

# İç verim oranı (IRR)
irr = ic_verim_orani(nakit_akislari, baslangic_yatirim=-10000)
print(f"IRR: %{irr*100:.2f}")

# Duration
mac_dur = macaulay_duration(nakit_akislari, faiz_orani=0.08)
print(f"Macaulay Duration: {mac_dur:.2f} yıl")

Örnek 3: Emeklilik Planlaması

from anuiteler import *

# Ayda 1000 TL biriktirerek 20 yılda ne kadar olur?
# %10 yıllık getiri
aylik_birikim = 1000
yil = 20
ay_sayisi = yil * 12
aylik_faiz = yillik_aylik_cevir(0.10)

# Gelecek değer (devre sonu)
gd = ds_gd_hesapla(odeme=aylik_birikim, n=ay_sayisi, i=aylik_faiz)
print(f"20 yıl sonra birikim: {gd:,.2f} TL")

# Emeklilikte ayda ne kadar çekebilir? (25 yıl boyunca)
cekim_suresi = 25 * 12
aylik_cekim = ds_odeme_bd(bugunku_deger=gd, n=cekim_suresi, i=aylik_faiz)
print(f"Aylık çekilebilecek tutar: {aylik_cekim:.2f} TL")

📖 Dokümantasyon

Fonksiyon İsimlendirme Mantığı

Kütüphane Türkçe ve tutarlı isimlendirme kullanır:

Kısaltma Anlamı
ds Devre Sonu
db Devre Başı
bd Bugünkü Değer
gd Gelecek Değer
ert Ertelenmiş
geo Geometrik
arit Aritmetik
cab Çabuklaştırılmış

Örnekler:

  • ds_bd_hesapla()Devre Sonu Bugünkü Değer hesapla
  • db_gd_hesapla()Devre Başı Gelecek Değer hesapla
  • ert_ds_taksit_bd()Ertelenmiş Devre Sonu, BD'den Taksit hesapla

🧪 Test Etme

# Test dosyasını çalıştır
python tests/test_anuite.py

# veya pytest ile
python -m pytest tests/

Tüm modüller için kapsamlı test paketi mevcuttur.


🤝 Katkıda Bulunma

Katkılarınızı bekliyoruz! Lütfen:

  1. Bu repository'yi fork edin
  2. Feature branch oluşturun (git checkout -b yeni-ozellik)
  3. Değişikliklerinizi commit edin (git commit -am 'Yeni özellik eklendi')
  4. Branch'i push edin (git push origin yeni-ozellik)
  5. Pull Request oluşturun

📝 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.


👤 Geliştirici

Zeynep İbiş


📚 Ders Materyalleri ve Eğitimciler

  • Demet Sezer - Finans Matematiği Öğretmeni
  • Zehra Başkaya - Finans Matematiği Ders Notları
  • Emine Ebru Akaoy - Aktüerya Matematiği Ders Notları

📚 Referanslar

Bu kütüphane aşağıdaki kaynaklara dayanmaktadır:

  1. Kellison, S. G. (2009). The Theory of Interest (3rd ed.). McGraw-Hill/Irwin.
  2. Broverman, S. A. (2008). Mathematics of Investment and Credit (4th ed.). ACTEX Publications.
  3. McCutcheon, J. J., & Scott, W. F. (1986). An Introduction to the Mathematics of Finance. Heinemann.

❓ Sık Sorulan Sorular (SSS)

Devre sonu ve devre başı arasındaki fark nedir?

  • Devre Sonu: Ödemeler dönem sonunda (örn: her ayın son günü)
  • Devre Başı: Ödemeler dönem başında (örn: her ayın ilk günü)

Devre başı anüitelerde bugünkü değer (1+i) faktörü kadar daha yüksektir.

Hangi formülü kullanmalıyım?

Durum Modül
Kredi taksiti devre_sonu_anuite
Kira ödemeleri devre_basi_anuite
Artan maaşlar geometrik_anuite veya aritmetik_anuite
Erteleme var ertekenmis_anuite
Erken ödeme cabuklas_anuite
Sonsuz ödeme surekli_anuite

IRR hesaplama yakınsamıyor, ne yapmalıyım?

IRR hesaplaması Newton-Raphson yöntemi kullanır. Yakınsama problemi yaşarsanız:

# Daha iyi başlangıç tahmini verin
irr = ic_verim_orani(nakit_akislari, baslangic_yatirim=-10000, tahmin=0.15)

# Toleransı artırın
irr = ic_verim_orani(nakit_akislari, baslangic_yatirim=-10000, tolerans=1e-4)

# Maksimum iterasyonu artırın
irr = ic_verim_orani(nakit_akislari, baslangic_yatirim=-10000, max_iter=200)

🔄 Versiyon Geçmişi

v1.0.0 (2025-01-11)

  • ✅ İlk stabil sürüm
  • ✅ 9 ana modül
  • ✅ 150+ fonksiyon
  • ✅ Kapsamlı test paketi
  • ✅ Türkçe dokümantasyon

⭐ Destek

Bu projeyi beğendiyseniz lütfen ⭐ vererek destek olun!


Not: Bu kütüphane eğitim amaçlıdır. Gerçek finansal kararlar almadan önce bir finans uzmanına danışın."# anuite-ve-faiz-hesaplamalari"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anuite_ve_faiz_hesaplamalari-1.0.0.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anuite_ve_faiz_hesaplamalari-1.0.0-py3-none-any.whl (24.6 kB view details)

Uploaded Python 3

File details

Details for the file anuite_ve_faiz_hesaplamalari-1.0.0.tar.gz.

File metadata

File hashes

Hashes for anuite_ve_faiz_hesaplamalari-1.0.0.tar.gz
Algorithm Hash digest
SHA256 908e99bdcc87398b3da854ba7d882963f48e4db0fc2bc23f6bee8bdc2e1bdfa3
MD5 7ba736cafb5d387b6328f2cbbff7c0e2
BLAKE2b-256 7a30592e02800c2e047421eddb3bb1d7e870e19ddb38857eca66d41b225cd03d

See more details on using hashes here.

File details

Details for the file anuite_ve_faiz_hesaplamalari-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for anuite_ve_faiz_hesaplamalari-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 facb08f7f6e9a799675111f5c57ac4d8206a5bd14e0a8a5def6924c9cd0ed8ad
MD5 2c8d861798aa7fe057267e0e76c8cc6b
BLAKE2b-256 28dd72e89ae919c73d5edbaa1ca53c78247031502c4818fb1a8ee317ba3f1800

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page