← Makalelere geri dön
July 2, 2026
5 dakikalık okuma

Objektif Fonksiyon Tasarımı: Optimize Ettiğiniz Metrik Stratejinizi Gizlice Seçer

Objektif Fonksiyon Tasarımı: Optimize Ettiğiniz Metrik Stratejinizi Gizlice Seçer
#algotrading
#backtest
#aşırı uyum
#objektif-fonksiyon
#optimizasyon
#sharpe
#doğrulama
🎯
Part 1 of 7 · Collection
Backtesting Without Fooling Yourself

"Yanılsamasız Backtestler" serisinin bir parçası.

📄 Bu makale bir araştırma makalesine dönüştü. Aşağıdaki her sayı, kontrollü bir referans gerçeklik kuran — orta bir sinyal bandında bilinen bir avantaja ve her yerde kalın kuyruklu gürültüye sahip sentetik bir piyasa — ve ardından altı farklı objektif fonksiyon altında tek bir eşik araması çalıştırıp her objektifin örnek-dışında gerçekte hangi stratejiyi seçtiğini ölçen tek bir deterministik betikten geliyor. Makaleyi çevrimiçi olarak (interaktif sürüm + PDF) objective-design.marketmaker.cc adresinde, kod ve veriyi ise github.com/suenot/objective-design-degeneracy adresinde okuyabilirsiniz.

En iyi stratejiyi istiyorsunuz. Bu yüzden bir arama çalıştırıyorsunuz — bir eşiği, bir geri bakış penceresini, bir stop mesafesini tarıyor ve en yüksek skoru alan ayarı tutuyorsunuz. Arama bitiyor ve size bir kazanan veriyor. Makul. Standart. Yeryüzündeki her optimize edici, ızgara araması ve hiperparametre ayarlayıcısının yaptığı şey bu.

Ama fiile bakın: en yüksek skoru alan. Neyde en yüksek? Arama herhangi bir şeyi taçlandırmadan önce, ona maksimize edilecek tek bir sayı vermeniz gerekiyordu — bir objektif fonksiyon. PnL. Sharpe. İşlem-yaptığınız-barlardaki Sharpe. Getiri-bölü-maksimum-düşüş. Bunlardan birini yazdınız, muhtemelen fazla düşünmeden, ve arama milyonlarca değerlendirmeyi tam olarak istediğiniz şeyi yaparak geçirdi.

O tek seçim bir formalite değildir. Kararın tamamıdır. Arama "iyi bir strateji" bulmaz — soyut olarak öyle bir şey yoktur. Seçtiğiniz skaleri maksimize eden stratejiyi bulur, ve farklı skalerler aynı veride birbirinden çılgınca farklı stratejilere işaret eder. Objektif, direksiyondaki gizli eldir, ve çoğu zaman kimse ona bakmıyordur.

İşte tüm makale tek bir tabloda. Bir eşik araması, gerçek ve bilinen bir avantaja sahip tek bir sentetik piyasa, altı objektif — ve seçtikleri altı strateji, tutulmuş veride ölçülmüş:

Objektif (aramanın maksimize ettiği şey) Ortalama piyasa maruziyeti Örnek-içi Sharpe Örnek-dışı Sharpe Dejenere kazananlar
Ham PnL 0.859 1.76 1.61 %0
Tüm-zaman-çizelgesi Sharpe 0.740 1.82 1.71 %0
İşlem-başına ("aktif") Sharpe 0.286 1.00 0.70 %57
Maruziyet tabanı (emin=0.20e_{\min}=0.20) 0.740 1.82 1.71 %0
İşlem-sayısı küçültmesi (conf_k=40=40) 0.523 1.54 1.31 %20.7
Sağlam (taban + conf_k) 0.675 1.78 1.70 %0.2

600 bağımsız seed, her biri T=2000T = 2000 bar, arama başına 80 aday eşik, örnek-içi ve örnek-dışı bağımsız olarak çekildi. Yıllıklandırılmış Sharpe (yılda 252 periyot). "Dejenere" = seçilen kazananın piyasada zamanın %5'inden azında bulunması veya pozitif-olmayan bir örnek-dışı Sharpe kaydetmesi. Bu piyasanın gerçek optimumu, 1.77'lik bir örnek-dışı yıllıklandırılmış Sharpe'tır.

Üçüncü satırı acıtana kadar okuyun. İşlem-başına Sharpe — tüm aktivite-koşullu metrikler ailesinin bir temsilcisi (işlem-başına Sharpe, beklenti, van Tharp'ın SQN'i, kazanma oranı), hepsi yalnızca işlem yapılan barlarda hesaplanmış — örnek-dışında diğerlerinin yarısından daha kötü bir strateji seçiyor ve bunu %57 oranında dejenere biçimde yapıyor. İnce biçimde daha kötü bir objektif değil. Bu veride bir tuzak, ve arama zamanın yarısından fazlasında içine düşüyor. Şimdi hemen üstündeki satırı okuyun: sade tüm-zaman-çizelgesi Sharpe hiçbir zaman dejenere olmuyor ve örnek-dışında 1.71 puan alıyor. Bu, tüm onarımın vurucu noktası, erkenden ifşa edildi — dürüst düzeltme basitçe tüm zaman çizelgesinde ölçmektir; alt satırlardaki daha süslü geriye dönük onarımlar, en iyi hallerinde, o sayıyı yalnızca eşliyor, asla geçmiyor. Bu makale o tuzağın ve onun düzeltmesinin anatomisi, gerçek zemin boyunca bilinerek — böylece "objektif doğru stratejiyi mi seçti?" bir görüş değil, bir gerçek haline geliyor.

Perde 1 — Gizli karar: Goodhart yasası aramadır

Bir parametre aramasını birçok aday strateji eğrisinden oluşan bir huni olarak gösteren, OBJEKTİF etiketli tek bir merceğin bir eğriyi kazanan diye damgalarken aynı görünen eğrilerin elendiğini, böylece metrik seçiminin stratejiyi sessizce belirlediğini gösteren bir illüstrasyon

1975'te iktisatçı Charles Goodhart, geri kalan her şeyinden daha uzun ömürlü bir cümle yazdı:

"Herhangi bir gözlemlenen istatistiksel düzenlilik, kontrol amaçlı üzerine baskı uygulandığında çökme eğilimi gösterecektir."

Genellikle Marilyn Strathern'e atfedilen popüler yeniden ifade daha keskindir: bir ölçüm bir hedef haline geldiğinde, iyi bir ölçüm olmaktan çıkar.

