Haberlerle PTF Tahmini · Bölüm 1
Bir haberin elektrik fiyatı açısından anlamlı olmasıyla, tahmin anında kullanılabilir olması aynı şey değil. Tezimin ilk veri pilotlarında en çok üzerinde durduğum konu bu oldu: Yalnızca ne bildiğim değil, o bilgiyi ne zaman bilebildiğim de tahminin bir parçası.
Yıldız Teknik Üniversitesi Veri Bilimi ve Büyük Veri yüksek lisans çalışmamda, haberlerden çıkarılan bilgilerin elektrik fiyatı tahminine katkısını araştırıyorum. Blogumda başlattığım bu akademik yazı serisinde, araştırma sorusundan veri toplamaya, deneylerden canlı uygulamaya kadar süreci paylaşacağım.
Tezimin başlığı “ELEKTRİK ENERJİSİ FİYAT KESTİRİMİ İÇİN YENİ BİR YAKLAŞIM GELİŞTİRİLMESİ”. Şu anda cevap aradığım soru daha somut: Tahmin anında erişilebilir haberlerden bir büyük dil modeliyle çıkardığım enerji olayları, Türkiye'de ertesi günün elektrik fiyatını tahmin eden sayısal bir modele ek bilgi sağlayabilir mi?
Bu ilk yazı, 20–22 Ekim 2026 arasında tamamladığım ön araştırma ve veri pilotlarını kapsıyor. Henüz eğitilmiş bir haberli fiyat modelim yok. Buna karşılık EPİAŞ veri erişimini doğruladığım, küçük bir haber örneklemini incelediğim ve karşılaştırmalı deney taslağını oluşturduğum bir başlangıç var. Kod ve veri incelemelerini yapay zeka desteğiyle yürütürken, ortaya çıkan her çıktının hangi kontrolü geçtiğini de kayıt altına alıyorum.
Önce tahmin edeceğim fiyatı tanımlamak
Hedefim Türkiye Gün Öncesi Piyasası'ndaki Piyasa Takas Fiyatı, yani PTF. Bu çalışmanın konusu doğrudan tüketici faturasındaki elektrik tarifesi değil, piyasanın saatlik fiyatlarından oluşturacağım günlük hedef.
İlk kapsamı ertesi günün günlük ortalamasıyla sınırladım. Çalışma tanımım, hedef teslim gününün 24 saatlik PTF değerinin aritmetik ortalaması. Birim TL/MWh. Böylece her gün için tek bir hedef değer üreteceğim. Saatlik tahmin, farklı bir deney tasarımı gerektireceği için başlangıç kapsamımda yer almıyor.
Burada fiyatın teslim günüyle açıklanma saatini ayırmak gerekiyor. EPİAŞ'ın normal piyasa süreçlerinde ertesi günün 24 saatlik fiyatları saat 14.00'te nihai olarak duyuruluyor. Bu yüzden tahmini bu duyurudan önce üretmek istiyorum. Örneğin 11.00 bir kesim saati adayı, ancak henüz kesinleştirmedim. Tarihsel testte de canlı uygulamada da aynı bilgi sınırını kullanmam gerekecek.
EPİAŞ verisinde ilk kontrol
İlk teknik adımım, saatlik PTF ile günlük ortalamaya gerçekten erişip erişemediğimi görmek oldu. 21 Ekim'de yaptığım çekimde 21 Eylül–20 Ekim 2026 dönemini aldım. Elde ettiğim veri 30 gün ve 720 saatlik kayıttan oluşuyor. Günlük hedef açısından bu, 720 bağımsız eğitim örneği değil, yalnızca 30 günlük gözlem demek.
Her günün 24 benzersiz saat içerdiğini kontrol ettim. Eksik gün, eksik saat veya yinelenen saat bulmadım. Saatlik değerlerden hesapladığım günlük ortalamayı EPİAŞ'ın resmi günlük ortalamasıyla karşılaştırdığımda en büyük fark yaklaşık 0,005 TL/MWh çıktı. Bu fark, günlük değerin iki ondalıkla sunulmasındaki yuvarlama düzeyiyle uyumlu.
Bu küçük dönemin özeti şöyle:
| Gösterge | Değer |
|---|---|
| Günlük ortalamaların dönem ortalaması | 2.695,67 TL/MWh |
| En düşük günlük ortalama | 27 Eylül'de 1.424,18 TL/MWh |
| En yüksek günlük ortalama | 12 Ekim'de 3.436,91 TL/MWh |
| Hafta içi ortalaması, 22 gün | 2.891,37 TL/MWh |
| Hafta sonu ortalaması, 8 gün | 2.157,50 TL/MWh |
Bu örneklemde hafta sonu ortalaması hafta içine göre yaklaşık %25,38 daha düşük. Bu gözlem takvim bilgisini başlangıç modeline eklemek için bir gerekçe sunuyor. Ancak 30 günlük sonuçtan yıllık bir mevsimsellik kuralı çıkarmıyorum. Aynı şekilde büyük bir fiyat değişimini, henüz zamanları eşleştirilmiş haber verim olmadan belirli bir habere bağlamıyorum.
Kaynakta sıfır fiyatlı 14 saat de var. Bunları eksik veri gibi silmedim. Veri temizliğinde, “beklemediğim değer” ile “hatalı veya eksik değer” ayrımını korumak gerekiyor.

