← Maqolalarga qaytish
July 5, 2026
5 daqiqa o'qish

Aniqlik darvozasi: agar arzon proksi konfiguratsiyalarni qimmat baholash kabi saralamasa, yirikdan-nozikkacha bektest sizni tezroq aldaydi

Aniqlik darvozasi: agar arzon proksi konfiguratsiyalarni qimmat baholash kabi saralamasa, yirikdan-nozikkacha bektest sizni tezroq aldaydi
#algotreyding
#bektest
#ko'p-aniqlikli
#hyperband
#ASHA
#ketma-ket ikkiga bo'lish
#ortiqcha moslashuv
#validatsiya
Part 6 of 10 · Collection
High-Performance Backtest Engines

"Illyuziyasiz bektestlar" turkumining bir qismi.

Har qanday jiddiy parametr qidiruvi bir xil devorga uchraydi: fazo ulkan, har bir halol baholash esa qimmat. O'nlab chegara qiymatlari va uchta indikator davriga ega ko'p-taymfreymli strategiya, ko'p-fold walk-forward bo'linishi bo'yicha baholanganda, har bir konfiguratsiya uchun soniyalarni yeyishi mumkin. O'n ming konfiguratsiya esa soatlab vaqt demak. Shu sababli qisqa yo'l qidirasiz, va bu qisqa yo'l har doim bitta g'oyaga tayanadi: arzon baholang, faqat omon qolganlarni qimmat testga o'tkazing. O'n ming konfiguratsiyani bitta fold'da saralang, eng yaxshi bir necha yuztasini qoldiring, ularni esa barcha fold'larda ishga tushiring. Soatlik shamlarda saralang, faqat finalistlar uchun 1 soniyalik darajagacha chuqurlashtiring.

Bu yirikdan-nozikkacha qidiruv — chuqurlashtirish, ko'p-aniqlikli qidiruv, ketma-ket ikkiga bo'lish, Hyperband, ASHA — va bu optimallashtirishdagi haqiqatan yaxshi g'oyalardan biri. U bir kunlik hisoblashni bir soatga aylantira oladi. Biz undan foydalanamiz. Ammo u shu qadar sezilmas tuzoqni yashiradiki, undan foydalanuvchilarning ko'pchiligi hech qachon buni tekshirmaydi, va tuzoq shundan iborat: butun metod sizning arzon proksingiz konfiguratsiyalarni xuddi qimmat baholash kabi saralaydi, deb faraz qiladi. Agar bu unday bo'lmasa, siz tezroq qidirmayapsiz. Siz kelajakdagi g'oliblaringizni birinchi darvozadayoq tashlab yuboryapsiz va shovqinni oldinga surayapsiz — siz shunchaki o'zingizni tezroq aldayapsiz.

Ushbu maqola chuqurlashtirishingiz haqiqiymi yoki xayolmi ekanligini ko'rsatadigan yagona o'lchov haqida. Biz buni o'zimizning ko'p-taymfreymli qidiruvimizda sinab ko'rdik, va javob noqulay bo'ldi: eng arzon aniqlik darajasida bizning proksimiz konfiguratsiyalarni deyarli tasodifiy saraladi (Spearman ρ ≈ 0.03). Agar biz o'sha aniqlik darajasida tajovuzkorona budagan bo'lsak — har qanday tayyor ASHA'ning standart sozlamasi taklif qilganidek — biz oxir-oqibat g'olib bo'ladigan konfiguratsiyalarni birinchi bosqichdayoq tashlab yuborgan bo'lar edik. Yechim — qidiruvdan oldin ishga tushadigan majburiy darvoza: daraja korrelyatsiyasini o'lchang va u ishonchli bo'lgan aniqlik darajasidan pastda budashdan bosh torting.

Ko'p-aniqlikli qidiruv aslida nima

Yirikdan-nozikkacha qidiruv kaskadi: chapda minglab arzon, past aniqlikdagi konfiguratsiyalar keng saralanadi, faqat eng yaxshi omon qolganlar tobora qimmatlashib boruvchi to'liq baholashlar orqali o'ngga qarab ko'tariladi — ketma-ket ikkiga bo'lish keng zumrad rangli nomzodlar maydonini bir nechta yorqin finalistgacha toraytiradi

Bu metodlar oilasi yagona shaklga ega. Siz aniqlik darajasini belgilaysiz (resurs yoki byudjet deb ham ataladi) — bu arzondan qimmatgacha bo'lgan tumbler bo'lib, maksimal holatda haqiqiy maqsad funksiyasini beradi. Keyin konfiguratsiyalarni past aniqlikda ishga tushirasiz, ularni saralaysiz, eng yaxshi qismini qoldirasiz va faqat o'sha omon qolganlarni yuqoriroq aniqlikda qayta ishga tushirasiz — bu esa kichik sonli finalistlar to'liq aniqlikda baholanguncha takrorlanadi.