Bir parametre araması, Goodhart yasasının mümkün olan en saf örneğidir. Objektif fonksiyon ölçümdür. Arama baskıdır — o ölçümü gidebildiği kadar yükseğe itmek için binlerce, milyonlarca deneme. Ve arama, sizin o ölçümle ne kastettiğinizi en ufak biçimde umursamaz. Yalnızca sayıyı umursar. Sayıyı büyütmenin gerçek, ticaret yapılabilir bir avantajla hiçbir ilgisi olmayan bir yolu varsa — nadiren işlem yapmak, çoğu zaman düz oturmak, birkaç şanslı aykırı değeri yakalamak — arama o yolu bulacaktır, çünkü maksimumu bulmak onun yapmak üzere inşa edildiği tek şeydir.

Bu, yapay zeka güvenliği literatürünün ödül hacklemesi (reward hacking) dediği aynı başarısızlıktır: istediğiniz şeyin bir vekilini optimize eden bir ajan, vekil ile hedef arasındaki her boşluğu sömürecektir. Aramanız o ajandır. "Sharpe oranı" o vekildir. "Gelecek çeyrek gerçek parayla işlem yapmasına güvenebileceğim bir strateji" ise hedeftir. Aralarındaki boşluk, tüm bu disiplinin yaşadığı yerdir.

Boşluğun açılışını izlemek için, gerçeği bildiğimiz bir dünyaya ihtiyacımız var. Bu yüzden bir tane inşa ediyoruz.

Piyasa. Her periyotta bir öngörücü sts_t (standart-normal bir sinyal) gelir, ardından kısmen öngördüğü getiri rtr_t gelir. Avantaj gerçektir ama sınırlıdır — yalnızca orta bir sinyal bandı st1|s_t| \le 1 içinde var olur, dışında ise kaybolur:

rt=βst1[st1]+εt,β=0.3,εtt4 (birim varyans).r_t = \beta\, s_t \cdot \mathbf{1}\big[\,|s_t| \le 1\,\big] + \varepsilon_t, \qquad \beta = 0.3, \qquad \varepsilon_t \sim t_{4}\ (\text{birim varyans}).

İki tasarım seçimi önemlidir. Birincisi, avantaj orta bantta yaşar: aşırı sinyaller öngörücü bilgi taşımaz, bu yüzden bir strateji ortayı işlem yapmalı ve kuyrukları atlamalıdır. İkincisi, gürültü εt\varepsilon_t kalın kuyrukludur (4 serbestlik dereceli Student-tt, gerçek getirilerin gerçekten sahip olduğu türden ağır kuyruk) — ama bu bileşen burada mekanizma için değil, gerçekçilik için var. Kalın kuyrukların tuzağı mümkün kılan şey olduğunu söylemek cazip gelir ve kontrolü çalıştırana kadar tam olarak bunu varsaydık: bu piyasanın Gauss-gürültülü bir versiyonu (sonuçlarda gaussian_control, 300 seed) tuzağı esasen değişmeden yeniden üretiyor — işlem-başına objektif, kalın kuyruklarla %57.0'a karşı Gauss gürültüsü altında hâlâ zamanın %55.7'sinde dejenere oluyor, ve örnek-dışı Sharpe'ı 0.70'e karşı 0.71. Yani tuzak kalın kuyruklarla ilgili değildir. Saf bir küçük-örneklem-artı-seçilim etkisidir: bir avuç gözlem üzerinde hesaplanan bir Sharpe'ın ~20 düşük-maruziyetli eşik üzerinden maksimumunu alın, ve şanslı bir köşe her zaman muhteşem görünecektir. Herhangi bir gürültü dağılımı bunu yapar; piyasada yalnızca birkaç bar bulunan bir strateji, salt şansla, birkaç lehte hareketin içinden geçebilir ve hiçbir anlama gelmeyen bir örnek-içi sayı kaydedebilir. Kalın kuyrukları tutuyoruz çünkü gerçek getiriler onlara sahip, tuzağın onlara ihtiyacı olduğu için değil.

Strateji. Tek parametreli bir aile. Sinyalin büyüklüğü bir θ\theta eşiğinin altında olduğunda sinyal yönünde işlem yapın, aksi halde düz kalın:

post=sign(st)1[stθ].\text{pos}_t = \operatorname{sign}(s_t)\cdot \mathbf{1}\big[\,|s_t| \le \theta\,\big].

Küçücük bir θ\theta yalnızca en küçük, en sıradan sinyallerde işlem yapar — piyasada neredeyse hiç bulunmayan, nadir-işlem piyangosu. Bant kenarına yakın bir θ\theta tüm gerçek avantajı yakalar ve iyi maruziyetlidir. Devasa bir θ\theta her şeyde işlem yapar, avantaj taşımayan ve yalnızca gürültü ekleyen bant-dışı barları da içine çeker.

def gen_dataset(T, rng, beta=0.30, band=1.0, tail_df=4):
    s    = rng.standard_normal(T)
    edge = beta * np.where(np.abs(s) <= band, s, 0.0)          # edge ONLY inside |s| <= 1
    t    = rng.standard_t(tail_df, T) / np.sqrt(tail_df / (tail_df - 2.0))  # fat tails, unit var
    return s, edge + t

def simulate(s, r, theta):
    pos      = np.where(np.abs(s) <= theta, np.sign(s), 0.0)   # trade the band, skip outliers
    strat    = pos * r
    active   = pos != 0.0
    exposure = active.mean()                                   # fraction of bars in a position
    sharpe_full   = strat.mean()         / strat.std(ddof=1)            # on the WHOLE timeline
    sharpe_active = strat[active].mean() / strat[active].std(ddof=1)    # on ONLY the active bars
    return dict(exposure=exposure, n_trades=int(active.sum()),
                sharpe_full=sharpe_full, sharpe_active=sharpe_active, pnl=strat.sum())

Piyasayı biz inşa ettiğimiz için, gerçeği doğrudan hesaplayabiliriz — 600 seed'in tamamı üzerinde her eşikteki ortalama performans, örnek-dışında. Gerçek optimum θ1.04\theta \approx 1.04'te oturur: sinyal bandının kenarında tam olarak, piyasada zamanın yaklaşık %70'inde (türetilmiş: standart-normal bir sinyal s1.04|s|\le 1.04 içine P(s1.04)=0.70P(|s|\le 1.04)=0.70 olasılıkla düşer), 1.77'lik bir örnek-dışı yıllıklandırılmış Sharpe kaydederek. Her objektifin bulmaya çalıştığı sayı budur. Gözünüzün önünde tutun: θ≈1.04, örnek-dışı Sharpe 1.77, zaman çizelgesinin yaklaşık %70'inde piyasada. Bir objektifin bundan uzak seçtiği her şey, piyasanın zor olmasından değil, objektifin başarısız olmasından kaynaklanır.

Perde 2 — Tuzak: sekiz şanslı işlem, 21'lik bir Sharpe, bir yanılsama

Sekiz işlem bileti ve örnek-dışında 0.13'e çöken devasa bir örnek-içi işlem-başına Sharpe'ı 21 gösteren, tek bir şanslı çevirişte ödeme yapan bir kumar makinesi; nadir-işlem piyangosu kazananının naif bir objektif tarafından nasıl seçildiğini dramatize eden bir illüstrasyon

