Giriş sinyaliniz muhtemelen backtestinizdeki en az belirleyici unsur. Vasat bir momentum kuralını alıp tüm giriş ve çıkış zaman damgalarını aynen bırakabilir, yalnızca kaç kontrat tutulacağına karar veren fonksiyonu değiştirebilir ve net Sharpe'ı 0.41'den 0.71'e, maksimum düşüşü %31'den %13'e taşıyabilirim. Aynı işlemler. Aynı gerçekleşmeler. Farklı strateji.
Bu iddia insanları rahatsız ediyor; etmesi de gerekir, çünkü geriye dönük bakış sürelerini ve filtre eşiklerini ayarlamak için harcanan zamanın çoğunun küçük terime harcandığını ima ediyor. O yüzden önce gerçek sonuçları göstereyim, sonra eleştirenlere haklarını vereyim; çünkü bu argümanın yanlış bir biçimi de var ve hangi biçimini savunduğumu bilmek önemli.
Tek sinyal, pozisyonu taşımanın 6 yolu
Sinyal: Binance USDⓈ-M'de ETHUSDT sürekli vadeli, 1 saatlik mumlar; 12 saatlik EMA, 96 saatlik EMA'nın üzerindeyken long, aksi halde pozisyonsuz; short yok. Temmuz 2022'den Haziran 2026'ya kadar. 431 gidiş-dönüş işlem. Her iki yönde 5.0 bps taker ücreti, gerçek pozisyon üzerinden her 8 saatte bir ödenen veya alınan fonlama, emir defterinin en iyi kademelerindeki derinliğe göre modellenen kayma. Bilerek sıkıcı bir sinyal seçtim: kimsenin savunmayacağını düşündüğüm için temiz bir test zemini sunuyor.
Aşağıdaki her satırda giriş ve çıkış mumlarının zaman damgaları aynıdır. Tek fark boyutlandırma fonksiyonudur.
| Boyutlandırma kuralı | Net Sharpe | Maks. düşüş | Yıllık işlem notyonu (× ort. pozisyon) | Brüt K/Z'nin maliyetlere giden oranı | Tepe kaldıraç |
|---|---|---|---|---|---|
| Sabit $10k notyon | 0.41 | %18.2 | 246× | %14 | 1.0× |
| Sabit oran, özsermayenin %100'ü | 0.44 | %30.8 | 251× | %15 | 1.0× |
| 20 günlük gerçekleşen volatilitenin tersi | 0.68 | %14.1 | 690× | %29 | 4.4× |
| %20 yıllıklandırılmış volatilite hedefi, saatlik yeniden dengeleme, üst sınır yok | 0.71 | %12.9 | 1,180× | %41 | 6.3× |
| %20 volatilite hedefi, %20 işlem yapmama bandı, 3× kaldıraç sınırı | 0.66 | %15.3 | 402× | %19 | 3.0× |
| 60 günlük kayan ortalama/varyans ile yarım Kelly | 0.52 | %24.6 | 830× | %33 | 8.1× |
Farklara bakın. En kötü ve en iyi satırlar arasında Sharpe'da göreli %73 fark, düşüşte ise 2.4 kat fark var. Şimdi bana bu veri kümesinde aşırı uyum gibi görünmeden Sharpe'ı 0.30 oynatan bir giriş sinyali parametresi bulun. Baktım. EMA çiftinin uzunluğu, makul tüm ızgarada değeri yaklaşık 0.12 değiştiriyor; bu değişimin çoğu da örneklem dışına taşımayacağınız gürültü.
Ters volatilite neden bu kadar iyi görünüyor ve bunun ne kadarı gerçek
İşleyiş gizemli değil. Sabit notyonda pozisyon büyüklüğünüz gerçekleşen volatiliteyle ilişkisizdir; bu da işlem başına dolar riskinizin o hafta volatilitenin ne olduğuna bağlı olduğu anlamına gelir. Bu dönemde ETH'nin 20 günlük gerçekleşen volatilitesi yıllıklandırılmış %31 ile %118 arasında değişti. Sabit notyonlu strateji, Mart 2024'te Temmuz 2023'e kıyasla 3.8× daha fazla dolar riski aldı; sinyal daha güvenilir olduğu için değil, piyasa daha hareketli olduğu için. Düşüşünün neredeyse tamamı en yüksek volatilite beşte birlik dilimde yoğunlaşıyor. Ters volatilite boyutlandırması bu bağı ortadan kaldırıyor ve bu da getiri akışının şeklini gerçekten iyileştiriyor.
Ancak Sharpe kazancının bir kısmı ölçüm kaynaklı bir yanılsama; ikisini ayırmazsanız sonraki aşamalarda kötü kararlar verirsiniz. Sharpe, getirilerin standart sapmasına bölünür. Volatilite hedefleme, tanımı gereği, getirilerin standart sapmasını istikrara kavuşturan bir işlemdir. Doğrudan paydayı optimize ediyorsunuz. Pozisyonları önceden belirlenmiş sabit volatiliteyi tutturacak şekilde ölçekleyen bir kural, volatilite kümelenmesi olan hemen her getiri akışında Sharpe'ı artırır; buna sıfır avantajlı akışlar da dahil. Bunu karıştırılmış sinyallerde doğruladım: giriş zaman damgalarını rastgeleleştirip volatilite hedefi katmanını koruyunca, ortalaması sıfır olan bir tabanda Sharpe sabit notyona kıyasla yine yaklaşık 0.06 artıyor. Küçük ama sıfır değil; tamamen mekanik bir sonuç.
Bu yüzden boyutlandırma kurallarını kendi aramızda karşılaştırırken tabloda asla yalnızca Sharpe'a bakmıyorum. Calmar'ı, ortalama yatırılan notyon birimi başına net K/Z'yi ve brütten nete maliyet dökümünü de görmek istiyorum; çünkü bu üçü bir arada, paydayı oynayarak sonucu güzelleştirmeyi çok daha zorlaştırıyor.
Volatilite tahmini bir modeldir ve modeller gibi veri sızdırır
İyi görünen bir boyutlandırma sonucunun sahte çıkmasının en yaygın nedeni şudur: volatilite tahmini, pozisyonu boyutlandırdığı mumdan bilgi kullanır. Volatilite seriniz merkezlenmiş bir pencereyle ya da mevcut kısmi mumu içeren bir yeniden örneklemenin ardından pandas'ın varsayılan `rolling().std()` işlemiyle veya tüm örneklem üzerinden standardizasyonla hesaplanıyorsa veri sızıntısı vardır. Volatilite kalıcı olduğu için her satırdaki sızıntı küçüktür ve özsermaye eğrisi hâlâ makul görünür; bu yüzden fark etmek zordur. Yalnızca tam da önemli haftalarda biraz fazla pürüzsüz görünür.
Bir sonuç kâğıt işlem kuyruğuna alınmadan önce ajanlarımız her boyutlandırma kuralında 4 şeyi kontrol eder:
- Karar anında erişilebilirlik. 14:00'te açılan mumda kullanılan boyut, kapanış zaman damgası ≤ 13:59:59.999 olan verilerle hesaplanabilmelidir. Bunu rastgele seçilen 200 karar noktasında kesilmiş bir veri çerçevesinden boyut serisini yeniden hesaplayıp farkları karşılaştırarak doğruluyoruz.
- Tahmin penceresi gerçek bir parametredir. 20 günlük volatilite penceresiyle 60 günlük volatilite penceresi iki farklı stratejidir. Pencere uzunluğu diğer her şeyle birlikte walk-forward ızgarasına girer; sonuç yalnızca tek bir pencere uzunluğunda çalışıyorsa bu, kırılganlığa dair bir bulgudur.
- Yalnızca tepe kaldıraç değil, kaldıraç seyri. Brüt kaldıraç dağılımının tamamını yazdırın. Yukarıdaki sınırsız volatilite hedefli strateji, saatlerinin %4'ünü 5× üzerinde geçirdi. Özet tabloda asla görünmeyen bu tür bir ayrıntı, stratejinin uygulanabilir olup olmadığını tamamen belirler.
- Sağlamlık testi olarak boyutlandırma hassasiyeti. Volatilite hedefini %20'den %25'e çıkarınca Sharpe çöküyorsa strateji volatilite hedefli değildir; kaldıraç ayarına göre optimize edilmiştir ve bir sayı seçerek avantajınızı bulmuşsunuzdur.
Kaldıraç sınırı, risk yönetimine eklenen süs değil, strateji tanımının bir parçasıdır. Binance'te ETHUSDT kademeleri, pozisyon notyonu büyüdükçe maksimum kaldıracı düşürür ve sürdürme teminatı oranı da buna göre artar. Volatilite hedefi kuralının 400k $ notyonda 6.3×'e çıkmasına izin veren bir backtest, borsanın o teminatla tutmanıza izin vermeyeceği bir pozisyonu tarif ediyor. Tablodaki sınırlı satır 0.05 Sharpe'a mal oluyor ve gerçek bir şeyi tarif eden iki satırdan yalnızca o.
Paranın gittiği yer yeniden dengeleme
Maliyet sütununa dikkat edin. Volatilite hedefine saatlik yeniden dengeleme, manşetteki en iyi Sharpe'ı verdi ama brüt K/Z'nin %41'ini de borsaya bıraktı. Yılda ortalama pozisyon notyonunun 1,180×'i kadar işlem demek; buna taraf başına 5 bps ücret, spread ve piyasa etkisi de ekleniyor. Basit çözüm, takvime göre daha seyrek yeniden dengelemektir. Daha iyi çözüm, işlem yapmama bandıdır: yalnızca mevcut pozisyon hedeften belirli bir eşiğin üzerinde sapınca boyutu ayarlamak.
%20'lik bant, yıllık işlem gören notyonu 1,180×'den 402×'e, yani %66 azalttı ve Sharpe'dan 0.05 götürdü. Bunu şimdiye kadar 8 sinyalde denedim; sonuçlar benzer: %15 ile %25 arasındaki bantlar, risk kontrolü faydasının çoğunu işlem hacminin üçte birinde sağlıyor; %10'un altındaki her değer ise zaten 20 günlük pencereyle tahmin ettiğiniz bir büyüklükte kozmetik hassasiyet için ücret ödemek demek. Standart hatası %15 olan bir sayıya karşı üç ondalık basamağa kadar yeniden dengeleme yapamazsınız.
Şubat ayında bir ajanın yazdığı rapor, 0.22'lik Sharpe iyileşmesini "geliştirilmiş giriş filtresine" bağlamıştı. Değişiklik boyutlandırma modülünde tek satırdı. Filtre değişmemişti. Artık raporun en üstünde boyutlandırma yapılandırmasının karmasını yazdırıyorum; çünkü atıf bir disiplindir ve modeller de herkes gibi derli toplu bir hikâye anlatmaya bayılır.
Kâğıt işlem boyutlandırma kuralınızı nasıl etkiler
Backtest ile kâğıt işlem arasındaki farkın en çok açıldığı yer burası ve bunun nedeni çoğunlukla aritmetiktir. Volatiliteye duyarlı boyutlandırma, örneklem boyunca pozisyon büyüklüğünüzü 4 ila 8 kat arasında değiştirir. Bu aralığın her iki ucunda da backtestte modellenmemiş borsa kısıtlarına takılırsınız.
Küçük tarafta: miktar adımı ve minimum notyon. ETHUSDT sürekli vadeli işleminde miktar adımı 0.001, minimum tutar ise $5. Düşük volatilite rejimindeki boyutunuz 0.0004 ETH ise backtest bu pozisyonu tutar, kâğıt işlem ise hiç pozisyon açmaz. Bu, volatilite hedefli bir kuralın en küçük boyutları en sakin piyasalara koyduğunu ve trend sinyalinde iyi girişlerin sıkça bu dönemlerde geldiğini fark edene kadar uç bir durum gibi görünebilir. Büyük tarafta ise pozisyon limitleri, teminat kademeleri ve 6× pozisyonun, tasfiye modelinde hesaba katmadığınız izole teminat disiplini gerektirmesi var.
Kâğıt işlem özsermaye eğrisinin 6 hafta boyunca backtesti %3 fark içinde izleyip sonra sert biçimde ayrıştığı bir örnek yakaladık. Nedeni yuvarlamaydı: emir boyutlandırıcıda en yakın adıma yuvarlamak yerine `int()` ile kesme işlemi uygulanmıştı; ortalaması 1.4 adım olan pozisyonlarda. Backtest sürekli değerlerle boyutlandırırken canlı boyutlandırıcı her küçük işlemde hedeflenen pozisyonun %20-30'unu kaybediyordu. Karmaşık bir gerçekleşme modeli ya da gecikme hikâyesi yoktu. Kesme işlemi.
Eleştirenlerin haklı olduğu noktalar
3 itiraz yerinde; bunları olduğundan önemsiz göstermeyeceğim.
Birincisi ve en önemlisi: boyutlandırma avantajı dağıtır, avantaj yaratamaz. Sinyalinizin brüt beklentisi gerçekçi ücretler ve fonlama hesaba katıldıktan sonra sıfır veya altındaysa tablodaki her kural para kaybettirir; gösterişli olanlar bunu yalnızca daha güzel bir varyans profiliyle yapar. Bu dönemde küçük ama pozitif net avantajı olan bir sinyal seçtim. Aynı 6 kuralı işlem başına net −1.2 bps üreten bir sinyalde çalıştırırsanız sıralama korunur ama her stratejinin dönem sonu özsermayesi başlangıç değerinin altında kalır. Boyutlandırma bir şeyin çarpanıdır. O şeyin kendisine de ihtiyacınız var.
İkincisi, volatilite hedeflemenin gerçek ve iyi belgelenmiş bir arıza biçimi var: hızlı bir satış dalgasının dibinde pozisyonu küçültür, sert toparlanmanın ardından yeniden büyütür. Keskin bir V dönüşünde sabit notyon bazen açık ara kazanır. Hisse senetlerinde Mart 2020 ve kriptoda Ağustos 2024'teki sert çözülme, toparlanma aşamasında volatiliteye duyarlı boyutlandırmayı cezalandırdı. 4 yıllık ETH dönemimde V biçimli sert dönüşlerden çok volatilite kümelenmeli, ağır ilerleyen dönemler var; bu da ters volatilite satırlarını olduğundan iyi gösteriyor. Farklı bir dönem bazı sıralamaları tersine çevirir; 2020'den bir tabloyla başlasaydım bu argümanın daha zayıf bir biçimini savunuyor olurdum.
Üçüncüsü, boyutlandırma kuralı da diğer her şey kadar aşırı uyuma açıktır. Tablomdaki yarım Kelly bunun göstergesi: sofistike görünüyor, teorik dayanağı var, ancak gürültülü bir getiri serisinin kayan ortalama tahmini berbat olduğu ve Kelly buna son derece duyarlı olduğu için ikinci en kötü düşüşü üretti. Beklenen getiri tahminini girdi olarak alan her boyutlandırma kuralı, o tahmindeki hatayı devralır ve büyütür. Yalnızca varyans tahmini kullanan kurallar çok daha istikrarlı çalışır; çünkü 4 yıllık saatlik veriden gerçekten tahmin edebileceğiniz tek moment varyanstır.
Bütün bunlardan aklımda kalan şu: backtest sonucu sizi şaşırttığında sinyalde zekice çözümler aramadan önce boyutlandırma modülünü kontrol edin. Sharpe raporlarken kaldıraç seyrini ve maliyet dökümünü de yanında verin; çünkü boyutlandırma kararına bu kadar bağlı bir değer, sinyalin özelliği değildir.
← Tüm yazılar