Modelden önce basit referanslar
Kuracağım modelin değerini anlamak için önce basit fiyat kurallarının hatasını bilmek istedim. İki referans kullandım: Önceki günün fiyatını yarına taşımak ve hedef günün önceki haftadaki fiyatını kullanmak.
Her iki kuralı da 28 Eylül–20 Ekim arasındaki aynı 23 gün üzerinde değerlendirdim:
| Referans | MAE, TL/MWh | RMSE, TL/MWh |
|---|---|---|
| Önceki günün fiyatı | 404,56 | 518,48 |
| Önceki haftanın aynı günü | 517,89 | 633,44 |
MAE ortalama mutlak hatayı, RMSE ise büyük hatalara daha fazla ağırlık veren hata ölçüsünü gösteriyor. Bunlar bir doğruluk yüzdesi değil. Bu sonuçlar da eğitilmiş model başarısı değil, geriye dönük basit referans hesapları.
İlk kural bu kısa dönemde daha düşük hata üretti. Uzun deneyde aynı sıralamanın korunacağını varsaymıyorum. Burada kazandığım şey, haberli modeli karşılaştırabileceğim ölçülebilir bir başlangıç noktası.
Ücretsiz haber verisi arayışı
Haber verisi için bütçemi 0 TL olarak belirledim. Bu sınır veri edinme bütçesine ait; sunucu, işlem gücü veya LLM çalıştırma maliyetlerinin de sıfır olduğu anlamına gelmiyor. Bu nedenle güncel haber toplama ile geçmiş yılların haber arşivini ayrı problemler olarak ele alıyorum.
TRT Haber RSS ve BBC RSS güncel içerik keşfi için ilk denediğim kaynaklar oldu. RSS kaydından haberin adresine ulaşıp metni yayıncı sayfasından çıkardım. RSS akışının kendisini yıllık tam metin arşivi olarak kullanamam.
GDELT haber adresi ve metadata keşfi için bir aday. DOC API'nin makalenin tam gövdesini vermediğini dikkate alıyorum. 22 Ekim'deki pilotta üç sorgum HTTP 429 yanıtı aldı. Başlangıçta 18 haber hedeflemiştim, ancak pilotu gerçekleşen 9 RSS haberiyle raporladım.
Geçmiş metin için Common Crawl CC-NEWS ve Infini-News kaynaklarını araştırdım. CC-NEWS tarafında WARC arşivinden sayfa ve zaman bilgisi çıkarma işi var. Infini-News v2 için kontrol ettiğim kapsam Ağustos 2016–Nisan 2026. Bu dönem mevcut Eylül–Ekim PTF pilotumla örtüşmüyor. Ayrıca Infini-News arama API'siyle corpus dosyalarındaki tam metin erişimi aynı şey değil.
Dolayısıyla bugün haber indirebilmek, geçmişte belirli bir tahmin saatinde mevcut olan haber sürümünü elde etmek anlamına gelmiyor. Bir sonraki veri adımımı bu ayrım belirliyor.
Dokuz haberin öğrettiği zaman problemi
22 Ekim'de Türkiye, dünya ve finans havuzlarının her birinden üçer haber seçtim. TRT ve BBC'den oluşan bu dokuz haberde, çekim anındaki editoryal metni ve saat dilimi belirtilmiş ilk yayın saatini alabildim. Bu, seçtiğim küçük örnek için bir erişim bulgusu. Bütün haber sitelerinde aynı sonucu alacağımı göstermiyor.
Daha önemli bulgu zaman alanlarında çıktı: Dört BBC kaydının üçünde RSS'teki pubDate, ilk yayın saatine değil sayfanın güncelleme saatine karşılık geliyordu.
Bir örnekte ilk yayın yaklaşık 06.48, güncelleme 09.24, metnin benim sistemime ulaşması ise 11.42 idi. Tahmini 11.00'de üretmiş olsaydım, bu yerel kayıt o tahminin girdisi olamazdı. Üstelik güncel sayfa gövdesinin ilk yayın anında da aynı olduğunu doğrulamış değilim.
Bu nedenle veri yapısında ilk yayın, güncelleme, ilk yerel gözlem ve içerik erişim zamanlarını ayrı tutuyorum. Canlı sistemde LLM etiketinin ne zaman hazır olduğunu da kaydetmem gerekecek. Aksi halde geçmiş test, modelin o anda bilemeyeceği bir bilgiyi kullanarak olduğundan başarılı görünebilir. Zaman serilerindeki bilgi sızıntısı problemi burada yalnızca eğitim/test ayrımından ibaret değil, haberin sürümüne kadar uzanıyor.
LLM ile duygudan çok olay çıkarmak
Haberlerden yalnızca olumlu veya olumsuz bir duygu skoru çıkarmak, araştırmak istediğim enerji bağlantısını yeterince açık göstermiyor. Bir haberin enerjiyle ilgili olması, ertesi gün Türkiye PTF'si için belirli bir yön taşıdığı anlamına gelmeyebilir.
İlk etiket şemasını bu yüzden üç ayrı soruya dayandırdım: Haber enerjiyle ilgili mi, hangi olayı anlatıyor ve Türkiye PTF'siyle kurulabilecek bağlantı metinde ne kadar destekleniyor?
Dokuz haber üzerinde sohbet asistanıyla yaptığım ilk incelemede yedi haberde enerji ilgisi bulunmadı. Bir haberde yalnızca enerjiyle ilişkili bir sözcük vardı. Bir haberde ise enerji ikincil konuydu.
Örneğin bir arsa satış haberindeki “akaryakıt istasyonu” ifadesi, yeni bir enerji tesisi devreye girdiği anlamına gelmiyor. Rusya–Ukrayna konulu başka bir haberde yakıt arzı ve yaptırım bağlamı bulunmasına rağmen, Türkiye elektrik üretim maliyetine aktarımın yönü ve ertesi güne yetişip yetişmeyeceği belirsizdi. Bu örneği zorla fiyat artışı veya düşüşü sınıfına koymadım.
Bu ilk etiketler bir uzman referans kümesi oluşturmuyor. Ayrı, izole bir yerel LLM/API deneyi de henüz yapmadım. Hazırladığım istem ve JSON şeması, sonraki deneyi tutarlı biçimde yürütmenin başlangıcı. Şemanın geçerli olması çıktının anlamca doğru olduğunu kanıtlamıyor. İnsan kontrolüyle etiket kalitesini, fiyat deneyinde ise etiketlerin tahmine katkısını ayrı ölçeceğim.
Literatürden aldığım yöntem dersi
Yakın örneklerden biri, Bi ve arkadaşlarının NSW-EPNews: A News-Augmented Benchmark for Electricity Price Forecasting with LLMs başlıklı çalışması. İncelediğim arXiv v1 sürümü bir ön baskı. Avustralya NSW piyasasında fiyat geçmişini, haberleri ve sıcaklığı birleştirerek ertesi günün 48 yarım saatlik fiyatını hedefliyor. LLM'ler hem haber hazırlamada hem doğrudan fiyat dizisi üretiminde kullanılıyor.
Kendi deneyim açısından aldığım yöntem dersi, ek girdilerin katkısını ayrı ölçmek. İncelediğim sürümde haber ve sıcaklığın birlikte çıkarıldığı bir karşılaştırma var. Böyle bir farkı yalnız habere bağlayamam. Ben de bu nedenle sayısal kontrolleri sabit tutup haber temsilini değiştiren bir deney planlıyorum. Makalenin deneylerini yeniden çalıştırmış değilim.
Lago ve arkadaşlarının elektrik fiyatı tahmini derlemesi de güçlü referanslar ve yeterli test dönemi kullanmanın önemini vurguluyor. Haber veya LLM kullanımı tek başına özgünlük iddiası kurmam için yeterli değil. Tezimin katkısını Türkiye piyasasına uygun olay temsili, zaman kurallarına uygun veri hazırlama ve karşılaştırmalı değerlendirme üzerinden konumlandırıyorum.
Planladığım üç kollu deney
Başlangıçta hazır bir LLM'yi haberlerden alan çıkarmak, ayrı bir regresyon modelini ise fiyat tahmin etmek için kullanmayı planlıyorum. Sayısal model için ilk adayım CatBoost. Henüz bu veri üzerinde eğitmediğim için en iyi algoritma olduğunu söyleyemem.
Karşılaştırma taslağım şöyle:
| Kol | Girdiler | Ölçmek istediğim |
|---|---|---|
| M0 | PTF geçmişi ve takvim | Sayısal referans |
| M1 | Aynı sayısal girdiler ve basit haber sayımları | Basit haber temsilinin katkısı |
| M2 | Aynı sayısal girdiler ve LLM olay özellikleri | LLM temsilinin ek katkısı |
Santral arızası ve bakımı, doğal gaz/kömür arzı, yakıt maliyetleri, hidroloji ve ilgili düzenlemeler ilk olay sınıfı adaylarım. Haberin ülkesi, tesisi, zamanı, metinde varsa kapasite/süre bilgisi ve kanıt paragrafı tutulacak. Aynı olayın kopya haberleri sayımı şişirmemeli. “Haber yok” ile “veri kaynağına erişilemedi” de aynı değer olmamalı.
Üç kolda aynı hedef günleri, aynı bilgi kesimini ve eşit ayar bütçesini kullanacağım. Arşiv kapsamı elverirse yaklaşık 2–3 yıllık günlük veri üzerinde, zaman sıralı eğitim/doğrulama/test düzeni kurmak istiyorum. MAE ve RMSE'yi aynı günlerde karşılaştıracağım. Haberli modelin iyileşmesi de iyileşmemesi de bu deneyin sonucu olabilir. Tahmin hatasının azalması, haberlerin fiyat üzerindeki nedensel etkisini tek başına kanıtlamaz.
Buradan canlı uygulamaya
Sıradaki araştırma adımım, önce küçük bir ortak dönemde geçmiş haber metinlerini ve PTF'yi eşleştirmek. Mevcut 30 günlük fiyat verisiyle dokuz güncel haber, tarihleri örtüşen bir eğitim kümesi oluşturmuyor. Uzun veri setine geçmeden önce kaynak, metin ve zaman kapsamını doğrulamak istiyorum.
Sonrasında doğrudan enerji haberlerini de içeren insan kontrollü bir etiket kümesi, sayısal referans ve üç kollu deney gelecek. İlk akademik çıktıyı bildiriye, ardından tez çalışmasına dönüştürmeyi planlıyorum. Şimdiye kadarki araştırma ve planı danışman görüşmesi için bir sunumda da topladım.
İlerleyen aşamada veri işleme hattını ve tahmin servisini sunucu üzerinde geliştirmeyi planlıyorum. Web panelinde ertesi günün tahminini, sonradan açıklanan PTF'yi, hata ölçülerini ve model sürümünü göstermek istiyorum. Tahmini, hedef fiyat açıklanmadan önce kaydetmek bu uygulamanın araştırma açısından önemli bir parçası olacak.
Bu serinin devamında veri kapsamını genişlettikçe karşılaştığım sorunları, yöntem seçimlerini ve ölçtüğüm sonuçları paylaşacağım. Bir sonraki teknik konu, ücretsiz haber arşivinden tahmin saatine uygun bir veri setinin kurulması olacak.
Kaynaklar
- EPİAŞ, Gün Öncesi Piyasası / Süreçler. Resmi süreç sayfası, 11.03.2016. https://www.epias.com.tr/gun-oncesi-piyasasi/surecler/ Erişim: 23.10.2026.
- EPİAŞ Şeffaflık Platformu, PTF günlük ortalama ve saatlik PTF veri servisleri. Çekim: 21.10.2026. Günlük: https://seffaflik.epias.com.tr/reporting-service/v1/mcp-average/data/daily Saatlik: https://seffaflik.epias.com.tr/electricity-service/v1/markets/dam/data/mcp
- Bi, Z., Huang, L., Jin, H., Zeng, Q., Chen, H. NSW-EPNews: A News-Augmented Benchmark for Electricity Price Forecasting with LLMs. 2025, arXiv:2506.11050v1, ön baskı. https://arxiv.org/html/2506.11050v1 İncelenen sürüm v1, erişim: 23.10.2026.
- Lago, J., Marcjasz, G., De Schutter, B., Weron, R. Forecasting day-ahead electricity prices: A review of state-of-the-art algorithms, best practices and an open-access benchmark. Applied Energy 293, 116983, 2021, hakemli dergi yayını. https://doi.org/10.1016/j.apenergy.2021.116983 Ön baskı: https://arxiv.org/abs/2008.08004 İnceleme/erişim kaydı: 20–22.10.2026.
- TRT Haber, RSS, güncel akışlar. https://www.trthaber.com/sitene_ekle.html BBC, World / Business RSS, güncel akışlar. https://feeds.bbci.co.uk/news/world/rss.xml ve https://feeds.bbci.co.uk/news/business/rss.xml Pilot erişimi: 22.10.2026.
- The GDELT Project, GDELT DOC 2.0 API Debuts!, 20.06.2017. https://blog.gdeltproject.org/gdelt-doc-2-0-api-debuts/ İnceleme/erişim: 21–22.10.2026.
- Common Crawl / Sebastian Nagel, News Dataset Available, 04.10.2016. https://commoncrawl.org/blog/news-dataset-available İnceleme/erişim: 21–22.10.2026.
- Infini-News / University of Graz, Infini-News corpus v2, sabit yayın tarihi bu incelemede doğrulanmadı. https://huggingface.co/datasets/ruggsea/infini-news-corpus ve https://infini-news.uni-graz.at/api-docs Kapsam kontrolü/erişim: 21–22.10.2026.
- CatBoost geliştiricileri, CatBoost documentation, güncelleme tarihi/sabit sürüm belirtilmedi. https://catboost.ai/docs/en/ İnceleme/erişim: 22.10.2026.
Serhat Diker sitesinden daha fazla şey keşfedin
Son gönderilerin e-postanıza gönderilmesi için abone olun.




