2026. gada 26. augusts · tirgus dati

Vienas 1 minūtes sveces anatomija: ko OHLCV nestāsta par jūsu atpakaļtestu

Vienas 1 minūtes sveces anatomija: ko OHLCV nestāsta par jūsu atpakaļtestu

Lūk, viena svece. Binance USDⓈ-M perpetual, BTCUSDT, minūte, kas sākas 13:46:00 UTC. Tā no klines endpointa atnāca kā vienkāršs masīvs ar divpadsmit vērtībām, un tas ir visbiežāk izmantotais ievades vienums mazumtirdzniecības un tai pietuvinātā kvantitatīvā pētījumā. Gandrīz katra mūsu ģenerētā stratēģija pieskaras kaut kam šādam.

Tāpēc izjauksim to pa indeksiem un paskatīsimies, cik daudz no tā atpakaļtests interpretē nepareizi.

IndekssVērtībaNosaukums
01773495960000sākuma laiks (ms)
1"84120.50"sākuma cena
2"84177.90"maksimums
3"84098.10"minimums
4"84163.40"beigu cena
5"38.417"bāzes apjoms (BTC)
61773496019999beigu laiks (ms)
7"3232108.94"kotētās valūtas apjoms (USDT)
81204darījumu skaits
9"21.883"taker pirkumu bāzes apjoms
10"1841203.55"taker pirkumu kotētās valūtas apjoms
11"0"ignorēt

[0] un [6]: kura minūte tā ir un kura pulkstenis to nosaka

Sākuma laiks 1773495960000, beigu laiks 1773496019999. Pievērsiet uzmanību otrajam: tas beidzas ar 19999 — vienu milisekundi pirms nākamās sveces sākuma. Logs ir daļēji atvērts, un birža to pasaka pilnīgi skaidri. Puse no datu kļūdām, ko esmu meklējis, sākās ar to, ka kāds abus galapunktus uzskatīja par iekļaujošiem un pie robežas saskaitīja darījumu divreiz, vai arī izlīdzināja datus tā, ka katra 5 minūšu svece aizņēmās no kaimiņienes vienu milisekundi.

Laika zīmogi ir biržas matching engine laiks. Ne jūsu pulkstenis, ne jūsu piegādātāja datu saņemšanas pulkstenis, un arī ne tas pats pulkstenis, ko izmanto funding snapshot. Kad savienojat kline virkni ar funding-rate virkni vai open-interest virkni, kas iegūta no cita endpointa, jūs savienojat avotus, kuri lielākoties sakrīt aptuveni sekundes robežās. 1 minūtes stratēģijai tas nozīmē 1.7% laika kļūdu katrā savienotajā rindā. Jebkam, kas notiek sekundes daļas laikā, tā ir liktenīga.

Un šai svecei ir piešķirts tās sākuma laiks. Tajā ietvertā informācija nav zināma līdz 13:46:59.999. Katrs jautājums par indeksēšanas konvenciju — vai nobīdīt par vienu, vai izmantot sveces beigu vai sākuma laiku kā notikuma laiku — patiesībā ir viens un tas pats lookahead jautājums citā tērpā.

[1] "84120.50": sākuma cena, par kuru nevarat tirgot

Sākuma cena ir pirmā darījuma cena, kas fiksēta loga ietvaros. Tas ir pabeigts darījums starp diviem citiem cilvēkiem. Brīdī, kad svece jūsu dataframe parādās kā rinda, šai cenai jau ir sešdesmit sekundes.

Iepriekšējā svece aizvērās pie 84109.80, tātad starp divām blakus esošām 1 minūtes svecēm ir 10.70 dolāru cenu kustība. Tas ir 1.3 bāzes punkti — diagrammā neredzami un aptuveni ceturtā daļa no taker komisijas. Labi. Bet paskatieties uz to pašu virkni alt perp instrumentam ASV CPI datu publicēšanas brīdī — starp-sveču robi tur sasniedz 15 līdz 40 bāzes punktus. Atpakaļtests, kas ģenerē signālu pie sveces aizvēršanās un izpilda darījumu pie nākamās sveces sākuma cenas, klusi pieņem, ka roba nav, un tas ir nulle tieši tad, kad tam nav nozīmes.

[2] un [3]: "84177.90" maksimums, "84098.10" minimums

Tieši šeit lielākā daļa fill engine iet bojā, tāpēc šī būs garā sadaļa.

Maksimums un minimums ir galējās cenas, kurām pieskārās. Tie neko nepasaka par apjomu vai ilgumu. No neapstrādātās darījumu lentes par šo pašu minūti redzams, ka viss, kas notika pie 84100.00 vai zemāk, bija 0.62 BTC deviņos darījumos 1.4 sekunžu logā. Tātad atpakaļtesta stop orderis pie 84100 tiek "izpildīts" — un, ja jūsu pozīcija ir 3 BTC, lejupceļā jūs apēdāt visu redzamo orderu grāmatu, bet atlikušais apjoms tika izpildīts kaut kur 84105–84130 atceļa posmā. Svece saka, ka minimums bija 84098.10. Tā nesaka, ka tur tika tirgots tikai par $52,000 notional.

