1. syyskuu 2026 · yhtiötapahtumat

Splittikorjattu data purettuna: mitä NVDA:n 10:1-split tekee jokaiselle riville

Splittikorjattu data purettuna: mitä NVDA:n 10:1-split tekee jokaiselle riville

Tässä on yksi rivi osakkeiden päivätiedostosta. NVDA, perjantai 7. kesäkuuta 2024, viimeinen kaupankäyntipäivä ennen 10:1-splitin voimaantuloa.

Sarake Arvo
päivä 2024-06-07
päätöskurssi 1208.88
vaihto 42,800,000 (pyöristetty)
split_factor 1.0
osinko 0.00
korjattu päätöskurssi 120.8781

Olen jättänyt OHLC-sarakkeet tästä näkymästä tarkoituksella pois. Ne palaavat mukaan loppupuolella, ja juuri ne aiheuttavat huomaamattomia virheitä.

Kaikki mielenkiintoinen tässä rivissä piilee toisen ja kuudennen sarakkeen välisessä erossa. Kaupankäyntinauhalle kirjautui 7. kesäkuuta hinta 1208.88. Kukaan ei enää koskaan käy kauppaa sillä hinnalla siinä mielessä, ettei sen tarkoittamaa osaketta enää ole yksikkönä olemassa. 120.8781 on rekonstruktio, eikä se ole vain 1208.88 jaettuna kymmenellä. Käydään sarakkeet läpi yksi kerrallaan.

10:1jakaja sovellettuna kaikkiin aiempiin riveihin
0.99991789osinkokerroin, kirjattu päivää myöhemmin
$90kuvitteellinen palkkio edestakaisesta kaupasta
5.6ppjakajan synnyttämä vuosituoton rasite

päivä: 2024-06-07 ja kaksi muuta vielä tärkeämpää päivämäärää

Splitistä ilmoitettiin 22. toukokuuta 2024 tulosjulkistuksen yhteydessä. Täsmäytyspäivä oli 6. kesäkuuta. Kaupankäynti splitillä korjatuilla hinnoilla alkoi maanantaina 10. kesäkuuta. Päivämääriä on kolme, ja datatoimittajasi split_factor sarake osuu täsmälleen yhteen niistä, yleensä ensimmäiseen split-korjattuun kaupankäyntipäivään. Päivän virheellinen kohdistus on yleisin yhtiötapahtumavirhe, johon törmään, ja se jää koontiluvuissa näkymättömäksi: tuottokäyrääsi tulee yhtenä päivänä joko 90%:n pudotus tai 900%:n nousu. 2,000 päivän ajalta laskettu Sharpe tuskin huomaa sitä, mutta suurin pudotus tai stop-loss-sääntö huomaa varmasti.

Osingolla on oma päivämääräongelmansa, ja se muuttui kaikilta huomaamatta vuonna 2024. NVDA:n splitin jälkeisen $0.01:n neljännesvuosiosingon täsmäytyspäivä oli 11. kesäkuuta. Yhdysvaltain selvitysaika siirtyi T+1-malliin 28. toukokuuta 2024, joten irtoamispäivä ja täsmäytyspäivä ovat nyt sama päivä. Jokainen lataaja, joka johtaa irtoamispäivän kaavalla "täsmäytyspäivä miinus yksi arkipäivä" — kuten vuosikymmenten ajan oli oikein — alkoi kesäkuussa 2024 tuottaa osinkokorjauksia huomaamatta yhtä kaupankäyntipäivää liian aikaisin. Mikään ei anna virhettä. Kerroin vain osuu väärälle riville.

Yhtiötapahtumakoodin virhetila ei ole koskaan poikkeus. Se on päivän verran pielessä oleva luku, joka näyttää täysin uskottavalta.

päätöskurssi: 1208.88 — hinta, jota tiedostossa ei ole

