Portföyümü her sabah Claude'a yazdırıyorum
Finanstan anlamıyorum ama bir portföyüm var. Yirmi gün boyunca her sabah tahmin yazdırıp puanladım. En çok da baseline diye bir kelime öğrendim.
İçindekiler
- Önce şunu kurmam gerekti: Claude hesap yapmayacak
- Dosya düzeni
- Bir tahmin nasıl görünüyor
- Baseline neymiş
- Neden çöptü
- Nokta tahmin bir işe yarıyor mu
- Bir de %74,5 vardı
- Sistem gün gün nasıl değişti
- En çok işe yarayan dosya: hata günlüğü
- Neden analiz planını önce yazdım
- Finansla ilgisi olmayan kısım
- Yirmi günün sonunda
Finanstan anlamam. Bir portföyüm var, içinde altın var, bir teknoloji fonu var, katılım hesapları var. Aylardır bakiyeye bakıp “artmış” ya da “azalmış” diyordum, o kadar. Neyin neyi etkilediğini bilmiyordum.
Bir sabah şunu denedim: Claude’a her gün portföyümün fotoğrafını çektireyim, ne olacağını yazdırayım, ertesi gün de tuttu mu tutmadı mı diye puanlatayım. Amaç zengin olmak değildi. Amaç, kendi param üzerinden neyin neyi hareket ettirdiğini öğrenmekti.
Yirmi gün sürdü. En değerli çıktısı tahminler olmadı.
- 20gün
- 148puanlanmış tahmin
- 53düzeltme kaydı
- 0olumlu sonuç
Önce şunu kurmam gerekti: Claude hesap yapmayacak
İlk gün fark ettiğim şey şu oldu. Bir dil modeline “portföyüm ne kadar arttı” diye sorarsanız size bir sayı söylüyor. Sayı makul görünüyor. Ama o sayı hesaplanmış değil, üretilmiş.
Bu yüzden işi baştan ikiye böldüm. Claude düşünen taraf, kod ise hesap makinesi. Aralarındaki sınırı yazılı hale getirdim ve bir daha bozmadım.
Sağdaki kuralı ilk günden koymuştum. Soldakini 5 Ağustos’ta eklemek zorunda kaldım, çünkü modelin en verimli hata kaynağı aritmetik değilmiş: arama sonucunda gördüğü tarihsiz bir sayıyı doğru sanmakmış. Artık fiyat okumak da Claude’un işi değil.
Dosya düzeni
Her şey düz dosya. Veritabanı yok, arayüz yok. Sebebi basit: bir yıl sonra bu klasörü açtığımda ne yaptığımı anlayabilmek istiyorum.
data/
portfolio.json varlık tanımları
snapshots/2026-08-21.json günün fiyatları ve portföy değeri
forecasts/2026-08-21.json tahminler, kanıtlar, piyasa durumu
resolutions.jsonl sonuçlar, yalnızca ekleme yapılır
evidence/2026-08-21.md o günün ham gündem notu, kaynaklı
narrative/2026-08-21.md rapora giren yorum
reviews/on-kayit.md analiz planı: hangi test, hangi n, hangi eşik
holdings/2026-08-21.json fonların içindeki gerçek varlıklar
En çok işime yarayan dosya evidence klasörü oldu. Her sabah Claude gündemi tarıyor ve o günün notunu kaynaklarıyla birlikte yazıyor. Tahminin kendisi değil, tahminin gerekçesi orada duruyor.
Bir örnek. 1 Ağustos notunda şu satır var:
Jeopolitik risk primi altını yukarı iterken, aynı olayın petrol, enflasyon, Fed artışı, reel faiz kanalı altını aşağı itiyor. İki kuvvet birbirini büyük ölçüde götürüyor.
Bir başka satır, o günden bugüne bakışımı en çok değiştiren şey:
Türk lirasının kontrollü aşınması, lira bazlı her varlığa günde yaklaşık %0,07 sabit bir yukarı ivme veriyor. Yani “portföyüm bu ay %2 arttı” cümlesi ile “zenginleştim” cümlesi aynı şey değil. Bunu ölçmeden önce ikisinin farklı olduğunu bilmiyordum.
Bir tahmin nasıl görünüyor
Her tahminde beş şey var: bir nokta değer, bir %80 bandı, yukarı gitme olasılığı, gerekçe ve bu tahmini çürütecek olay. Sonuncusu en faydalısı, çünkü ertesi gün “haklı mıydım” yerine “çürüten şey oldu mu” diye bakabiliyorum.
{
"asset": "gram_altin",
"horizon": "1d",
"target_date": "2026-08-24",
"base_price": 7039.39,
"point_pct": 0.15,
"low_pct": -1.85,
"high_pct": 2.15,
"p_up": 0.53,
"confidence": "dusuk",
"rationale": "Bugünkü kotasyon Çarşamba'dan bu yana olan hareketi zaten taşıyor, iki kez sayılamaz. Geriye Cuma ABD seansı ve Pazar açılışı kalıyor. Üç günde %5,9 koşan bir varlıkta hafta sonuna karşı kâr realizasyonu riski gerçek."
}
Kayıt yazıldıktan sonra mühürleniyor. Hedef gün geldiğinde pt.py gerçekleşenle eşleştirip puanlıyor. Puanlayan taraf bir dil modeli değil, çünkü kendi karnesini kendi doldurması saçma olurdu.
Baseline neymiş
Şimdi asıl öğrendiğim şeye geleyim.
İlk hafta sonunda Claude bana şunu söyledi: tahminler naif baseline’ı %70 oranında yeniyor, p < 0,001. Sevindim. Ama baseline kelimesinin ne demek olduğunu bilmiyordum, sadece iyi bir şey olduğunu anladım.
Sonradan öğrendim. Baseline, hiç düşünmeden verebileceğiniz en aptal cevap. Fiyat tahmininde en aptal cevap şudur: “yarın da bugünkü fiyatta kalır.” Modelin bunu yenmesi gerekir, yoksa düşünmesinin bir anlamı yok.
Mantıklı geldi. Sorun şu ki bu aptal cevap, her koşulda aynı derecede aptal değil.
Neden çöptü
12 Ağustos’ta ölçüm penceresine baktım. Ölçüm boyunca gerçekleşen haftalık hareketlerin hepsi pozitifti. Yirmide yirmi.
Böyle bir pencerede “sıfır değişim” tahminini yenmek beceri değil. Küçük ve pozitif herhangi bir sayı onu mekanik olarak yener. Ölçtüğüm şey modelin öngörüsü değil, piyasanın o dönemki yönüydü.
Yani ilk haftanın gurur duyduğum başlığı bir şey ölçmüyordu.
Düzeltme, tek bir aptal cevap yerine üç tane koymak oldu. Biri gerçekten aptal, diğer ikisi biraz daha zor.
| Baseline | Yani | Yenildi | Oran | p |
|---|---|---|---|---|
| Naif | yarın da aynı kalır | 104/148 | 0,703 | < 0,001 |
| Drift | son 5 günün ortalaması kadar oynar | 86/128 | 0,672 | < 0,001 |
| Momentum | dün ne kadar oynadıysa o kadar oynar | 93/128 | 0,727 | < 0,001 |
| Üçü birden | hepsini aynı anda yenmek | 50/128 | 0,391 | 0,995 |
Üçünü tek tek yeniyor. Aynı anda yenemiyor: %39,1, yani yazı tura atmaktan kötü.
Kazara yenebildiğiniz bir baseline, baseline değildir.
Nokta tahmin bir işe yarıyor mu
Baseline karşılaştırması hâlâ nazik bir sınav. Daha sert sorusu şu: modelin verdiği sayı, hiç sayı vermemekten iyi mi?
Bunu ölçmek için her varlıkta iki şeyi karşılaştırdım. Birincisi tahminlerin hata saçılması. İkincisi, hiç tahmin yapmayıp sadece o varlığın ortalamasını söyleseydim oluşacak saçılma.
Bunun pratik bir sonucu var ve beni asıl bu ikna etti. Eğer tahmin saçılmayı azaltmıyorsa, güven bandının genişliği benim bilgisizliğimden değil, piyasanın kendi oynaklığından geliyor. O bant daha çok veri toplayarak daralmaz. “Modeli biraz daha iyileştirsem bantlar daralır” beklentisi ölçülmüş biçimde yanlış çıktı.
Bir de %74,5 vardı
Aynı veri setinde yön isabeti %74,5 çıktı. Dört tahminden üçü doğru yönü söylemiş.
Bunu başlık yapmak çok cazipti. Yapmadım, çünkü aynı tuzağın ikinci hâli: günlerin çoğunun yukarı olduğu bir pencerede “yukarı” demek iyi puan alır ve hiçbir şey bilmediğinizi gizler.
Bunu temizleyen ölçü, olasılıkları “son günlerin kaçı yukarıydı” sayımıyla karşılaştırıyor.
Sistem gün gün nasıl değişti
Tahminler işe yaramadı ama sistem her gün biraz daha az yanlış oldu. Değişikliklerin çoğu bir hatanın arkasından geldi.
| Gün | Ne oldu | Ne değişti |
|---|---|---|
| 1 Ağu | İlk kayıt | Bir fonu para piyasası fonu sandım, meğer hisse ağırlıklıymış |
| 2 Ağu | Hafta sonu kâr payı | Katılma hesabı hafta sonu kâr payı yazmıyormuş, motor düzeltildi |
| 3 Ağu | Para giriş çıkışı | Getiriyi akıştan arındırmadan ölçmek anlamsızmış |
| 4 Ağu | Fon içleri | Fonun içindeki gerçek varlıklar da veri oldu |
| 5 Ağu | Fiyat okuma | Claude’un arama sonucundan sayı okuması yasaklandı |
| 6 Ağu | Banka ekranı | Bir günde altı düzeltme, ölçümün tabanı yanlışmış |
| 10 Ağu | İkinci defter | Ayrı bir portföy kendi köküne taşındı, çift sayım bitti |
| 12 Ağu | Zor baseline | Drift ve momentum eklendi, başlık çöktü |
| 13 Ağu | Derin inceleme | Skorlama motoru baştan yazıldı |
| 20 Ağu | Yayın | Veri seti ve yöntem anonim olarak açıldı |
En çok işe yarayan dosya: hata günlüğü
Her düzeltmeye bir numara verdim. K1, K2, K3 diye gidiyor. Bugün 53’teyim.
Her kayıtta şunlar var: hata ne zaman oldu, ne zaman fark edildi, kim buldu, kaç gün gizli kaldı, nasıl düzeltildi, daha önce aynısı olmuş muydu.
Bu dosya bana tahminlerden daha çok şey öğretti. Hataların çoğu modelin akıl yürütmesinde değil, ölçümün tabanındaydı: yanlış fiyat, çift sayılan para, hafta sonuna yazılan kâr payı, iki kez sayılan bir hareket.
Neden analiz planını önce yazdım
Bir ayrıntı geri kalan her şeyi mümkün kılıyor: hangi testi hangi eşikle yapacağımı veriyi görmeden yazdım.
Bu sıradan bir titizlik değil. Burada tahmini üreten, puanlayan ve yöntemi değiştiren aynı ajan. Böyle bir kurulumda sonucu görüp “hangi alt kümede iyi çıkmışım” diye bakmak sadece mümkün değil, varsayılan davranış. Ön kayıt, buna karşı elimdeki tek engel.
Aynı sebeple, düzeltmelerin sistematik olarak kendi karnesini kayırıp kayırmadığını sınayan bir test de var. Orada anlamlı sonuç çıkması iyi haber değil, kötü haber sayılıyor.
Finansla ilgisi olmayan kısım
Buradaki hata sınıfı finansa özgü değil. Kendi işinizde şu üç soruyu sorun:
- Sınıflandırıcınız %95 doğrulukta. Peki verinin %94’ü zaten tek etiket mi?
- A/B testiniz kazandı. Kontrol kolu yapılabilecek en iyi basit şey miydi, yoksa yenmesi kolay bir şey mi?
- Öneri sisteminiz popülerlik sıralamasını yeniyor. Peki kullanıcının en son tıkladığı şeyi yeniyor mu?
Üç baseline koymak, tek baseline koymaktan neredeyse hiç pahalı değil. Aradaki tek fark, birinin size gerçeği söylemesi, diğerinin iyi hissettirmesi.
Yirmi günün sonunda
Kaydedilen sonuçların hepsi olumsuz: nokta tahmin bilgi katmıyor, üç baseline birden yenilmiyor, olasılıklar basit sayımdan kötü, bantlar fazla geniş.
Ama ben başta bunları öğrenmek istiyordum, zengin olmayı değil. Şimdi portföyüme baktığımda neyin neyi ittiğini biliyorum: liranın sabit aşınmasının getirinin ne kadarını açıkladığını, altındaki iki kuvvetin nasıl birbirini götürdüğünü, fonun bugünkü fiyatının aslında dünün kapanışı olduğunu.
Sistem daha akıllı tahmin ederek değil, neyi tahmin edemeyeceğini öğrenerek iyileşiyor. Yirmi günde öğrendiğim şey bu.
Veri seti, yöntem ve ön kayıt belgesi anonim olarak yayımlandı; buradaki her sayı bağımsız bir script ile yeniden üretilebiliyor.
Notlar. Örneklem küçüktür: 20 gün, günde yaklaşık üç bağımsız gözlem, tek oynaklık rejimi. Buradaki hiçbir sonuç istatistiksel olarak yerleşmiş değildir. Varlıklar A1 ile A6 arasında takma adla anılır; tutar, bakiye, adet ve kurum bilgisi hiçbir yerde yer almaz. Bu metin yatırım tavsiyesi değildir; tahminler hiçbir zaman alım satım kararında kullanılmadı.