Skip to main content

Hayat Sigortası Matematiği NTP Hesaplama Paketi

Project description

📊 Hayat Sigortası Matematiği ve NTP Hesaplayıcı:

Geliştirici: AYŞE SELÇUK

Pozisyon: Selçuk Üniversitesi Fen Fakültesi Aktüerya Bilimleri Bölümü


🎯 Proje Amacı

Bu projenin temel amacı, "Hayat Sigortası Matematiği" dersi müfredatında yer alan aktüeryal hesaplama metodolojilerini profesyonel bir yazılım kütüphanesine dönüştürmektir. Proje; teorik ders notlarında işlenen komütasyon fonksiyonlarını ($D_x, N_x, S_x, C_x, M_x, R_x$) dinamik bir hesaplama motoruyla birleştirerek şu hedefleri gerçekleştirmektedir:

Yaşam Sigortaları: Saf yaşam ($nE_x$), ömür boyu ve süreli anüiteler ($\ddot{a}x, \ddot{a}{x:\overline{n}|}$) ile birikimli gelecek değer (Forborne Anüite - $s_{x:\overline{n}|}$) modelleri üzerinden hesaplamalar yapılır.

Ölüm Sigortaları: Ömür boyu ($A_x$), dönemsel ve aritmetik biçimde artan vefat teminatlarının ($(IA)_x$) prim değerlemesi gerçekleştirilir.

Karma Sigortalar: Yaşam ve vefat risklerini matematiksel olarak birleştiren ($A_{x:\overline{n}|}$), dönemsel ve ertelenmiş hibrit poliçe modellerini kapsar.

Dinamik Aktüeryal Motor (Highlight): Statik sonuçlar yerine; teknik faiz, yaş veya süre gibi giriş parametreleri değiştiğinde tüm komütasyon tablosunu ve bağımlı tüm değerleri milisaniyeler içinde yeniden hesaplayan esnek bir çekirdek yapı kurulmuştur.

Müfredat Ötesi Analizler ($P$ ve $V$): Temel NTP hesaplamaları bir adım öteye taşınarak; yıllık net prim taksitlendirmeleri ($P$) ve poliçe süresince oluşan matematiksel rezervlerin ($V$) prospektif yöntemle hesaplanması sisteme entegre edilmiştir.

Akademik Güvenilirlik (19 Unit Tests): Aktüeryal hesaplamalarda sıfır hata toleransı prensibiyle; $N_x = D_x + N_{x+1}$ gibi temel özdeşlikler ve sınır değer analizlerini kapsayan 19 farklı birim test ile sistemin matematiksel tutarlılığı mühürlenmiştir.

Bu kütüphane, aktüerya biliminin karmaşık hesaplama yükünü otomatize ederek, ders kapsamında işlenen tüm sigorta ürünleri için dinamik bir analiz platformu sunmaktadır.


🚀 Proje Hakkında (Teknik Parametreler)

• Hesaplama Metodolojisi: Proje, hayat sigortası matematiğinin temelini oluşturan Komütasyon Fonksiyonları yöntemini kullanır. Yaşam tablosu verilerinden yola çıkarak $D_x, N_x, M_x, S_x, R_x$ ve $C_x$ sütunlarını dinamik olarak oluşturur. Tüm Net Tek Prim (NTP) ve Rezerv hesaplamaları bu değerler üzerinden aktüeryal denklik prensibine göre yapılır.

• Veri Seti: Hesaplamalar, ders notlarından referans alınarak dijitalleştirilen 1980 CSO Mortalite Tablosu üzerinden dinamik olarak gerçekleştirilmektedir.

• Teknik Faiz Oranı: Tüm iskonto ve bugünkü değer hesaplamalarında ders standartlarına uygun olarak $i = %10$ ($0.10$) faiz oranı varsayılmıştır.

• Sıfır Bağımlılık (Zero-Dependency): Proje; Pandas veya Numpy gibi harici kütüphanelere ihtiyaç duymadan, tamamen saf Python algoritmalarıyla geliştirilmiştir. Bu, hesaplama motorunun her ortamda ek bir yükleme gerektirmeden çalışmasını sağlar.

• Veri Uyumluluğu: data/ klasöründeki mortalite tablosu için noktalı virgül (;) ayracı ve ondalık virgül (,) kullanımına tam uyumlu özel veri temizleme motoru içermektedir.

