Cryptic writings yazı dizisi bir kenarda bekleye dursun. Bir süredir dahil olduğum at yarışı dünyasından düzenli bir şeyler paylaşmak istedim.
Pek çok bilgisayar mühendisinin hayalidir muhtemelen program yazıp altılıyı, sayısalı vesaireyi tutturmak… Naçizane ben de bu iş için amatör bir program yaptım. 4-5 haftadır yaptığım testlerde fena sayılmayacak sıralamalar yaptığını gördüğümden program ile çıkardığım sıralamaları günlük olarak buradan paylaşmaya karar verdim.
Program şimdilik şu kriterleri baz alarak yarışlarda atları sıralıyor,
1 . Tahmin performansı : Beygir.com üzerinde yapılmış tahminlerin tahminciler değişik kriterlere göre başarı puanları ile harmanlanarak üretilmiş sıralama.
2 . Kıyas performansı : İlgili yarışı koşan atların birbirleri arasında yapmış oldukları yarışlarda oluşan sıralama. Burada atlar doğrudan birbirleri ile yarışmamış olsalar da sistem sıralama yapabiliyor. Örn. A – B – C – D diye 4 at olsun. Ve bu 4 atlar için şöyle yarışlar söz konusu olsun
1 – A B’yi 50 salise geçmiş
2 – C D’ye 100 salise geçilmiş
3 – A D’yi 50 salise geçmiş
Normalde burada her iki at arasında kıyaslama yapabilmek için 4’ün 2’li kombinasyonu kadar yani 6 adet ortak yarışa ihtiyaç var. (A B) (A C) (A D) (B C) (B D) (C D) şeklinde olacak bunlar. Ancak çoğu zaman bu mümkün değil. Çözüm yöntemim şu : Her bir at bir graph’ın düğümü, her bir yarış ta bu düğümler arasındaki kenarlar olacak şekilde bir directed graph çiziyorum. Bu graph içerisinde dependency sıralarını belirlemekte de kullanılan topological sort algoritmasından faydalanarak sıralama yapıyorum.
Pek tabii şu an oldukça basit. Yarışların tempoları, atların pist tercihleri, istatistiki olarak atın performansı dışında olan koşuların değerlendirmeye alınmaması, sadece o gün koşan atlar üzerinden değil o gün koşmayacak atlar üzerinden de karşılaştırma yapılabilmesi gibi geliştirmeye açık pek çok nokta mevcut.
3. Performans : Bu kısım şu an çok iyi çalışmamakla beraber ileride geliştirilmeye en açık bölümü programın. Burada sistem her at için bir neural network’ü geçmiş yarışları potansiyel jokey / kilo kombinasyonları ile zenginleştirerek eğitiyor. Daha sonra da mevcut yarış koşulları için sistemden bir süre tahmini yapmasını bekliyor. At geçmişte şu anki mesafedeki ve pistteki yarıştan çok sayıda koşmadı ise burada şu problem ortaya çıkıyor. Koşu mesafeleri ile koşu derecelerini doğru orantı ile kullanıp mevcut koşullarda tahmini bir derece elde etmek mümkün değil. Bunun yanı sıra atın değişen jokeyi, taşıdığı yük, yaşını da hesaba katmak gerekiyor. Misal burada elimde en basitinden şu an atların doğum tarihleri yok, TJK bu bilgiyi servislerinde dönmüyor.
Şu an için bu kriterin ağırlığı genel tahmini üretmede oldukça düşük ancak ileride programın bomba özelliği olmaya aday. Yine kullanılan neural network’ün ses tanımada da kullanılan çok katmanlı bir neural network’e çevrilmesi başarı yüzdesini arttırabilir.
4. Jokey performansı : Bu basit bir istatistik, jokeyin daha önce katıldığı yarışlarda kazandığı tabela derecelerinden elde edilen puanlar kullanılıyor.
5. Antrenör performansı : Jokeye benzer, antrenör için hesaplanıyor.
6. Baba performansı : Atın baba tarafından kardeşlerinin performansları kullanılıyor.
7. Ana performansı : Atın ana tarafından kardeşlerinin performansları kullanılıyor. İlginç bir şekilde arap atlarının yarıştığı ayaklarda oldukça iyi sonuçlar veriyor. Bunun da sebebi aslında benim kardeşlere bakarken atın kendisini ayıklamıyor olmam. Yani bir nevi bu kriter hem atın hem de ana tarafından kardeşlerinin handikaplarını yansıtıyor. Mantıken bir atın baba tarafından 100 kardeşi varsa bu sayı ana tarafından kardeşlerde çok daha düşük rakamlara iniyor. Bir aygır yüzlerce Tay’a sahip olurken, dişi bir atın doğurabileceği at sayısı aşağı yukarı belli bir rakam. Burada da geliştirmeye açık olan kısım atın handikapının kardeşlerinden ayrılması ve ayrı çarpanlara tabii tutulması.
Kriterler bunlar, programın diğer bir geliştirmeye açık kısmı ise yarışların zorluk derecesinin belirlenip buna göre ilgili ayaklara yazılacak at sayılarının belirlenmesi.
Şu an için puan farklarını dikkate alarak oynanan kupon tutarının ayaklara düşen at sayılarına göre permütasyonlarına yaklaştırma yapan bir sistem mevcut fakat çoğu zaman istenen sonucu vermiyor. Ayaklara yazılan at sayıları sistemin hesapladığı puan farklarının yanısıra ilgili koşuların tipine ve geçmişte ne oranda sürpriz sonuç ürettiğine göre de şekillenmesine rağmen burası en fazla uzmanlık gerektiren kısım.
Örn. 24/10/2013 tarihli İzmir yarışı için sistemin bana verdiği sıralama şöyleydi,
1 : 1-2-7-(8)-5-3-9-6-4
2 : 5-(9)-13-1-10-4-11-2-15-14-7-3-6-8-12
3 : 8-2-1-3-10-4-(9)-5-6-7-11
4 : (5)-1-8-2-3-4-6-7-9
5 : 3-4-2-1-9-(14)-5-13-10-7-8-12-11-6
6 : 4-13-12-6-3-(14)-2-(16)-5-10-8-9-11-1-15-17-7
Bu yarış 10.000 küsür TL ikramiye verdi, Kupona sırasıyla 4/2/7/1/6/6 adet at yazıldığında 100.8 TL’lik bir kuponla bilinebiliyor. Ancak bu kombinasyonu belirlemek o kadar da kolay değil. Benim bugün için yazdığım kupon şu şekilde idi.
1 : 1-2-7-(8)-5
2 : 5-(9)-13
3 : 8-2-1
4 : (5)
5 : 3-4-2-1-9-(14)
6 : 4
4.5 TL’lik bir kupondu. Burada tek atı belirlemek için şöyle bir sistem kullandım. Sistemin verdiği katsayılarla önce üstte de paylaştığım sıralamayı oluşturdum. Sonrasında her bir kriter için %100 çarpan etkisi ile yeni kuponlar oluşturdum ve ilk sırada olan atlardan hangileri en az değişiyorsa bunları tek yazılacak atlar olarak belirledim. Burada şöyle bir kriterim de var, anne, tahmin, kıyas ve jokey kriterleri %100 uygulandığında bunlardan en az üçünde ilk sıradaki at değişmiyorsa bu atı tek yazılacak at olarak belirliyorum. Düşük tutarlı kuponlarla yüksek ikramiyeli 6lıları kazanmak için sürpriz beklenen ayaklarda yazılacak at sayısı favorileri kupondan eleyerek azaltılabilir. Misal ben bunu üstteki 3. ve 6. ayaklar için atları 4. sıradan itibaren yazarak yapsaydım.
Neyse efendim, yazımı bitirirken design’ı şimdilik mevlam kayıra karnın doyura şeklinde oluşturulmuş programın bir ekran görüntüsünü paylaşayım.
Bunlar da yarın ya da saat itibariyle bugün koşacak olan İstanbul ve Bursa yarışları için sistemin ürettiği sıralamalar.
25 Ekim 2013 – Bursa
1.Ayak : 7-2-4-12-11-9-8-10-3-5-1-6
2.Ayak : 3-9-2-11-6-7-4-1-5-8-10
3.Ayak : 5-3-6-4-7-2-1-10-9-8
4.Ayak : 1-6-7-2-4-3-5
5.Ayak : 8-10-1-6-3-9-7-4-2-5
6.Ayak : 1-8-11-3-13-6-9-4-12-10-5-7-2
5. Ayaktaki 8 numaralı at tek, bir sonraki tek olmaya en yakın at ise 4. ayaktaki 1 numaralı at.
25 Ekim 2013 – İstanbul
1.Ayak : 4-8-3-2-5-1-9-10-6-7
2.Ayak : 7-11-10-6-13-8-2-3-5-4-12-1-9
3.Ayak : 11-4-12-5-10-6-9-3-8-2-1-7
4.Ayak : 1-10-6-4-3-5-9-2-8-7
5.Ayak : 10-3-4-1-6-12-2-11-5-9-7-13-8
6.Ayak : 4-13-9-3-7-16-10-14-11-15-12-1-6-5-8-2
Burada da tek olarak belirlediğim at 4. ayaktaki 1 numaralı at.
Nejat's Blog
Hardware, Software and other miscellaneous stuff