Ketma-ket ikkiga bo'lish (Jamieson & Talwalkar, 2016) — bu yadro: N ta konfiguratsiyani minimal resurs bilan boshlang, eng yaxshi 1/η qismini qoldiring, resursni η ga ko'paytiring, takrorlang. Hyperband (Li et al., 2018) ketma-ket ikkiga bo'lishni tashqi tsiklga o'raydi, bu esa turli boshlang'ich resurslar bo'yicha xavfni taqsimlaydi, shunda qanchalik tajovuzkorona budash kerakligini taxmin qilishga hojat qolmaydi. ASHA (Li et al., 2020) — bu asinxron, parallel ishlashga qulay versiya. Yo'q qilish tezligi η — ularning umumiy yagona sozlamasi; kanonik standart qiymat η = 3 — har bir pog'onada yuqori uchdan bir qismini qoldirish, byudjetni uch baravar oshirish.

Aniqlik darajasining o'zi haqiqatga yaqinlashadigan, arzondan qimmatgacha bo'lgan deyarli har qanday narsa bo'lishi mumkin:

  • Walk-forward fold'lar soni. 1 ta fold'da baholang, keyin 2 ta, keyin 3 ta, K tagacha. Bu quyida biz o'rganadigan aniqlik darajasi, chunki u aylanma out-of-sample bo'linishga ega bektest uchun tabiiy hisoblanadi.
  • Sham rezolyutsiyasi. 1 soatlik barlarda saralang, 1 daqiqagacha o'tkazing, faqat finalistlar uchun 1 soniyagacha yoki xom bitimlargacha chuqurlashtiring. Bu adaptiv chuqurlashtirish g'oyasining, buyurtma bajarilishi simulyatsiyasi o'rniga, qidiruvga qo'llanilishi.
  • Tarix uzunligi, epoxalar, ma'lumotlar to'plami subsampli — klassik ML aniqlik darajalari.

Bektestda fold'lar va rezolyutsiya muhim bo'lgan ikkita omil, va — bu butun maqolaning asosiy nuqtasi — ular bir xil darajada xavfsiz emas. Ulardan birida noto'g'ri parametrlarni sezilmagan holda tanlaydigan siljish (bias) bor, buni qanchalik ehtiyotkorlik bilan darvozadan o'tkazmang, baribir shunday.

Hamma narsa tayanadigan yagona faraz

Chuqurlashtirishning sokin qulashi: arzon, past aniqlikdagi reyting qimmat, to'liq reyting bilan mos kelmaydi, shu sababli haqiqiy zumrad rangli g'oliblar birinchi darvozadayoq budaladi, qizil-to'q sariq shovqin esa yuqoriga ko'tariladi — va hech qanday xato hech qachon chiqmaydi

Ketma-ket ikkiga bo'lish to'g'ri ishlashi uchun aslida nima kerakligini yozib qo'yaylik. Unga arzon aniqlik darajasi to'g'ri maqsad qiymatini berishi shart emas — bitta fold oltita fold'dan farqli Sharpe ko'rsatishi hech kimni qiziqtirmaydi. Unga zaifroq, lekin ancha aniqroq narsa kerak: arzon aniqlik darajasi konfiguratsiyalarni xuddi qimmat daraja kabi saralashi kerak. Agar A konfiguratsiyasi to'liq aniqlik darajasida B'dan ustun bo'lsa, A past aniqlik darajasida ham B'dan ustun bo'lishga moyil bo'lishi kerak. Hammasi shu. Va bu — hammasi ham.

Rasmiy jihatdan, chuqurlashtirish ishlash-ishlamasligini belgilaydigan kattalik — konfiguratsiya fazosi bo'yicha past aniqlik va yuqori aniqlikdagi maqsad funksiyasi orasidagi daraja korrelyatsiyasidir. Agar bu korrelyatsiya yuqori bo'lsa, arzon bosqichdan omon qolganlar qimmat bosqichda ham g'olib chiqadigan xuddi o'sha konfiguratsiyalar bo'ladi, va siz hisoblash resursini bepulga tejagan bo'lasiz. Agar u past bo'lsa, arzon bosqich tasodifiy filtrga aylanadi: u yaxshi konfiguratsiyalarni tashlab yuboradi va yomonlarini ko'taradi, siz esa byudjetingizni yomonroq javobga tezroq yetib borish uchun sarflagan bo'lasiz. Sizni qutqaradigan η'ning o'rtacha sozlamasi yo'q — yomon proksi yumshoq budalganda ham g'oliblarni yo'qotadi; tajovuzkorona budalganda esa ularni butunlay yo'q qiladi.