Şimdi naif bir objektifi bu piyasanın somut bir çekilişinde serbest bırakalım — seed 6. Seed hakkında tam açıklık: ilk çekiliş ya da rastgele bir çekiliş değildi. Belirgin şekilde dejenere bir işlem-başına kazanan için seed'leri taradık ve bu birini tam olarak mekanizmanın kaçırılması imkansız olsun diye seçtik. Gösterdiği sonuç tamamen tipiktir — Perde 3'ün doğrulayacağı gibi, işlem-başına objektif tüm seed'lerin %56'sında %5'in altında maruziyetli bir piyango seçer — ama seed 6'nın büyüklüğü o dağılımın uç noktasında oturur. Bunu, medyan bir örnek değil, yaygın bir başarısızlığın özellikle çarpıcı bir örneği olarak okuyun. İşlem-başına Sharpe'ı optimize ediyoruz: yalnızca stratejinin fiilen bir pozisyonda olduğu barlarda hesaplanan Sharpe oranı. Bu son derece doğal bir bildirim şeklidir. "İşlem yaptığında, işlemleri ne kadar iyi?" Beceriyi hareketsizlikten ayırıyormuş gibi hissettirir. Tam tersini yapar.

İşte işlem-başına Sharpe'ın seed 6'da taçlandırdığı strateji:

  • Eşik θ=0.005\theta = 0.005 — yalnızca en ufak sinyallerde işlem yapıyor.
  • Piyasa maruziyeti %0.4 — zamanın %99.6'sında düz.
  • Sekiz işlem. Sekiz. 2000 bar boyunca.
  • Örnek-içi işlem-başına yıllıklandırılmış Sharpe: 21.09.
  • Örnek-içi tüm-zaman-çizelgesi Sharpe: 0.82.
  • Örnek-dışı tüm-zaman-çizelgesi Sharpe: 0.13.

İşlem-başına metrik 21.09 okuyor — hiçbir gerçek stratejinin hiç kaydetmediği, bir fonun kurulmasını sağlayacak türden bir rakam. Ve tamamen bir yanılsama. O sekiz işlem birkaç lehte hareketi yakaladı; yalnızca o sekiz bar üzerinde ölçüldüğünde, ortalamanın standart sapmaya oranı astronomik. Ama stratejinin zamanın %99.6'sında düz olduğu tüm zaman çizelgesinde, o "avantaj" esasen hiçbir şey katmıyor: örnek-içinde 0.82'lik bir tüm-zaman-çizelgesi Sharpe, taze veride 0.13'e çöküyor. Objektifin seçtiği kazanan, tüm ticaret amaçları için, düzdür.

Ve o eşikte gerçek bir avantaj bile değil. Piyasayı hatırlayın: avantaj s1|s|\le 1 bandında yaşar, ve θ=0.005\theta = 0.005 sinyalin en zayıf olduğu tam merkezde oturur. θ=0.005\theta = 0.005'teki gerçek örnek-dışı eğri −0.01'dir — sıfırdan ayırt edilemez (gerçek-zemin eğrisinden türetilmiş). Arama küçük bir gerçek avantaj bulmadı. Sekiz şanslı gürültü çekilişi buldu ve bunları 21'lik bir Sharpe olarak bildirdi.

Bu, tuzağın minyatür hali: işlem-başına Sharpe stratejiyi mümkün olduğunca nadir işlem yapması için ödüllendirir, çünkü ne kadar az barda durursanız, birkaçının şanslı olması o kadar kolaylaşır, ve metrik hiçbir zaman "ama gerçekten piyasada mıydınız?" diye sormaz. Seed 6'nın büyüklüğü özenle seçilmiştir — çarpıcı bir tane bulmak için aradık — ama türü seçilmemiştir. 600 seed'in tamamında işlem-başına Sharpe, %57'sinde dejenere bir kazanan (zar zor işlem yapan veya örnek-dışında kaybeden) seçer, ve özellikle %5'in altında maruziyetli bir piyangoyu %56'sında seçer. Tipik dejenere seçim, seed 6'nın 21'lik Sharpe'ından çok daha uysaldır: 600 seed'in tamamı üzerinden ortalandığında, işlem-başına objektifin kazananının örnek-içi işlem-başına Sharpe'ı 4.58 ve ortalama maruziyeti 0.286'dır — hâlâ çoğu zaman düz, sadece %99.6 düz değil. Seed 6 mekanizmayı dramatize ediyor; sizi endişelendirmesi gereken kısım %56. Zamanın yarısından fazlasında, bu gündelik metrik size bir piyango bileti verip ona strateji diyor.

Perde 3 — İstatistiksel gerçek: altı objektif, 600 seed

Altı objektif fonksiyonu bir liderlik tablosunda yarışmacılar olarak gösteren, işlem-başına Sharpe'ın örnek-içinde en parlak parladığı ama %57 dejenere damgası yediği, maruziyet-farkında objektiflerin ise örnek-dışında sabit kaldığı, harika bir örnek-içi sayının iyi bir seçim anlamına gelmediğini gösteren bir illüstrasyon

Tek bir seed hiçbir şey kanıtlamaz; yalnızca örnekler. Bir objektifi ölçmek için, birçok bağımsız piyasa boyunca ortalamada ne seçtiğini sormamız ve bu seçimi aramanın hiç görmediği veri üzerinde puanlamamız gerekir. Yani: 600 seed, her biri piyasanın bağımsız bir çekilişi; her birinde, 80-eşiklik aramayı her objektif altında çalıştırın; seçtiği şeyin maruziyetini, örnek-içi ve örnek-dışı Sharpe'ını, ve o seçimin dejenere olup olmadığını kaydedin.

Objektif Ortalama maruziyet Örnek-içi Sharpe Örnek-dışı Sharpe Örnek-içi→dışı düşüş (mutlak) Dejenere
Ham PnL 0.859 1.76 1.61 0.15 %0.0
Tüm-zaman-çizelgesi Sharpe 0.740 1.82 1.71 0.11 %0.0
İşlem-başına Sharpe 0.286 1.00 0.70 0.30 %57
Maruziyet tabanı (emin=0.20e_{\min}=0.20) 0.740 1.82 1.71 0.11 %0.0
conf_k küçültmesi (k=40k=40) 0.523 1.54 1.31 0.23 %20.7
Sağlam (taban + conf_k) 0.675 1.78 1.70 0.08 %0.2

"Örnek-içi→dışı düşüş" sütunu, örnek-içinden örnek-dışına yıllıklandırılmış Sharpe'taki mutlak düşüştür (örneğin 1.000.701.00\to0.70, 0.30'luk bir düşüştür), bir yüzde değildir. Ve "Maruziyet tabanı" satırının "Tüm-zaman-çizelgesi Sharpe" ile bayt-bayt aynı olduğuna dikkat edin: bu bir tesadüf değildir, ve Perde 5 nedenini açıklıyor.

