Дәлдік қақпасы: егер арзан прокси конфигурацияларды қымбат бағалаумен бірдей ретте саралай алмаса, ірі-ден-нақтыға қарай бэктестілеу сізді тезірек алдайды
"Иллюзиясыз бэктестер" топтамасының бөлігі.
Кез келген елеулі параметр іздеуі бір қабырғаға тіреледі: кеңістік орасан зор, ал әрбір адал бағалау қымбатқа түседі. Он шақты шегі мен үш индикатор периоды бар көп таймфреймді стратегия, көп фолдты walk-forward бөлінісі бойынша бағаланғанда, әр конфигурацияға бірнеше секундты алуы мүмкін. Он мың конфигурация дегеніміз — сағаттар. Сондықтан адамдар қысқа жолды іздейді, және бұл қысқа жол әрқашан бір идея: арзан бағалап, тек аман қалғандарды ғана қымбат тестіге өткізу. Он мың конфигурацияны бір фолдта сүзіп, ең жақсы бірнеше жүзін қалдырып, соларды барлық фолдтарда қайта жүргізу. Сағаттық шамдарда сүзіп, финалистер үшін ғана 1 секундқа дейін тереңдету.
Бұл — ірі-ден-нақтыға қарай іздеу: тереңдете іздеу, көп дәлдікті іздеу, бірізді жартылау, Hyperband, ASHA — және бұл оптимизациядағы шынымен жақсы идеялардың бірі. Ол бір күндік есептеуді бір сағатқа дейін қысқарта алады. Біз оны қолданамыз. Бірақ ол соншалықты үнсіз тұзақ жасырады, оны қолданатын адамдардың көбі оны ешқашан тексермейді, ал тұзақ мынада: әдістің өзі сіздің арзан проксиіңіз конфигурацияларды қымбат бағалаумен дәл сол ретте сараптайды деп болжайды. Егер олай болмаса, сіз жылдамырақ іздеп жатқан жоқсыз. Сіз болашақ жеңімпаздарыңызды алғашқы қақпада тастап, шуды алға жылжытып жатырсыз — сіз жай ғана өзіңізді тезірек алдап жатырсыз.
Бұл мақала сіздің тереңдете іздеуіңіздің шынайы немесе жай елес екенін көрсететін жалғыз өлшемге арналған. Біз оны өзіміздің көп таймфреймді іздеуімізде жүргіздік, және жауап ыңғайсыз болды: ең арзан дәлдікте біздің проксиіміз конфигурацияларды кездейсоқ дерлік сараптады (Spearman ρ ≈ 0.03). Егер біз сол дәлдікте агрессивті түрде кессек — дайын ASHA әдепкі баптаулары шақыратындай — біз соңында жеңетін конфигурацияларды бірінші раундта-ақ тастап кетер едік. Шешім — іздеу алдында жүретін міндетті қақпа: ранг корреляциясын өлшеу және оған сенуге болатын дәлдіктен төмен кеспеу.
Көп дәлдікті іздеу нақты алғанда не?

Бұл әдістер тобының пішіні біреу-ақ. Сіз дәлдікті анықтайсыз (оны ресурс немесе бюджет деп те атайды): ол арзаннан қымбатқа дейінгі реттегіш, ол ең жоғарғы мәнінде шынайы мақсат функциясын береді. Содан кейін сіз конфигурацияларды төмен дәлдікте жүргізесіз, оларды сараптайсыз, ең жақсы бөлігін қалдырасыз және тек сол аман қалғандарды ғана жоғарырақ дәлдікте қайта жүргізесіз — азғантай ғана финалист толық дәлдікте бағаланғанша осыны қайталайсыз.
Бірізді жартылау (Jamieson & Talwalkar, 2016) — өзегі: N конфигурацияны минималды ресурста бастау, ең жақсы 1/η бөлігін қалдыру, ресурсты η есе көбейту, қайталау. Hyperband (Li et al., 2018) бірізді жартылауды сыртқы циклге орап, әртүрлі бастапқы ресурстар бойынша тәуекелді бөледі, сондықтан қаншалықты агрессивті кесу керегін болжаудың қажеті жоқ. ASHA (Li et al., 2020) — асинхронды, параллельге ыңғайлы нұсқасы. Жою коэффициенті η — олардың барлығына ортақ жалғыз реттегіш; канондық әдепкі мән η = 3 — әр сатыда ең жақсы үштен бірін қалдыру, бюджетті үш есе арттыру.
Дәлдіктің өзі арзаннан қымбатқа дейін жинақталатын дерлік кез келген нәрсе болуы мүмкін:
- Walk-forward фолдтарының саны. 1 фолдта бағалау, содан кейін 2, содан кейін 3, K-ға дейін. Бұл — біз төменде зерттейтін дәлдік, себебі ол айналмалы out-of-sample бөлінісі бар бэктест үшін табиғи дәлдік.
- Шам ажыратымдылығы. 1 сағаттық барларда сүзу, 1 минуттыққа көтеру, финалистер үшін ғана 1 секундқа немесе шикі мәмілелерге дейін тереңдету. Бұл — адаптивті тереңдете іздеу идеясының орындалуды модельдеуге емес, іздеуге қолданылған түрі.
- Тарих ұзақтығы, эпохалар, деректер жиынының ішкі үлгісі — классикалық ML дәлдіктері.
Бэктестте фолдтар мен ажыратымдылық — маңызды екі дәлдік, және — бүкіл мақаланың түйіні осында — олар бірдей қауіпсіз емес. Олардың біреуінде, оны қаншалықты мұқият қақпалағаныңызға қарамастан, үнсіз қате параметрлерді таңдайтын ауытқу бар.
Барлығы негізделетін жалғыз болжам