Bu xatolik odatdagidek ko'zga ko'rinmaydi. Qidiruv tugaydi, chempionni e'lon qiladi, chempion in-sample'da yaxshi ko'rinadi. Hech qanday xato chiqmaydi. Proksi yolg'on gapirganini siz faqat chempion out-of-sample'da parchalanib ketganda bilib olasiz — va o'shanda siz muvaffaqiyatsizlikni strategiyaga bog'laysiz, uni tanlagan qidiruvga emas. Shu sababli intizom bu turkum doim kelib chiqadigan xuddi o'sha narsa: metod nimani faraz qilsa, o'shani metodga ishonishdan oldin o'lchang. Chuqurlashtirish uchun o'lchanadigan narsa — daraja korrelyatsiyasi, va bu o'lchov arzon.

Buni o'lchash: aniqlik darvozasi

Nazorat nuqtasi sifatida aniqlik darvozasi: har qanday pog'onaga ishonishdan oldin, taxminan ikki yuzta tasodifiy konfiguratsiya har bir aniqlik darajasida baholanadi va arzon proksi bilan to'liq baholash orasidagi daraja korrelyatsiyasi yorqin darvozada o'lchanadi — bu darvoza faqat ikkala reyting bir-biriga mos kelgandagina ochiladi

Darvoza — bu siz qidiruvdan oldin, siz qidirmoqchi bo'lgan xuddi o'sha fazoda bir marta o'tkazadigan kichik tajriba. Tartib quyidagicha:

  1. Parametr fazosidan bir necha yuzta konfiguratsiyani tasodifiy tanlang (biz ~200 tadan foydalanamiz — barqaror Spearman bahosi uchun yetarli, va sarflashga arziydigan darajada arzon).
  2. Har birini har bir aniqlik pog'onasida baholang: 1 fold'da, 2 fold'da, … to'liq K fold'gacha. Fold-soni aniqlik darajasi uchun bu deyarli bepul, chunki arzon pog'onalar uchun hisoblagan fold'laringiz qimmat pog'onada qayta ishlatiladi — kumulyativ o'rtacha.
  3. Har bir r pog'onasi uchun, o'sha ~200 ta konfiguratsiya bo'yicha r-fold reytingi bilan to'liq K-fold reytingi orasidagi Spearman daraja korrelyatsiyasini hisoblang.
  4. ρ chegara qiymatidan oshadigan birinchi pog'ona (biz ρ ≥ 0.5 dan foydalanamiz) — bu sizga budashga ruxsat etilgan eng past aniqlik darajasi. Undan pastda reyting ishonish uchun juda shovqinli; u yerda konfiguratsiyalarni yo'q qilmasligingiz kerak.

Bularning barchasi bir necha o'nlab qatordan iborat. Uning yuragi:

def fidelity_check(cache, n_probe, seed=7):
    """Spearman ρ: cumulative mean over the first r folds (in FOLD_ORDER)
    vs the full K-fold objective, on n_probe random configs."""
    rng = np.random.default_rng(seed)
    k = len(FOLDS)
    per_fold = np.empty((k, n_probe))
    order_win = np.array([list(FOLDS[fi]) for fi in FOLD_ORDER], np.int64)
    for j in range(n_probe):
        p = _unit_to_params(rng.random(len(PNAMES)))       # random config
        scores, *_ = eval_group(cache, p, _sp_of(p)[None, :], order_win, False)
        per_fold[:, j] = scores[0]                          # score on each fold
    cums = np.cumsum(per_fold, axis=0) / np.arange(1, k + 1)[:, None]  # r-fold mean
    rhos = []
    for r in range(1, k):
        rho = spearmanr(cums[r - 1], cums[-1]).statistic    # r folds vs all K
        rhos.append(0.0 if math.isnan(rho) else rho)
    return rhos

Bitta ataylab qilingan tafsilotga e'tibor bering: fold'lar FOLD_ORDERda, ya'ni kalendarning ilk va so'nggi bo'laklarini navbatlashtiradigan interleaved (aralashtirilgan) tartibda olinadi (0-fold, keyin o'rta fold, keyin 1-fold, keyin keyingi fold, …). Bu juda muhim va keyingi bo'limning mavzusi bo'ladi: bu shuni anglatadiki, "1 fold" — bu tarixning o'rtasini qamrab oluvchi bitta bo'lak, "2 fold" esa bitta ilk va bitta so'nggi bo'lak — hech qachon uzluksiz yaqin oyna emas. Arzon aniqlik darajasi kamroq fold ishlatish orqali arzonlashadi, yaqinroq fold'lar orqali emas.

Natijalar: bitta fold deyarli tasodifiy saralaydi

