DEV Community

Cover image for Borsa ve Finansal Veri Analizinde Profesyonel Python Araç Seti
Serdar Tavukçu for Serdar Tavukçu

Posted on

Borsa ve Finansal Veri Analizinde Profesyonel Python Araç Seti

gorsel

Borsa verileriyle uğraşmaya başladığım ilk günlerde her şeyi sıfırdan yazmaya çalışıyordum. Bu büyük bir hataydı. Zamanla hangi kütüphanenin hangi işin ustası olduğunu öğrendim. Şimdi gerçek işlerde kullandığım ve beni yolda bırakmayan araç setini sırasıyla anlatıyorum. Bu liste kendi deneyimlerimle oluştu ve benzer hatalara düşmemeniz için hazırlandı.

1. pandas

Pandas 3.1.0 sürümü veri analizi denince akla gelen ilk isim. BIST verilerini zaman serisi olarak manipüle etmek, temizlemek ve analiz etmek için standart kütüphane. Ben bu kütüphaneyi fiyat verilerini normalize etmek ve eksik günleri doldurmak için kullanıyorum. Borsa verisinde zaman damgalarıyla oynamak tam bir işkence olabilir ama pandas burada hayat kurtarıyor.

Ancak bu kütüphanenin ciddi bir tuzağı var. Büyük veri setlerinde bellek yönetimi zayıf kalabiliyor. Özellikle veriyi filtrelerken karşıma sürekli çıkan SettingWithCopyWarning hatası ilk zamanlar beni çok uğraştırdı. Veriyi kopyaladığınızı sanırken aslında orijinal veri üzerinde işlem yapmaya çalışıyorsunuz ve program hata veriyor. Bu hatayı gidermek için veriyi her zaman .copy() metoduyla ayırarak işleme almayı öğrendim.

Bellek yönetimi konusunda yaşadığım bir diğer somut sorun, 5 yıllık BIST 100 verisini tek bir yapı içine yüklediğimde sistemin kilitlenmesiydi. Veri tiplerini float64 yerine float32 yaparak bellek kullanımını yüzde 40 oranında düşürdüğümü fark ettim. Büyük ölçekli analizlerde sütun tiplerini manuel tanımlamak, pandas performansını doğrudan etkileyen en kritik adım haline geldi.

2. yfinance

Yfinance 1.7.0 sürümü Yahoo Finance üzerinden hisse senedi verilerini hızlıca çekip prototip oluşturmak için kullanılıyor. Bir piyasa verisine ihtiyacım olduğunda ilk başvurduğum yer burası. Çok hızlı bir şekilde geçmiş fiyat hareketlerini çekip analizime başlayabiliyorum.

Buradaki en büyük risk, resmi bir API olmaması. Yahoo veri yapısını değiştirdiği an kodunuz aniden çalışmayı durdurabiliyor. Bir sabah uyandığımda tüm veri çekme işlemlerimin hata verdiğini gördüm, sebebi Yahoo tarafındaki küçük bir değişiklikti. Bu yüzden bu aracı sadece hızlı prototip ve analizler için kullanıyorum, kritik sistemlerde yedekli çalışmak şart.

3. ta

Ta 0.11.0 sürümü teknik analiz kütüphanesi. RSI, MACD, Bollinger Bantları gibi teknik analiz indikatörlerini veriye otomatik eklemek için kullanıyorum. Kendi başıma bu matematiksel formülleri yazmak yerine bu kütüphaneyi kullanmak hata payımı sıfıra indiriyor.

Tuzağı ise hesaplama mantığını özelleştirmenin zor olması. Bazen farklı zaman dilimlerinde veya farklı hesaplama yöntemlerinde yanlış sinyaller üretebiliyor. Eğer varsayılan ayarların dışına çıkmanız gerekirse kütüphane sizi kilitliyor. Yanlış zaman dilimlerinde bu sinyellere güvenmek portföyümde ciddi kayıplara yol açmıştı, bu yüzden kütüphanenin çıktısını mutlaka manuel kontrol ediyorum.

4. scikit-learn

Scikit-learn 1.9.1 sürümü makine öğrenmesi denince akla gelen ilk kütüphane. Fiyat tahminleme veya sınıflandırma modelleri kurmak için gerekli tüm algoritmalar burada. Ben bunu borsa verisinde trend yönünü tahmin etmek için kullanıyorum.

En büyük tehlikesi ise look-ahead bias yani geleceği görme hatası. Zaman serisi verilerinde modelin eğitim setinde aslında gelecekteki veriyi kullanması çok kolay. Bu hatayı yaptığımda modelim test verisinde kusursuz çalışıyor gibi görünüyordu ama gerçek piyasada hiçbir işe yaramadı. Bu hatayı engellemek için veri setini zaman dilimlerine göre çok dikkatli bölmem gerekiyor.

5. ccxt

Ccxt 4.5.90 sürümü kripto para borsaları için kullanılıyor. Çok sayıda borsa ile tek bir arayüz üzerinden işlem yapmak ve emir yönetmek için kullanıyorum. Farklı borsaların farklı API yapılarıyla uğraşmak yerine tek bir kütüphane ile hepsini kontrol edebiliyorum.