Tämä on raakahinta, ja useimmissa tutkimusputkissa se on vain sarake, jota kukaan ei lue. Signaalit lasketaan adj_close. Nyt mikä tahansa sääntö, joka viittaa osakekohtaiseen dollarimääräiseen hintatasoon, viittaa lukuun, jota yksikään markkinaosapuoli ei koskaan nähnyt.

NVDA:n nousu kohti $1,000:n rajaa keväällä 2024 oli todellinen ilmiö, jonka takana oli todellista toimeksiantovirtaa: tasalukujen vetovoima, 950:n ja 1000:n kohdalle kasautuneet optioiden toteutushinnat ja jokaisen lähestymisen yhteydessä kasvanut otsikkoriski. Korjatussa datassa koko jakso tapahtuu $100:n tasolla. Jos testaat psykologisten hintatasojen käyttäytymistä, aukkojen täyttymislogiikkaa tasalukujen lähellä tai toteutushinnan läheisyyttä mittaavaa ominaisuutta, testaat sitä hintasarjalla, jonka mittakaavaa muutti tapahtuma, jota ei ollut vielä tapahtunut.

Sama koskee universumin suodattimia. "Sulje pois alle $5:n osakkeet" on perusteltu sijaismittari todellisille markkinamikrorakenteen ongelmille: leveille suhteellisille spreadeille, vakuuskelpoisuussäännöille ja tikkiportaikoille. Jos ajat sen korjatulla historiallisella datalla, suljet yhtiöitä pois ajanjaksoilta, jolloin niiden osakekurssi oli $30 ja ne käänteissplitattiin myöhemmin. Jos käytät ehtoa "hinta yli $500", NVDA putoaa huomaamatta pois jokaiselta vuodelta ennen kesäkuuta 2024. Hintasuodattimet kuuluvat korjaamattomille markkinahinnoille. Piste.

split_factor: 1.0 — ja seuraavan rivin 0.1

Kerroin on kumulatiivinen tulo, jota lasketaan taaksepäin nykyhetkestä. Jokaisella 10. kesäkuuta 2024 edeltävällä rivillä on tästä splitistä peräisin oleva 0.1, kerrottuna vuoden 2021 4:1-splitin 0.25:llä ja sitä edeltävillä kertoimilla. NVDA:n vuotta 2021 edeltävä historia on skaalattu kertoimella 0.025, joten vuonna 2019 hintaan $200 kirjattu kynttilä näkyy hintana $5.00.

Pidä mielessä kaksi seurausta. Ensinnäkin korjattu historia muuttuu aina, kun mukaan tulee uusi yhtiötapahtuma. Toukokuussa 2024 ajamasi jälkitesti ja tänään ajamasi jälkitesti tuottavat eri luvut, vaikka koodi ja päivämäärät ovat samat. Jos tallensit välimuistiin ominaisuuksia tunnisteella, jossa on vain symboli ja päivämäärä mutta ei dataversiota, välimuistisi sisältää nyt kahta eri mittakaavaa. Versioimme korjausajankohdan ominaisuusavaimeen juuri tästä syystä. Tämän oppimiseen kului yksi hyvin hämmentävä iltapäivä.

Toiseksi, kertoimella 0.025 skaalattu osake, jonka kaupankäyntitikki oli $0.01, liikkuu nyt $0.00025:n askelin. Tikin pyöristyslogiikkasi, "onko tämä uusi huippu" -vertailusi ja liukulukujen yhtäsuuruustarkistuksesi toimivat kaikki paljon pienemmällä tarkkuudella kuin mitä markkinoilla todellisuudessa oli käytössä.

osinko: 0.01 — luku, joka siirtää kaikki aiemmat hinnat pois senttiruudukosta

Yksi sentti. Se näyttää kohinalta, mutta juuri sen vuoksi adj_close on 120.8781 eikä siisti 120.888.