Fold soni bilan ortib boruvchi daraja korrelyatsiyasi: bitta fold'da tanga tashlashga o'xshash tarqoqlikdan boshlanib, beshta fold'gacha deyarli mukammal moslikka tikka ko'tariladigan Spearman rho egri chizig'i, o'rta nuqta bo'ylab chizilgan gorizontal darvoza chizig'i bilan — undan pastda budash taqiqlangan, yuqorisida esa ruxsat etilgan

Mana, ikkita ko'p-taymfreymli sozlamamizda ishga tushirilgan darvoza nima haqida xabar berdi. Bu raqam — ~200 ta tasodifiy konfiguratsiya bo'yicha r-fold reytingi va to'liq K-fold reytingi orasidagi Spearman ρ — arzon aniqlikdagi reyting to'liq aniqlikdagi reytingni qanchalik ishonchli bashorat qilishini ko'rsatadi.

Fold'lar r Ko'p-TF sinov Qattiqroq rejim
1 +0.43 +0.03
2 +0.67 +0.43
3 +0.78 +0.78
4 +0.82
5 +0.91 +0.91

Avval qattiqroq rejim ustunini o'qing, chunki u xavotirlanarlisi. Bitta fold'da ρ = 0.03. Bu zaif korrelyatsiya emas; bu — hech qanday korrelyatsiya yo'qligi degani — ikki yuzta konfiguratsiyaning bitta fold bo'yicha reytingi ularni aralashtirib tashlashdan statistik jihatdan farq qilmaydi. min_resource = 1 da budashni boshlash uchun sozlangan (aksariyati standart bo'yicha shunday) ketma-ket ikkiga bo'lish jarayoni bu rejimda birinchi va eng tajovuzkor kesishni tanga tashlash asosida amalga oshiradi. To'liq aniqlik darajasida oxir-oqibat g'olib bo'ladigan konfiguratsiyalarning birinchi bosqichda omon qolish ehtimoli 50/50. Reyting biror ma'noga ega bo'ladigan aniqlik darajasiga (uchta fold'da ρ = 0.78) yetguningizcha, ularning aksariyati allaqachon yo'qolgan bo'ladi.

Ko'p-TF ustuni yumshoqroq, ammo xuddi shu fikrni boshqacha tarzda ko'rsatadi. U yerda ham bitta fold ρ = 0.43 beradi — bu bizning 0.5 darvozamizdan past. Bu munosib korrelyatsiyaga o'xshaydi, va xavf aynan shunda: 0.43 sizni ovutish uchun yetarlicha yuqori, va eng yaxshi konfiguratsiyalaringizni oqizib yuborish uchun yetarlicha past. Reyting faqat ikkita fold'da (ρ = 0.67) ishonchli bo'lib qoladi.

Bundan ikkita umumiy xulosa chiqadi. Birinchidan, bitta fold'dagi ρ rejimga bog'liq va ishonchsiz — biz turli sozlamalarda 0.03 dan 0.43 gacha o'lchadik, va hech bir holatda bitta fold chegaradan o'tmadi. Ikkinchidan, ρ monoton va tez o'sadi: uchta fold'da ikkala sozlama ham 0.78 da, beshta fold'da esa 0.91 ga yaqinlashadi. Signal o'sha yerda mavjud; siz uni ko'rish uchun shunchaki yetarlicha aniqlik darajasini sarflashingiz kerak. Darvozaning vazifasi — "yetarli" boshlanadigan aniq pog'onani topish va undan pastda budashni taqiqlashdir.

Nega bitta fold bunchalik shovqinli

Bu shovqin bizning fold tuzilishimizdagi xato emas; u tabiatan shunday, va buning sababini tushunish sizni uni noto'g'ri yo'l bilan "tuzatish"dan saqlaydi. Yagona walk-forward fold — bu qisqa oyna: bitta bozor rejimining bir necha haftasi. Strategiyaning shu oynadagi bahosi asosan uning parametrlari o'sha rejimga qanchalik mos kelib qolgani bilan belgilanadi, bu esa ularning umumlashuv qobiliyatiga juda zaif bog'liq. Sifat jihatidan haqiqatan farq qiladigan ikkita konfiguratsiya bitta fold'da faqat biri o'sha fold'da tasodifan uchragan trendni ushlab qolgani sababli o'rin almashishi mumkin. Bitta fold'dagi maqsad funksiyasi siz haqiqatan qiziqadigan maqsad funksiyasining yuqori dispersiyali bahosidir, daraja korrelyatsiyasi esa aynan yuqori dispersiya birinchi navbatda yo'q qiladigan narsadir — siz bahoning o'rtachasini saqlab qolishingiz mumkin, shu bilan birga uning reytingi sof shovqin bo'lishi mumkin.