•Taşınabilir Veri Yapısı: MANIFEST.in yapılandırması sayesinde, mortalite verisi paketle bütünleşik hale getirilmiştir. Bu sayede kütüphane başka sistemlere kurulduğunda veri yolu hatası almadan çalışabilmektedir.

[!IMPORTANT] Mortalite Tablosu Hakkında: Projede kullanılan 1980 CSO Mortalite Tablosu, ders kapsamında iletilen basılı kaynaklar referans alınarak dijitalleştirilmiş olup; veri okuma motoru bu tablonun data/ klasöründeki özel formatına (noktalı virgül ayracı ve ondalık virgül kullanımı) göre optimize edilmiştir.


🛡️ Proje Kapsamı

Bu kütüphane, hayat sigortaları matematiğinin temel direkleri olan üç ana sigorta grubunu ve ilgili tüm Net Tek Prim (NTP) hesaplamalarını tam olarak desteklemektedir:

1.Yaşam Sigortaları: Hayatta kalma şartına bağlı birikim ve irat modelleri. Saf yaşam ($nE_x$), ömür boyu ve süreli anüiteler ($a_x, \ddot{a}_x$) ile birikimli gelecek değer (Forborne Anüite) modelleri üzerinden hesaplamalar yapılır.

2.Ölüm Sigortaları: Vefat riski karşılığında sunulan teminatların prim değerlemesi. Ömür boyu ($A_x$), dönemsel ve aritmetik biçimde artan vefat teminatlarının prim değerlemesi gerçekleştirilir.

3.Karma Sigortalar: Hem yaşam hem vefat riskini birleştiren hibrit ürünler.Yaşam ve vefat risklerini matematiksel olarak birleştiren, dönemsel ve ertelenmiş hibrit poliçe modellerini kapsar.

4.Aktüeryal Analizler: Primlerin taksitlendirilmesi ve poliçe birikimlerinin değerlemesi. Verilen bir NTP'nin yıllık net primlere ($P$) dönüştürülmesi ve poliçe süresi içindeki matematiksel rezervlerin ($tV_x$) prospektif yöntemle hesaplanmasını kapsar.

5.Otomatik Komütasyon Motoru: Ham mortalite verilerini ($l_x$) kullanarak $D_x, N_x, M_x, S_x, R_x$ ve $C_x$ sütunlarını tanımlı teknik faize göre dinamik olarak türeten çekirdek algoritma.6. Kalite Güvence ve Birim Testleri: Yazılımın matematiksel doğruluğunu denetleyen, müfredat özdeşliklerini (örneğin $N_x = D_x + N_{x+1}$) baz alan 19 farklı senaryo ile gerçekleştirilen otomatik test süreçleri.7. Veri Entegrasyonu ve Paketleme: MANIFEST.in ve setup.py yapılandırmalarıyla veritabanı (CSV) ve kod bütünlüğünün sağlandığı, taşınabilir ve kurulabilir bir kütüphane mimarisi.


📁 Proje Dizin Yapısı

Proje, modüler bir kütüphane mimarisine uygun olarak şu şekilde organize edilmiştir:

HayatSigortasiHesaplama/
├── data/                 # 1980 CSO Mortalite Tablosu (CSV formatında)
├── src/                  # Aktüeryal hesaplama motoru ve çekirdek kodlar 
│   ├── __init__.py       # Paket giriş dosyası
│   └── hesaplayici.py    # HayatSigortasiHesaplayici sınıfı
├── tests/                # Matematiksel doğruluğu denetleyen birim testleri 
│   ├── __init__.py
│   └── test_hesaplayici.py
├── .gitignore            # Git takibine girmeyecek dosyalar
├── deneme.py             # Sistemin çalışmasını kanıtlayan demo scripti
├── MANIFEST.in           # CSV verilerinin pakete dahil edilmesini sağlayan yapılandırma
├── README.md             # Proje dökümantasyonu ve kullanım kılavuzu
└── setup.py              # PyPI paketleme ve kurulum yapılandırması

💻 Kurulum ve Çalıştırma

  1. Projeyi Klonlayın ve Dizine Girin:
git clone https://github.com/ayseselcuk/HayatSigortasiHesaplama.git
cd HayatSigortasiHesaplama
  1. Sanal Ortam Oluşturun (Önerilen):
python -m venv venv
# Windows için:
venv\Scripts\activate
# Mac/Linux için:
source venv/bin/activate
  1. Paketi Kurun:

•Yerel Geliştirme İçin:

pip install .

•Doğrudan PyPI Üzerinden (Yayınlandıktan Sonra):

pip install HayatSigortasiHesaplama
  1. Sistemi Test Edin: Kurulumun ve matematiksel hesaplamaların doğruluğunu teyit etmek için:
python -m unittest tests/test_hesaplayici.py

🚀 Örnek Kullanım ve Doğrulama

Sistemin verileri doğru okuduğunu ve hesaplama yaptığını hızlıca test etmek için ana dizindeki deneme.py dosyasını çalıştırabilirsiniz. Aşağıda temel ve ileri düzey hesaplama örnekleri yer almaktadır:

from src import HayatSigortasiHesaplayici

# 1. Kütüphaneyi Başlat (%10 teknik faiz ve tablo yolu ile)
hesap = HayatSigortasiHesaplayici("data/1980CSO_MortaliteTablosu.csv", 0.10)

# --- İleri Düzey Aktüeryal Hesaplamalar ---

# a) Karma Sigorta NTP ve Yıllık Taksit (Prim) Hesabı
# 35 yaşında, 10 yıl süreli bir karma sigortanın peşin ve taksitli maliyeti
ntp_karma = hesap.karma_donemsel_ntp(x=35, n=10)
yillik_p = hesap.yillik_net_prim_hesapla(ntp_karma, yas=35, sure=10)

print(f"Karma Sigorta Peşin Maliyet (NTP): {ntp_karma:.6f}")
print(f"10 Yıl Boyunca Ödenecek Yıllık Net Prim (P): {yillik_p:.6f}")

# b) Aktüeryal Rezerv Hesabı (Prospektif Metot)
# Yukarıdaki poliçenin 5. yılı sonundaki birikmiş matematiksel rezervi
rezerv = hesap.prospektif_rezerv_hesapla(yas=35, n=10, t=5, yillik_prim=yillik_p)
print(f"Poliçenin 5. Yılındaki Prospektif Rezervi (5V): {rezerv:.6f}")

# c) Aritmetik Artan Ölüm Sigortası
# Vefat tazminatının her yıl 1 birim arttığı model
artan_vefat = hesap.olum_aritmetik_artan_ntp(x=40)
print(f"Artan Vefat Teminatı NTP ((IA)x): {artan_vefat:.6f}")

# d) Beklenen Kalan Ömür Hesabı
e35 = hesap.beklenen_omur_hesapla(35)
print(f"35 Yaşındaki Kişinin Beklenen Kalan Ömrü (ex): {e35:.2f} yıl")

📊 Örnek Çıktılar ve Analiz Raporu

Sistem çalıştırıldığında, 1980 CSO Mortalite tablosu üzerinden otomatik olarak komütasyon sütunlarını hesaplar ve terminale aşağıdaki gibi kapsamlı bir rapor sunar:

1. Aktüeryal Komütasyon Tablosu

Sistem, girilen teknik faiz oranına göre tüm temel aktüeryal değerleri ($D_x, N_x, M_x, R_x$ vb.) anlık olarak türetir:

Yaş $D_x$ $C_x$ $N_x$ $S_x$ $M_x$ $R_x$
0 1000000.00 3800.00 10832803.92 116637970.55 15199.64 229352.05
1 905290.90 880.60 9832803.92 105805166.63 11399.64 214152.40
... ... ... ... ... ... ...

2. Analiz Raporu (Örnek: 35 Yaş)

deneme.py üzerinden alınan örnek bir poliçe analiz çıktısı:

  • Saf Yaşam ($nE_x$): 0.374112
  • Ömür Boyu Yaşam ($\ddot{a}_x$): 10.371314
  • Dönemsel Karma ($A_{x:n}$): 0.391297
  • Yıllık Net Prim: 0.058440

🛠️ Desteklenen Aktüeryal Fonksiyonlar

1. Yaşam Sigortaları (NTP)

yasam_tek_odemeli_ntp(x, n): $n$ yıl hayatta kalma şartına bağlı peşin ödeme ($nE_x$).