1204darījumi minūtē
0.032 BTCvidējais darījuma apjoms (~$2.7k)
0.62 BTCkopējais apjoms pie minimuma vai zem tā
57%apjoma iniciēja pircēji

Otrs virziens ir vēl sliktāks, jo tas jūs glaimo. Pieņemsim, ka jums bija pasīvs limit sell orderis pie 84175. Sveces maksimums ir 84177.90, tāpēc naivs engines jūs izpilda pie 84175 un iegrāmato maker atlīdzību, nevis taker izmaksas. Tas, vai šis orderis patiešām tika izpildīts, ir atkarīgs no jūsu vietas rindā šajā cenu līmenī — informācijas, ko svece nevar zināt un ko jūs, visticamāk, nekad neesat saglabājis. Pieskāriens nav izpilde.

Mūsu fill engine noteikums ir šāds: pasīvs limits tiek izpildīts tikai tad, ja svece iziet cauri šim līmenim, nevis tikai tam pieskaras. Izpildes tieši galējā tick līmenī prasa volume-at-price pierādījumus no darījumu lentes; pretējā gadījumā tās tiek noraidītas. Tas no tipiska mean-reversion portfeļa izņēma aptuveni 6% darījumu un vienam kandidātam samazināja atpakaļtesta Sharpe no 1.9 līdz 1.1. Šis kandidāts nekad nebija reāls; fill noteikums bija tikai pirmā lieta, kas bija pietiekami godīga, lai to pateiktu.

Saistīts slazds: intrabar ceļš. Ja sveces diapazons ietver gan jūsu stop, gan take-profit, OHLCV nevar pateikt, kurš tika sasniegts pirmais. Katram engines jāizvēlas konvencija. Mēs vienmēr pieņemam, ka pirmais tiek sasniegts stop — tas ir pesimistiski, reizēm kļūdaini un nekad nerada viltus uzvaru. Ja jūsu engines pieņem, ka pirmais ir take-profit, plaša diapazona sveces radīs peļņu no neskaidrības, un tieši plaša diapazona sveces dominē jūsu PnL sadalījumā.

[4] "84163.40": vismazāk noturīgais skaitlis svecē

Beigu cena ir pēdējā darījuma cena logā. Tas arī viss. Tas var būt 0.002 BTC odd-lot darījums no bota, kas 13:46:59.8 noslēdz pozīciju. Tieši šo strukturāli patvaļīgo tick lielākā daļa pētniecības konveijeru izmanto, lai aprēķinātu katru signālu, novērtētu katru pozīciju un izvērtētu katru izeju.

BTC perp instrumentiem tas gandrīz neko nemaina; plāni tirgotam altcoin perp instrumentam 04:00 UTC tas ir ārkārtīgi svarīgi, un divu biržu beigu cenu atšķirība tai pašai minūtei var pārsniegt visu jūsu edge par darījumu. Kad stratēģijas PnL ir tieši atkarīgs no beigu cenas, mēs to palaižam atkārtoti, pozīcijas vērtējot pēc biržas mark price — tā tiek atvasināta no indeksa un ir daudz grūtāk manipulējama. Ja rezultāti atšķiras, stratēģija tirgoja artefaktu.

[5] un [7]: "38.417" un "3232108.94", kādās vienībās ir apjoms

Bāzes apjoms ir BTC; kotētās valūtas apjoms ir USDT. Šeit ir abi — ērtība, ko nepiedāvā visas biržas. Iemesls, kāpēc tas ir svarīgi, ir agregēšana starp biržām. Coin-margined līgumi tiek kotēti līgumos ar $100 notional. Daži akciju datu avoti ziņo round lots. Prediction market biržas ziņo akciju skaitu, kur viena akcija ir dolāros denominēta bināra pretenzija. Saskaitot "apjomu" jauktā universā, to nenormalizējot uz vienu notional vienību, tiek iegūts pilnīgi absurds likviditātes rangs — un tas būs absurds stabilā, pārskatīšanu izturošā veidā.

Ielādes brīdī visu normalizējiet uz kotētās valūtas notional. Saglabājiet arī neapstrādāto lauku, bet nekad neļaujiet stratēģijai to redzēt.

[8] 1204: lauks, kam būtu jānosaka jūsu ietekmes modelis

Bāzes apjoms, dalīts ar darījumu skaitu, dod vidējo darījuma apjomu 0.032 BTC jeb aptuveni $2,700. Ja jūsu kandidātstratēģija vēlas uzreiz ieiet ar $250,000, tā prasa apjomu, kas ir aptuveni 92 reizes lielāks par tipisku darījumu šajā minūtē. Tieši šim skaitlim, nevis kādai vispārīgai 5-bps slippage konstantei, būtu jānosaka jūsu kvadrātsaknes ietekmes loceklis. Mēs katrai svecei aprēķinām dalības likmi kā pirmās klases kolonnu un noraidām stratēģijas, kuru mediānā ieejas pozīcija pārsniedz dažus procentus no sveces notional, jo viss, kas seko pēc tam, ir izdomājums.