10. kesäkuuta päätöskurssi oli 121.79. Osingon irtoamiskerroin on (121.79 − 0.01) / 121.79 = 0.99991789. Tämä kerroin kerrotaan kaikilla 11. kesäkuuta edeltävillä hinnoilla, joten splitillä korjatusta arvosta 120.888 tulee 120.878074. Muutos on pieni mutta pysyvä, ja se sovelletaan uudelleen jokaisena NVDA:n historian noin kuutena kymmenenä irtoamispäivänä. Olennaista on kertoimien kasautuminen: kun tarkastelet vuotta 2015, hinta on kerrottu kymmenillä hieman epärationaalisilla kertoimilla. Yksikään korjattu historiallinen hinta ei osu senttiruudukkoon.

Tämä tarkoittaa, että jokainen == vertailu tasalukuihin on väärä, jokainen "kävikö hinta rajahinnassa" -tarkistus tarvitsee toleranssin, eikä rekonstruoitu OHLC enää täytä ehtoa low ≤ open ≤ high, jos arvot pyöristetään suoraan 4 desimaaliin. Se tarkoittaa myös, että adj_close on kokonaistuottosarja, kun taas close on hintatuottosarja. Jos lasket tuotot toisesta ja pudotukset toisesta, sekoitat kaksi eri määritelmää siitä, mitä tapahtui.

vaihto: 42,800,000 — jakaja, jota ei sovelleta johdonmukaisesti

Osakemääräinen vaihto pitää kertoa 10:llä, jotta se on vertailukelpoinen splitin jälkeisten kaupankäyntipäivien kanssa. Jotkin datatoimittajat tekevät näin. Jotkin eivät. Jotkin korjaavat OHLC:n mutta jättävät vaihdon raakamuotoon. Se on kolmesta vaihtoehdosta huonoin, koska tiedosto näyttää sisäisesti johdonmukaiselta siihen asti, kunnes kerrot hinnan vaihdolla.

Järkevintä on lopettaa osakemääräisen vaihdon käyttö ominaisuutena ja käyttää dollarimääräistä vaihtoa, joka on määritelmänsä mukaan splitistä riippumaton. 20 päivän keskimääräiseen dollarimääräiseen vaihtoon perustuva likviditeettisuodatin ei tarvitse lainkaan korjauslogiikkaa, eikä yhtiötapahtuma voi rikkoa sitä. Ominaisuuden riippumattomuus voittaa oikean korjauskoodin, sillä korjauskoodin oikeellisuudesta on pidettävä jatkuvasti huolta.

Kolme datatoimittajan tiedostomuotoa, kolme virhetilaa.

Mitä tiedosto sisältää Mikä menee rikki
Vain korjattu päätöskurssi, raaka OHLC Aukko- ja päivänsisäinen logiikka laskee kahden hintaskaalaan perustuvan sarjan välillä
Korjattu OHLC, raaka vaihto Dollarimääräinen vaihto vääristyy split-suhteen verran; ADV-suodattimet toimivat väärin
Raaka OHLCV ja kerroinsarakkeet Ei mitään, jos sovellat niitä. Kaikki, jos sovellat niitä väärälle riville

Puuttuvat sarakkeet: adj_open, adj_high, adj_low

Palautetaan nyt OHLC mukaan. Jos syöte korjaa vain päätöskurssin ja strategiasi laskee yön yli ulottuvan hintaraon kaavalla open / prev_adj_close − 1, se laskee 10. kesäkuuta 2024 arvon 120.37 / 120.8781 − 1, joka on kelvollinen luku, noin −0.4%. Kun ajat saman koodin taaksepäin 7. kesäkuuta 2024 asti, avauskurssi tulee raakadatasta (noin 1207) mutta sitä verrataan päätöskurssiin, jota aiemmat splitit ovat korjanneet kertoimella 0.025. Tuloksena on useiden tuhansien prosenttien hintarako.