yasam_omur_boyu_ntp(x, donem_basi): Ömür boyu süren irat ödemeleri ($a_x / \ddot{a}_x$).

yasam_donemsel_ntp(x, n, donem_basi): Belirli bir yaşta başlayan $n$ yıl süreli geçici annüite ($n|a_x$).

yasam_ertelenmis_ntp(x, m, donem_basi): $m$ yıl ertelenmiş ömür boyu anüitedir ($m|a_x$).

yasam_ertelenmis_donemsel_ntp(x, m, n, donem_basi): $m$ yıl ertelenmiş ve $n$ yıl sürecek geçici anüite modelidir ($m|n|a_x$).

forborne_anuite(x, n, donem_basi): Geçmiş dönem ödemelerinin birikimli gelecek değeri ($s_{x:n}$, $S_{x:\overline{n}}$).

yasam_aritmetik_artan_ntp(x): Ödemelerin her yıl aritmetik olarak arttığı yaşam sigortası modelleridir ($(Ia)_x$).

yasam_cok_odemeli_ntp(x, m): Yılda birden fazla ($m$) ödemeli iratlar için yaklaşık hesaplama.

2. Ölüm Sigortaları (NTP)

olum_omur_boyu_ntp(x): Süresiz vefat teminatı primi ($A_x$).

olum_donemsel_ntp(x, n): Belirli bir süre ($n$) içindeki vefat riskini kapsayan primdir ($nA_x$).

olum_ertelenmis_ntp(x, m): $m$ yıl ertelenmiş ömür boyu vefat teminatı ($m|A_x$).

olum_ertelenmis_donemsel_ntp(x, m, n): $m$ yıl ertelenmiş, $n$ yıl süreli vefat teminatı ($m|nA_x$).

olum_aritmetik_artan_ntp(x): Aritmetik olarak artan vefat tazminatlarının peşin değeridir ($(IA)_x$).

3. Karma Sigortalar (NTP)

karma_donemsel_ntp(x, n): Vade sonu hayatta kalma veya vade içi vefat risklerini kapsayan birleşik prim ($nA_{x:n}$).

karma_ertelenmis_donemsel_ntp(x, m, n): Ertelenmiş dönemsel karma sigorta primi ($m|nA_{x:n}$).

4. İleri Düzey Aktüeryal Hesaplamalar

yillik_net_prim_hesapla(ntp, yas, sure): Net Tek Primin yıllık eşit taksitlere ($P$) dönüştürülmesi.

prospektif_rezerv_hesapla(yas, n, t, yillik_prim): Prospektif yöntemle $t$. yıldaki matematiksel rezerv hesabı (${}^tV_x$).

beklenen_omur_hesapla(x): $x$ yaşındaki bireyin beklenen kalan yaşam süresi ($e_x$).

teknik_faiz_guncelle(yeni_faiz): Teknik faiz değiştiğinde tüm komütasyon sütunlarını ($D, N, M, S, R$) otomatik yeniden hesaplayan dinamik motor.


📊 Dinamik Komütasyon Motoru

Proje, ölüm tablosundaki ham verileri x ve l_x kullanarak , tanımlı teknik faiz oranına bağlı olarak komütasyon sütunlarını dinamik şekilde üretir. Teknik faiz değiştirildiğinde tüm aktüeryal değerler otomatik olarak güncellenir.

🔹 Temel Komütasyon Değerleri

•	D_x

İskonto edilmiş yaşayan sayısı:

$$ D_x = l_x \cdot v^x $$

•	C_x

İskonto edilmiş ölen sayısı:

$$ C_x = d_x \cdot v^{x+1} $$

Not: $d_x$, $x$ yaşında ölen kişi sayısını temsil eder ve $d_x = l_x - l_{x+1}$ formülüyle türetilmektedir.

🔹 Yaşam ve İrat Toplamları

•	N_x

($D_x$ değerlerinin sondan başa kümülatif toplamı): Anüite ve irat hesaplamalarında temel teşkil eder.

$$ N_x = \sum_{k=x}^{\omega} D_k $$

•	S_x

($N_x$ değerlerinin kümülatif toplamı): Aritmetik artan ödemeli anüiteler için kullanılır.

$$ S_x = \sum_{k=x}^{\omega} N_k $$