Üç gerçek göze çarpıyor, ve her biri bir ders.

İşlem-başına Sharpe, dejenere olan tek naif objektiftir. Ortalama maruziyeti 0.286'dır — çoğu zaman düz olan stratejiler seçer — ve örnek-içi 1.00'lık Sharpe'ı örnek-dışı 0.70'e 0.30 düşerek, alandaki en kötü sonuç. İpucuna dikkat edin: örnek-içi sayısı (1.00) etkileyici bile değil, ama herhangi bir tek seed'de mutlulukla 21'lik bir işlem-başına rakam bildirecektir. Ortalama, şanslı pencereler rastgele yönlere işaret ettiği için yıkanıyor; örnek-dışına yalnızca 0.70 hayatta kalıyor, ve bireysel seçimlerin %57'si tamamen çöp.

Maruziyet-farkında objektifler doğal olarak güvenlidir. Ham PnL ve tüm-zaman-çizelgesi Sharpe hiçbir zaman dejenere olmaz (%0.0). Neden yapısaldır: her ikisi de tüm zaman çizelgesi üzerinden ölçülür, bu yüzden zamanın %99.6'sında düz olan bir strateji bunlar altında neredeyse hiçbir şey kazanmaz. Nadir işlem yaparak tüm-zaman-çizelgesi bir metriği kandıramazsınız — düz oturmak doğrudan ve otomatik olarak cezalandırılır, çünkü düz barlar paydadadır. Bu makaledeki en önemli fikirdir, ve Perde 6'da bu konuya geri dönüyoruz.

Ham PnL güvenlidir ama optimal değildir — aşırı maruziyet yaratır. Yakından bakın: ham PnL'in ortalama maruziyeti 0.859, hepsinin en yükseği, ve örnek-dışı Sharpe'ı (1.61) tüm-zaman-çizelgesi Sharpe'ın (1.71) ve gerçek optimumun (1.77) bir tık altında. PnL piyasada olmayı ödüllendirir, bu yüzden arama θ\theta'yı fazla yükseğe iter (seed 6'da, ham PnL optimal 1.04'e karşı θ=1.84\theta=1.84 seçer), avantaj taşımayan ve yalnızca gürültü ekleyen bant-dışı barları içine çeker. Patlamıyor — ama işlem-başına tuzağın tersi yönde gerçek optimumun yanından kayıyor. Farklı objektif, farklı önyargı, aynı ders: metrik stratejiyi seçti.

Henüz tartışmadığımız iki satır — maruziyet tabanı ve conf_k — onarımdır. Bir sonraki bölüm bu.

Perde 4 — Sekiz işleme neden asla güvenilemez

Yalnızca sekiz gözleme dayandığı için devasa bir güven-aralığı hata çubuğuyla işaretlenmiş tek bir Sharpe nokta tahmini, yanında minimum performans kaydı uzunluğu etiketli bir cetvel, bir avuç işlem üzerinde ölçülen bir oranın istatistiksel olarak anlamsız olduğunu gösteren bir illüstrasyon

Tuzağı onarmadan önce, sekiz işlemin neden hiçbir anlama gelmeyen 21'lik bir Sharpe ürettiğine dair kesin olmakta fayda var — çünkü düzeltme doğrudan bu nedenden takip ediyor.

Bir Sharpe oranı bir tahmindir, ve tahminlerin hata payları vardır. Andrew Lo'nun 2002 sonucu, mümkün olan en cömert varsayım altında (IID Gauss getirileri), TT gözlemden tahmin edilen bir Sharpe oranının standart hatasını verir:

SE(SR^)1+SR^2/2T.\operatorname{SE}\big(\widehat{SR}\big) \approx \sqrt{\frac{1 + \widehat{SR}^{\,2}/2}{T}}.

Hata yalnızca 1/T1/\sqrt{T} kadar küçülür. Tuzağa besleyin. Seed 6'daki işlem-başına Sharpe yıllıklandırılmış 21.0921.09'dur, bu da gözlem başına 1.331.33'e karşılık gelir, T=8T = 8 bar üzerinde hesaplanmış. Standart hata

SE1+1.332/280.49 go¨zlem bas¸ına = 7.7 yıllık\operatorname{SE} \approx \sqrt{\frac{1 + 1.33^2/2}{8}} \approx 0.49 \ \text{gözlem başına} \ = \ \textbf{7.7 yıllık}