Darījumu skaits arī lēti atklāj dīvainās minūtes. Apjoms normāls, bet darījumu skaits sarucis līdz 11? Kāds veica bloka darījumu. Apjoms normāls, bet darījumu skaits ir 9,000? Tā ir likvidāciju kaskāde, kas tiek izpildīta sīkos gabalos.

[9] un [10]: "21.883", lauks, ko visi izmet

Taker pirkumu bāzes apjoms. Šajā svecē pircēji iniciēja 21.883 no 38.417 BTC, tāpēc parakstītā apjoma delta ir +5.349 BTC un agresora sadalījums ir 57/43 par labu pircējiem. Birža jums bez maksas nodod order flow imbalance laukā, ko vairums cilvēku nekad neizlasa, jo pandas viņiem kolonnu nav nosaukusi.

Es nesaku, ka tas pats par sevi prognozē ienesīgumu; naivas delta stratēģijas ir viens no drošākajiem veidiem, kā papildināt komisiju uzskaites grāmatu. Taču tas ir patiesi atšķirīgs mērījums no cenas, tas ir pieejams tajā pašā pieprasījumā, ko jūs jau veicāt, un tas ļauj atšķirt ralliju, ko nopirka, no rallija, kas notika tāpēc, ka pārdevēji atkāpās. OHLC abi izskatās vienādi, bet pēc desmit minūtēm uzvedas atšķirīgi. Mūsu research agent uzskata, ka hipotēze, kas ignorē taker sadalījumu biržā, kura to publicē, atstāj pierādījumus neizmantotus.

[11] "0": ignorēt — un viss pārējais, kā šeit nav

Indekss 11 ir novecojis lauks, kas vienmēr ir nulle. Interesantāks ir saraksts ar to, ko šī svece nesatur: ne bid, ne ask, ne spread, ne orderu grāmatas dziļuma, ne funding rate, ne open interest, ne likvidāciju, ne mark price, ne index price. Un, kas ir būtiski, nav iespējams zināt, vai jūsu orderis būtu maker vai taker, proti, vai šajā biržā jūs maksātu 0.045% vai nopelnītu 0.01%.

Tātad jebkurš komisiju modelis, kas balstās tikai uz klines, ir pieņēmums, kas pārģērbies par skaitli. Mēs to atrisinām, liekot katrai stratēģijai jau sākumā deklarēt savu izpildes stilu un pēc tam piemērojot taker komisiju visam, kas nespēj pierādīt pretējo.

Svece, kas nekad neparādījās

Pēdējā daļa, un tā vissāpīgāk skar instrumentus ārpus lielākajiem tirgiem. Minūte ar nulli darījumu nerada nekādu kline. Piegādātāji un bibliotēkas to bieži aizpilda ar iepriekšējās vērtības pārnešanu: open = high = low = close = iepriekšējā close, volume 0. Jūsu indikators mierīgi rēķina. Jūsu stratēģija redz derīgu rindu un var ģenerēt signālu minūtē, kurā neviens pasaulē ar šo instrumentu netirgojās.

Vienam vidējas kapitalizācijas perp instrumentam, ko ielādējām, 4.1% no 1 minūtes svecēm divpadsmit mēnešu logā bija ar nulli darījumu. Mean-reversion kandidāts šim simbolam 38% savu ieeju veica sintētiskajās svecēs, jo plakanas sintētiskās cenas ir kārdinošas visam, kas mēra novirzi no slīdošā vidējā. Atpakaļtestā tas izskatījās lieliski. Tas tirgoja datu robus.

Tāpēc ielādes slānis tagad katrai svecei pievieno synthetic boolean, kas tiek pārnests caur katru resamplingu, un verification gauntlet noraida jebkuru stratēģiju, kuras darījumi uz tā sakoncentrējas. Lēta kolonna. Tā ir nogalinājusi vairāk kandidātu nekā jebkurš indikators, ko jebkad esam uzrakstījuši.

Divpadsmit vērtības. Četras no tām regulāri tiek interpretētas nepareizi, divas regulāri tiek izmestas, un vesela kategorija nav ietverta rindā, bet tiek iztēlota engines. Pirms nākamā atpakaļtesta paņemiet no savas datu krātuves vienu neapstrādātu sveci un skaļi izlasiet katru lauku, salīdzinot to ar to, ko jūsu fill logic par to pieņem. Tas aizņem divdesmit minūtes, un es nekad neesmu redzējis, ka kāds to izdarītu un neko neatrastu.

ohlcvtirgus mikrostruktūradatu inženierijaatpakaļtestēšanakriptovalūtu fjūčeri
← Visi raksti