Vaka çalışması · Web uygulaması
Yatırım Aklı
Rakamların ne anlama geldiğini açıklayan, yapay zekâ destekli portföy takip uygulaması.
Portföy takip uygulamaları rakamı gösterir ama ne anlama geldiğini söylemez: yeni bir yatırımcı kâr rakamını görür, portföyünün ne kadar riskli ya da ne kadar yoğunlaşmış olduğunu bilemez.
Yatırım Aklı getiriyi ve riski kodda hesaplar, Gemini ile bu metrikleri sade bir rapora çevirir. Sorunları olan bir demo olarak başladı; denetleyip 42 sorunu kayda geçirdim ve sırayla çözdüm. Backend bugün 612 otomatik testten geçiyor.
- 612 CI’da gerçek PostgreSQL üzerinde geçen backend testi
- 42 kayda geçirilip sırayla çözülen sorun
- ~0,6 sn akan sohbette ilk metnin gelmesi
- Yıl
- 2026
- Rol
- Uçtan uca geliştirici
- Ekip
- Amasya Şeker stajında geliştirildi
- Kullanılanlar
- Bağlantılar
01
Zorluk
İki para biriminde on iki hissesi olan bir yatırımcı, portföyünün ne kadarının tek bir sektörde durduğunu ya da ne kadar oynak olduğunu kolayca göremez. Hesap tabloları rakamı verir, yorumu vermez.
Zor olan, verinin dağınık olmasıydı. Borsalar farklı günlerde kapanır, Borsa İstanbul sembollerine ek gerekir, Londra fiyatları pence ile gelir, pozisyonlar farklı para birimlerinde tutulur; ücretsiz fiyat kaynağı da yavaş ve istek sınırlı. Alttaki rakamlar doğru değilse yapay zekâ raporunun değeri kalmaz.
Kısıtlar
- Gemini’nin ücretsiz planı yapılabilecek istek sayısını sınırlıyor
- Uygulama yatırım tavsiyesi vermez, yalnızca kullanıcının kendi verisini yorumlar
02
Benim payım
-
Uygulamanın tamamını tasarlayıp geliştirdim: FastAPI backend, React arayüz ve PostgreSQL veritabanı; Docker Compose ile paketlendi.
-
İlk sürümü denetledim, her sorunu numaralı bir kayıt olarak yazdım ve test zemininden başlayarak bağımlılık sırasıyla çözdüm.
-
Finans motorunu zaman ağırlıklı getiri, kovaryansa dayalı oynaklık, Sharpe oranı ve borsalar arasında tarihe göre hizalanan fiyat serileriyle kurdum.
-
Gemini asistanını ekledim; portföy ve risk raporları, what-if simülasyonu, dengeleme önerileri ve Server-Sent Events ile akan bir sohbet sunuyor.
-
Girişi bellekte tutulan kısa ömürlü access token, httpOnly cookie’de dönen refresh token ve hız sınırlarıyla güvenceye aldım.
-
Fiyat alarmlarını sunucudaki periyodik bir görevle tetiklenir hâle getirdim; arayüze açık/koyu tema, Türkçe/İngilizce dil ve ölçülmüş metin kontrastı ekledim.
03
Temel kararlar
-
İstek başına tek Gemini çağrısı, ajan topluluğu değil
- Seçim
- Her yapay zekâ özelliği, portföyü ve hesaplanmış metrikleri alan tek bir çağrı yapıyor.
- Neden
- İlk anlatım birlikte çalışan birkaç ajandan söz ediyordu, ama kod hiçbir zaman bunu yapmadı. Ajan sınıflarını sildim, README’yi ve arayüzü uygulamanın gerçekte yaptığına göre düzelttim. Tek çağrı daha hızlı, daha ucuz ve hata ayıklaması daha kolay.
-
Hesabı sunucuda yap, modele yalnızca yorumlat
- Seçim
- Getiri, oynaklık, Sharpe oranı, dağılım ve kâr/zarar kodda hesaplanıyor, modele hazır veri olarak veriliyor.
- Neden
- Dil modeli aritmetik yapmamalı; raporda yanlış bir rakam, güveni her şeyden hızlı aşındırır. Gemini hata verirse kullanıcı açık bir hata görür; hiçbir hata metni rapor olarak kaydedilmez.
-
Basit getiri yerine zaman ağırlıklı getiri
- Seçim
- Performans, işlem geçmişi ve günlük kapanışlardan zaman ağırlıklı getiri olarak ölçülüyor; GIPS standardının kullandığı yöntem.
- Neden
- Eski grafik her alımı kazanç sayıyordu. Aynı portföy için +%236 gösteriyordu; zaman ağırlıklı getiri ise −%3,74.
04
Sonuçlar
Uygulama uçtan uca çalışıyor: portföyler ve işlemler, para birimleri arasında kâr/zarar, endekse göre performans, risk metrikleri, alarmlar ve Gemini raporları. CI’da backend gerçek PostgreSQL üzerinde 612 testten, arayüz 38 bileşen ve 44 mantık testinden geçiyor; ESLint hiçbir uyarı vermiyor.
Hâlâ bir prototip ve henüz yayında değil. HTTPS’li canlı ortam yapılandırması hazır, bildirimler yalnızca uygulama içinde, yabancı para birimli pozisyonlarda kur hareketi henüz kâr/zarara dahil değil. Bu sınırlar repoda yazılı.
- Tam kaynak kod özel; herkese açık tanıtım reposunda belgeler, ekran görüntüleri ve seçilmiş kod örnekleri var.
- Erişilebilirlik denetimi iki temayı ve iki dili kapsadı; 8 bulgunun hepsi düzeltildi.
Buna benzer bir problemin mi var?
Ne üzerinde çalıştığını anlat, sana dönüş yapayım.
kilichalit103@gmail.com