🔹 Vefat ve Tazminat Toplamları

•	M_x

($C_x$ değerlerinin kümülatif toplamı): Standart vefat sigortalarının prim hesaplamalarında kullanılır.

$$ M_x = \sum_{k=x}^{\omega} C_k $$

•	R_x

($M_x$ değerlerinin kümülatif toplamı): Aritmetik artan vefat teminatlarının değerlemesinde kullanılır.

$$ R_x = \sum_{k=x}^{\omega} M_k $$


🛡️ Hata Yönetimi ve Kısıtlamalar

  • Yaş Sınırı (Omega): Sistem, mortalite tablosundaki maksimum yaşın ($\omega$) üzerindeki girişleri ve poliçe süresinin tablo sınırlarını aştığı durumları tespit ederek kullanıcıyı uyarır.

  • Parametre Validasyonu: Sigorta süresi ($n$), erteleme süresi ($m$) veya yaş ($x$) gibi girdilerin negatif veya mantıksız (float) girilmesi durumunda otomatik doğrulama mekanizması devreye girer.

  • Veri Bütünlüğü: data/ klasöründeki kaynak tabloda oluşabilecek eksik veri veya hatalı karakter (karakter/sayı karışıklığı) durumları için try-except hata yakalama motoru entegre edilmiştir.


🧪 Test Metodolojisi ve Güvenilirlik

Projenin matematiksel doğruluğu, unittest kütüphanesi kullanılarak hazırlanan 19 farklı senaryo ile mühürlenmiştir. Bu testler, hesaplamaların akademik aktüerya müfredatıyla %100 uyumlu olduğunu garanti eder.

Test Kapsamı:

  • Komütasyon Zinciri: $N_x = D_x + N_{x+1}$ ve $M_x = C_x + M_{x+1}$ özdeşliklerinin her yaş için doğrulanması.

  • Sınır Değer Analizi: Tablo sonu (Omega yaş), negatif yaş girişleri ve %0 faiz durumu gibi uç senaryolar.

  • Rezerv Kontrolü: Prospektif rezervlerin poliçe başında 0, vade sonunda teminat tutarına (1.0) ulaşmasının testi.

  • Aktüeryal Mantık: Ertelenmiş, anüite ve artan teminatlı poliçelerin fiyatlandırma tutarlılığı.

Testleri Çalıştırmak İçin:

python -m unittest tests/test_hesaplayici.py

📜 Lisans

Bu proje eğitim amaçlı geliştirilmiştir , MIT Lisansı ile lisanslanmıştır. Akademik amaçlarla özgürce kullanılabilir.


🎓 Teşekkür ve Veri Kaynağı

Bu proje, Dr. Öğr. Ü. Demet Hocamızın "Hayat Sigortası Matematiği" dersi kapsamında paylaştığı değerli bilgiler ve akademik notlar ışığında geliştirilmiştir.

•Veri Seti: Hesaplamalarda kullanılan 1980 CSO Mortalite Tablosu, Demet Hocamızın ders notlarından referans alınarak dijitalleştirilmiştir.

•Metodoloji: Kod içerisindeki tüm aktüeryal algoritmalar ve komütasyon fonksiyonları (D_x, N_x, M_x vb.), derste işlenen teorik müfredat ile tam uyumlu şekilde kurgulanmıştır.

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

hayatsigortasihesaplama-1.0.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

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

hayatsigortasihesaplama-1.0.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hayatsigortasihesaplama-1.0.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hayatsigortasihesaplama-1.0.0.tar.gz
Algorithm Hash digest
SHA256 70d775b1b3151fee99fa926b132adc8c329c5feb4b5aab66cdf93cc4fe0fde2b
MD5 fbb313cb63d89907dd5a08fd0d0c6119
BLAKE2b-256 4174133fe60bf7fc5900fc70751fe3da32a18b838a5cfa32771663bca56fb45f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hayatsigortasihesaplama-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 342f28cd6aac85e7188b2ca3cfd800215559e6b62d8273a5510f0a95d549b7ed
MD5 b3e8c6f4ca0f98a352f99731ca5499ee
BLAKE2b-256 0ede7cdcda8cc3c58817a2f40ccfb12157ac0429e3e8bd41ccce06467b5f7c9d

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