Tuzağı ise borsaların API limitleri. Rate-limiting ayarlarını manuel yapmazsanız borsa IP adresinizi engelleyebiliyor. Bir keresinde hızlı emir gönderirken limitlere takıldım ve hesabım kısa süreliğine kilitlendi. Bu yüzden her zaman kütüphanenin sunduğu limit ayarlarıyla oynamak zorundayım.

6. SQLAlchemy

SQLAlchemy 2.1.6 sürümü veritabanı yönetiminde kullandığım araç. Toplanan borsa verilerini kalıcı olarak bir SQL veritabanında saklamak için kullanıyorum. Verilerim güvende ve istediğim zaman sorgulayabiliyorum.

Tuzağı ise ORM katmanının performans kaybı. Çok karmaşık sorgular yazdığımda ham SQL kullanan birine göre çok daha yavaş çalışıyor. Basit işlerde harika ama büyük veri sorgularında ORM katmanı bazen can sıkıcı olabiliyor.

7. backtrader

Backtrader 1.9.78.123 sürümü strateji test motoru. Yazdığım trading stratejilerini geçmiş veriler üzerinde test ederek performansını ölçüyorum. Stratejimin gerçek hayatta ne kadar kazandıracağını görmek için bu motoru kullanıyorum.

Tuzağı dokümantasyonun çok eski olması. Modern Python asenkron yapılarıyla entegrasyon kurmak neredeyse imkansız. Bu yüzden modern bir sistem kurarken backtrader beni çok zorladı, ancak hala en detaylı testleri bununla yapabiliyorum.

8. pydantic

Pydantic 2.14.1 sürümü veri doğrulama için kullanılıyor. APIlerden gelen borsa verilerini doğrulamak ve veri modellerini tip güvenli hale getirmek için kullanıyorum.

gorsel

from pydantic import Field

sembol = "THYAO"
fiyat = 350.50
dogrulanmis_fiyat = Field(fiyat, gt=0)
Enter fullscreen mode Exit fullscreen mode

Bu kod bloğu, gelen fiyat verisinin pozitif olup olmadığını kontrol eden bir işlemdir. Field(gt=0) parametresi, gelen değerin sıfırdan büyük olması gerektiğini zorunlu kılar. Eğer gelen veri negatifse, kütüphane otomatik olarak bir doğrulama hatası fırlatır ve hatalı verinin sistemin derinliklerine sızmasını engeller.

Ancak derin iç içe geçmiş veri modellerinde bazen performans darboğazları yaratabiliyor. Çok büyük veri paketlerinde doğrulama işlemi sistemi yavaşlatabiliyor, bu yüzden kritik noktalarda dikkatli kullanıyorum. Özellikle binlerce satırlık CSV dosyalarını işlerken, pydantic ile her satırı tek tek doğrulamak yerine, sadece kritik alanları kontrol eden daha hafif bir doğrulama mantığına geçiş yaptım. Bu küçük değişiklik, işlem süresini 12 saniyeden 3 saniyeye indirdi. Ayrıca büyük veri setlerinde pydantic modellerini sadece API giriş kapısında kullanarak, iç süreçlerde daha hızlı olan standart veri yapılarına dönmek sistemin genel hızını artırıyor.

Toparlarsak

Araç seçimi zeka değil tekrar meselesi. Aynı işe aynı aracı kullanmak zaman kazandırıyor. Bundan sonra yapmanız gereken şey bu listedeki kütüphaneleri küçük bir veri setiyle denemek. Önce pandas ile veriyi temizleyin, sonra yfinance ile veri çekin ve pydantic ile veriyi doğrulayın. Kendi sisteminizi kurarken bu sıralamayı takip ederseniz çok daha hızlı ilerlersiniz. Hata yapmaktan korkmayın, önemli olan aynı hatayı ikinci kez yapmamak. Şimdi bilgisayarın başına geçin ve bir tane basit stratejiyi backtrader ile test etmeye başlayın. Veri bilimi dünyasında araçlarınızı tanımak, sadece kod yazmaktan çok daha öte bir yetkinliktir. Özellikle piyasa verisi gibi gürültülü alanlarda, kullandığınız kütüphanenin sınırlarını bilmek, sizi beklenmedik durumlarda yarı yolda kalmaktan korur. Kendi sisteminizi kurarken her zaman en basit araçla başlayın ve sadece ihtiyaç duyduğunuzda karmaşıklığı artırın. Başarı, doğru araçları doğru zamanda kullanma disiplininden gelir. Her başarılı modelin arkasında, veriyi doğru işleyen ve hataları önceden kestiren sağlam bir altyapı yatar. Kütüphanelerin dokümantasyonlarını okumak, sadece fonksiyon isimlerini öğrenmek değil, onların hangi uç durumlarda hata verdiğini anlamaktır. Bu süreçte kazandığınız her deneyim, bir sonraki projenizde size saatler kazandıracak bir yatırım olarak geri dönecektir. Sabırla kendi araç setinizi oluşturun ve piyasanın karmaşasında kaybolmak yerine disiplinli bir şekilde analizlerinize odaklanın.

Top comments (0)