Fold'larni qo'shish bu dispersiyani o'rtachalashtirib pasaytiradi. Har bir fold bozor sharoitlarining qisman mustaqil namunasidir; r-fold o'rtachasi pastroq dispersiyali baho bo'lib, uning reytingi to'liq aniqlik darajasidagi reytingga yaqinlashadi. Aynan shu narsa ρ = 0.03 → 0.43 → 0.78 → 0.91 ko'tarilishini ta'minlaydi: bu maqsad funksiyasining o'zgarishi emas, balki rejimga xos omad o'rtachalashib ketishi bilan uning daraja bahosi barqarorlashuvidir. Bundagi saboq shuki, bektest uchun aniqlik darajasi asosan siz namuna olgan mustaqil rejimlar soniga bog'liq — va reyting qilish uchun bittasi deyarli hech qachon yetarli emas.

Bu, shuningdek, nega qattiqroq rejim 0.03 dan boshlanib, ko'p-TF sinovi 0.43 dan boshlanishini ham tushuntiradi. Qattiqroq rejimda yagona fold ko'proq rejimga xos xususiyatga ega — konfiguratsiyalarning bitta fold'dagi bahosi ko'proq omadga, kamroq barqaror ustunlikka bog'liq, shu sababli ular tasodifiyga yaqinroq saralanadi. Darvoza bu farqni avtomatik o'qiydi va budashdan oldin ko'proq fold talab qilish orqali javob beradi. Qaysi rejimda ekanligingizni oldindan bilishingiz shart emas — siz shunchaki o'lchaysiz.

Kodda darvoza: minimal aniqlik darajasini avtomatik ko'tarish

Darvozaning natijasi bitta butun son: min_resource — ASHA'ga budashga ruxsat etilgan eng past aniqlik darajasi. Qoida mexanik: pog'onalar bo'ylab yuring, ρ chegaradan oshgan birinchisini oling:

RHO_GATE = 0.5
min_res = len(FOLDS)                      # default: pruning OFF (full fidelity)
rhos = fidelity_check(cache, n_probe=200) # [ρ@1, ρ@2, …, ρ@(K-1)]
passing = [r for r, rho in enumerate(rhos, 1) if rho >= RHO_GATE]
if passing:
    min_res = passing[0]                  # first rung that clears the gate

pruner = SuccessiveHalvingPruner(min_resource=min_res, reduction_factor=3)

Buni ikkala sinov orqali kuzatib boring. Ko'p-TF sozlamasida ρ@1 = 0.43 darvozadan o'tolmaydi, lekin ρ@2 = 0.67 undan o'tadi, shu sababli min_resource avtomatik ravishda 2 ga ko'tariladi: ASHA hech narsani yo'q qilishga ruxsat berilishidan oldin har bir konfiguratsiyani kamida ikkita fold'da ishga tushiradi, keyin esa u yerdan boshlab odatdagidek budaydi. Qattiqroq rejimda ρ@1 = 0.03 va ρ@2 = 0.43 ikkalasi ham o'tolmaydi; ρ@3 = 0.78 birinchi bo'lib o'tadi, shu sababli min_resource 3 ga aylanadi. Va eng muhim zaxira variant: agar hech qanday pog'ona 0.5 ga yetmasa, passing bo'sh bo'ladi va min_resource K'da qoladi — budash butunlay o'chiriladi, va qidiruv tez, lekin noto'g'ri qidiruv o'rniga oddiy to'liq-aniqlikdagi qidiruvga muloyimlik bilan tushib qoladi. Proksisini isbotlay olmaydigan chuqurlashtirish shunchaki budashdan bosh tortadi.

Bu — butun falsafa bitta boshqaruv oqimi qatorida. Har qanday ketma-ket ikkiga bo'lish kutubxonasining standarti — "min_resource = 1 dan budang, arzon pog'onaga ishoning". Darvoza buni "ma'lumotlar ishonchli deb ko'rsatgan birinchi pog'onadan budang, agar bunday pog'ona bo'lmasa, budamang" bilan almashtiradi. Bu oldindan bitta ~200 konfiguratsiyalik sinov narxiga tushadi va chuqurlashtirishni ishonch aktidan o'lchangan qarorga aylantiradi. Yo'q qilish tezligi η = 3 o'zgarishsiz qoladi; darvoza siz qanchalik qattiq budashingizga tegmaydi, faqat qanchalik erta boshlashingizga ruxsat berilishiga ta'sir qiladi.

Yuqoridagi kodda ko'rinib turgan bitta halollik bo'yicha eslatma: min_resourceni ko'tarish tezlashuvni yeydi. 1 ta o'rniga 3 ta fold'da budash — har bir konfiguratsiya, shu jumladan siz tashlab yuboradiganlari ham, uchta fold uchun to'laydi degani. Bu to'g'rilikning narxi, va bu to'g'ri almashuv: haqiqiy g'oliblarni topadigan qidiruvda 2 baravar kichikroq tezlashuv, ularni tashlab yuboradigan qidiruvdagi 6 baravar tezlashuvdan yaxshiroqdir. Darvoza bu almashuvni yashirish o'rniga ochiq-oydin qiladi.