Бірізді жартылаудың дұрыс жұмыс істеуі үшін нақты не керек екенін жазып көрейік. Оған арзан дәлдіктің дұрыс мақсат мәнін беруі керек емес — бір фолд алты фолдтан өзгеше Sharpe көрсеткенін ешкім елемейді. Оған осал, бірақ анағұрлым нақты нәрсе керек: арзан дәлдік конфигурацияларды қымбатпен дәл сол ретте сараптауы керек. Егер A конфигурациясы толық дәлдікте B-ден озып тұрса, A төмен дәлдікте де B-ден озуға тиіс. Бар болғаны осы. Сонымен қатар бәрі де осында.
Формальды түрде, тереңдете іздеудің жұмыс істейтінін анықтайтын шама — параметр кеңістігі бойынша төмен дәлдік пен жоғары дәлдік мақсаты арасындағы ранг корреляциясы. Егер бұл корреляция жоғары болса, арзан раундтың аман қалғандары қымбат раундты жеңіп алатын дәл сол конфигурациялар болады, және сіз есептеуді тегін үнемдейсіз. Егер ол төмен болса, арзан раунд кездейсоқ сүзгі болып шығады: ол жақсы конфигурацияларды тастап, жаманын алға жылжытады, ал сіз бюджетіңізді нашарырақ жауапқа жеделдетіп жетуге жұмсағансыз. Сізді құтқаратын η-нің орта мәні жоқ — жайлап кесілген жаман прокси де жеңімпаздарды жіберіп алады; агрессивті кесілгенде олар түгелдей ағып кетеді.
Сәтсіздік әдеттегідей көрінбейді. Іздеу аяқталады, жеңімпазды хабарлайды, жеңімпаз in-sample жақсы көрінеді. Ешбір қате шықпайды. Прокси өтірік айтқанын сіз тек жеңімпаз out-of-sample ыдырағанда ғана байқайсыз — сол кезде сіз сәтсіздікті стратегияға таңасыз, оны таңдаған іздеуге емес. Сондықтан тәртіп осы топтама үнемі келіп тұратын сол тәртіп болып қала береді: әдіске сенбес бұрын, әдіс болжайтын нәрсені өлшеңіз. Тереңдете іздеу үшін өлшенетін нәрсе — ранг корреляциясы, және бұл өлшем арзан.
Оны өлшеу: дәлдік қақпасы

