Inilah satu baris daripada fail ekuiti harian. NVDA, Jumaat 7 Jun 2024, sesi terakhir sebelum pecahan 10-untuk-1 berkuat kuasa.
| Lajur | Nilai |
|---|---|
| date | 2024-06-07 |
| close | 1208.88 |
| volume | 42,800,000 (dibulatkan) |
| split_factor | 1.0 |
| dividend | 0.00 |
| adj_close | 120.8781 |
Saya sengaja mengeluarkan lajur OHLC daripada paparan ini. Ia kembali hampir di hujung, dan itulah yang rosak secara senyap.
Segala yang menarik tentang baris ini terletak dalam jurang antara lajur dua dan lajur enam. Pita pada 7 Jun mencetak 1208.88. Tiada siapa akan bertransaksi pada harga itu lagi, dalam erti kata saham yang dirujuknya tidak lagi wujud sebagai satu unit. Angka 120.8781 ialah pembinaan semula, dan ia bukan semata-mata 1208.88 dibahagi sepuluh. Mari kita teliti lajur demi lajur.
date: 2024-06-07, dan dua tarikh lain yang lebih penting
Pecahan diumumkan pada 22 Mei 2024 bersama keputusan pendapatan. Tarikh rekod ialah 6 Jun. Dagangan bermula atas dasar terlaras pecahan pada Isnin 10 Jun. Tiga tarikh, dan lajur split_factor pembekal anda duduk pada tepat satu daripadanya, biasanya sesi terlaras pecahan yang pertama. Ralat off-by-one di sini ialah pepijat aksi korporat yang paling kerap saya lihat, dan ia tidak kelihatan secara agregat: lengkung ekuiti anda mendapat satu gap-down 90% atau satu gap-up 900% pada satu hari, yang Sharpe yang dikira sepanjang 2,000 hari hampir tidak daftar tetapi susutan maksimum atau peraturan stop-loss pasti mengesannya.
Dividen mempunyai masalah tarikhnya sendiri, dan ia berubah di bawah kaki semua orang pada 2024. Dividen suku tahunan $0.01 pasca-pecahan NVDA mempunyai tarikh rekod 11 Jun. Penyelesaian AS beralih ke T+1 pada 28 Mei 2024, yang bermakna tarikh ex dan tarikh rekod kini hari yang sama. Mana-mana pemuat yang mengira tarikh ex sebagai "tarikh rekod tolak satu hari perniagaan", yang betul selama beberapa dekad, mula secara senyap menghasilkan pelarasan dividen satu sesi lebih awal pada Jun 2024. Tiada pengecualian dilontar. Faktor itu hanya mendarat pada baris yang salah.
Mod kegagalan kod aksi korporat tidak pernah suatu exception. Ia nombor yang tersilap satu hari dan kelihatan amat munasabah.
close: 1208.88 — harga yang tiada dalam fail
Ini cetakan mentah, dan dalam kebanyakan saluran pemprosesan penyelidikan ia wujud hanya sebagai lajur yang tiada siapa baca. Isyarat dikira pada adj_close. Dan mana-mana peraturan yang merujuk tahap harga per saham dalam dolar kini merujuk nombor yang tidak pernah dilihat oleh mana-mana peserta pasaran.
Pendakian NVDA menuju $1,000 pada musim bunga 2024 ialah perkara sebenar dengan aliran pesanan sebenar di belakangnya: magnet nombor bulat, strike opsyen berkumpul di 950 dan 1000, risiko berita utama pada setiap pendekatan. Dalam data terlaras keseluruhan episod itu berlaku pada $100. Jika anda menguji tingkah laku tahap psikologi, logik pengisian jurang berhampiran nombor bulat, atau ciri kedekatan strike, anda mengujinya terhadap siri harga yang diskalakan semula oleh peristiwa yang belum berlaku lagi.
Perkara yang sama terpakai pada penapis univers. "Kecualikan saham di bawah $5" ialah proksi sah untuk kelompok sebenar masalah mikrostruktur: spread relatif yang luas, peraturan kebolehan margin, rejim tik. Jalankan ia terhadap sejarah terlaras dan anda mengecualikan syarikat untuk tempoh apabila mereka didagangkan pada $30 dan kemudiannya mengalami pecahan terbalik. Jalankan "harga melebihi $500" dan anda secara senyap menggugurkan NVDA daripada setiap tahun sebelum Jun 2024. Penapis harga sepatutnya pada cetakan tidak terlaras. Titik.
split_factor: 1.0 — dan 0.1 pada baris seterusnya
Faktor itu ialah hasil darab kumulatif yang berjalan ke belakang dari hari ini. Setiap baris sebelum 10 Jun 2024 membawa 0.1 daripada pecahan ini, didarab dengan 0.25 daripada pecahan 4-untuk-1 pada 2021, didarab dengan apa sahaja yang datang sebelumnya. Sejarah NVDA pra-2021 diskalakan dengan 0.025, jadi bar yang mencetak pada $200 pada 2019 muncul sebagai $5.00.
Dua akibat yang patut diingat. Pertama, sejarah terlaras berubah setiap kali aksi korporat baharu mendarat. Ujian semula yang anda jalankan pada Mei 2024 dan yang anda jalankan hari ini menghasilkan nombor berbeza pada kod yang sama sepanjang tarikh yang sama, dan jika anda menyimpan cache ciri yang dikunci pada simbol dan tarikh tanpa cop versi data, anda kini mempunyai cache yang mencampurkan dua skala. Kami memasukkan versi epok pelarasan ke dalam kunci ciri atas sebab ini tepat; kami mengambil satu petang yang amat mengelirukan untuk mempelajarinya.
Kedua, pada penskalaan 0.025, saham yang didagangkan dalam tik $0.01 kini bergerak dalam kenaikan $0.00025. Logik pembulatan tik anda, perbandingan "adakah ini paras tertinggi baharu" anda, semakan kesamaan float anda: semuanya kini beroperasi jauh di bawah resolusi yang sebenar-benarnya ada pada pasaran.
dividend: 0.01 — nombor yang mengeluarkan setiap harga di belakangnya daripada grid
Satu sen. Ia kelihatan seperti hingar, dan itulah sebab adj_close membaca 120.8781 dan bukan 120.888 yang kemas.
Harga tutup 10 Jun ialah 121.79. Faktor ex-dividen ialah (121.79 − 0.01) / 121.79 = 0.99991789. Faktor itu mendarab setiap harga sebelum 11 Jun, jadi 120.888 terlaras pecahan menjadi 120.878074. Kecil, dan kekal, dan dikenakan semula pada setiap satu daripada enam puluh lebih tarikh ex yang merentasi sejarah NVDA. Pengkompaunan itulah yang penting: apabila anda melihat 2015, anda melihat harga yang telah didarab dengan puluhan faktor yang agak tidak rasional. Tiada satu pun harga sejarah terlaras duduk pada grid sen.
Ini bermakna setiap == perbandingan terhadap tahap bulat adalah salah, setiap semakan "adakah kita menyentuh harga had" memerlukan toleransi, dan OHLC yang dibina semula anda tidak lagi memenuhi invarians bahawa low ≤ open ≤ high selepas pembulatan naif kepada 4 perpuluhan. Ia juga bermakna adj_close ialah siri pulangan keseluruhan manakala close ialah siri pulangan harga, dan jika anda mengira pulangan daripada satu dan susutan daripada yang lain anda telah mencampurkan dua definisi berbeza tentang apa yang berlaku.
volume: 42,800,000 — pembahagi yang tiada siapa kenakan secara konsisten
Volum saham perlu didarab dengan 10 untuk setanding dengan sesi pasca-pecahan. Ada pembekal yang buat. Ada yang tidak. Ada yang melaras OHLC dan membiarkan volum mentah, yang terburuk daripada tiga kerana fail kelihatan konsisten dalaman sehingga anda mendarab harga dengan volum.
Langkah yang jujur ialah berhenti menggunakan volum saham sebagai ciri dan menggunakan volum dolar, yang invarians terhadap pecahan secara konstruksinya. Penapis kecairan volum dolar purata 20 hari tidak memerlukan logik pelarasan langsung dan tidak boleh dirosakkan oleh aksi korporat. Invarians ciri mengalahkan kod pelarasan yang betul, kerana kod pelarasan yang betul ialah sesuatu yang anda perlu terus pastikan betul.
Tiga bentuk fail pembekal, tiga mod kegagalan.
| Apa yang dibekalkan | Apa yang rosak |
|---|---|
| Hanya tutup terlaras, OHLC mentah | Logik jurang dan intrabar mengira merentasi dua skala harga |
| OHLC terlaras, volum mentah | Volum dolar tersilap sebanyak nisbah pecahan; penapis ADV tersalah tembak |
| OHLCV mentah ditambah lajur faktor | Tiada apa-apa, jika anda kenakannya. Segalanya, jika anda kenakannya pada baris yang salah |
Lajur yang tiada di sini: adj_open, adj_high, adj_low
Sekarang letakkan OHLC semula. Jika suapan hanya melaras harga tutup dan strategi anda mengira jurang semalaman sebagai open / prev_adj_close − 1, maka pada 10 Jun 2024 ia mengira 120.37 / 120.8781 − 1, yang merupakan nombor yang elok, lebih kurang −0.4%. Jalankan kod yang sama ke belakang ke 7 Jun 2024 dan ia mengira harga buka daripada fail mentah (lebih kurang 1207) terhadap harga tutup yang dilaras dengan 0.025 daripada pecahan lebih lama, dan ia menghasilkan jurang beberapa ribu peratus.
Apa-apa yang mencampurkan lajur mentah dengan yang terlaras ialah aritmetik merentasi dua sistem koordinat. Saya kini merawat bacaan pelarasan bercampur sebagai penegasan peringkat pemuat dan bukan sesuatu yang penyelidik perlu ingat, kerana penyelidik tidak akan ingat, termasuk saya.
Apa yang tiada lajur beritahu anda: berapa banyak saham yang sebenar-benarnya anda akan beli
Inilah yang memakan wang dalam model kos ujian semula, dan itulah sebabnya saya menulis tentang pecahan saham pun.
Komisen ekuiti AS kerap kali per saham. Anggap ia $0.005 dengan minimum pesanan $1.00, yang merupakan peringkat tetap broker runcit yang biasa. Sekarang uji semula kedudukan NVDA $400,000 setahun sebelum pecahan, apabila harga mentah hampir $400 dan harga terlaras ditunjukkan sebagai $40.
| Saham | Komisen | |
|---|---|---|
| Apa yang sebenar-benarnya berlaku (mentah $400) | 1,000 | $5.00 |
| Apa yang dilihat ujian semula (terlaras $40) | 10,000 | $50.00 |
Pendedahan sama, dagangan sama, kos yang dimodelkan 10x. Itu $45 rekaan setiap leg, $90 setiap pusingan lengkap, dan strategi yang berpusing ganti harian memakan lebih kurang $22,000 setahun kos yang tidak pernah wujud. Pada buku $400k, 5.6 mata peratusan pulangan tahunan, sepenuhnya dicipta oleh pembahagi. Di sini ia membuatkan anda kelihatan lebih teruk daripada realiti, yang masih boleh ditanggung.
Pecahan terbalik berjalan ke arah sebaliknya, dan itulah arah yang berbahaya. Pecahan terbalik 1-untuk-10 bermakna sejarah terlaras menunjukkan harga 10x lebih tinggi dan kiraan saham 10x lebih rendah daripada apa yang anda akan dagangkan. Model kos anda secara senyap membahagi komisen per saham dengan sepuluh. Univers di mana pecahan terbalik biasa ialah univers small-cap, sub-$5, spread luas di mana yuran per saham ialah item tunggal terbesar dalam timbunan kos. Ujian semula memuji tepat nama-nama yang sepatutnya dihukumnya.
Jadi pembetulannya membosankan dan struktural: saizkan kedudukan dalam dolar, tukar kepada saham menggunakan harga tidak terlaras untuk tarikh itu, dan caj yuran per saham ke atas kiraan itu. Kekalkan lajur harga mentah dalam pemuat selama-lamanya, bukan sebagai artifak audit tetapi sebagai input langsung kepada enjin pengisian.
- Isyarat dan pulangan: siri terlaras.
- Kiraan saham, yuran per saham, pembulatan tik, penapis tahap harga: siri tidak terlaras.
- Kecairan dan kapasiti: volum dolar, yang tidak memerlukan mana-mana pun.
Enam lajur, satu baris, satu aksi korporat yang agak biasa yang diumumkan tiga minggu lebih awal dan tidak mengejutkan sesiapa. Pasaran menanganinya dalam satu pagi. Membina semula dengan setia dalam saluran pemprosesan penyelidikan jauh lebih sukar daripada itu, dan petanda bahawa sesuatu saluran pemprosesan belum berbuat demikian hampir tidak pernah mesej ralat.
← Semua catatan


