Tahvil değerleme ve risk analizi için Python kütüphanesi
Project description
Tahvil Hesaplamaları
Tahvil değerleme ve risk analizi için kapsamlı Python kütüphanesi.
Proje Geliştiricisi
Bu proje, aktüeryal hesaplamalar dersi kapsamında geliştirilmiştir.
Projenin Amacı ve Kapsamı
Bu proje, tahvil yatırımları ile ilgili temel finansal hesaplamaları yapmak için geliştirilmiştir. Proje kapsamında şu hesaplamalar yer almaktadır:
- Tahvil Fiyatlandırma: Kuponlu ve sıfır kuponlu tahvillerin bugünkü değerinin hesaplanması
- Getiri Analizi: Tahvilin iç verim oranı (Yield to Maturity - YTM) hesaplama
- Risk Ölçüleri: Duration ve Convexity hesaplamaları
- Fiyat Hesaplamaları: Temiz ve kirli fiyat hesaplamaları
- Birikmiş Faiz: Kupon tarihleri arasındaki birikmiş faiz hesaplama
Kurulum ve Çalıştırma Adımları
Gereksinimler
- Python 3.7 veya üzeri
- math modülü (Python standart kütüphanesi)
- typing modülü (Python standart kütüphanesi)
Kurulum
- Projeyi indirin veya klonlayın:
git clone <repository-url>
cd tahvil-hesaplamalari
- Proje dizinine gidin:
cd tahvil-hesaplamalari
- Gerekli bağımlılıklar zaten Python standart kütüphanesinde olduğu için ek kurulum gerekmez.
Çalıştırma
Projeyi kullanmak için Python'da modülü import edin:
from src.tahvil_hesaplamalari import tahvilin_bugunku_degeri
Örnek Kullanım
Temel Tahvil Fiyatlandırma
from src.tahvil_hesaplamalari import tahvilin_bugunku_degeri, kuponlu_tahvil_fiyati
# 10 yıl vadeli, yıllık %5 kupon ödemeli, %5 piyasa faiz oranı, 1000 TL nominal değerli tahvil
kupon_tutari = 50 # Yıllık kupon ödemesi
nominal_deger = 1000
piyasa_faiz_orani = 0.05 # %5
vade = 10 # 10 yıl
# Tahvilin bugünkü değeri
fiyat = tahvilin_bugunku_degeri(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
print(f"Tahvil Fiyatı: {fiyat:.2f} TL")
# Çıktı: Tahvil Fiyatı: 1000.00 TL
# Alternatif olarak kuponlu tahvil fiyatı fonksiyonu
fiyat2 = kuponlu_tahvil_fiyati(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
print(f"Tahvil Fiyatı (Alternatif): {fiyat2:.2f} TL")
Sıfır Kuponlu Tahvil
from src.tahvil_hesaplamalari import sifir_kuponlu_tahvil_fiyati
# 10 yıl vadeli, kupon ödemesi olmayan tahvil
nominal_deger = 1000
piyasa_faiz_orani = 0.05
vade = 10
fiyat = sifir_kuponlu_tahvil_fiyati(nominal_deger, piyasa_faiz_orani, vade)
print(f"Sıfır Kuponlu Tahvil Fiyatı: {fiyat:.2f} TL")
# Çıktı: Sıfır Kuponlu Tahvil Fiyatı: 613.91 TL
Getiri Oranı (YTM) Hesaplama
from src.tahvil_hesaplamalari import getiri_orani
# Piyasada 950 TL'ye işlem gören tahvil için YTM hesaplama
kupon_tutari = 50
nominal_deger = 1000
tahvil_fiyati = 950
vade = 10
ytm = getiri_orani(kupon_tutari, nominal_deger, tahvil_fiyati, vade)
print(f"İç Verim Oranı (YTM): {ytm*100:.2f}%")
Risk Ölçüleri
from src.tahvil_hesaplamalari import macaulay_duration, degistirilmis_duration, konveksite
kupon_tutari = 50
nominal_deger = 1000
piyasa_faiz_orani = 0.05
vade = 10
# Macaulay Duration
mac_duration = macaulay_duration(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
print(f"Macaulay Duration: {mac_duration:.2f} yıl")
# Modified Duration
mod_duration = degistirilmis_duration(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
print(f"Modified Duration: {mod_duration:.2f}")
# Konveksite
conv = konveksite(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
print(f"Konveksite: {conv:.2f}")
Birikmiş Faiz ve Fiyat Hesaplamaları
from src.tahvil_hesaplamalari import birikmis_faiz, temiz_fiyat, kirli_fiyat
# Birikmiş faiz hesaplama
kupon_tutari = 50
gecen_gun = 90 # Son kupon tarihinden bu yana 90 gün geçmiş
toplam_gun = 180 # İki kupon arası 180 gün
birikmis = birikmis_faiz(kupon_tutari, gecen_gun, toplam_gun)
print(f"Birikmiş Faiz: {birikmis:.2f} TL")
# Çıktı: Birikmiş Faiz: 25.00 TL
# Temiz ve kirli fiyat
temiz = 1000
birikmis_faiz_tutari = 25
kirli = kirli_fiyat(temiz, birikmis_faiz_tutari)
print(f"Kirli Fiyat: {kirli:.2f} TL")
# Çıktı: Kirli Fiyat: 1025.00 TL
temiz_geri = temiz_fiyat(kirli, birikmis_faiz_tutari)
print(f"Temiz Fiyat: {temiz_geri:.2f} TL")
# Çıktı: Temiz Fiyat: 1000.00 TL
Test Çalıştırma
Projeyi test etmek için:
python -m pytest tests/test_tahvil_hesaplamalari.py
veya
python -m unittest tests.test_tahvil_hesaplamalari
Fonksiyonların Kısa Açıklaması ve Parametreleri
1. tahvilin_bugunku_degeri(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
Tahvilin bugünkü değerini hesaplar. Tüm nakit akışlarının bugüne indirgenmiş değerini döndürür.
Parametreler:
kupon_tutari(float): Her dönem ödenen kupon tutarınominal_deger(float): Nominal (itfa) değeripiyasa_faiz_orani(float): Piyasa faiz oranı (iskonto oranı)vade(int): Toplam vade (dönem sayısı)
Döndürür: float - Tahvilin bugünkü fiyatı
2. annuite_faktoru(faiz_orani, vade)
Annüite faktörünü hesaplar. Kupon ödemelerinin bugünkü değerini hesaplamak için kullanılır.
Parametreler:
faiz_orani(float): Faiz oranıvade(int): Vade (dönem sayısı)
Döndürür: float - Annüite faktörü
3. kuponlu_tahvil_fiyati(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
Kuponlu tahvil fiyatını annüite faktörü kullanarak hesaplar.
Parametreler:
kupon_tutari(float): Her dönem ödenen kupon tutarınominal_deger(float): Nominal (itfa) değeripiyasa_faiz_orani(float): Piyasa faiz oranıvade(int): Toplam vade (dönem sayısı)
Döndürür: float - Tahvilin fiyatı
4. sifir_kuponlu_tahvil_fiyati(nominal_deger, piyasa_faiz_orani, vade)
Sıfır kuponlu tahvil fiyatını hesaplar. Bu tahvillerde kupon ödemesi yoktur.
Parametreler:
nominal_deger(float): Nominal (itfa) değeripiyasa_faiz_orani(float): Piyasa faiz oranıvade(int): Toplam vade (dönem sayısı)
Döndürür: float - Tahvilin fiyatı
5. getiri_orani(kupon_tutari, nominal_deger, tahvil_fiyati, vade, baslangic_tahmini, hata_payi, max_iterasyon)
Tahvilin iç verim oranını (Yield to Maturity - YTM) hesaplar. Newton-Raphson yöntemi kullanılır.
Parametreler:
kupon_tutari(float): Her dönem ödenen kupon tutarınominal_deger(float): Nominal (itfa) değeritahvil_fiyati(float): Tahvilin piyasa fiyatıvade(int): Toplam vade (dönem sayısı)baslangic_tahmini(float, opsiyonel): Başlangıç tahmini (varsayılan: 0.05)hata_payi(float, opsiyonel): Hata payı (varsayılan: 1e-6)max_iterasyon(int, opsiyonel): Maksimum iterasyon sayısı (varsayılan: 1000)
Döndürür: float - İç verim oranı (YTM)
6. birikmis_faiz(kupon_tutari, gecen_gun_sayisi, toplam_kupon_gunu)
Birikmiş faizi hesaplar. Kupon tarihleri arasında tahvil satılırsa, satıcının hak ettiği faizi hesaplar.
Parametreler:
kupon_tutari(float): Kupon tutarıgecen_gun_sayisi(int): Son kupon tarihinden bu yana geçen gün sayısıtoplam_kupon_gunu(int): İki kupon tarihi arasındaki toplam gün sayısı
Döndürür: float - Birikmiş faiz
7. temiz_fiyat(kirli_fiyat, birikmis_faiz_tutari)
Temiz fiyatı hesaplar. Piyasalarda genellikle temiz fiyat kullanılır.
Parametreler:
kirli_fiyat(float): Kirli fiyat (temiz fiyat + birikmiş faiz)birikmis_faiz_tutari(float): Birikmiş faiz tutarı
Döndürür: float - Temiz fiyat
8. kirli_fiyat(temiz_fiyat, birikmis_faiz_tutari)
Kirli fiyatı hesaplar.
Parametreler:
temiz_fiyat(float): Temiz fiyatbirikmis_faiz_tutari(float): Birikmiş faiz tutarı
Döndürür: float - Kirli fiyat
9. macaulay_duration(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
Macaulay Duration'ı hesaplar. Tahvilin ağırlıklı ortalama geri dönüş süresini ölçer.
Parametreler:
kupon_tutari(float): Her dönem ödenen kupon tutarınominal_deger(float): Nominal (itfa) değeripiyasa_faiz_orani(float): Piyasa faiz oranıvade(int): Toplam vade (dönem sayısı)
Döndürür: float - Macaulay Duration
10. degistirilmis_duration(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
Modified Duration'ı hesaplar. Faiz değişimine karşı fiyat hassasiyetini gösterir.
Parametreler:
kupon_tutari(float): Her dönem ödenen kupon tutarınominal_deger(float): Nominal (itfa) değeripiyasa_faiz_orani(float): Piyasa faiz oranıvade(int): Toplam vade (dönem sayısı)
Döndürür: float - Modified Duration
11. konveksite(kupon_tutari, nominal_deger, piyasa_faiz_orani, vade)
Konveksite (Convexity) değerini hesaplar. Duration'un yakalayamadığı eğriliği ölçer.
Parametreler:
kupon_tutari(float): Her dönem ödenen kupon tutarınominal_deger(float): Nominal (itfa) değeripiyasa_faiz_orani(float): Piyasa faiz oranıvade(int): Toplam vade (dönem sayısı)
Döndürür: float - Konveksite değeri
Lisans
Bu proje eğitim amaçlı geliştirilmiştir.
Katkıda Bulunma
Bu proje bir ödev çalışmasıdır. Katkılarınız için teşekkür ederiz.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tahvil_hesaplamalari-1.0.0.tar.gz.
File metadata
- Download URL: tahvil_hesaplamalari-1.0.0.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d9219cec4e4d22e6aee32df7c8e4617b26164ebf5bd1606682bc54471a0e600
|
|
| MD5 |
3af103f792b3b72e9e61a4736070af17
|
|
| BLAKE2b-256 |
eb8709b1ffb4d68e873ba4ab761e5c485fa9d6a932ecf628e5e5768391130148
|
File details
Details for the file tahvil_hesaplamalari-1.0.0-py3-none-any.whl.
File metadata
- Download URL: tahvil_hesaplamalari-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
241b0b12bdcb27a2984f428601b5c9d46ca3ac44e298da24eff95a9f8ab31bd2
|
|
| MD5 |
97a3317823366beb41af640f592e8c89
|
|
| BLAKE2b-256 |
dd283d16942613eb044cd5e8b7b66cea77935e487e7927c72d79aeed24adeaa1
|