Master Class portföy izleme ve kontrol dashboard'unu dijitalleştirmek, manuel veri girişi ve takip hammaliyesini tamamen ortadan kaldırır. Bu otomasyon altyapısı, verilerin TEFAS, BİST, Hazine ve serbest piyasadan dinamik olarak çekilmesi, $\pm\%5$ rebalancing sapma eşiğinin otomatik hesaplanması ve vergi/kupon sınırlarının uyarılması mantığı üzerine kurgulanır.
Aşağıda hem Google Sheets (Google Finans / AppScript) hem de Python (Pandas / Matplotlib) tabanlı otomasyon mantığı detaylandırılmıştır.1. Google Sheets Altyapısı ve Otomatik Formül Mantığı
Google Sheets üzerinde kod yazmadan canlı veri çekmek ve rebalancing uyarılarını otomatize etmek için kullanılabilecek temel formül mimarisi:A. Canlı Veri Çekme Formülleri
- BİST Hisse Fiyatı (Örn: THYAO): =GOOGLEFINANCE("IST:THYAO"; "price")
- USD/TL Dolar Kuru: =GOOGLEFINANCE("CURRENCY:USDTRY")
- TEFAS Fon Fiyatı (Örn: Hisse Yoğun Fon): Google Sheets'te IMPORTXML veya Google Apps Script ile TEFAS web servisinden fon pay değeri çekilir.
- Darphane Altın Sertifikası (ALTIN.S1): =GOOGLEFINANCE("IST:ALTINS1"; "price")
B. Otomatik Rebalancing Sapma & Uyarı Formülü
Her bir varlık sınıfının güncel tutarı hesaplandıktan sonra, EŞİK_SAPMASI ve AKSİYON sütunlarına şu dinamik formüller uygulanır:$$\text{Güncel Pay (\%)} = \frac{\text{Varlık Anlık Değeri}}{\text{Toplam Portföy Değeri}}$$
$$\text{Sapma Oranı (\%)} = \text{Güncel Pay (\%)} - \text{Hedef Pay (\%)}$$
Google Sheets AKSİYON Sütunu Formülü (Hisse Senedi Örneği - Hedef: %40, Eşik: %5):
Excel
=IF(ABS(EŞİK_SAPMASI) >= 0,05; IF(EŞİK_SAPMASI > 0; "
2. Python ile Programatik Portföy ve Rebalancing Algoritması
Portföyü Python ortamında tam otomatik izlemek, canlı grafikler üretmek ve Telegram/E-posta ile anlık uyarı göndermek için kullanabileceğiniz nesne yönelimli kod mimarisi:Python
import pandas as pd
import numpy as np
# 1. Master Class Portföy Veri Yapısının Tanımlanması
portfolio_data = {
"Varlik_Sinifi": ["Büyüme & Özkaynak (Hisse)", "Döviz & Sabit Getiri (Eurobond)", "Kriz Sigortası (Altın)", "GYO & Alternatif", "Likit Rezerv (PPF)"],
"Hedef_Pay": [0.40, 0.25, 0.20, 0.10, 0.05],
"Anlik_Deger_TL": [58500, 31200, 23400, 10400, 6500] # Örnek anlık tutarlar
}
df = pd.DataFrame(portfolio_data)
# 2. Portföy Toplamı ve Anlık Payların Hesaplanması
toplam_portfoy = df["Anlik_Deger_TL"].sum()
df["Anlik_Pay"] = df["Anlik_Deger_TL"] / toplam_portfoy
df["Sapma_Orani"] = df["Anlik_Pay"] - df["Hedef_Pay"]
# 3. ±%5 Eşik Tabanlı Rebalancing Algoritması
ESIK = 0.05
def rebalance_kontrol(row):
sapma = row["Sapma_Orani"]
hedef = row["Hedef_Pay"]
if abs(sapma) >= ESIK:
if sapma > 0:
return f"
else:
return f"
return "
df["Rebalancing_Durumu"] = df.apply(rebalance_kontrol, axis=1)
# 4. Çıktı Tablosu
print(f"--- MASTER CLASS PORTFÖY ÖZETİ (Toplam Büyüklük: {toplam_portfoy:,.2f} TL) ---")
print(df[["Varlik_Sinifi", "Hedef_Pay", "Anlik_Pay", "Sapma_Orani", "Rebalancing_Durumu"]])
3. Otomatik Bildirim Tetikleme Mantığı
Yazılan Python betiği veya Google Apps Script, bir cron-job (zamanlanmış görev) ile her gün borsa kapanışında (18:15) otomatik çalıştırılır:- Eğer df["Rebalancing_Durumu"] içinde "TETİKLENDİ" ifadesi varsa, sistem otomatik olarak Telegram Bot API veya SMTP E-posta servisi üzerinden şu formatta mesaj üretir:
MASTER CLASS REBALANCING UYARISI
Hisselerin portföydeki payı %45.0 seviyesine ulaştı. $\pm\%5$ eşiği aşıldığı için kar satışı yapılması önerilmektedir.
- Satılacak Hisse Tutarı: 6.500 TL
- Aktarılacak Hedef Varlık: Oranı düşmüş olan Altın / GYO grubu.