Tukaj je ena sveča. Binance USDⓈ-M perpetual, BTCUSDT, minuta, ki se začne ob 13:46:00 UTC. Iz končne točke klines je prišla kot golo polje z dvanajstimi vrednostmi in je najpogostejša vhodna enota v kvantitativnih raziskavah za male vlagatelje in njim bližnje segmente. Skoraj vsaka strategija, ki jo ustvarimo, se dotakne nečesa, oblikovanega tako.
Razstavimo jo torej po indeksih in poglejmo, kolikšen del je povratni test napačno razumel.
| Indeks | Vrednost | Ime |
|---|---|---|
| 0 | 1773495960000 | čas odprtja (ms) |
| 1 | \"84120.50\" | odprtje |
| 2 | \"84177.90\" | vrh |
| 3 | \"84098.10\" | dno |
| 4 | \"84163.40\" | zaprtje |
| 5 | \"38.417\" | osnovni obseg (BTC) |
| 6 | 1773496019999 | čas zaprtja (ms) |
| 7 | \"3232108.94\" | kotacijski obseg (USDT) |
| 8 | 1204 | število poslov |
| 9 | \"21.883\" | osnovni obseg nakupov takerjev |
| 10 | \"1841203.55\" | kotacijski obseg nakupov takerjev |
| 11 | \"0\" | prezri |
[0] in [6]: katera minuta je to in čigava ura to pravi
Čas odprtja 1773495960000, čas zaprtja 1773496019999. Opazite drugo vrednost: konča se z 19999, eno milisekundo pred odprtjem naslednje sveče. Okno je napol odprto in borza vam to izrecno sporoča. Polovica napak v podatkih, ki sem jih iskal, se je začela s tem, da je nekdo oba konca obravnaval kot vključena in dvakrat štel posel na meji ali pa poravnal ponovno vzorčenje tako, da si je vsaka 5-minutna sveča od sosednje izposodila eno milisekundo.
Časovni žigi so čas ujemalnega mehanizma borze. Ne vaša ura, ne ura vnosa vašega ponudnika in ne ista ura, ki jo uporablja posnetek financiranja. Ko serijo kline združite s serijo funding-rate ali open-interest podatkov, pridobljeno z druge končne točke, združujete vire, ki se večino časa ujemajo približno do sekunde natančno. Pri 1-minutni strategiji je to 1,7-odstotna časovna napaka v vsaki združeni vrstici. Pri čemerkoli, krajšem od minute, je usodna.
In ta sveča je označena s svojim odprtjem. Informacij v njej ni mogoče poznati, dokler ne mine 13:46:59.999. Vsako vprašanje o indeksiranju — ali zamaknem za eno, ali kot čas dogodka uporabim čas zaprtja ali odprtja sveče — je v resnici isto vprašanje o vpogledu v prihodnost, le preoblečeno.
[1] \"84120.50\": odprtje, po katerem ne morete trgovati
Odprtje je cena prvega posla, izvedenega znotraj okna. To je zaključena transakcija med dvema drugima osebama. Ko sveča obstaja kot vrstica v vašem dataframeu, je ta cena stara že šestdeset sekund.
Prejšnja sveča se je zaprla pri 84109.80, zato je med dvema sosednjima 1-minutnima svečama v vrzeli 10.70 $ gibanja cene. To je 1,3 bazične točke, na grafu nevidno in približno četrtina provizije takerja. Prav. Toda poglejte isto serijo na altcoin perpetualu ob objavi ameriškega CPI in te vrzeli med svečami znašajo od 15 do 40 bazičnih točk. Povratni test, ki signalizira ob zaprtju sveče in izvrši posel ob odprtju naslednje, tiho predpostavlja, da je vrzel nič — in je nič natanko takrat, ko to ni pomembno.
[2] in [3]: \"84177.90\" vrh, \"84098.10\" dno
Prav tukaj večina pogonov za izvrševanje umre, zato bo ta razdelek daljši.
Vrh in dno sta ekstremni dotaknjeni ceni. Ne vsebujeta podatka o količini ali trajanju. Iz surovega zapisa poslov za isto minuto je razvidno, da je bilo vse pri 84100.00 ali manj skupaj 0.62 BTC v devetih poslih v 1,4-sekundnem oknu. Povratni test torej ustavi pri 84100 in ga \"izvrši\" — če je vaša pozicija 3 BTC, ste pri padcu pojedli celotno vidno knjigo, preostanek vaše velikosti pa je bil izvršen nekje v povratnem gibu med 84105 in 84130. Sveča pravi, da je bilo dno 84098.10. Ne pove pa, da je bilo tam trgovanega nominalnega zneska le 52.000 $.
Druga smer je še slabša, ker vam laska. Recimo, da ste imeli čakajoči limitni prodajni nalog pri 84175. Vrh sveče je 84177.90, zato vas naivni pogon izvrši pri 84175 in knjiži maker rabat namesto stroška takerja. Ali se je ta posel zares zgodil, je odvisno od vašega položaja v čakalni vrsti na tej cenovni ravni, česar sveča ne more vedeti in česar verjetno nikoli niste zabeležili. Dotaknjeno ni isto kot izvršeno.
Pravilo, pri katerem smo se ustavili v našem pogonu za izvrševanje: čakajoči limitni nalog se izvrši le, če sveča prebije raven, ne zgolj če se je dotakne. Za izvršitve pri natanko ekstremnem tečaju zahtevamo dokaz o obsegu pri ceni iz zapisa poslov, sicer jih zavrnemo. S tem smo iz tipične knjige mean-reversion odstranili približno 6 % poslov in Sharpe kandidata znižali z 1.9 na 1.1. Ta kandidat ni bil nikoli resničen; pravilo izvrševanja je bilo le prvo, ki je bilo dovolj pošteno, da je to povedalo.
Povezana past: pot znotraj sveče. Če razpon sveče zajema tako vaš stop kot take-profit, OHLCV ne more povedati, kaj je bilo doseženo najprej. Vsak pogon mora izbrati konvencijo. Naš vedno predpostavlja najprej stop, kar je pesimistično in občasno napačno, vendar nikoli ne ustvari lažne zmage. Če vaš pogon predpostavlja najprej take-profit, bodo sveče s širokim razponom iz dvoumnosti izdelovale dobiček, prav sveče s širokim razponom pa so tiste, ki najbolj vplivajo na porazdelitev vašega PnL.
[4] \"84163.40\": najmanj robustna številka v sveči
Zaprtje je zadnji posel v oknu. To je vse. Morda gre za nenavaden posel velikosti 0.002 BTC, s katerim bot ob 13:46:59.8 zaokrožuje pozicijo. Prav ta strukturno arbitrarni tečaj večina raziskovalnih cevovodov uporablja za izračun vsakega signala, vrednotenje vsake pozicije in ocenjevanje vsakega izhoda.
Pri BTC perpetualih je to komaj pomembno; pri nelikvidnem altcoin perpetualu ob 04:00 UTC pa izjemno, razlika med zaključnima cenama dveh borz za isto minuto pa lahko preseže celotno prednost na posamezen posel. Ko je PnL strategije posebej odvisen od zaprtja, jo znova zaženemo z vrednotenjem po mark ceni borze, ki izhaja iz indeksa in jo je veliko težje umetno premakniti. Če se rezultati razlikujejo, je strategija trgovala z artefaktom.
[5] in [7]: \"38.417\" in \"3232108.94\", obseg v katerih enotah
Osnovni obseg je BTC; kotacijski obseg je USDT. Tukaj sta navedena oba, kar je usluga, ki je ne nudijo vse borze. Pomembno je zaradi združevanja med borzami. Pogodbe z nominalno vrednostjo v kovancu so kotirane v pogodbah z nominalno vrednostjo 100 $. Nekateri viri podatkov za delnice poročajo o standardnih lotih. Trgi napovedi poročajo število deležev, pri čemer je delež binarna terjatev, izražena v dolarjih. Seštevanje \"obsega\" čez mešano množico brez normalizacije na enotno nominalno vrednost ustvari lestvico likvidnosti, ki je čista neumnost — in to na stabilen način, ki preživi pregled.
Ob vnosu vse normalizirajte na kotacijsko nominalno vrednost. Surovo polje prav tako shranite, vendar strategiji nikoli ne dovolite dostopa do njega.
[8] 1204: polje, ki bi moralo določati vaš model vpliva
Deljenje osnovnega obsega s številom poslov da povprečno velikost posla 0.032 BTC oziroma približno 2.700 $. Če želi vaša kandidatska strategija hkrati vstopiti za 250.000 $, zahteva približno 92-kratno velikost tipične transakcije v tej minuti. To število, ne neka generična konstanta zdrsa 5 bazičnih točk, bi moralo določati vaš člen vpliva s kvadratnim korenom. Stopnjo udeležbe izračunamo za vsako svečo kot prvovrstni stolpec in zavrnemo strategije, katerih mediani vstop presega nekaj odstotkov nominalnega obsega sveče, ker je vse za tem izmišljeno.
Število poslov tudi poceni označi nenavadne minute. Obseg običajen, število poslov pa je padlo na 11? Nekdo je izvedel blokovni posel. Obseg običajen, število poslov pa je 9.000? To je likvidacijska kaskada, ki se prebija skozi trg v majhnih kosih.
[9] in [10]: \"21.883\", polje, ki ga vsi zavržejo
Osnovni obseg nakupov takerjev. Od 38.417 BTC v tej sveči so kupci sprožili 21.883 BTC, zato je predznačena razlika obsega +5.349 BTC, razmerje agresorjev pa je 57/43 v korist kupcev. Borza vam brezplačno posreduje neravnovesje toka naročil v polju, ki ga večina ljudi nikoli ne prebere, ker mu pandas ni določil imena stolpca.
Ne trdim, da samo po sebi napoveduje donose; naivne strategije delta so med zanesljivejšimi načini, kako darovati denar v knjigo provizij. Toda gre za resnično drugačno meritev od cene, na voljo je v isti zahtevi, ki ste jo že pošiljali, in omogoča razlikovanje med rastjo, ki so jo kupci kupili, ter rastjo, ki se je zgodila, ker so se prodajalci umaknili. Na OHLC sta videti enaki, deset minut pozneje pa se obnašata drugače. Naš raziskovalni agent obravnava hipotezo, ki ignorira razmerje takerjev na borzi, ki ga objavlja, kot hipotezo, ki pušča dokaze na mizi.
[11] \"0\": prezri — in vse drugo, česar tukaj ni
Indeks 11 je zastarelo polje, trajno nastavljeno na nič. Bolj zanimiv je seznam stvari, ki jih ta sveča ne vsebuje: ne nakupne cene, ne prodajne cene, ne razmika, ne globine knjige, ne funding rate, ne open interesta, ne likvidacij, ne mark cene, ne indeksne cene. In ključno: nobenega načina, da bi vedeli, ali bi bil vaš nalog maker ali taker, kar je razlika med plačilom 0,045 % in zaslužkom 0,01 % na tej borzi.
Zato je vsak model provizij, zgrajen samo na kline, predpostavka, oblečena v številko. Rešimo jo tako, da vsako strategijo prisilimo vnaprej opredeliti svoj slog izvrševanja, nato pa za vse, česar ni mogoče dokazati drugače, zaračunamo taker.
Sveča, ki se nikoli ni pojavila
Še zadnji del in tisti, ki najbolj zaboli zunaj glavnih instrumentov. Minuta brez poslov sploh ne ustvari kline. Ponudniki in knjižnice jo pogosto zapolnijo z zadnjo znano vrednostjo: odprtje = vrh = dno = zaprtje = prejšnje zaprtje, obseg 0. Vaš indikator se brez težav izračuna. Vaša strategija vidi veljavno vrstico in lahko ustvari signal v minuti, v kateri s tem instrumentom ni trgoval nihče na svetu.
Pri enem perpetualu srednje kapitalizacije, ki smo ga vnesli, je imelo 4,1 % 1-minutnih sveč v dvanajstmesečnem obdobju nič poslov. Kandidat za mean-reversion je na tem simbolu 38 % vstopov postavil na sintetične sveče, ker so nespremenjene sintetične cene mamljive za vse, kar meri odmik od drsečega povprečja. V povratnem testu je deloval čudovito. Trgoval je z vrzelmi v podatkih.
Zato vhodna plast zdaj za vsako svečo nosi logično vrednost synthetic, ki se propagira skozi vsako ponovno vzorčenje, verifikacijski preizkus pa zavrne vsako strategijo, katere posli se kopičijo na njej. Poceni stolpec. Pokončal je več kandidatov kot katerikoli indikator, ki smo ga kdaj napisali.
Dvanajst vrednosti. Štiri se rutinsko napačno razumejo, dve se rutinsko zavržeta, celotna kategorija pa v vrstici manjka in si jo pogon izmisli. Pred naslednjim povratnim testom iz lastne shrambe pridobite eno surovo svečo in vsako polje na glas preberite glede na to, kar vaš logični model izvrševanja predpostavlja o njem. To je dvajsetminutna vaja in še nikoli nisem videl, da bi jo kdo opravil in ne našel ničesar.
← Vse objave