Pirmadienį mūsų DI tyrimų agentas rado kriptovaliutų ateities sandorių strategiją, kurios Sharpe rodiklis siekė 4.1. Iki ketvirtadienio, suskaičiavę eksperimentus ir nebeleidę agentui derinti parametrų pagal tą patį validavimo laikotarpį, gavome 0.8. Strategija nepasikeitė. Pasikeitė mūsų vertinimas, ką paieška iš tiesų pasiekė.
Tai vykdėme kaip nedidelį tyrimų dienoraštį, nes patarti „optimizuoti atsargiai“ lengva, o paversti šį patarimą praktika sunku, kai agentas gali rašyti kodą, paleisti istorinius testus, peržiūrėti įvertį ir po kelių minučių bandyti iš naujo. Štai kas sugedo ir kokia tvarka.
Pirmadienis: pateikiame agentui aiškiai apibrėžtą užduotį
Paprašėme agento išbandyti paprastą valandinę tendencijos strategiją likvidžioje neterminuotų ateities sandorių rinkoje: atidaryti poziciją, kai trumpasis slankusis vidurkis kerta ilgesnįjį, nustatyti pozicijos dydį pagal fiksuotą volatilumo tikslą ir uždaryti ją gavus priešingą signalą. Nurodėme instrumentą, datas, komisinių tvarką, finansavimo istoriją, vykdymo prielaidą ir parametrų ribas, kurias jis galėjo tyrinėti.
Istorinė imtis apėmė laikotarpį nuo 2021 iki 2025 metų. 2021–2023 m. skyrėme kūrimui, 2024 m. – validavimui, o 2025 m. palikome užrakintą galutiniam patikrinimui. Šis padalijimas buvo įrašytas į užduoties konfigūraciją, todėl agentas galėjo matyti kūrimo rezultatus ir validavimo įverčius, bet negalėjo gauti galutinio patikrinimo laikotarpio grąžų.
Pirmoji mūsų klaida buvo leisti vienoje užduotyje išbandyti 300 parametrų derinių, neįtraukiant paieškos biudžeto į tyrimo rezultatus. Agentas pateikė geriausią variantą: 9 valandų trumpąjį vidurkį, 73 valandų ilgąjį vidurkį ir 0.8% volatilumo tikslą. Jo validavimo Sharpe rodiklis siekė 4.1. Žinojome, kad agentas išbandė daug nustatymų. Tačiau dar nebuvome užtikrinę, kad šio fakto būtų neįmanoma pamiršti.
Antradienis: pakartojus bandymą nugalėtojas pasikeitė
Tą pačią užduotį pakartojome švarioje aplinkoje. Geriausias nustatymas pasikeitė, o Sharpe rodiklis nukrito iki 2.7. Pirmojo bandymo metu rinkos duomenų talpykla pateikė atnaujintą finansavimo duomenų seką, o pakartotiniame bandyme naudota užfiksuota kopija. Abiejose užduotyse buvo nurodytas tas pats datų intervalas, tačiau tik vienoje buvo naudojama atkuriama duomenų versija.
Nustojome lyginti įverčius ir pradėjome fiksuoti visą eksperimentą: kodo versiją, duomenų kopiją, komisinius, finansavimą, vykdymo nustatymus, parametrų reikšmes ir kiekvieną agento paleistą bandymą. Tapo aišku, kad 4.1 nebuvo paslaptingas rinkos pranašumas. Šis rezultatas priklausė vienam nustatymui iš 300 bandymų, atliktų naudojant tuos pačius validavimo metus.
Trečiadienis: užfiksuojame paiešką prieš atverdami galutinio patikrinimo laikotarpį
Eksperimentą pakartojome naudodami fiksuotą duomenų kopiją ir mažesnį, iš anksto apibrėžtą tinklelį: 24 derinius. Agentas galėjo juos įvertinti pagal 2021–2023 m. kūrimo laikotarpį. Leidome jam vieną kartą peržiūrėti 2024 m. duomenis, kad galėtų pasirinkti, o tada užrakinome pasirinktus nustatymus ir kodą.
Pasirinktos strategijos Sharpe rodiklis validavimo laikotarpiu buvo 0.8. Užrakintame 2025 m. galutinio patikrinimo laikotarpyje jis siekė 0.3, įskaičiavus taker mokesčius, finansavimą ir tą patį viso tyrimo metu taikytą 1 žvakės vykdymo vėlavimą. Tai buvo naudingas atsakymas. Tačiau tai neįrodė, kad strategija uždirbtų pinigų realioje sąskaitoje.
Dar viena šios savaitės pastaba: daugiau laiko skyrėme susitarimui, ką laikyti „vienu bandymu“, nei slankiojo vidurkio kodui parašyti. Parametrų rinkinio pakeitimą laikėme bandymu, taip pat skaičiavome vykdymus, kuriuose keitėsi signalas ar pozicijos dydžio nustatymo taisyklė. Naują duomenų kopiją ar vykdymo prielaidą registravome atskirai, nes ji galėjo lygiai taip pat pakeisti rezultatų reitingą.
Ketvirtadienis: ko kitą kartą atsisakytume
Atsisakytume pirmosios, atviro tipo užduoties. Tyrimų agentui reikia paieškos biudžeto ir išbandytų variantų įrašo, ypač kai jis gali remtis kiekvienu rezultatu spręsdamas, ką bandyti toliau. Galutinį patikrinimo laikotarpį taip pat reikia apsaugoti nuo neformalaus žvilgčiojimo: kai kas nors pamato jo rezultatą ir pakeičia strategiją, tas laikotarpis tampa dar vienu validavimo rinkiniu.
Nedidelei paieškai pakanka paprasto ir aiškaus eksperimentų žurnalo:
| Ką fiksuoti | Kodėl tai svarbu |
|---|---|
| Kodo ir duomenų versijas | Kad pakartotiniame bandyme būtų naudojami tie patys įvesties duomenys ir logika |
| Kiekvieną išbandytą variantą | Kad nugalėtoją vertintume atsižvelgdami į visą paiešką |
| Kūrimo, validavimo ir galutinio patikrinimo paskirtį | Kad galutinis įvertis nebūtų slapta naudojamas derinant parametrus |
| Komisinius, finansavimą ir vykdymo prielaidas | Kad pateiktas rezultatas apibūdintų patikrinamą simuliaciją |
Atvėrę galutinio patikrinimo laikotarpį, grįžkite prie kūrimo su nauju tyrimo klausimu, o seną rezultatą išsaugokite kaip istorinį įrodymą. Nenuolat tobulinkite tos pačios strategijos pagal laikotarpį, kurį ji jau yra „mačiusi“.
Agentas atliko savo darbą: greitai ištyrė variantus ir rado konfigūraciją, kurią verta panagrinėti. Mūsų užduotis buvo padaryti paiešką suprantamą, išsaugoti nepaliestą testą ir vertinti įvertį kaip matavimą, turintį savo istoriją. Įdomiausia buvo ne 4.1 ar 0.3, o tiksliai pamatyti, kaip atsirado pirmasis skaičius.
← Visi įrašai


