Python İle Matplotlib Kütüphanesi Kullanarak Finansal Grafik Nasıl Yapılır?

Python İle Matplotlib Kütüphanesi Kullanarak Finansal Grafik Nasıl Yapılır?
Python İle Matplotlib Kütüphanesi Kullanarak Finansal Grafik Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Çalışmaya başlamadan önce bilgisayarınızda Python 3.12 veya daha yeni bir sürümün yüklü olduğundan emin olmalısınız. Finansal verileri manipüle etmek için pandas, görselleştirme için matplotlib ve finansal veri çekmek için yfinance kütüphanelerini kullanacağız.

Gerekli kütüphaneleri yüklemek için terminal veya komut istemcisinde aşağıdaki komutu çalıştırın:

pip install matplotlib pandas yfinance mplfinance

mplfinance kütüphanesi, Matplotlib tabanlı olup finansal grafikler için özelleşmiş bir araçtır. Bu kütüphaneyi kullanmak, standart Matplotlib ile saatler sürecek mum grafiği çizimlerini dakikalar içinde yapmanızı sağlar.

Veri Setini Hazırlama ve İlk Grafik

Finansal grafik oluşturmanın ilk adımı, veriyi doğru formatta (genellikle Pandas DataFrame) çekmektir. yfinance kütüphanesi, halka açık borsa verilerine erişim sağlar. İlk olarak, bir hisse senedinin kapanış fiyatlarını basit bir çizgi grafiği ile görselleştirelim.

import yfinance as yf
import matplotlib.pyplot as plt

# Veri çekme: Apple hisse verileri
data = yf.download("AAPL", start="2025-01-01", end="2026-01-01")

# Çizgi grafiği oluşturma
plt.figure(figsize=(10, 5))
plt.plot(data['Close'], label='Kapanış Fiyatı', color='blue')
plt.title('Apple Hisse Senedi Kapanış Fiyatları (2025)')
plt.xlabel('Tarih')
plt.ylabel('Fiyat (USD)')
plt.legend()
plt.show()

Bu kod bloğunda, yf.download fonksiyonu ile veriyi çektik ve plt.plot ile zaman serisini görselleştirdik. figsize parametresi, grafiğin okunabilirliğini artırmak için boyutlandırma yapmamızı sağlar.

Mum Grafiği (Candlestick) Oluşturma

Finansal analizde en sık kullanılan yöntem mum grafikleridir. Bu grafikler; açılış, kapanış, en yüksek ve en düşük fiyat verilerini tek bir görselde sunar. mplfinance kullanarak bu işlemi oldukça basit bir şekilde gerçekleştirebiliriz.

import mplfinance as mpf
import yfinance as yf

# Veriyi çek
data = yf.download("AAPL", start="2025-06-01", end="2026-01-01")

# Mum grafiği oluştur
mpf.plot(data, type='candle', style='charles', title='Apple Mum Grafiği', ylabel='Fiyat (USD)')

Burada type='candle' parametresi, Matplotlib'in standart çizgi grafiklerinden farklı olarak profesyonel finansal gösterim moduna geçmesini sağlar. style='charles' ise grafik renklerini geleneksel finansal standartlara (yeşil/kırmızı) göre ayarlar.

Hareketli Ortalamalar ile Teknik Analiz

Finansal grafiklerin üzerine teknik göstergeler eklemek, piyasa trendlerini analiz etmenize yardımcı olur. Hareketli ortalamalar (Moving Averages - MA), fiyat dalgalanmalarını yumuşatarak ana trendi görmenizi sağlar. Aşağıdaki örnekte 20 ve 50 günlük hareketli ortalamaları ekliyoruz.

# Hareketli ortalamaları ekleyerek grafik oluşturma
mpf.plot(data, type='candle', mav=(20, 50), title='Hareketli Ortalamalar ile Analiz', ylabel='Fiyat (USD)')