(Lo'nun formülünden türetilmiş). Nokta tahmini 21.0921.09'dur; bir-sigma hata payı yaklaşık ±7.7\pm 7.7 mertebesindedir — bunu kalibre edilmiş bir güven aralığı olarak değil, örnekleyici bir büyüklük mertebesi olarak okuyun, çünkü formül, bizim kalın kuyruklu t4t_4 gürültümüzün ihlal ettiği IID Gauss getirilerini varsayıyor. Yine de mesaj açıktır: "21'lik Sharpe" öylesine geniş bir dağılımdan çekilmiş bir sayıdır ki esasen hiçbir bilgi taşımaz — ve bu cömert hesaplamadır, çünkü Mertens'in uzantısı, kalın kuyrukların ve çarpıklığın standart hatayı yalnızca daha da şişirdiğini gösterir. Nadir-işlemli bir backtest'in Sharpe'ı, her yönde aynı anda nokta değerinden daha az güvenilirdir: çok az gözlem, ve yanlış dağılım.

Bu tam olarak Minimum Performans Kaydı Uzunluğu'nun (Bailey & López de Prado, 2012) formalize ettiği şeydir. Soruyu tersine çevirir — bu büyüklükte bir Sharpe'a pp güveninde inanmama izin verilmeden önce kaç gözleme ihtiyacım var?

MinTRL=1+[1γ^3SR^+γ^414SR^2](Z1pSR^SR)2,\text{MinTRL} = 1 + \Big[\,1 - \hat\gamma_3\,\widehat{SR} + \tfrac{\hat\gamma_4 - 1}{4}\,\widehat{SR}^{\,2}\,\Big]\left(\frac{Z_{1-p}}{\widehat{SR} - SR^*}\right)^{2},

"az-işlemli backtest'lere daha az güven"i açık, kontrol edilebilir bir işlem sayısına dönüştürerek. Objektif tasarımı için derin nokta şudur: iyi bir objektif, minimum bir performans kaydını içeriden dayatmalıdır, bir insanın kazananın sekiz gözleme dayandığını sonradan fark etmesini beklemek yerine. İşlem-başına Sharpe bunun tam tersini yapar — gözlem sayısını minimuma doğru sürerek maksimize edilir. Optimumu "mümkün olduğunca az işlem"de oturan herhangi bir objektif, tanımı gereği, kendi en güvenilmez tahminini arayan bir objektiftir.

Tuzakta iki başarısızlık bir araya geliyor, ve ikisini de adlandırmak bize onu nasıl düzelteceğimizi söylüyor. Birincisi, küçük-örneklem gürültüsü: sekiz gözlem hiçbir oranı sabitleyemez. İkincisi, seçilim: o sekiz bar bize verilmedi — arama o eşiği, kısmen şanslı oldukları için, o barlara iniş yapacak şekilde seçti. Arama bir maksimize edicidir; gürültünün sinyal gibi göründüğü uzayın köşesini her zaman bulacaktır. Bunu daha iyi bir nokta tahminiyle atlatamazsınız. "En iyi"nin ne anlama geldiğini değiştirmeniz gerekir, böylece şanslı köşe maksimum olmasın.

Perde 5 — Onarım: bir maruziyet tabanı ve bir işlem-sayısı küçültmesi

Maruziyet tabanı ve conf_k küçültmesi etiketli iki düğmeye sahip bir kontrol paneli, ikisi de bir örnek-dışı performans yüzeyini yüksek düz bir platoya kaldırırken bir dejenerelik göstergesinin sönmesini gösteren, gerçek optimumu birlikte geri kazandıran iki bağımsız düzeltmeyi tasvir eden bir illüstrasyon

İki isimlendirilmiş hastalığımız var — çok nadir işlem yapmak ve çok az gözleme dayanmak — bu yüzden her birini hedefleyen iki çare yazıyoruz.

Çare 1: bir maruziyet tabanı. Mümkün olan en basit düzeltme. Piyasada en az emine_{\min} zaman bulunmayan herhangi bir stratejiyi doğrudan reddedin — zar zor işlem yapıyorsanız, skorunuz -\infty'dur ve arama sizi seçemez. Ama neyi tabana bağladığınız konusunda dürüst bir incelik var, ve bu tüm makalenin sessiz dersi. Bağımsız bir objektif olarak tüm-zaman-çizelgesi Sharpe'ı tabana bağladık, ve bu piyasada bu hiçbir şeyi değiştirmiyor: tüm-zaman-çizelgesi Sharpe'ın kendi kazananı zaten ~%74 maruziyette oturuyor, bu yüzden %20'lik bir taban asla bağlayıcı olmuyor. Yukarıdaki tablolarda "maruziyet tabanı" ve "tüm-zaman-çizelgesi Sharpe" satırlarının bayt-bayt aynı olmasının nedeni tam olarak bu — zaten güvenli olan bir metriğe bir taban cıvatalarsanız, tam Sharpe'ı yeniden türetmiş olursunuz. Taban yalnızca aksi halde köşeye koşacak bir metriği koruduğunda görünür bir iş yapar: aşağıdaki sağlam objektifte olduğu gibi bir işlem-başına metrik. Başka bir deyişle, "maruziyet gerektir" ve "tüm zaman çizelgesinde ölç", bu veride, aynı müdahalenin iki adıdır.

Çare 2: bir işlem-sayısı küçültmesi — "conf_k". İşlem-başına bir metriğe sıkışıp kaldığınızda ve sert bir kesme yerine yumuşak bir düzeltme istediğinizde: Sharpe'ı, kaç işleme dayandığına göre sürekli olarak indirimleyin. n/(n+k)n/(n+k) ile çarpın, burada nn işlem sayısı ve kk aramadan önce seçilmiş sabit bir "güven sabiti" — işlem-eşdeğeri bir önsel gücü:

score(θ)=SR^(θ)n(θ)n(θ)+k.\text{score}(\theta) = \widehat{SR}(\theta)\cdot \frac{n(\theta)}{n(\theta) + k}.

n0n \to 0 olduğunda skor, ham Sharpe ne kadar büyük olursa olsun sıfıra ezilir; nn \to \infty olduğunda skor ham Sharpe'a yakınsar. Bu, Perde 4'ün MinTRL'i ve standart hatasıyla aynı düzeltici mantıktır — küçük-örneklem bir tahmini, örneklem büyüklüğünün azalan bir fonksiyonu olarak sıfıra doğru küçültmek — ama sonradan uygulanan bir filtre yerine doğrudan objektifin içine katlanmıştır. En yakın isimli öncül, van Tharp'ın Sistem Kalite Sayısı'dır (SQN=Ntrade/σtrade\text{SQN} = \sqrt{N}\cdot \overline{\text{trade}}/\sigma_{\text{trade}}), o da benzer şekilde işlem-başına bir kalite metriğini işlem sayısı NN ile ölçeklendirir — ancak fonksiyonel biçim farklıdır (N\sqrt{N} sınırsız büyür, oysa n/(n+k)n/(n+k) 1'de doyar). Şekil olarak bizimki Bayesçi hassasiyet-ağırlıklı / empirik-Bayes-tarzı bir küçültmedir; literatürden alınmış isimli bir tahminci değil, bu problem için bizim inşamızdır.

def obj_active_sharpe(m):                  # the trap: Sharpe on only the active bars
    return m["sharpe_active"]

def _shrink(n, conf_k):                     # trade-count shrinkage n / (n + k)
    return n / (n + conf_k) if (n + conf_k) > 0 else 0.0

def obj_confk(m, conf_k=40.0):              # few trades -> little credit
    return m["sharpe_active"] * _shrink(m["n_trades"], conf_k)

def obj_robust(m, e_min=0.20, conf_k=40.0): # both cures at once
    if m["exposure"] < e_min:               # floor: reject strategies that barely trade
        return -np.inf
    return m["sharpe_active"] * _shrink(m["n_trades"], conf_k)

