Skip to content

v0.10.0 — EVDS (TCMB Elektronik Veri Dağıtım Sistemi)

Choose a tag to compare

@saidsurucu saidsurucu released this 04 May 20:14
· 4 commits to master since this release

TCMB EVDS3 modülü — yfinance benzeri makro veri erişimi

TCMB EVDS sistemine erişim için yeni modül. Eski evds2.tcmb.gov.tr REST API'si 2025 sonunda kapatıldı (302→SPA HTML), PyPI'daki tüm evds* paketleri kırıldı. Bu modül yeni v3 backend'i (/igmevdsms-dis/...) wrap ediyor; 145 kategori, on binlerce makro seri için yfinance benzeri arayüz sağlar.

Hızlı Başlangıç

import borsapy as bp

bp.set_evds_key("YOUR_API_KEY")   # ücretsiz: https://evds3.tcmb.gov.tr

# Tek satır seri çekme
df = bp.evds_series("TP.DK.USD.A.YTL", period="1y")              # USD/TRY günlük
df = bp.evds_series("TP.FG.J0", period="3y", formula="yoy_pct")  # TÜFE yıllık enflasyon

# Çoklu seri (wide DataFrame)
df = bp.evds_download(["TP.DK.USD.A.YTL", "TP.DK.EUR.A.YTL"], period="6mo")

# Katalog navigasyonu (anonim — key gerekmez)
ev = bp.EVDS()
ev.categories                          # 145 kategori
ev.search("dolar")                     # client-side fuzzy arama
ev.search_server("dolar")              # TCMB server-side full-text
ev.home_page_dashboards()              # 10 hazır TCMB panosu
ev.datagroup_data("bie_dkdovizgn")     # 137 günlük döviz serisi tek çağrıda

Yeni Public API

  • bp.EVDS() — 11 metod: categories, datagroups, series_in_group, search, search_server, series, dashboard, dashboard_by_id, home_page_dashboards, datagroup_data, announcements
  • bp.EVDSSeries('TP.DK.USD.A.YTL')info, range, native_frequency, datagroup, history(period/start/end/frequency/aggregation/formula/decimals/decimal_separator)
  • Module shortcuts: evds_series, evds_download, evds_categories, evds_search
  • API key yönetimi: set_evds_key, get_evds_key, clear_evds_key (veya EVDS_API_KEY env var)

Kritik Özellikler

  • 1000-gözlem auto-chunking — 10+ yıllık günlük seriler tek çağrıda gibi davranır (TCMB silently 1000'de keserdi)
  • end=None01-01-2999 — TCMB-tavsiyesi always-current sentinel
  • Frekans normalizasyonu — legacy v2 (9/13/16/18) ↔ v3 (1..8) otomatik
  • Dot↔underscore kod dönüşümü — kullanıcı TP.DK.USD.A.YTL veya TP_DK_USD_A_YTL verebilir
  • snake_case enum'lar: frequency=\"daily\"|\"monthly\"|..., formula=\"level\"|\"yoy_pct\"|..., aggregation=\"avg\"|\"last\"|...
  • Browser-like headers + cookie sticky session — gateway kabul etsin
  • Cache TTL: katalog 24 saat, veri 5 dakika
  • Resmi REST katalog endpoint yedekleri (key'li): get_categories_rest, get_datagroups_rest, get_series_list_rest
  • CSV/XML çıktı formatı desteği (output_format, provider seviye)
  • TCMB ana sayfa 10 panosu — Rezervler, Cari İşlemler, Portföy, Parasal Büyüklükler, Kart Harcamaları, TÜFE, Borç-GSYİH, FX Mevduat, TL Faiz, Brüt Dış Borç

Mevcut Modüllerle İlişki

bp.Inflation() ve bp.TCMB() modülleri (HTML scraping) yan yana yaşıyor (geriye uyumluluk). EVDS daha kapsamlıdır; yeni kodlarda tercih edilmeli.

Test ve Dokümantasyon

  • 58 unit test + 10 integration test (anonim live + REST live)
  • README'de 38 EVDS örneği — hepsi gerçek API ile doğrulandı
  • pdoc API dokümantasyonu yenilendi (docs/borsapy.html)

Reverse Engineering Detayları (Geliştirici Notları)

  • v3 backend'i SPA bundle'ı reverse engineering ile çıkarıldı
  • TCMB resmi Web Servis kılavuzu (paylaşılan PDF) ile path-style URL kontratı doğrulandı
  • fatihmete/evds v0.4.0 referans alındı (key-tabanlı REST yolu)
  • Bütün dokümante endpoint'ler bizim wrap'imizde mevcut

🤖 Generated with Claude Code