Kaikki raakasarakkeen ja korjatun sarakkeen yhdistävä laskenta tapahtuu kahdessa eri koordinaatistossa. Käsittelen nykyään korjaustavoiltaan sekoitettujen sarakkeiden lukemista lataajan tasolla tarkistettavana ehtona. Tutkijan ei pidä joutua muistamaan asiaa, koska tutkijat unohtavat sen, minä mukaan lukien.

Mitä mikään sarake ei kerro: montako osaketta olisit oikeasti ostanut

Tämä näkyy jälkitestin kulumallissa suoraan rahana, ja siksi ylipäätään kirjoitan osakesplitistä.

Yhdysvaltalaisissa osakkeissa välityspalkkio on usein osakekohtainen. Oletetaan, että palkkio on $0.005 ja toimeksiannon vähimmäispalkkio $1.00, mikä on tavallinen vähittäissijoittajalle tarjottu kiinteä hinnoittelutaso. Testataan sitten $400,000:n NVDA-positiota vuotta ennen splittiä, jolloin raakahinta oli lähellä $400:aa ja korjattu hinta näkyy arvona $40.

Osakkeita Palkkio
Todellinen tapahtuma (raaka $400) 1,000 $5.00
Mitä jälkitesti näkee (korjattu $40) 10,000 $50.00

Sama altistus, sama kauppa, mallinnettu kustannus 10-kertainen. Kuvitteellista kulua kertyy $45 per jalka ja $90 edestakaiselta kaupalta, ja päivittäin kauppaa käyvä strategia kuluttaa vuodessa noin $22,000 kustannuksiin, joita ei koskaan ollut. $400k:n salkussa se on 5.6 prosenttiyksikköä vuosituotosta, kokonaan jakajan synnyttämää. Tässä tapauksessa se saa tulokset näyttämään todellisuutta heikommilta, mikä on vielä siedettävää.

Käänteissplitit toimivat päinvastaiseen suuntaan, ja se on vaarallista. 1:10-käänteissplitissä korjattu historia näyttää hinnat 10 kertaa suurempina ja osakemäärät 10 kertaa pienempinä kuin millä olisit käynyt kauppaa. Kulumallisi jakaa osakekohtaisen palkkion huomaamatta kymmenellä. Käänteissplitit ovat yleisiä pienyhtiöissä, joiden osakekurssi on alle $5 ja spreadit leveitä; siellä osakekohtaiset palkkiot ovat kulupinon suurin yksittäinen erä. Jälkitesti kaunistelee juuri niitä osakkeita, joita sen pitäisi rangaista eniten.

Korjaus on siis yksinkertainen ja rakenteellinen: määritä positiot dollarimääräisinä, muunna ne osakkeiksi käyttämällä kyseisen päivän korjaamatonta hintaa ja veloita osakekohtaiset palkkiot tämän määrän perusteella. Säilytä raakahintasaraketta lataajassa pysyvästi, ei tarkastusta varten vaan täyttömoottorin aktiivisena syötteenä.

  1. Signaalit ja tuotot: korjattu sarja.
  2. Osakemäärät, osakekohtaiset palkkiot, tikin pyöristys ja hintatasosuodattimet: korjaamaton sarja.
  3. Likviditeetti ja kapasiteetti: dollarimääräinen vaihto, joka ei tarvitse kumpaakaan.

Kuusi saraketta, yksi rivi ja varsin tavanomainen yhtiötapahtuma, josta ilmoitettiin kolme viikkoa etukäteen eikä joka yllättänyt ketään. Markkina käsitteli sen yhdessä aamussa. Sen tarkka rekonstruointi tutkimusputkessa on huomattavasti vaikeampaa, eikä keskeneräisen putken paljastava merkki ole juuri koskaan virheilmoitus.

yhtiötapahtumatsplit-korjausyhdysvaltalaiset osakkeetdatatekniikkajälkitestaus
← Kaikki kirjoitukset