Şimdi dürüst kısım: ne kadar taban, ne kadar küçültme? İkisini de tarayın ve tüm yüzeyi okuyun. Her hücre, yanındaki dejenerelik oranıyla birlikte 200 seed (iki-boyutlu taramayı ucuz tutmak için 600'ün üçte-birlik bir alt kümesi) boyunca ortalama örnek-dışı Sharpe'tır:

emine_{\min} \ conf_k k=0k=0 k=40k=40 k=80k=80
0.00 0.66 (%59.5) 1.26 (%22.5) 1.47 (%11.5)
0.05 1.43 (%10.0) 1.53 (%6.0) 1.60 (%4.0)
0.10 1.64 (%1.5) 1.65 (%1.0) 1.67 (%1.0)
0.20 1.71 (%0.0) 1.71 (%0.0) 1.71 (%0.0)
0.35 1.73 (%0.0) 1.73 (%0.0) 1.73 (%0.0)

Ortalama örnek-dışı yıllıklandırılmış Sharpe, dejenerelik oranı parantez içinde. Sol-üst hücre (0,0)(0,0) ham işlem-başına Sharpe'tır — taban yok, küçültme yok: OOS 0.66, dejenere %59.5. Bu Perde 3'ün işlem-başına satırıyla aynı objektiftir, o satır 0.70 / %57 okuyordu; küçük fark yalnızca seed kümesinden kaynaklanıyor — bu tarama 200 seed kullanıyor, Monte Carlo tüm 600'ü kullandı. Aynı metrik, daha küçük örneklem.

Yüzey üç okumada temiz bir hikaye anlatıyor.

Her çare tek başına işe yarıyor. En üst satırda sağa hareket edin (küçültme ekle, taban yok): OOS 0.661.261.470.66 \to 1.26 \to 1.47 tırmanır ve dejenerelik %59.5%22.5%11.5\%59.5 \to \%22.5 \to \%11.5 düşer. Sol sütunda aşağı hareket edin (taban ekle, küçültme yok): OOS 0.661.431.641.710.66 \to 1.43 \to 1.64 \to 1.71 tırmanır ve dejenerelik %59.5%10%1.5%0\%59.5 \to \%10 \to \%1.5 \to \%0 düşer. Tek başına çevrilen her düğme, örnek-dışı performansı bağımsız olarak yükseltiyor ve dejenereliği öldürüyor. Maruziyet tabanı buradaki daha güçlü tekil kaldıraçtır, çünkü tuzağın tanımlayıcı özelliğine — sıfıra yakın maruziyet — doğrudan saldırır.

Birlikte platoya ulaşıyorlar — ve plato yalnızca tüm-zaman-çizelgesi Sharpe'tır. emin=0.20e_{\min} = 0.20'ye gelindiğinde satır, her küçültme seviyesinde %0 dejenerelik ile OOS 1.71'de düzleşiyor; emin=0.35e_{\min}=0.35'e itin ve 1.73'e sürünür. Ama o 1.71'in ne olduğuna dikkatle bakın: sade tüm-zaman-çizelgesi Sharpe'ın Perde 3'te hiç taban ve hiç küçültme olmadan kaydettiği tam sayıdır. En iyi hallerinde, geriye dönük onarımlar tüm-zaman-çizelgesi Sharpe'ı geçmiyor — onu yeniden inşa ediyorlar. Ve tamamen onarılmış sağlam objektif bile tam oraya varmıyor: 600 seed'in tamamında 0.17'lik bir kalıntı dejenerelikle OOS 1.70'te iniyor, tam Sharpe'ın 1.71 / %0'ının biraz altında — daha basit metrik tarafından zayıf biçimde domine ediliyor. Orta bir ayar, emin=0.10e_{\min}=0.10 ile k=40k=40, %1 dejenerelikte OOS 1.65'e ulaşıyor — işlem-başına bir metrik size zorla dayatıldığında işe yarar, ama bir tanesini tercih etmek için hiçbir zaman bir neden değil.

Kesin sayılar ölçek-bağımlıdır — şekil sonuçtur. Bu piyasayı tamamen onaran belirli değerler emin=0.20e_{\min}=0.20, k=40k=40, bu veri-üretim sürecine ayarlanmıştır; farklı işlem sıklıklarına ve kuyruk kalınlığına sahip farklı bir piyasada, plato başka yerde oturur. Genelleşen şey koordinatlar değil, yüzeydir: her iki yönde de tekdüze bir yükseliş, sıfıra sürülen dejenerelik, gerçekte oturan bir plato. Kendi koordinatlarınızı, tıpkı yukarıdaki gibi tarayarak bulursunuz.

Her iki çareyi bir araya getirin — taban 0.20 artı conf_k 40'lık sağlam objektif — ve seed 6'ya dönün. Tuzak θ=0.005\theta = 0.005'i, sekiz işlemi, 0.13'lük bir tüm-zaman-çizelgesi OOS Sharpe'ı taçlandırmıştı. Sağlam objektif bunun yerine θ=0.979\theta = 0.979'u seçiyor: piyasa maruziyeti 0.66, 447 işlem, örnek-dışı yıllıklandırılmış Sharpe 1.77. O θ=0.979\theta = 0.979, gerçek optimum θ=1.04\theta = 1.04'ün bir ızgara noktası altındadır, yani hedefin tam ortasına inmek yerine neredeyse-optimal, iyi maruziyetli bir eşiği geri kazanıyor — tek-seed örnek-dışı Sharpe'ı (1.77) popülasyon optimumuyla çakışıyor. Aynı veri, aynı arama, aynı 80 aday eşik. Yalnızca "en iyi"nin tanımı değişti, ve kazananı düz sekiz-işlemlik bir yanılsamadan gerçek, iyi maruziyetli avantaja taşıdı — ki bu, dikkat çekici biçimde, bu seed'de sade tüm-zaman-çizelgesi Sharpe'ın seçtiği tam aynı eşiktir.

Taramanın açıkça ortaya koyduğu bir uyarı: conf_k tek başına bu piyasada yeterli değildir. k=40k=40'ta tabansız, seed'ler boyunca dejenerelik hâlâ %22.5'tir — ve özellikle seed 6'da, tek başına conf_k θ=0.015\theta = 0.015'i, 35 işlemi, −0.06'lık bir örnek-dışı Sharpe'ı seçiyor. Otuz beş işlem, 35/(35+40)0.4735/(35+40) \approx 0.47'lik bir küçültmeyi kazanmaya yetecek skorla hayatta kalıyor. Bu son boşluğu kapatan maruziyet tabanıdır, çünkü tuzağın gerçek imzasını — düz olmayı — bir vekil olarak işlem sayısına güvenmek yerine doğrudan hedefler.

Perde 6 — Daha derin ders: tüm zaman çizelgesinde ölçün

Aynı stratejiyi puanlamanın iki yolunu karşılaştıran bir illüstrasyon: bir stratejinin işlem yaptığı yalnızca birkaç barı aydınlatan dar bir spot ışığa karşı düz bölümler dahil tüm zaman çizelgesini ölçen bir projektör, maruziyet-farkında objektiflerin nadir şanslı işlemlerle kandırılamayacağını gösteren

Onarımdan geri adım atın ve güvenli objektifleri tuzaktan gerçekte neyin ayırdığına dikkat edin. Sofistike olmak değildi. Ham PnL ve tüm-zaman-çizelgesi Sharpe, işlem-başına Sharpe'tan daha basittir, ve hiçbir taban, hiçbir küçültme, hiçbir ayarlama olmadan hiçbir zaman dejenere olmadılar — 600 seed boyunca %0.

Ayrım çizgisi tek bir özelliktir: metrik hangi pencereyi ölçüyor? İşlem-başına Sharpe yalnızca stratejinin durmayı seçtiği barları ölçer — aramanın istediği gibi küçültebileceği kendi-kendine-seçilmiş bir pencere. Tüm-zaman-çizelgesi Sharpe ve toplam PnL, düz barlar dahil, tüm zaman çizelgesini ölçer. Ve nadir işlem yaparak tüm-zaman-çizelgesi bir metriği büyütemezsiniz, çünkü düz oturduğunuz her saat, hiçbir şey kazanmayan ve paydada yer alan bir saattir. Maruziyet tabanı ve conf_k, sonuçta, işlem-başına metriği tüm-zaman-çizelgesi metriklerin bedavaya sahip olduğu maruziyet-farkındalığıyla geriye dönük onarmanın yollarıdır — ve tarama bize o geriye dönük onarımın tavanını zaten söyledi: en iyi halinde tüm-zaman-çizelgesi Sharpe'ı eşliyor (OOS 1.70'e karşı 1.71), asla geçmiyor. Pencereyi seçmekte özgürseniz, tüm zaman çizelgesini seçin ve geriye dönük onarımı tamamen atlayın.