Қақпа — сіз нақты іздеу алдында, іздейтін кеңістіктің дәл сол өзінде бір рет жүргізетін кішкентай тәжірибе. Процедура мынадай:
- Параметр кеңістігінен кездейсоқ бірнеше жүз конфигурация таңдап алу (біз ~200 қолданамыз — тұрақты Spearman бағасы үшін жеткілікті, әрі көтере алатындай арзан).
- Әрқайсысын әрбір дәлдік сатысында бағалау: 1 фолдта, 2 фолдта, … толық K фолдқа дейін. Фолд санына негізделген дәлдік үшін бұл дерлік тегін, себебі арзан сатылар үшін есептелген фолдтар қымбат сатыда қайта пайдаланылады — жинақталған орташа.
- Әр
rсатысы үшін сол ~200 конфигурация бойынша r-фолдтық сараптама мен толық K-фолдтық сараптама арасындағы Spearman ранг корреляциясын есептеу. - ρ шектен асатын (біз ρ ≥ 0.5 қолданамыз) алғашқы саты — сізге кесуге рұқсат етілген ең таяз дәлдік. Одан төменде сараптама сенуге тым шулы; ол жерде конфигурацияларды жоюға болмайды.
Мұның бәрі небәрі жиырмаға жуық жол. Оның өзегі:
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
Бір әдейі жасалған детальге назар аударыңыз: фолдтар FOLD_ORDER бойынша алынады, бұл — күнтізбенің ерте және кеш кесінділерін кезектестіретін аралас рет (0-фолд, содан кейін ортаңғы фолд, содан кейін 1-фолд, содан кейін кешірегі, …). Бұл өте маңызды және кейінірек бөлімнің тақырыбы болады: бұл дегеніміз "1 фолд" — тарихтың ортасын қамтитын бір кесінді, ал "2 фолд" — бір ерте плюс бір кеш кесінді, ешқашан тұтас жақындағы терезе емес. Арзан дәлдік көбірек жақын фолдтарды емес, азырақ фолдты пайдалану арқылы арзандайды.
Нәтижелер: бір фолд кездейсоқ дерлік сараптайды