Noto'g'ri arzon o'q: qisqaroq tarix — bu tuzoq

Jozibali, aniq va siljigan (biased) arzon aniqlik darajasi mavjud, va uni nomi bilan atash kerak, chunki hamma birinchi navbatda unga qo'l uradi: qisqaroq tarix. Konfiguratsiyalarni so'nggi bir oyda saralang, omon qolganlarni to'liq ikki yilga o'tkazing. Bu bir qarashda arzon va kamroq fold'lar bilan bir xil g'oyaga o'xshaydi. Ammo unday emas.

Kamroq fold'lar va qisqaroq tarix bir hal qiluvchi jihat bilan farq qiladi. To'g'ri bajarilgan fold-soni aniqlik darajasi baribir butun kalendarni qamrab oladi — u faqat uni yiriqroq namuna oladi. Qisqaroq tarix aniqlik darajasi esa kalendarning bir bo'lagini zich namuna oladi. Bozor tarixining bir bo'lagi esa muayyan rejimdir. Konfiguratsiyalarni so'nggi bir oy bo'yicha saralganingizda, siz ularning to'liq davr bo'yicha reytingining shovqinli-lekin-siljimagan bahosini olmayapsiz; siz so'nggi oy rejimiga moslashtirilgan konfiguratsiyalarni tizimli ravishda afzal ko'radigan siljigan baho olayapsiz. Namuna hajmini xohlagancha oshiring — ko'proq konfiguratsiya, ko'proq sinov bo'yicha o'rtachalang — siljish kichraymaydi, chunki bu dispersiya emas. Siz saralash oynasiga eng yaxshi mos keladigan konfiguratsiyalarni ko'tarasiz, va aynan ular o'tkinchi rejimga ortiqcha moslashgan bo'lish ehtimoli eng yuqori bo'lganlaridir.

Aynan shuning uchun bizning aniqlik darajamiz fold'larni xronologik tartibda emas, balki interleaved (aralashtirilgan) tartibda o'tadi. Butun tarix bo'yicha tarqalgan K ta fold bilan, "1 fold" o'rtaga yaqin bitta bo'lak, "2 fold" bitta ilk va bitta so'nggi bo'lak, "3 fold" esa ilk/o'rta/so'nggi bo'yicha tarqaladi — har bir aniqlik darajasi, hatto eng arzoni ham, butun kalendar bo'yicha namuna oladi. Arzon proksi butun davrning yirik ko'rinishi, uning bir bo'lagining aniq ko'rinishi emas. Aynan shu aralashtirish fold-soni aniqlik darajasini siljigan (buni hech qanday darvoza tuzata olmaydi — siljigan maqsadga qarshi yuqori ρ shunchaki rejimga mos konfiguratsiyani ishonchli tanlashingizni tasdiqlaydi) emas, balki faqat shovqinli (buni darvoza davolay oladi) qiladi. Agar aniqlik darajasini arzonlashtirishning yagona yo'li uni yaqinroq qilish bo'lsa, sizda haqiqiy aniqlik darajasi yo'q. Buning o'rniga uni yiriqroq qiling.

Rezolyutsiya — halol arzon o'q sifatida

Boshqa arzon o'q siljishdan butunlay qochadi, va u biz buyurtma bajarilishi simulyatsiyasi uchun ta'riflagan adaptiv chuqurlashtirishning tabiiy hamkoridir: sham rezolyutsiyasi. Butun fazoni 1 soatlik barlarda saralang, omon qolganlarni 1 daqiqagacha o'tkazing va faqat bir necha finalist uchun 1 soniyagacha yoki xom bitimlargacha chuqurlashtiring. Xuddi shu to'liq tarix bo'yicha yiriqroq shamlar baholash uchun arzonroq — kamroq bar, tezroq indikator hisoblash, tezroq simulyatsiya — va qisqaroq oynadan farqli o'laroq, butun kalendarning yirik ko'rinishi siljimagan: u har bir rejimni ko'radi, faqat bar ichidagi tafsilot kamroq.