mav=(20, 50) parametresi, kütüphaneye otomatik olarak 20 günlük ve 50 günlük hareketli ortalamaları hesaplayıp grafiğe çizmesini söyler. Bu, trend takibi yapan algoritmik stratejiler için temel bir adımdır.

Grafik Özelleştirme ve İleri Düzey Ayarlar

Grafiklerinizin profesyonel görünmesi için eksenleri, başlıkları ve renk paletlerini özelleştirebilirsiniz. Matplotlib'in esnek yapısı sayesinde, her bir grafik öğesine müdahale edebilirsiniz.

# Özel grafik stili oluşturma
mc = mpf.make_marketcolors(up='green', down='red', edge='inherit', wick='inherit', volume='in')
s  = mpf.make_mpf_style(marketcolors=mc, gridstyle='-.')

mpf.plot(data, type='candle', style=s, volume=True, title='Özelleştirilmiş Finansal Grafik')

Bu örnekte make_marketcolors ile renkleri, make_mpf_style ile ızgara (grid) stilini belirledik. volume=True parametresi ile işlem hacmini grafiğin altına otomatik olarak ekledik.

Kritik Uyarı: Finansal verilerle çalışırken verinin doğruluğunu her zaman kontrol edin. API üzerinden çekilen verilerde eksik gün (missing data) olabilir. Üretim ortamında (production) kullanacağınız modellerde data.dropna() ile boş satırları temizlediğinizden ve veri tiplerini (datetime) doğruladığınızdan emin olun.

Finansal Grafik Yöntemleri Karşılaştırması

Yöntem Avantajı Dezavantajı
Matplotlib (Temel) Tam kontrol, özelleştirilebilirlik Finansal grafikler için çok fazla kod gerektirir
mplfinance Hızlı, finansal standartlara uygun Daha az esneklik (kütüphane sınırları)

Sıkça Sorulan Sorular

Matplotlib ile anlık (real-time) veri grafiği çizebilir miyim?

Evet, ancak Matplotlib'in FuncAnimation modülünü kullanmanız gerekir. Finansal veriler için genellikle WebSocket bağlantıları ile veriyi sürekli güncelleyen bir döngü kurulur.

Grafiklerimi nasıl görsel dosya olarak kaydedebilirim?

mpf.plot fonksiyonuna savefig='grafik.png' parametresini ekleyerek grafiği bilgisayarınıza kaydedebilirsiniz.

Neden bazı günlerde grafik boş görünüyor?

Borsa hafta sonları kapalıdır. show_nontrading=False parametresini kullanarak tatil günlerini grafikten tamamen kaldırabilirsiniz.

Hisse senedi verisi dışında kripto para verisi çekebilir miyim?

Evet, yfinance kütüphanesi sembol adını (örneğin "BTC-USD") doğru girmeniz koşuluyla kripto para verilerini de destekler.

Grafik üzerine nasıl yazı veya ok ekleyebilirim?

Matplotlib'in annotate fonksiyonunu kullanarak belirli fiyat seviyelerine notlar veya oklar ekleyebilirsiniz.

Yasal Sorumluluk Reddi: Bu makalede yer alan kod örnekleri ve finansal analiz yöntemleri yalnızca eğitim amaçlıdır. Yazılım geliştirme süreçlerini göstermeyi hedefler. Herhangi bir yatırım tavsiyesi içermez. Finansal piyasalarda işlem yapmadan önce lisanslı bir yatırım danışmanına danışınız.

Finansal Veri Görselleştirmede Performans Optimizasyonu

Büyük ölçekli finansal veri setleri ile çalışırken, Matplotlib'in render süreci yavaşlayabilir. Özellikle binlerce mum çubuğunu aynı anda çizdirmek, bellek tüketimini artırır ve etkileşimi zorlaştırır. Performansı artırmak için büyük veri setlerini dilimlemek (slicing) veya veri örnekleme (downsampling) yöntemlerini kullanmak en etkili yoldur.

Aşağıdaki örnekte, çok geniş bir zaman dilimini tek seferde çizdirmek yerine, veriyi belirli bir pencereye indirgeyerek performansı nasıl optimize edebileceğinizi görebilirsiniz:

import pandas as pd
import mplfinance as mpf

# Örnek: 10.000 satırlık bir veri seti olduğunu varsayalım
# Sadece son 100 veriyi çizdirerek görselleştirme hızını artırın
data = pd.read_csv('finansal_veri.csv', index_col=0, parse_dates=True)
son_100_veri = data.tail(100)

mpf.plot(son_100_veri, type='candle', style='charles', title='Optimize Edilmiş Görünüm')

Ayrıca, savefig komutunu kullanırken dpi değerini optimize etmek, dosya boyutunu ve oluşturma süresini doğrudan etkiler. Web tabanlı uygulamalarda bbox_inches='tight' parametresini kullanmak, gereksiz beyaz boşlukları kırparak daha temiz ve hızlı yüklenen görseller elde etmenizi sağlar.

Alternatif Kütüphane: Plotly ile Etkileşimli Grafikler

Matplotlib statik grafikler için mükemmel olsa da, finansal analizlerde "yakınlaştırma" (zoom) ve "üzerine gelince değerleri görme" (hover) özellikleri kritik önem taşır. Bu noktada Plotly kütüphanesi, Matplotlib'in sunduğu statik yapının ötesine geçerek kullanıcı deneyimini zenginleştirir.

Aşağıdaki kod bloğu, Matplotlib ile oluşturduğunuz mantığı Plotly'ye nasıl taşıyabileceğinizi göstermektedir:

import plotly.graph_objects as go
import pandas as pd

# Veri setini yükleyin
df = pd.read_csv('finansal_veri.csv')

# Candlestick grafiği oluşturma
fig = go.Figure(data=[go.Candlestick(x=df['Date'],
                open=df['Open'],
                high=df['High'],
                low=df['Low'],
                close=df['Close'])])

fig.update_layout(title='Etkileşimli Finansal Grafik',
                  xaxis_title='Tarih',
                  yaxis_title='Fiyat')

fig.show()

Önemli İpucu: Eğer uygulamanızda kullanıcıların geçmiş veriler üzerinde detaylı inceleme yapmasını istiyorsanız, Plotly'nin sunduğu HTML tabanlı çıktıları tercih etmelisiniz. Bu yöntem, grafiği bir web tarayıcısında tam işlevsel bir araç haline getirir.

Hata Ayıklama ve Yaygın Sorunlar

  • Index Hatası: Matplotlib ve mplfinance, veri setinizin DatetimeIndex formatında olmasını bekler. Eğer KeyError alıyorsanız, df.index = pd.to_datetime(df.index) komutuyla indeksinizi kontrol edin.
  • Eksik Veri (NaN): Finansal verilerde hafta sonu boşlukları veya veri kopuklukları olabilir. df.dropna() kullanarak boş satırları temizlemek, grafik çizimindeki kırılmaları engeller.
  • Bellek Sızıntısı: Döngü içerisinde grafik oluşturuyorsanız, her iterasyondan sonra plt.close() komutunu kullanarak belleği boşaltmayı unutmayın.

Sonuç

Python ile Matplotlib ve mplfinance kullanarak finansal grafik oluşturmak, veri odaklı bir finansal uygulama geliştirmenin ilk adımıdır. Bu rehberde, veriyi çekmekten, mum grafiklerini görselleştirmeye ve teknik göstergeler eklemeye kadar temel süreçleri tamamladınız. Bir sonraki adım olarak, bu grafikleri bir web arayüzüne (örneğin Streamlit kullanarak) taşımayı veya kendi teknik indikatörlerinizi kodlayarak grafik üzerine eklemeyi deneyebilirsiniz.

Bu yazıya tepkinizi paylaşın:
Selin Yılmaz

Verimlilik ve zaman yönetimi odaklı pratik bilgiler konusunda içerik üretiyorum. Okuyuculara günlük rutinlerinde hız kazandıracak uygulanabilir stratejiler sunuyorum.

Yorumlar (0)

Yorum Yaz