Yani tasarım ilkesi, açıkça ifade edilirse:

Objektifi nadir şanslı işlemlerle kandırılamayacak şekilde tasarlayın. Kabaca tercih sırasına göre üç aracınız var:

  1. Tüm zaman çizelgesinde ölçün. Neredeyse hiçbir zaman terk edilmemesi gereken varsayılan. Tüm-zaman-çizelgesi Sharpe ve toplam getiri, tanım gereği maruziyet-farkındadır — hareketsizlik otomatik olarak cezalandırılır çünkü düz barlar sayılır. Kendinizi "yalnızca aktif olduğumuz barlarda" hesaplanan bir metrik bildirirken bulursanız, durun ve aramanın o barları seçme özgürlüğüyle ne yapacağını sorun.
  2. Maruziyet gerektirin. Aktivite-koşullu bir metrik kullanmak zorundaysanız, aramanın zar zor işlem yapan bir stratejiyi seçemeyeceği şekilde maruziyeti tabana bağlayın. Bu spesifik tuzağa karşı en güçlü tekil kaldıraçtır.
  3. İşlem sayısına göre küçültün. Herhangi bir oranı n/(n+k)n/(n+k) ile indirimleyin, böylece bir avuç gözleme dayanan bir Sharpe, binlercesine dayanan birinin yalnızca bir kesrini kazanır. Bu, Minimum Performans Kaydı Uzunluğu'nun objektif-düzeyinde uygulanmasıdır: az gözlemden gelen bir sayı güvenilmezdir (Perde 4), bu yüzden dürüst bir objektif, bir insanın bunu sonradan yakalamasına güvenmek yerine, bu güvenilmezliği fiyatlandırır.

Bunların hiçbiri aramayı daha akıllı yapmaz. Hedefi dürüst yapar, böylece arama her zaman yaptığı şeyi — maksimumu bulmak — yaptığında, o maksimum gerçekten istediğiniz bir stratejidir.

Dürüstlük notları