Rezolyutsiya va fold'lar bir-birini to'ldiruvchi aniqlik o'qlaridir, va aniqlik darvozasi ikkalasiga ham qo'llaniladi. 1 soatlik saralashga ishonishdan oldin xuddi shu sinovni o'tkazing: ~200 ta konfiguratsiyani oling, ularni 1 soat va 1 daqiqada baholang va daraja korrelyatsiyasini o'lchang. Agar ρ(1 soat, 1 daqiqa) yuqori bo'lsa, soatlar bo'yicha saralash xavfsiz va siz katta tezlashuvni halol yo'l bilan qo'lga kiritgansiz. Agar u past bo'lsa — bu strategiyaning ustunligi soatlik shamlar yo'qotib yuboradigan bar ichidagi tuzilmada yashaganda yuz beradi — u holda soatlik saralash bu strategiya uchun tasodifiy filtr, va darvoza sizga nozikroq boshlashni aytadi. Qoida hech qachon o'zgarmaydi: siz aniqlik darajasida faqat uning reytingi haqiqat bilan mosligini o'lchagandan keyingina budashga ruxsat etilasiz.

Bu ikki o'q, shuningdek, qarama-qarshi tarzda muvaffaqiyatsizlikka uchraydi, bu esa foydali. Yirik rezolyutsiya bar ichidagi ma'lumotni yo'qotadi; kamroq fold esa rejimlararo ma'lumotni yo'qotadi. Kunlik gorizontdagi momentum strategiyasi soatlik shamlarda mukammal saralanishi mumkin, lekin rejim omadini o'rtachalashtirish uchun ko'p fold talab qilishi mumkin; skalping strategiyasi esa kam fold'da yaxshi saralanishi mumkin, lekin 1 soniyadan yuqori rezolyutsiyada parchalanib ketishi mumkin. Har bir o'q bo'yicha alohida ishga tushirilgan darvoza sizga shu strategiya uchun qaysi aniqlik darajasida arzon bo'lishga haqqingiz borligini aytadi — qulay bo'lib tuyuladigan javobni taxmin qilish o'rniga.

Tejash aslida qayerdan kelib chiqadi

Chuqurlashtirishni halol saqlaydigan bitta ogohlantirish: aniqlik darajasi hisoblashni faqat xarajat haqiqatan mavjud bo'lgan joyda tejaydi. Bizning ko'p-taymfreymli dvigatelimizda qimmat qism — indikatorlarni oldindan hisoblash, ya'ni ko'p-taymfreymli HMA va ajralish signallari — bu har bir konfiguratsiya uchun bir marta, har qanday fold ishga tushishidan oldin to'lanadi. Keshlangan signallar bo'yicha har-fold simulyatsiyasi nisbatan arzon. Shu sababli fold soni bo'yicha budash faqat simulyatsiya xarajatini tejaydi, ustunlik qiluvchi indikator xarajatini emas; fold-soni aniqlik darajasi haqiqiy, lekin uning shifti xom fold nisbati taklif qilganidan pastroq.

Rezolyutsiya o'qi esa, aksincha, ustunlik qiluvchi xarajatga bevosita hujum qiladi: yiriqroq shamlar indikatorlarni hisoblash uchun kamroq bar degani, shu sababli qimmat oldindan hisoblash ham, arzon simulyatsiya ham birgalikda qisqaradi. Bu tafsilot emas — bu qaysi chuqurlashtirishni qurishga arzishini hal qiladi. Ko'p-aniqlikli qidiruvga sarmoya kiritishdan oldin, soniyalaringiz qayerga ketayotganini so'rang. Agar 90% fold'lar orasida bo'lishiladigan indikator oldindan hisoblashi bo'lsa, fold-soni aniqlik darajasi sizga ozgina foyda beradi, rezolyutsiya aniqlik darajasi esa ko'p foyda beradi. Avval profillashtiring; to'g'ri arzon o'q — bu siz haqiqatan ega bo'lgan xarajatni yo'q qiladigan o'q, va u baribir darvozadan o'tishi kerak.

Bu qayerga bog'lanadi

