V ponedeljek je naš raziskovalni agent AI našel strategijo za kripto terminske pogodbe s Sharpeovim količnikom 4.1. Do četrtka, ko smo prešteli poskuse in agentu preprečili nadaljnje prilagajanje na istem validacijskem obdobju, je rezultat znašal 0.8. Strategija se ni spremenila. Spremenila se je naša ocena tega, kaj je iskanje doseglo.
To smo izvedli kot kratek raziskovalni dnevnik, ker je nasvet »optimizirajte previdno« lahko dati, težko pa ga je udejanjiti, ko agent lahko napiše kodo, zažene testiranje za nazaj, pregleda rezultat in v nekaj minutah poskusi znova. Tukaj je po vrsti opisano, kaj se je zalomilo.
Ponedeljek: agentu zastavimo jasno omejeno vprašanje
Agenta smo prosili, naj preizkusi preprosto idejo urnega sledenja trendu na likvidnem trgu trajnih terminskih pogodb: vstop ob prečkanju kratkoročnega drsečega povprečja čez dolgoročnejše, velikost pozicije prilagodi fiksnemu cilju volatilnosti in pozicijo zapre ob nasprotnem signalu. Določili smo instrument, datume, razpored provizij, zgodovino financiranja, predpostavko glede izvršitve in razpone parametrov, ki jih je smel raziskati.
Zgodovinski vzorec je zajemal obdobje od 2021 do 2025. Obdobje 2021–2023 smo namenili razvoju, leto 2024 validaciji, leto 2025 pa smo zapečatili kot končni izločen vzorec. Razdelitev je bila zapisana v konfiguraciji opravila, zato je agent lahko prebral rezultate razvoja in validacijske ocene, do donosov izločenega vzorca pa ni mogel dostopati.
Naša prva napaka je bila, da smo v enem opravilu dovolili 300 kombinacij parametrov, ne da bi proračun iskanja zabeležili kot rezultat raziskave. Agent je vrnil najboljšo možnost: hitro povprečje za 9 ur, počasno povprečje za 73 ur in cilj volatilnosti 0.8%. Sharpeov količnik na validaciji je bil 4.1. Vedeli smo, da je agent preizkusil veliko nastavitev. Še nismo poskrbeli, da tega dejstva ne bi bilo mogoče pozabiti.
Torek: zmagovalna nastavitev se je ob ponovnem zagonu spremenila
Isto opravilo smo ponovili v čistem okolju. Najboljša nastavitev se je spremenila, Sharpeov količnik pa je padel na 2.7. Predpomnilnik tržnih podatkov je v prvem zagonu uporabil posodobljeno serijo financiranja, pri ponovnem zagonu pa pripet posnetek podatkov. Obe opravili sta navajali isto časovno obdobje, vendar je imelo ponovljivo različico podatkov samo eno.
Prenehali smo primerjati ocene in začeli beležiti celoten poskus: revizijo kode, posnetek podatkov, provizije, financiranje, nastavitve izvršitve, vrednosti parametrov in vsak poskus, ki ga je zagnal agent. Tako smo ugotovili, da rezultat 4.1 ni bil skrivnostna tržna prednost. Pripadal je eni nastavitvi v iskanju med 300 poskusi na istem validacijskem letu.
Sreda: iskanje zamrznemo, preden odpremo izločeni vzorec
Poskus smo ponovili z nespremenljivim posnetkom podatkov in manjšo, vnaprej določeno mrežo: 24 kombinacij. Agent jih je lahko razvrstil glede na razvojno obdobje 2021–2023. Dovolili smo mu enkratni vpogled v leto 2024 za izbor, nato pa zaklenili izbrane nastavitve in kodo.
Izbrana strategija je na validaciji dosegla Sharpeov količnik 0.8. Na zapečatenem izločenem vzorcu za leto 2025 je po provizijah takerja, financiranju in enakem enosvečnem zamiku pri izvršitvi, uporabljenem v celotni študiji, dosegla 0.3. To je bil koristen odgovor. Ni pa bil dokaz, da bi strategija prinašala dobiček na trgovalnem računu v živo.
Mimogrede, ta teden smo več časa porabili za dogovor o tem, kaj pomeni »en poskus«, kot za pisanje kode drsečih povprečij. Kot poskus smo šteli vsako spremenjeno množico parametrov, pa tudi zagone s spremenjenim signalom ali pravilom za velikost pozicije. Nov posnetek podatkov ali predpostavka o izvršitvi sta dobila ločen zapis, saj bi lahko prav tako spremenila razvrstitev.
Četrtek: čemu bi se naslednjič odpovedali
Odpovedali bi se prvemu, odprtemu opravilu. Raziskovalni agent potrebuje proračun iskanja in evidenco tega, kar je preizkusil, zlasti kadar lahko vsak rezultat uporabi za odločitev, kaj poskusiti naslednje. Izločeni vzorec je treba zaščititi tudi pred neformalnim vpogledovanjem: ko nekdo prebere njegov rezultat in spremeni strategijo, vzorec postane nov validacijski sklop.
Pri manjšem iskanju je lahko evidenca poskusov preprosta in jasna:
| Zabeležiti | Zakaj je pomembno |
|---|---|
| Različice kode in podatkov | Da ponovni zagon uporablja enake vhode in logiko |
| Vsako preizkušeno različico | Da zmagovalca razumemo v kontekstu iskanja |
| Vloge razvoja, validacije in izločenega vzorca | Da končne ocene tiho ne uporabimo znova za prilagajanje |
| Predpostavke glede provizij, financiranja in izvršitve | Da prijavljeni rezultat opisuje simulacijo, ki jo je mogoče preizkusiti |
Ko odpremo izločeni vzorec, se z novim raziskovalnim vprašanjem vrnimo k razvoju, stari rezultat pa ohranimo kot zgodovinski dokaz. Ne izpopolnjujmo iste strategije na podlagi obdobja, ki ga je že videla.
Agent je opravil svoje delo: hitro je preiskal možnosti in našel konfiguracijo, vredno podrobnejše obravnave. Naša naloga je bila narediti iskanje pregledno, ohraniti nedotaknjen test in oceno obravnavati kot meritev z lastno zgodovino. Zanimiv rezultat ni bil 4.1 ali 0.3. Zanimivo je bilo natančno videti, kako je nastala prva številka.
← Vse objave