Açıkça ifade edilmiş üç uyarı, çünkü kontrollü bir çalışma sonuçlarını yalnızca sınırlarını adlandırarak hak eder.

  • Piyasa sentetiktir, ve kasıtlı olarak öyledir. Standart-normal bir sinyal, s1|s|\le 1 ile sınırlı doğrusal bir avantaj, kalın-kuyruklu Student-tt(44) gürültü — kontrollü referans gerçeklik için seçildi, piyasa gerçekçiliği için değil. Bir objektifin yanlış stratejiyi seçtiğini yalnızca hangi stratejinin doğru olduğunu bildiğimiz veride çalıştırarak kanıtlayabiliriz. Gerçek piyasalar durağan değildir, otokorelasyonludur ve rejim-değiştiricidir. Kalın kuyruklar tuttuğumuz gerçekçi bir bileşendir, ama — doğal bir ilk tahminin ve bu makalenin daha önceki bir taslağının aksine — tuzağı besleyen şey değildirler: bir Gauss-gürültü kontrolü (300 seed) burada %57.0'a karşı zamanın %55.7'sinde dejenere oluyor, örnek-dışı Sharpe 0.71'e karşı 0.70. Tuzak, kalın kuyruklarla ya da onlarsız hayatta kalan bir küçük-örneklem-artı-seçilim eseridir. Teslim edilecek şey teşhis ve onarım şablonudur, bir strateji ve evrensel bir sabit değil.
  • Onaran değerler ölçek-bağımlıdır. Tuzağı tamamen kapatan belirli taban emin=0.20e_{\min}=0.20 ve küçültme k=40k=40, bu veri-üretim sürecine — işlem sıklıklarına, kuyruk kalınlığına, avantaj büyüklüğüne — uydurulmuştur. Başka verilerde plato hareket eder. Aktaran şey, tarama yüzeyinin şeklidir (her iki düğmede tekdüze yükseliş, sıfıra dejenerelik, gerçekte oturan bir plato) ve kendi koordinatlarınızı bulma yöntemidir: ikisini birden tarayın ve yüzeyi okuyun, sayıları kopyalamayın.
  • conf_k bizim inşamızdır, isimli bir tahminci değil. İşlem-sayısı küçültmesi SR^n/(n+k)\widehat{SR}\cdot n/(n+k), bu problem için inşa ettiğimiz Bayesçi hassasiyet-ağırlıklı / empirik-Bayes-tarzı bir araçtır; gerekçesi doğrulanmış Lo/Mertens standart-hata sonucuna ve Bailey–López de Prado MinTRL'ine dayanır, ve en yakın isimli akrabası van Tharp'ın Sistem Kalite Sayısı'dır (Ntrade/σtrade\sqrt{N}\cdot \overline{\text{trade}}/\sigma_{\text{trade}}, farklı bir fonksiyonel biçim), ama n/(n+k)n/(n+k)'nin kendisinin literatürde bir isim altında göründüğünü iddia etmiyoruz. Yardımcı çareleri — maruziyet tabanı, tüm-zaman-çizelgesi ölçüm — kesin biçimde ifade edilmiş standart uygulamadır. Ve hangi objektiflerin burada zaten güvenli olduğuna dikkat edin: ham PnL ve tüm-zaman-çizelgesi Sharpe hiçbir zaman onarıma ihtiyaç duymadı, çünkü baştan maruziyet-farkındadırlar — o kadar ki tüm-zaman-çizelgesi Sharpe'ı tabana bağlamak, kazananı zaten herhangi bir makul tabanı geçen tüm-zaman-çizelgesi Sharpe'a indirgenir. Tuzak spesifik olarak işlem-başına / aktif Sharpe'tır — ve tamamen onarılmış işlem-başına objektif bile yalnızca tüm-zaman-çizelgesi Sharpe'ı eşliyor (OOS 1.70'e karşı 1.71), asla geçmiyor. Birincil ders onarım değildir; en baştan tüm zaman çizelgesinde ölçmektir.

Çıkarımlar

  1. Objektif bir karardır, bir formalite değil. Bir arama "iyi bir strateji" bulmaz — ona verdiğiniz skalerin maksimize edicisini bulur, ve farklı skalerler aynı veride birbirinden çılgınca farklı stratejiler seçer. Objektifi seçmek stratejiyi seçmektir; sonrasındaki her şey defter tutmadır. Bu Goodhart yasasıdır: metriğiniz aramanın hedefi haline geldiği anda, arama onunla kastettiğiniz şey arasındaki her boşluğu sömürecektir.
  2. İşlem-başına Sharpe bir tuzaktır. Yalnızca bir stratejinin işlem yaptığı barlarda ölçüldüğünde, mümkün olduğunca nadir işlem yaparak maksimize edilir — ne kadar az gözlem, birkaç şanslı hareketin oranı şişirmesi o kadar kolay (bir Gauss kontrolü, kalın kuyrukların gerekli olmadığını doğrular; bu bir küçük-örneklem-artı-seçilim etkisidir). 600 seed boyunca %5'in altında maruziyetli bir piyangoyu %56'sında seçer ve %57'sinde dejenere olur; tipik dejenere seçim, örnek-içi işlem-başına Sharpe'ta ortalama 4.58'dir. Kasıtlı olarak çarpıcı bir seed'de, 21.09'luk örnek-içi işlem-başına Sharpe kaydeden sekiz-işlemlik, %0.4-maruziyetli bir stratejiyi taçlandırdı, bu 0.13'lük bir tüm-zaman-çizelgesi örnek-dışı Sharpe'a çöktü. Sekiz gözlem üzerine kurulu bir oranın standart hatası yıllıklandırılmış yaklaşık ±7.7'dir (Perde 4) — hiçbir zaman bilgi olmadı.
  3. Maruziyet-farkında objektifler doğal olarak güvenlidir. Ham PnL ve tüm-zaman-çizelgesi Sharpe hiçbir zaman dejenere olmadı (%0), çünkü tüm zaman çizelgesini ölçüyorlar ve hareketsizlik otomatik olarak cezalandırılıyor. Nadir işlem yaparak tüm-zaman-çizelgesi bir metriği kandıramazsınız. Ham PnL'in tek kusuru ters önyargıdır — aşırı maruziyet yaratır (ortalama maruziyet 0.859, OOS 1.61'e karşı gerçek 1.77), θ\theta'yı optimumun ötesine, piyasada daha çok bulunmaya sürükler.
  4. Onarımlar işe yarıyor — ama sizi yalnızca tüm-zaman-çizelgesi Sharpe'a geri götürüyorlar. Bir maruziyet tabanı ve bir işlem-sayısı (conf_k) küçültmesi, her biri bağımsız olarak örnek-dışı Sharpe'ı yükseltiyor ve dejenereliği sıfıra sürüyor; birlikte bir platoya ulaşıyorlar. Ama o plato tüm-zaman-çizelgesi Sharpe'tır: dejenerelik (emin,k)=(0,0)(e_{\min},k)=(0,0)'daki %59.5'ten emin=0.20e_{\min}=0.20'ye kadar %0'a düşer ve OOS Sharpe 0.66'dan 1.71'e tırmanır — sade tam Sharpe'ın desteksiz kaydettiği tam sayı, ve tamamen onarılmış sağlam objektif aslında bunun biraz altında iniyor (OOS 1.70, %0.17 dejenerelik: zayıf biçimde domine edilmiş). Seed 6'da sağlam objektif, neredeyse-optimal, iyi maruziyetli bir eşiği geri kazanıyor (θ=0.979\theta = 0.979, gerçek 1.041.04'ün bir ızgara noktası altında; 447 işlem; OOS Sharpe 1.77). conf_k'yı, işlem-başına bir metrik size zorla dayatıldığında bir yedek olarak görün, tüm zaman çizelgesini ölçmeye karşı bir yükseltme olarak değil. Kesin koordinatlar ölçek-bağımlıdır; yüzeyin şekli aktarılabilir sonuçtur.
  5. Objektifi nadir şanslı işlemlerle kandırılamayacak şekilde tasarlayın. Tercih sırasına göre: tüm zaman çizelgesinde ölçün (varsayılan), maruziyet gerektirin (en güçlü tekil kaldıraç), işlem sayısına göre küçültün (objektif-düzeyinde Minimum Performans Kaydı Uzunluğu). Bunların hiçbiri aramayı daha zeki yapmaz — hedefi dürüst yaparlar, böylece aramanın kaçınılmaz olarak bulduğu maksimum, gerçekten işlem yapacağınız bir strateji olur.

Bir parametre araması itaatkâr bir cindir. Tam olarak ifade ettiğiniz dileği verir, kastettiğinizi değil — ve "bu metriği maksimize et" o dilektir. Onu işlem-başına bir Sharpe olarak ifade edin, sekiz şanslı işlem çağıracak ve buna bir servet diyecektir. Düz oturmanın cezalandırıldığı ve bir avuç işlemin yalnızca bir avuç kredi kazandığı şekilde ifade edin, ve aynı cin, aynı veride, size gerçek avantajı verir. Devreye soktuğunuz strateji, objektifi yazdığınız anda seçildi. Onu kasten seçin.

Tam deney — sentetik piyasa, altı objektif, 600-seed'lik Monte Carlo, ve onarım-tarama yüzeyi, her sayı tek bir deterministik betikten yeniden üretilebilir — objective-design.marketmaker.cc adresindeki tamamlayıcı makalede, kod ve veri ise github.com/suenot/objective-design-degeneracy adresinde.

Bu, diğer çalışmalarımızın farklı açılardan yürüttüğü aynı savaşın bir cephesi. Deflate Edilmiş Sharpe Oranı, çoklu testten sonra bir aramanın kazananını fiyatlandırır — bu makale objektifin doğru stratejiyi hiç seçip seçmediğini sorarken, DSR seçtiği stratejinin yalnızca şansın üreteceğini geçip geçmediğini sorar. Yaklaşan backtest aşırı uyum olasılığı çalışması, aynı seçilim yanlılığına yeniden-örnekleme tarafından saldırır, kazananı değil süreci puanlayarak. Ve look-ahead bias taksonomisi, sahte Sharpe'ın diğer büyük üreticisini — gelecekten bir sızıntı — kataloglar, ki bu tamamen farklı bir mekanizma üzerinden aynı belirtiyi (canlıda ölen muhteşem görünümlü bir backtest) üretir. Objektif tasarımı, deflasyon, aşırı uyum olasılığı, look-ahead: tek bir disiplinin dört adı — kendi backtest'iniz tarafından kandırılmamak.

Sorumluluk Reddi: Bu makalede sağlanan bilgiler yalnızca eğitim ve bilgilendirme amaçlıdır ve finansal, yatırım veya ticaret tavsiyesi niteliği taşımaz. Kripto para ticareti önemli bir kayıp riski içerir.

Yazarlar

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Piyasanın Önünde Olun

Özel yapay zeka ticaret içgörüleri, piyasa analizi ve platform güncellemeleri için bültenimize abone olun.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.