Reinforcement learning for stock markets
Tezin Türü: Yüksek Lisans
Tezin Yürütüldüğü Kurum: Akdeniz Üniversitesi, Fen Bilimleri Enstitüsü, Fen Bilimleri Enstitüsü, Türkiye
Tezin Onay Tarihi: 2021
Tezin Dili: İngilizce
Öğrenci: UĞUR HAZIR
Danışman: Taner Danışman
Açık Arşiv Koleksiyonu: AVESİS Açık Erişim Koleksiyonu
Özet:"Finans sektöründe hangi hisse senedinin ne zaman alınıp satılabileceğine ve ne zaman hamle yapılması gerektiği hakkında karar vermeyi sağlayan pek çok model vardır" (Hazır ve Danışman 2020) . Bu tezde Derin-Q-Ağı ajanının Borsa İstanbul için performansı test edilmiş olup Borsa İstanbul'da yer alan BIST30 endeks hisselerine odaklanılmıştır. Ham veriler Mynet web sitesinden Google Chrome gezgini üzerinde JavaScript fonksiyonlarından yararlanılarak elde edilmiş olup operasyonlardan önce işlenmiştir. İlk önce; her bir hisse için Stokastik osilatör ve MACD değerleri hesaplanır. Bu hesaplamalar esnasında başlangıç verisi hesaplamalar için harcanır ve bu nedenle az miktarda veri hesaplamalar uğruna kaybedilir. İkinci olarak; elde edilen veri, eğitim verisi ve test verisi olarak iki parçaya bölünür. Eğitim periyodu 08.03.2000 tarihinden başlar ki bu işlenmiş verinin başkangıç tarihidir ve 31.12.2014 tarihinde sona erer. Test periyodu ise 01.01.2015 tarihinde başlar ve 21.12.2019 tarihinde sona erer. Verilen herhangi bir günde her bir hisse işlem görmez. Bir hisse verilen günde tüm işlemlere kapatılmış olabilir. Bu nedenle eğitim ve test periyod süreleri her bir hissede eşit değildir. Pekiştirmeli Öğrenme ajanı yaratmak için Derin-Q-Ağı metodu seçilmiştir. Her bir hisse için Q değerlerini hesaplamak üzere Derin-Q-Ağı üretilmiştir. Program, Tensorflow kütüphanesini arka uç olarak kullanan Keras kütüphanesi kullanılarak Python programlama dili ile üretilmiştir. Her bir Derin-Q-Ağına, günlük parametreler, Stokastik ve MACD parametreleri girdi olarak verilmiş olup; bu parametreler şunlardır: Kapanış, Düşük, Yüksek, Hacim, Yıl, EMA12, EMA26, MACD, MACDsinyal9, StokastikMax14, StokastikMin14, StokastikK14, StokastikD14, StokastikMax5, StokastikMin5, StokastikK5 ve StokastikD5. 17 adet girdi parametresi Derin-Q-Ağına verilir; ki bu parametreler veri giriş katmanını oluşturur. İlk gizli katmanda 540 nöron bulunur. İkinci gizli katmanda 180, üçüncü gizli katmanda 64, dördüncü gizli katmanda 32, beşinci gizli katmanda 8 nöron bulunur. Bütün gizli katmanlarda ReLU aktivasyon fonksiyonu kullanılır. Bir Derin-Q-Ağı için eylem alanı bekle, al ve sat eylemlerinden oluşur. Bu nedenle çıktı katmanında 3 nöron bulunur. Çıktı katmanında lineer aktivasyon fonksiyonu kullanılır. Lineer aktivasyon fonksiyonu nörondaki değerin hiç bir matematiksel operasyona maruz bırakılmadan doğrudan kullanılmasını sağlar. Tekrar Hafızası geçmiş tecrübeleri kullanarak bir sonraki eylemi tahmin etmek için kullanılır. Eğitim periyodu için eğitim verisi girdi olarak verilir ve program her bir Derin-Q-Ağı için 5000 bölüm kadar çalıştırılır. Ajan 1000 TL anapara ile başlar ve daha zorlu bir ortam yaratmak adına her bir alım satım eyleminde 1 TL işlem ücreti öder. Ajan yeterince parası varsa ve al sinyali geldi ise satın alma işlemini gerçekleştirir. Ajan elinde hisse varsa ve sat sinyali geldiyse ya da yüzde beş kârlı durumda ise satma işlemini gerçekleştirir. Diğer durumlarda, bekle sinyali geldiyse hisseyi elinde tutar ya da elinde yoksa satın almayı bekler. Q değerlerini tahmin etmek için epsilon açgözlü stratejisini kullanırız. Başlangıçta Derin-Q-Ağı, keşif için daha rastgele hareket edecektir. Sonunda daha az rastgele eylemler yapacaktır çünkü öğrendiği deneyimden faydalanacaktır. 5000 bölüm sonunda keras model kaydetme fonksiyonu ile mevcut durum ve değerleri kaydederiz. Son olarak, test verisi algoritmanın başarısını sınamak için programa girdi olarak verilir. Bu safhada bütün Derin-Q-Ağları eş zamanlı olarak çalıştırılır ve aynı zamanda benim ajanı daha fazla hamle yapmaya zorlamak için icat ettiğim Birleştirilmiş Derin-Q-Ağı metodu hesaplanır. Birleştirilmiş Derin-Q-Ağı metodu, gerçek bir Derin-Q-Ağı metodu değildir. Bu metodda verilen koşullarda en iyi performans sergileyen Derin-Q-Ağına ait hamleler takip edilir. Eğer Birleştirilmiş Derin-Q-Ağı ajanı elinde hisse yok ise kendisini al sinyali veren (eylem olarak al eylemi seçilmiş ise) Derin-Q-Ağına bağlar. Birleştirilmiş Derin-Q-Ağı ajanı eğer bağlandığı Derin-Q-Ağı ajanı sat sinyali verirse (eylem olarak sat eylemi seçilmiş ise) veya elindeki hisse belirlenen oranda kâr ya da zararda ise bağlandğı Derin-Q-Ağı ajanını salar. Birleştirilmiş Derin-Q-Ağı ajanı bir sonraki al sinyalini bekler ve verilen gün için kendisini en iyi performans gösteren Derin-Q-Ağına bağlar. Birleştirilmiş Derin-Q-Ağı ajanı bu şekilde bağlanma ve salma işlemleri yaparak süreci tekrar eder. Test aşamasında epsilon açgözlü stratejisi uygulanmaz; çünkü ajan öğrenme sürecini tamamlamıştır ve Q değerleri artık hesaplanmıştır. Hesaplanan bu Q değerlerinin üzerine yazmak istenmeyen bir durumdur. Sonuç olarak, açıkça görülmektedir ki; ajan öğrendikçe iflas sayısı azalmakta ve son bakiye artmaktadır. Birleştirilmiş Derin-Q-Ağı metodu en iyi metod değildir; fakat eylem sayısını ve aynı zamanda riski de arttırmaktadır.