Aniqlik darvozasi ushbu turkumning bektest gigienasi zanjirida muayyan nuqtada joylashadi:

  • U ortiqcha moslashuvni nazorat qilishdan yuqorida turadi. Yomon proksi bo'yicha budaydigan chuqurlashtirish ortiqcha moslashuvning yangi turi — siz shovqinli erta pog'onaga finalistlaringizni tanlashga ruxsat beryapsiz. Chempion baribir Deflated Sharpe va PBOdan omon chiqishi kerak, va bu darvozalarni oziqlantiradigan sinovlar soni har bir budalgan sinovni ham o'z ichiga olishi kerak, nafaqat omon qolganlarni — budash sinovni ko'p martalik test hisobidan ozod qilmaydi.
  • U plato tahlili bilan bir xil dushmanga ega: bitta fold'da yoki bitta saralash oynasida g'olib bo'lib, boshqa hech qayerda g'olib bo'lmaydigan konfiguratsiya — bu ikkala vosita ham rad etish uchun mo'ljallangan xuddi o'sha rejimga-mos artefakt. Darvoza bunday fold asosida tanlashdan bosh tortadi; plato tahlili esa faqat bittasiga tayangan chempionga ishonishdan bosh tortadi.
  • U asosida halol walk-forward bo'linishini nazarda tutadi — butun kalendarni qamrab oluvchi fold'lar, chetga qo'yilgan out-of-sample — va bu biz buyurtma bajarilishi simulyatsiyasi uchun qurgan chuqurlashtirishning qidiruv-vaqtidagi hamkoridir: xuddi shu yirikdan-nozikkacha printsip, qanchalik aniq bajarish o'rniga qaysi konfiguratsiyalarni baholashga qo'llanilgan.
  • Va u aniqlik darajasining har bir pog'onada oqishsiz bo'lishiga to'liq bog'liq. Agar arzon pog'onada qimmat pog'onada bo'lmagan oldinga qarash xatoligi bo'lsa, ρ ifloslangan maqsad bilan moslikni o'lchaydi va darvoza oqishni tasdiqlaydi. Daraja korrelyatsiyasini o'lchang, ha — lekin halol maqsad funksiyasi ustida.

Birlashtiruvchi g'oya, yana bir bor, bu turkum takrorlashni to'xtatmaydigan xuddi o'sha g'oya: bektest — bu statistik tajriba, va undagi har bir qisqa yo'l siz sinashga majbur bo'lgan gipotezadir. Chuqurlashtirishning gipotezasi — "arzon reyting ≈ qimmat reyting". Bu ~200 ta konfiguratsiyada sinaladigan narsa. Uni sinang.

Xulosalar

  1. Yirikdan-nozikkacha qidiruv bitta farazga tayanadi: arzon proksi konfiguratsiyalarni xuddi qimmat proksi kabi saralaydi. Bir xil qiymat emas — bir xil reyting. Agar daraja korrelyatsiyasi past bo'lsa, tajovuzkorona budash kelajakdagi g'oliblaringizni tashlab yuboradi va shovqinni ko'taradi. Siz yomonroq javobga tezroq qidirasiz.
  2. Ishonishdan oldin o'lchang. ~200 ta tasodifiy konfiguratsiyani tanlang, ularni har bir aniqlik pog'onasida baholang va har bir arzon pog'ona bilan to'liq aniqlik reytingi orasidagi Spearman ρ'ni hisoblang. Bu bir necha o'nlab qator va bitta arzon sinov.
  3. Bitta fold deyarli tasodifiy saralaydi. Biz ρ@1'ni rejimga qarab 0.03 (tanga tashlash) dan 0.43 gacha (hali ham ishonchdan past) o'lchadik; fold'lar to'planishi bilan u 0.67, 0.78, 0.82 va 0.91 gacha ko'tariladi. Har qanday tayyor ASHA'ning standart min_resource = 1 qiymati bektest uchun odatda noto'g'ri.
  4. Minimal aniqlik darajasini ρ ≥ 0.5 bo'lgan birinchi pog'onagacha avtomatik ko'taring, va agar hech qaysi biri o'tmasa, umuman budamang. Darvoza bitta sozlama uchun min_resource = 2ga, qattiqroq sozlama uchun 3ga aylandi; zaxira variant esa muloyimlik bilan to'liq-aniqlikdagi qidiruvga tushib qoladi. To'g'rilik ma'lum tezlashuvga tushadi — buni to'lang.
  5. Arzon o'qni uning arzonligiga emas, siljiganligiga qarab tanlang. Qisqaroq tarix siljigan — u rejimga mos parametrlarni tanlaydi va hech qanday namuna hajmi buni tuzatmaydi. Butun kalendarni qamrab oluvchi (aralashtirilgan, uzluksiz emas) kamroq fold yoki butun davr bo'yicha yiriqroq rezolyutsiyadan foydalaning. Va arzon o'qni xarajatingiz haqiqatan mavjud bo'lgan joyda sarflang.

Chuqurlashtirish bektestdagi eng yaxshi tezlashuvlardan biri, va o'zingizni tezroq aldash usuliga aylanishi eng oson bo'lganlaridan biri. Ikkovi orasidagi farq — qidiruv boshlanishidan oldin o'lchay oladigan bitta raqamdir. Agar proksingiz haqiqat kabi saralashini isbotlay olmasa, u proksi emas — bu ishonarli xarajat profiliga ega tasodifiy son generatoridir.

blog.disclaimer

Authors

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

Bozordan bir qadam oldinda bo'ling

Sun'iy intellekt savdo tahlillari, bozor tahlili va platforma yangiliklari uchun bizning xabarnomaga obuna bo'ling.

Biz sizning maxfiyligingizni hurmat qilamiz. Istalgan vaqtda obunadan chiqishingiz mumkin.