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
  • Python
  • FastAPI
  • React
  • PostgreSQL
  • Docker
  • Google Gemini
Yatırım Aklı'nın tanıtım sayfası: “Portföyünüzün gerçek durumunu tek ekranda görün” başlığının altında gösterge paneli önizlemesi.

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

  1. Uygulamanın tamamını tasarlayıp geliştirdim: FastAPI backend, React arayüz ve PostgreSQL veritabanı; Docker Compose ile paketlendi.

  2. İ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.

  3. Finans motorunu zaman ağırlıklı getiri, kovaryansa dayalı oynaklık, Sharpe oranı ve borsalar arasında tarihe göre hizalanan fiyat serileriyle kurdum.

  4. Gemini asistanını ekledim; portföy ve risk raporları, what-if simülasyonu, dengeleme önerileri ve Server-Sent Events ile akan bir sohbet sunuyor.

  5. 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.

  6. 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.

Toplam değer, günlük değişim, gerçekleşmemiş ve gerçekleşen kâr, dağılım halkası ve BIST-100’e karşı performans eğrisi olan gösterge paneli.
Gösterge paneli; asistan her zaman bir tık uzakta.

03

Temel kararlar

  1. İ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.
  2. 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.
  3. 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.
Hesaplanmış 3,6/10 risk skorunun yanında Gemini’nin tam portföy raporunun durduğu yapay zekâ yorumları sayfası.
Risk skoru kodda hesaplanıyor; Gemini yalnızca çevresindeki yorumu yazıyor.

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.