2026 m. rugpjūčio 20 d. · Optimizacija

Trys būdai neįveikti walk-forward optimizacijos to nepastebint

Trys būdai neįveikti walk-forward optimizacijos to nepastebint

Walk-forward optimizacija turi sąžiningo strategijos derinimo būdo reputaciją, ir ji jos verta — bent jau lyginant su optimizavimu ant visų duomenų ir grožėjimusi rezultatu. Tačiau ši technika turi tyliųjų gedimo būdų, ir kiekvienas jų pagimdo tą patį artefaktą: validacijos ataskaitą, sakančią „patikima“, prisegtą prie strategijos, kuri tokia nėra. Štai trys, prieš kuriuos mums teko statyti inžinerines užtvaras, sudėlioti pagal jų paliekamus griuvėsius.

Pirmas gedimas: langai prakiūra

Neteisingas kelias: derinti sausio–birželio duomenimis, validuoti liepos, o tada leisti bet kam iš liepos paveikti antrą praėjimą — perleidimui pamačius out-of-sample skaičių, „mažam patikslinimui“ parametrų tinklelyje, požymiui, normalizuotam per visą seką. Kiekvienas atskirai atrodo nekaltas. Kartu jie paverčia out-of-sample langą in-sample duomenimis su vėlavimu.

Griuvėsiai: out-of-sample Sharpe, kuris paslaptingai seka in-sample Sharpe. Tikri out-of-sample rezultatai yra triukšmingi ir nuviliantys; įtartinai glotnus IS/OOS ryšys reiškia, kad informacija teka atgal. Santykį stebime atvirai — in-sample, viršijantis out-of-sample daugiau nei 3 kartus, pažymi paleidimą, o out-of-sample, lygus nuliui ar mažesnis, jį nužudo, kad ir kaip gražiai atrodytų in-sample.

Antras gedimas: metrikų medžioklė per langus

Paleidi tris walk-forward langus, gauni tris triukšmingus rezultatus ir tada apibendrini: vidutinis Sharpe? Mediana? Išmesti blogiausią langą dėl „režimo pasikeitimo“? Kiekvienas pasirinkimas yra laisvės laipsnis, ir užsispyręs optimizatorius (žmogus ar Bajeso) suras tą santrauką, kurioje ši strategija atrodo geriausiai. Septyniasdešimt penki Optuna bandymai vienam langui yra septyniasdešimt penkios progos pritaikyti triukšmą, padaugintos iš to, kiek santraukų esi pasiryžęs svarstyti.

Griuvėsiai: strategija, kuri praeina validaciją, o paskui realiai duoda blogiausio lango rezultatą, nes blogiausias langas ir buvo vienintelis sąžiningas. Mūsų taisyklė: agregavimas užfiksuojamas konfigūracijoje prieš paleidimą, bandymų biudžetas užfiksuotas, o analitikas skaito rezultatus po vieną langą kartu su parodyta sklaida. Strategija, kuriai reikia palankios santraukos, kad praeitų, nepraeina.

Trečias gedimas: holdout, kuris nustojo juo būti

Holdout suveikia lygiai vieną kartą. Antrąsyk įvertinus strategiją pagal jį — po parametro pastūmėjimo, signalo patikslinimo, „tiesiog patikrinkim“ — tai nebėra holdout; tai lėtas validacijos rinkinys. Penkiolika nepaliestų dienų atrodo menkas dalykas išsaugoti, kol neužgriūva iteracijų spaudimas ir pakartotinis patikrinimas ima atrodyti nekenksmingas.

Griuvėsiai subtilūs: holdout rezultatai, kurie gerėja per tos pačios strategijos iteracijas. Švieži out-of-sample duomenys neturi jokios priežasties apdovanoti trečios iteracijos labiau nei pirmos, o kai taip nutinka, holdout jau iškastas. Vienkartiškumą užtikriname mechaniškai: holdout įvertinamas vieną kartą per konvejerio paleidimą, rezultatas įrašomas į įrašą, o strategija, kuriai reikia dar vieno bandymo, grįžta per visą pragarą iš naujo — su naujais langais ir visa kita. Ji privalo išlaikyti bent 70% walk-forward out-of-sample Sharpe, ir antro to kauliuko metimo nebūna.

Požymis, kuris išgyvena visus tris

Prieš visa tai paleidžiame paprastą jautrumo peržvalgą: pastumiame kiekvieną parametrą ±20% ir stebime metrikas. Tikras pranašumas nyksta sklandžiai; sutapimas krenta nuo skardžio. Tai pigiausias testas visame konvejeryje, ir jis vetuoja strategijas, kurios būtų sklandžiai perplaukusios visa, kas aprašyta aukščiau — nes parametro skardis yra tai, kaip perteklinis pritaikymas atrodo prieš tai, kai duodi jam progą pasislėpti validacijos mechanizmuose.

3.0×didžiausias IS/OOS Sharpe santykis
70%tiek WF OOS turi išlaikyti holdout
±20%jautrumo postūmis kiekvienam parametrui
1holdout įvertinimų, iš viso

Niekas iš to nepadaro optimizacijos saugios. Tai padaro gedimo būdus garsius — o daugiau iš validacijos proceso sąžiningai prašyti ir neįmanoma.

optimizacijawalk-forwardperteklinis pritaikymasholdoutjautrumas
← Visi įrašai