%99,99'luk Bir Drawdown'un Bana Alım Satım Botu Geliştirmek Hakkında Öğrettikleri
Canlı bir hesaba gönderdiğim ilk alım satım botu neredeyse her şeyi kaybetti. Win rate: %25. Maksimum drawdown: %99,99. Patlamasının nedeni piyasanın acımasız olması değildi. Patladı çünkü onu çoğu insanın ilk botunu kurduğu gibi kurmuştum — kendi görüşlerimle bir arada tutulan bir prototype olarak.
Bu, ondan sonra gelen sistemden her manuel kuralı neden sildiğimin ve bu kararın bana otomatik bir stratejide insan yargısının gerçekte nereye ait olduğu konusunda öğrettiklerinin hikâyesidir.
Örnek amaçlıdır, gerçek performans verisi değildir. Çöküş tek bir kötü işlem değildi — bin tane küçük, kendinden emin ve yanlış işlemdi.
Rahat hata
Başladığınızda, sabit kodlanmış kurallar kontrol gibi hissettirir. %3’te stop-loss. Yuvarlak bir sayıda take-profit. Bir blog yazısında okuduğunuz bir formülden gelen position sizing. Her kural tek başına ihtiyatlı görünür. Bir araya geldiklerinde ise karşılaşmak üzere oldukları durumu hiç görmemiş, kırılgan bir makine oluştururlar.
İlk sistemim bunlarla doluydu. Ayrıca tüm hesaplamalarını CPU üzerinde, döngüler içinde, tek seferlik bir betik yazar gibi yapıyordu. Temiz ve dost canlısı veriler üzerinde backtest yaparken bunların hiçbiri önemli değildi. Gerçek koşullar — fees, slippage, liquidation ihtimali — ortaya çıktığı anda ise hepsi önemli hale geldi. Kâğıt üzerinde disiplinli görünen %3’lük sabit bir stop, her gürültü kıpırtısına satış yapan ve hiçbir tezin nefes almasına izin vermeyen bir makineye dönüşür. Drawdown tek bir felaket işlem değildi. Bin tane küçük, kendinden emin ve yanlış karardı.
Rahatsız edici ders
Ders “stop-loss’u daha iyi ayarla” değildi. Ders, darboğazın ben olduğumdu. Sabit kodlanmış her eşik, bir tahmini sisteme dondurmam ve geleceği ona uymaya zorlamamdı.
Bu yüzden bir sonraki sistemde kurallar hakkında bir kural koydum: modelin gerçekten öğrenen kısmının içinde hiçbir manuel kural yok. Ne stop-loss, ne take-profit, ne position sizing, ne leverage. Eğer bir karar stratejinin nasıl davrandığını etkiliyorsa, model bunu eylemin sonuçlarından öğrenmek zorunda — sezgimden miras almak değil. (Sistem düzeyindeki güvenlik — pozisyon üst sınırları, bir kill-switch — ayrı bir katmandır ve kalır. Giden şey, işlemi benim elle yazmamdır.)
Bu aşırı geliyor, gerçekten de öyle. Ayrıca birkaç yaygın yeni başlayan hatasını sessizce ele alan bir disiplini de zorunlu kılıyor:
- Prototype yok. Bir prototype, sonra düzeltmeye dair bir sözdür ve “sonra”, %99,99’luk drawdown’ların yaşadığı yerdir. Her şey gerçek ürün olacak şekilde yazılır.
- Magic number yok. Bir değer öğrenilmiyorsa, onu görebileceğim, sürümleyebileceğim ve savunabileceğim bir config dosyasında yaşar — asla, nedenini unutacağım bir sayı olarak kodun içine gömülü olmaz.
- Backtest acıtmalı. Fees, slippage ve liquidation modellenir; çünkü gerçek hesabın kaybedebileceği şekilde para kaybedemeyen bir backtest, yalnızca gurur okşayan bir simülasyondur.
İnsanların hâlâ ait olduğu yer
Manuel kuralları kaldırmak insanı kaldırmaz. Onu yeniden konumlandırır. Artık belirli bir anda modelin ne yapacağına ben karar vermiyorum. “İyi”nin ne anlama geldiğine ben karar veriyorum — ödüllendirildiği objective function, eğitildiği koşullar, saygı göstermesi gereken maliyetler. Bu objective’i tasarlamak, bütün bu girişimin en insani kısmıdır ve onu yanlış yapmak herhangi bir tek kötü işlemden çok daha tehlikelidir; çünkü model, kastettiğiniz şeyi değil, tam olarak istediğiniz şeyi optimize edecektir.
Her seferinde yapacağım takas budur: her gelecekteki durum için kararı elle yazabileceğim numarasını bırakmak ve bunun yerine o çabayı sistemin içinde öğrendiği dünyayı tanımlamaya harcamak.
Çıkarım
%99,99’luk bir drawdown pahalı bir öğretmendir ama açık bir öğretmendir. Bot kurallardan yoksun olduğu için başarısız olmadı. Benim kurallarıma sahip olduğu için başarısız oldu — katı, gerçeğe karşı test edilmemiş ve öğrenmeyi mümkün kılmak yerine onun yerine geçen kurallar.
İlk sisteminizi kuruyorsanız, silebileceğiniz en faydalı şey kendi kesinliğinizdir.
Bu, bir pekiştirmeli öğrenme (RL) alım satım sistemi inşa etmenin sürmekte olan, anonim bir kaydının 1. bölümüdür. Sinyallerle değil, yöntem ve hatalarla ilgilidir — buradaki hiçbir şey yatırım tavsiyesi değildir ve hiçbir strateji ayrıntısı paylaşılmamaktadır.