Bir günden üç sonuç, ve ancak birlikte anlam kazanıyorlar. Biri ayakta kaldı. Bir kuralın aylardır canlıda ters çalıştığı ortaya çıktı. Ve bir "geçti" tamamen gürültüydü — az kalsın bulgu diye yazacaktık.
Sistemimiz her 4 saatlik barı TREND_BOGA / TREND_AYI / RANGE / KAOS diye etiketliyor. Beklentimiz boğa etiketinin geç gelmesiydi — 4 saatlikte EMA200, 33 günlük bir ortalama demek; fiyat onu geçtiğinde hareketin çoğu bitmiş olmalı.
Yanılmışız. Etiket açıldığı anda, sonraki 24 barın getirisi %67.0 oranında pozitif, ortalama +%4.11. Hareket hâlâ sürüyor.
Bunun yerine bulduğumuz şey blok içindeki konum oldu. Her kesintisiz etiket bloğunu üçe böldüğümüzde:
| TREND_BOGA (126 blok) | TREND_AYI (173 blok) | |
|---|---|---|
| ilk üçte bir | %67.0 +%4.106 | %29.7 −%2.921 |
| orta üçte bir | %37.5 +%0.754 | %54.3 +%0.723 |
| son üçte bir | %24.8 −%2.342 | %72.2 +%4.780 |
42.2 puan, ayı etiketinde tam ayna (−42.5). Dairesel kaydırma null'ı: p = 0.0000, null ortalaması 5.25, %95 dilimi 13.32.
Akla gelen ilk itiraz tautoloji. Blok, etiket değiştiğinde biter — ki bu tanımı gereği fiyatın döndüğü andır; o sınırı aşan bir ileri pencere dönüşü bedavaya yakalar. Bu yüzden ileri getiriyi blok içinde kalacak şekilde kırptık: 42.2 → 39.3 puan, %93'ü hayatta kaldı. Sınır artefaktı değil.
Uygulama denetimleri: ADX/DI, ta kütüphanesiyle adx>20 VE +DI>−DI kararında 440/440 barda uyuşuyor; yeniden hesaplanan etiket canlı değerle 5/5 sembolde aynı.
Ama bu işlem yapılabilir değil — sebebi sonraki bölümde.
Blok içi konum ancak geriye dönük bilinir. Canlıda kullanmak için bloğun ömrünü açıldığı anda tahmin etmek gerekir. İki kez denedik.
Birinci deneme — açılış özelliklerinden log(ömür) tahmini. Örneklem dışı R² = −0.0903. Aşırı uydurma değil: tek değişkene inmek durumu kötüleştiriyor (−0.2517). Asıl sebep ömrün kendisinin kayması — keşif penceresinde medyan 5 bar, doğrulamada 11. DI farkının havuzdaki 0.392'lik korelasyonu bölünmeye dayanmıyor.
İkinci deneme — ömür yerine uzun/kısa sınıflandırma. Sıralama tabanlı hedefler seviye kaymasına bağışık olmalı; gerçekten daha iyi bir fikirdi. Eşikler (Q1/Q3) yalnızca keşiften alındı — tüm örneklemden almak look-ahead olurdu.
Doğrulama AUC'si 0.6239 çıktı ve önceden yazdığımız 0.60 eşiğini geçti.
Sonra null:
gözlenen AUC : 0.6239
null %95 : 0.7692 ← null, gözlenenden YÜKSEK
p : 0.3415
Doğrulamada 48 blok var (39 uzun / 9 kısa) ve bu büyüklükte rastgele etiketler bile sık sık 0.77 veriyor. Kapı bize hiçbir şey söylemedi. O null olmasaydı bunu bulgu diye yazacaktık.
Keşif AUC'si 0.9068'e karşılık örneklem dışı 0.6239 — diğer işaret de bu.
Ayrı bir konu: kırılganlık skorumuz bir ML rejim-değişim olasılığıyla ayarlanıyor. Aylardır canlı olan iki kural:
prob > 0.6 ve sinyal rejimle aynı yönde → +10..+14 ("riskli")
prob < 0.3 ve sinyal rejimle aynı yönde → −7..−9 ("güvenli")
Bunun işe yarayıp yaramadığını hiç ölçmemiştik. Yaramıyor — zarar veriyor, delta_AUC −0.0213 kadar. Üstelik zarar sistematik: modifier'ı satırlar arasında permüte eden bir null ortalama −0.0048 veriyor, yani rastgele dağıtmak, gerçekte gittiği yerden daha az zarar verirdi (p = 0.0000).
Sebep, iki kuralın da ters yönü göstermesi:
| kural | iddia | gerçek isabet |
|---|---|---|
| prob > 0.6 | riskli | %37.8 (altındakiler %33.2) |
| prob < 0.3 | güvenli | %35.9 (%34.3'e karşı) — 1.6 puan fark |
Gerçek ilişki U şeklinde — uçlarda isabet yüksek, ortada düşük:
| olasılık | isabet | olasılık | isabet |
|---|---|---|---|
| 0.0–0.2 | %35.5 | 0.6–0.7 | %29.3 |
| 0.2–0.3 | %36.8 | 0.7–0.8 | %24.2 |
| 0.3–0.4 | %23.6 | 0.8–1.0 | %49.9 |
| 0.4–0.6 | %31.4 |
Hiçbir doğrusal eşik çifti bunu ifade edemez — kuralın yanlış ayarlanmış değil, ters olmasının sebebi bu.
Yukarıdaki her şey tüm örneklemden geldi. O sayılara bakarak yeni kural yazmak, düzeltmeyi sorunu ortaya çıkaran veriye uydurmak olurdu. Bu yüzden teşhis keşif sayıldı, üç aday doğrulama penceresine bakılmadan kilitlendi, ve eşikler teşhisten seçilmedi — 0.3 eski kuraldan geldi, 0.7 ve sabit 8 büyüklüğü beklenti dosyasına önceden yazıldı.
| aday | keşif | doğrulama |
|---|---|---|
| A_TERS | +0.0301 | −0.0061 işaret döndü |
| B_U_ŞEKLİ | +0.0188 | +0.0371 tuttu ve güçlendi |
| C_KAPALI | — | referans |
A keşifte en güçlü görünüyordu. Ayrık pencere olmasaydı canlıya aldığımız o olurdu.
B üç kapıyı da geçti. Bizi ikna eden denetim AUC'den tamamen bağımsızdı — doğrulama penceresinde uç grup %45.3 isabet veriyor (n=3096), orta grup %37.4 (n=1570); 7.9 puan fark.
Açıkça söylenmesi gereken bir şey var: kırılganlık skorunun kendisi ayırmıyor — ham AUC 0.5006, yani şans. B kırılganlığı düzeltmiyor; olasılığı doğru yönden okuyor.
İki sonuç yan yana durdu, ikisi de teknik olarak "geçiyor":
| gözlenen | null ort. | null %95 | |
|---|---|---|---|
| konum etkisi | 42.19 | 5.25 | 13.32 |
| yaşam döngüsü AUC | 0.624 | — | 0.769 |
Aynı kelime, iki farklı gerçek. Bu bizi tek kapı sandığımız üç şeyi ayırmaya itti:
Eşiği önceden seçmek hâlâ doğru disiplin. Ama eşik, ölçütün gürültü bandı bilinmeden seçilir — ve o bandı yalnızca null gösterir. Küçük bir doğrulama setinde band, eşiğin kendisinden geniş olabilir.
17 USDT paritesi, 4 saatlik barlar, 1000 bar (~167 gün), tek varlık sınıfı.
Modifier çalışması kendi sinyal arşivimizi kullanıyor: 160.545 satır, 2026-04-26 – 09-07, keşif/doğrulama bölmesi 08-17'de, yani doğrulama yalnızca üç hafta. İleri getiri 24 saat üzerinden ölçülürken modifier 4 saatlik döngüde uygulanıyor — çözmediğimiz bir ölçek uyumsuzluğu. Arşivde ayrıca filtrelemediğimiz 66 tokenleştirilmiş hisse senedi var.
Modifier'ın üçüncü kuralı (tahmini rejime bağlı olan) hiç ölçülemedi — arşivde tahmini-rejim kolonu yok — dolayısıyla canlıda ve test edilmemiş durumda.
Bir günde iki red — biri null'ını p=0.0000 ile geçti ve yine de reddedildi.
Neden hepsi aynı noktada düştü? — on dokuz aday, tek ortak kapı.