Мінеки, қақпа біздің екі көп таймфреймді баптауымызда жүргізілгенде хабарлаған нәтиже. Сан — ~200 кездейсоқ конфигурация бойынша r-фолдтық сараптама мен толық K-фолдтық сараптама арасындағы Spearman ρ — арзан дәлдіктегі ранг толық дәлдіктегі рангты қаншалықты дәл болжайтынын көрсетеді.
Фолдтар r |
Көп-TF жүргізу | Қиынырақ режим |
|---|---|---|
| 1 | +0.43 | +0.03 |
| 2 | +0.67 | +0.43 |
| 3 | +0.78 | +0.78 |
| 4 | +0.82 | — |
| 5 | +0.91 | +0.91 |
Алдымен қиынырақ режим бағанын оқыңыз, себебі ол дабыл қағатыны. Бір фолдта ρ = 0.03. Бұл әлсіз корреляция емес; бұл корреляцияның мүлдем жоқтығы — екі жүз конфигурацияның бір фолдтық сараптамасы оларды араластырудан статистикалық тұрғыда ажыратылмайды. min_resource = 1 кезінде кесуді бастауға баптаған (көбісі әдепкі бойынша дәл солай) бірізді жартылау жүргізілімі бұл режимде өзінің бірінші және ең агрессивті кесуін тиын лақтыру негізінде жасар еді. Ақыр соңында толық дәлдікте жеңетін конфигурациялардың алғашқы раундта аман қалу мүмкіндігі 50/50. Сараптама бір нәрсені білдіретін дәлдікке жеткенше (үш фолдта ρ = 0.78), олардың көбі әлдеқашан жоғалып кеткен болады.
Көп-TF бағаны жұмсағырақ, бірақ дәл сол ойды басқаша жеткізеді. Онда да бір фолд ρ = 0.43 береді — біздің 0.5 қақпамыздан төмен. Бұл жақсы корреляциядай көрінеді, және қауіп дәл осында: 0.43 сізді алдандыруға жеткілікті жоғары әрі ең жақсы конфигурацияларыңызды жіберіп алуға жеткілікті төмен. Сараптама тек екі фолдта ғана (ρ = 0.67) сенімді бола бастайды.
Мұнан екі нәрсе жалпыланады. Біріншіден, бір фолдтағы ρ режимге тәуелді және сенімсіз — біз баптаулар бойынша 0.03-тен 0.43-ке дейінгі мәндерді өлшедік, және екі жағдайда да бір фолд шекті еңсере алмады. Екіншіден, ρ монотонды түрде әрі жылдам өседі: үш фолдта екі баптау да 0.78-де, ал бесінде 0.91-ге жинақталады. Сигнал бар; оны көру үшін жеткілікті дәлдік жұмсау керек қана. Қақпаның міндеті — "жеткілікті" басталатын дәл сол сатыны табу және одан төмен кесуге тыйым салу.
Неге бір фолд соншалықты шулы
Бұл шу біздің фолд құрылымымыздағы қате емес; ол — ішкі қасиет, және неге солай екенін түсіну сізді оны қате жолмен "түзетуден" сақтайды. Жалғыз walk-forward фолды — қысқа терезе: бір нарық режимінің бірнеше аптасы. Стратегияның сол терезедегі нәтижесіне оның параметрлерінің сол режимге қаншалықты сәйкес келгені басым әсер етеді, ал бұл олардың қаншалықты жалпыланатынымен әлсіз ғана байланысты. Сапасы шынымен әртүрлі екі конфигурация бір фолдта тек біреуі сол фолдта кездейсоқ болған трендті ұстап алғаны үшін орын алмастыруы мүмкін. Бір фолдтағы мақсат — сіз шынымен мән беретін мақсаттың жоғары дисперсиялы бағалаушысы, ал ранг корреляциясы дәл жоғары дисперсия бірінші кезекте бұзатын нәрсе — бағалаушының орташасын сақтай отырып, оның сараптамасы таза шу болуы мүмкін.
Фолдтарды қосу бұл дисперсияны орташалап азайтады. Әр фолд — нарық жағдайларының ішінара тәуелсіз үлгісі; r-фолдтық орташа — дисперсиясы төменірек бағалаушы, және оның сараптамасы толық дәлдіктегі сараптамаға жақындай түседі. Дәл осы ρ = 0.03 → 0.43 → 0.78 → 0.91 өрлеуі: мақсат өзгеріп жатқаны емес, оның ранг-бағасы режимге тән сәттіліктің орташалануы есебінен тұрақталуы. Сабақ мынада: бэктест үшін дәлдік түбінде сіз іріктеген тәуелсіз режимдер санына қатысты — ал біреуі сараптау үшін дерлік ешқашан жеткіліксіз.
Бұл сондай-ақ неге қиынырақ режим 0.03-тен, ал көп-TF жүргізуі 0.43-тен басталатынын түсіндіреді. Қиынырақ режимде жалғыз фолд режимге тәнірек болады — конфигурациялардың бір фолдтық нәтижелеріне сәттілік көбірек, тұрақты артықшылық азырақ әсер етеді, сондықтан олар кездейсоққа жақынырақ сараланады. Қақпа бұл айырмашылықты автоматты түрде оқиды және кесуден бұрын көбірек фолд талап ету арқылы жауап береді. Қай режимде тұрғаныңызды алдын ала білудің қажеті жоқ — сіз өлшейсіз.
Кодтағы қақпа: минималды дәлдікті автоматты түрде көтеру
Қақпаның шығысы — бір бүтін сан: min_resource, ASHA-ға кесуге рұқсат етілген ең таяз дәлдік. Ереже механикалық — сатылар бойынша жүр, ρ шектен асатын алғашқысын ал:
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)
Мұны екі жүргізу арқылы қадамдап көрейік. Көп-TF баптауында ρ@1 = 0.43 қақпадан өтпейді, бірақ ρ@2 = 0.67 өтеді, сондықтан min_resource автоматты түрде 2-ге көтеріледі: ASHA әр конфигурацияны кез келгенін жоюға рұқсат етілгенге дейін кемінде екі фолдта жүргізеді, содан кейін әрі қарай қалыпты түрде кеседі. Қиынырақ режимде ρ@1 = 0.03 және ρ@2 = 0.43 екеуі де өтпейді; ρ@3 = 0.78 бірінші рет өтеді, сондықтан min_resource 3-ке айналады. Және маңызды қосалқы нұсқа: егер ешбір саты 0.5-ке жетпесе, passing бос болады да, min_resource K деңгейінде қалады — кесу мүлдем сөндіріледі, және іздеу жылдам бірақ қате іздеу орнына қарапайым толық дәлдікті іздеуге сыпайы түрде төмендейді. Проксиін дәлелдей алмайтын тереңдете іздеу жай ғана кесуден бас тартады.
Бұл — бүкіл философия бір жол басқару ағынында. Әрбір бірізді жартылау кітапханасының әдепкісі — "min_resource = 1-ден кес, арзан сатыға сен." Қақпа мұны "деректер сенімді деп айтқан алғашқы сатыдан кес, ал ешбіреуі сенімді болмаса, кеспе" дегенге ауыстырады. Бұл алдын ала бір ~200-конфигурациялық сынамаға түседі және тереңдете іздеуді сенім актісінен өлшенген шешімге айналдырады. Жою коэффициенті η = 3 сол күйінде қалады; қақпа қаншалықты қатты кесетініңізге тимейді, тек қаншалықты ерте бастай алатыныңызға тиеді.
Жоғарыдағы кодта көрінетін бір адалдық ескертпесі: min_resource-ты көтеру жылдамдатуды жейді. 1 орнына 3 фолдта кесу дегеніміз — әрбір конфигурация, тіпті сіз тастайтындар да, үш фолд үшін төлейді. Бұл — дұрыстықтың бағасы, және бұл дұрыс айырбас: шынайы жеңімпаздарды табатын іздеудегі 2 есе кіші жылдамдату оларды тастайтын іздеудегі 6 есе жылдамдатудан жақсы. Қақпа бұл айырбасты жасырудың орнына ашық түрде жасайды.
Қате арзан ось: қысқарақ тарих — тұзақ
Тартымды, көзге бірден түсетін, әрі ауытқыған бір арзан дәлдік бар, оны атап өткен жөн, себебі бәрі алдымен соған жүгінеді: қысқарақ тарих. Конфигурацияларды соңғы айда сүзіп, аман қалғандарды толық екі жылға өткізу. Бұл тым арзан және фолдтардың азырақ болуымен бірдей идея сияқты сезіледі. Бірақ олай емес.
Азырақ фолд пен қысқарақ тарих бір шешуші жерде ерекшеленеді. Дұрыс жасалған фолд-саны дәлдігі бәрібір бүкіл күнтізбені қамтиды — ол тек оны ірілеу үлгілейді. Қысқарақ тарих дәлдігі күнтізбенің ішкі аралығын тығыз үлгілейді. Ал нарық тарихының ішкі аралығы — нақты бір режим. Конфигурацияларды соңғы айда саралағанда, сіз олардың толық кезеңдегі рангінің шулы, бірақ ауытқымаған бағасын алмайсыз; сіз соңғы айдың режиміне бапталған конфигурацияларды жүйелі түрде артық көретін ауытқыған баға аласыз. Үлгі көлемін қалағаныңызша көтеріңіз — көбірек конфигурация, көбірек сынақ бойынша орташалаңыз — ауытқу кішіреймейді, себебі бұл дисперсия емес. Сіз сүзу терезесіне ең жақсы сәйкес келетін конфигурацияларды алға жылжытасыз, ал олар дәл өткінші режимге асыра бейімделген конфигурациялар болуы мүмкін.
Дәл осы себепті біздің дәлдігіміз фолдтарды хронологиялық емес, аралас ретте аралайды. K фолд бүкіл тарихқа тарап тұрғанда, "1 фолд" — ортаға жақын жалғыз кесінді, "2 фолд" — бір ерте және бір кеш кесінді, "3 фолд" ерте/орта/кешті таратады — әр дәлдік деңгейі, тіпті ең арзаны да, бүкіл күнтізбе бойынша үлгі алады. Арзан прокси — бүкіл кезеңнің ірі көрінісі, оның бір кесіндісінің анық көрінісі ешқашан емес. Дәл осы араластыру фолд-саны дәлдігін ауытқыған (мұны еш қақпа түзете алмайды — ауытқыған нысанаға қатысты жоғары ρ тек сіз режимге бапталған конфигурацияны сенімді түрде таңдайтыныңызды растайды) емес, жай ғана шулы (қақпамен емделетін) етеді. Егер дәлдікті арзандатудың жалғыз жолы оны жақындатыру болса, сізде жарамды дәлдік жоқ. Оның орнына оны ірілендіріңіз.
Ажыратымдылық — адал арзан ось ретінде
Екінші арзан ось ауытқуды толықтай болдырмайды, және ол біз орындалу симуляциясы үшін сипаттаған адаптивті тереңдете іздеудің табиғи серіктесі: шам ажыратымдылығы. Бүкіл кеңістікті 1 сағаттық барларда сүзіп, аман қалғандарды 1 минуттыққа көтеріп, тек бірнеше финалист үшін ғана 1 секундқа немесе шикі мәмілелерге дейін тереңдетіңіз. Дәл сол толық тарих бойынша ірілеу шамдарды бағалау арзанырақ — барлар азырақ, индикатор өткізулері жылдамырақ, симуляция жылдамырақ — және қысқарақ терезеден айырмашылығы, бүкіл күнтізбенің ірі көрінісі ауытқымаған: ол әр режимді көреді, тек бар ішіндегі детальдары азырақ.
Ажыратымдылық пен фолдтар — бір-бірін толықтыратын дәлдік осьтері, және дәлдік қақпасы екеуіне де қолданылады. 1 сағаттық сүзуге сенбес бұрын дәл сол сынаманы жүргізіңіз: ~200 конфигурация алып, оларды 1 сағат және 1 минут деңгейінде бағалап, ранг корреляциясын өлшеңіз. Егер ρ(1 сағат, 1 минут) жоғары болса, сағат бойынша сүзу қауіпсіз, және сіз үлкен жылдамдатуды адал сатып алдыңыз. Егер ол төмен болса — бұл стратегияның артықшылығы сағаттық шамдар сылап тастайтын бар ішіндегі құрылымда өмір сүргенде болады — онда сағаттық сүзу сол стратегия үшін кездейсоқ сүзгі, және қақпа сізге нәзігірек бастауды айтады. Ереже ешқашан өзгермейді: дәлдікте кесуге тек оның сараптамасы шындықпен сәйкес келетінін өлшегеннен кейін ғана рұқсат етіледі.
Бұл екі ось қарама-қарсы жолдармен де сәтсіздікке ұшырайды, бұл пайдалы. Ірі ажыратымдылық бар ішіндегі ақпаратты жоғалтады; азырақ фолд режимдер аралық ақпаратты жоғалтады. Күндізгі горизонттағы моментум стратегиясы сағаттық шамдарда мінсіз сараланады, бірақ режим сәттілігін орташалау үшін көп фолд қажет етуі мүмкін; скальпинг стратегиясы аз фолдта жақсы сараланады, бірақ 1 секундтан жоғары ажыратымдылықта ыдырауы мүмкін. Ось бойынша жүргізілген қақпа сізге осы стратегия үшін қай дәлдікте арзандауға болатынын айтады — қолайлы болып шыққан жауапты болжаудың орнына.
Үнемдеу нақты қайдан келеді
Тереңдете іздеуді адал сақтайтын бір ескертпе: дәлдік есептеуді тек шығын нақты орналасқан жерде ғана үнемдейді. Біздің көп таймфреймді қозғалтқышымызда қымбат бөлігі — индикаторларды алдын ала есептеу: көп таймфреймді HMA мен ажырату сигналдары — бұл әр конфигурация үшін бір рет, кез келген фолд жүгірмес бұрын төленеді. Кэштелген сигналдардағы фолд басына симуляция салыстырмалы түрде арзан. Сондықтан фолд саны бойынша кесу тек симуляция шығынын үнемдейді, басым индикатор шығынын емес; фолд-саны дәлдігі шынайы, бірақ оның шегі шикі фолд қатынасы болжағаннан төмен.
Ажыратымдылық осі, керісінше, басым шығынға тікелей шабуыл жасайды: ірілеу шамдар индикаторларды есептейтін барлар азырақ дегенді білдіреді, сондықтан қымбат алдын ала есептеу де, арзан симуляция да бірге кішірейеді. Бұл — қосымша деталь емес; ол қай тереңдете іздеуді құру құнды екенін шешеді. Көп дәлдікті іздеуге инвестиция салмас бұрын, секундтарыңыз қайда кететінін сұраңыз. Егер 90%-ы фолдтар арасында ортақ индикатор алдын ала есептеуі болса, фолд-саны дәлдігі сізге аз пайда әкеледі, ал ажыратымдылық дәлдігі көп пайда әкеледі. Алдымен профильдеу жасаңыз; дұрыс арзан ось — сізде нақты бар шығынды жоятын ось, және ол бәрібір қақпадан өтуге тиіс.
Бұл қайда жалғасады
Дәлдік қақпасы осы топтаманың бэктест гигиенасы тізбегінде белгілі бір орында тұрады:
- Ол асыра бейімделуді бақылаудан жоғары тұрады. Жаман прокси бойынша кесетін тереңдете іздеу — асыра бейімделудің жаңа тәсілі: сіз шулы алғашқы сатыға финалисттеріңізді таңдауға рұқсат етіп жатырсыз. Жеңімпаз бәрібір Deflated Sharpe мен PBO-дан аман өтуге тиіс, ал осы қақпаларды қоректендіретін сынақтар саны тек аман қалғандарды емес, кесілген әрбір сынақты да қамтуы керек — кесу сынақты көп мәрте тестілеу есебінен босатпайды.
- Ол өз жауын плато талдауымен бөліседі: бір фолдта немесе бір сүзу терезесінде жеңіп, басқа жерде жеңбейтін конфигурация — екі құрал да қабылдамауға арналған дәл сол режимге бапталған артефакт. Қақпа мұндай фолд бойынша таңдаудан бас тартады; плато талдауы бір фолдта тұрған жеңімпазға сенуден бас тартады.
- Ол астында адал walk-forward бөлінісін болжайды — бүкіл күнтізбені қамтитын фолдтар, шетте қалдырылған out-of-sample — және ол біз орындалу симуляциясы үшін құрған тереңдете іздеудің іздеу уақытындағы серіктесі: дәл сол ірі-ден-нақтыға қарай принцип, оларды қаншалықты дәл толтыру керектігіне емес, қай конфигурацияларды бағалау керектігіне қолданылған.
- Және ол дәлдіктің әр сатысында ағып кетуден таза болуына толықтай тәуелді. Егер арзан сатыда қымбатта жоқ алдын ала қарау ауытқуы болса, ρ ластанған нысанамен сәйкестікті өлшейді де, қақпа ағуды растайды. Ранг корреляциясын өлшеңіз, иә — бірақ адал мақсат бойынша.
Біріктіруші идея, тағы да, осы топтама қайталауды тоқтатпайтын идея: бэктест — статистикалық тәжірибе, және ондағы әрбір қысқа жол сіз тексеруге міндетті гипотеза. Тереңдете іздеудің гипотезасы — "арзан ранг ≈ қымбат ранг". Оны ~200 конфигурацияда тексеруге болады. Тексеріңіз.
Түйіндер
- Ірі-ден-нақтыға қарай іздеу бір болжамға негізделеді: арзан прокси конфигурацияларды қымбатпен бірдей сараптайды. Бірдей мән емес — бірдей сараптама. Егер ранг корреляциясы төмен болса, агрессивті кесу болашақ жеңімпаздарыңызды тастап, шуды алға жылжытады. Сіз нашарырақ жауапқа тезірек ізденесіз.
- Сенбес бұрын өлшеңіз. ~200 кездейсоқ конфигурация алып, оларды әр дәлдік сатысында бағалаңыз және әр арзан сатының толық дәлдіктегі сараптамамен Spearman ρ-ын есептеңіз. Бұл — небәрі жиырмаға жуық жол мен бір арзан сынама.
- Бір фолд кездейсоқ дерлік сараптайды. Біз режимге байланысты ρ@1-ді 0.03-тен (тиын лақтыру) 0.43-ке дейін (әлі де сенімге жетпейді) өлшедік; фолдтар көбейген сайын ол 0.67, 0.78, 0.82 және 0.91-ге дейін өседі. Дайын ASHA-ның әдепкі
min_resource = 1мәні, бэктест үшін, әдетте қате. - Минималды дәлдікті ρ ≥ 0.5 болатын алғашқы сатыға дейін автоматты түрде көтеріңіз, ал ешбіреуі өтпесе, мүлдем кеспеңіз. Қақпа бір баптау үшін
min_resource = 2-ге, ал қиынырағы үшін3-ке айналды; қосалқы нұсқа толық дәлдікті іздеуге сыпайы түрде төмендейді. Дұрыстық белгілі бір жылдамдатудан айырады — соны төлеңіз. - Арзан осьті ол арзан болғаны үшін емес, ауытқыған-ауытқымағанына қарай таңдаңыз. Қысқарақ тарих ауытқыған — ол режимге бапталған параметрлерді таңдайды, және еш үлгі көлемі мұны түзетпейді. Бүкіл күнтізбені қамтитын (аралас, тұтас емес) азырақ фолдты немесе бүкіл кезең бойынша ірілеу ажыратымдылықты пайдаланыңыз. Және арзан осьті шығыныңыз нақты орналасқан жерге жұмсаңыз.
Тереңдете іздеу — бэктестілеудегі ең жақсы жылдамдатулардың бірі, әрі оны өзіңізді тезірек алдау тәсіліне айналдыру ең оңай нәрсенің бірі. Екеуінің арасындағы айырмашылық — іздеу басталмас бұрын өлшеуге болатын жалғыз сан. Егер сіздің проксиіңіз шындыққа ұқсас сараптайтынын дәлелдей алмаса, ол прокси емес — ол сенімді көрінетін шығын профилі бар кездейсоқ сандар генераторы.
Authors
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.