Purged cross-validation dan embargo: mencegah kebocoran label pada model trading
Pelajari cara memvalidasi deret waktu keuangan ketika interval label forward saling tumpang tindih, serta perbedaan purging dan embargo dari walk-forward, TimeSeriesSplit, dan CPCV.
Dalam panduan iniMengapa pembagian acak dapat memberi kesan keliru?
Ringkasan singkat
Ketika interval hasil pada label forward saling tumpang tindih, pembagian acak dapat membocorkan informasi antara data latih dan uji. Purging membuang sampel latih yang interval hasilnya bertumpang tindih dengan interval hasil sampel uji. Embargo adalah jeda terpisah setelah blok uji pada skema tertentu. Keduanya tidak otomatis membuat urutan waktu menjadi kronologis atau memperbaiki fitur yang dibentuk dengan keliru.
Mengapa pembagian acak dapat memberi kesan keliru?
Random K-fold membagi baris secara acak ke fold latih dan uji. Ini dapat menyesatkan pada deret waktu keuangan jika observasi saling bergantung atau interval hasil forward bertumpang tindih. Label sampel latih bisa mencakup return dari tanggal yang juga masuk ke label sampel uji. Akibatnya, validasi menjadi lebih mudah daripada memperkirakan periode mendatang yang belum diamati.
Namun, tidak setiap penggunaan K-fold selalu salah. Kecocokannya bergantung pada pertanyaan evaluasi, cara sampel dibentuk, dependensi waktunya, dan definisi label. Mengacak baris return harian saja tidak memeriksa rentang waktu yang direpresentasikan oleh setiap baris.
Tetapkan waktu keputusan, fitur, dan interval label
Untuk setiap sampel, catat waktu keputusan t, informasi yang benar-benar tersedia saat itu, jendela fitur, interval target/label, dan titik akhir penyelesaian label t1. Label return ke depan lima sesi mencakup (t,t+5]: mulai setelah waktu keputusan dan berakhir pada penutupan sesi kelima.
Setiap fitur harus memakai data yang memang tersedia saat prediksi pada t. Riwayat masa lalu yang sama muncul di dua jendela fitur tidak dengan sendirinya merupakan kebocoran; model boleh memakai ulang riwayat pasar yang telah diketahui. Namun, memakai nilai dari masa depan atau revisi data yang baru tersedia setelah keputusan merupakan kebocoran. Simpan waktu mulai dan selesai aktual tiap peristiwa, terutama jika label peristiwa memiliki durasi berbeda-beda.
Buang sampel latih yang hasilnya bertumpang tindih dengan uji
Purging membuang sampel latih jika interval hasil/label aktualnya bertumpang tindih dengan interval hasil sampel uji. Periksa interval waktunya secara langsung, bukan sekadar membuang sejumlah baris tetap di sekitar batas fold. Untuk label peristiwa berdurasi variabel, gunakan timestamp awal dan akhir peristiwa yang sebenarnya; jangan menggantinya dengan hitungan baris tetap yang praktis tetapi tidak sesuai.
Bab 7 Advances in Financial Machine Learning karya Francisco López de Prado membahas cross-validation dan purging untuk menangani tumpang tindih informasi. Menghapus label yang bertumpang tindih tidak otomatis membuat split kronologis: data latih mungkin masih mencakup observasi setelah blok uji. Jelaskan pertanyaan yang dijawab split tersebut, bukan menganggap setiap fold sebagai simulasi penerapan di masa depan.
Contoh per sesi untuk memeriksa tumpang tindih
Anggap keputusan dibuat setiap hari dan interval hasil forward adalah lima sesi, yakni (t,t+5]. Tanggal keputusan pada blok uji adalah 11–15, sehingga label uji berlangsung sampai hari ke-20. Dalam contoh ini, angka hari adalah sesi perdagangan berurutan dan batas kanan interval ikut dihitung, sesuai tanda kurungnya.
Label latih (7,12] bertumpang tindih dengan hasil uji—misalnya label uji yang dimulai pada hari ke-11—maka sampel itu di-purge. Interval latih (16,21] juga bertumpang tindih dengan label uji yang dimulai pada hari ke-15 dan berakhir pada hari ke-20; sampel itu juga di-purge. Keputusan ini mengikuti irisan interval, bukan jarak tetap dalam jumlah baris.
Label sampel yang lebih belakangan mungkin tidak beririsan dengan hasil uji, tetapi tetap dikeluarkan karena masuk ke embargo terpisah setelah blok uji. Ini ilustrasi asumsi tertentu, bukan ketentuan tentang panjang gap yang universal untuk semua data atau strategi.
Perlakukan embargo sebagai jeda terpisah dengan alasan jelas
Embargo adalah buffer yang ditetapkan setelah blok uji. Observasi yang lebih belakangan baru boleh masuk ke data latih setelah buffer itu, pada skema yang dapat memakai data sebelum dan sesudah blok uji. Embargo dapat mengurangi dependensi tersisa dari pembentukan peristiwa atau fitur, sekalipun label sampel belakangan tidak langsung beririsan dengan label uji.
Tidak ada persentase atau durasi yang berlaku untuk semua kasus, dan embargo tidak menggantikan pemeriksaan interval aktual. Tentukan panjangnya berdasarkan frekuensi sampling, horizon label, konstruksi fitur, dan dependensi yang ingin dikurangi; catat alasannya. Embargo terlalu panjang dapat membuang data latih yang berguna, sedangkan jeda terlalu pendek mungkin masih menyisakan dependensi penting.

Bandingkan metode validasi menurut pertanyaannya
Random K-fold membagi observasi ke fold secara acak; jika observasi bergantung atau label bertumpang tindih, hasilnya belum tentu menyerupai prediksi untuk periode yang lebih baru. Walk-forward atau rolling-origin melatih model pada masa lalu dan menguji blok waktu berikutnya, lalu menggeser batasnya ke depan. Pendekatan ini lebih dekat dengan simulasi penerapan historis, tetapi tidak dengan sendirinya mencegah kebocoran fitur atau pemilihan model berdasarkan data uji.
TimeSeriesSplit dari scikit-learn membuat split berurutan dan opsi gap mengeluarkan sejumlah baris antara data latih dan uji. Dokumentasi resminya menyebut bahwa perbandingan durasi uji mengandaikan observasi berjarak sama; gap menghitung baris, bukan memeriksa interval waktu peristiwa yang bervariasi. Purged K-fold menghapus label yang benar-benar beririsan, tetapi dapat melatih model dengan baris setelah blok uji. Combinatorial purged CV (CPCV) mengombinasikan grup uji untuk membentuk beberapa jalur pengujian, tetapi tidak otomatis menjadi simulasi historis kronologis dan tidak menghapus bentuk kebocoran lain.
Bab 12 Advances in Financial Machine Learning membahas metode walk-forward dan CPCV beserta konteks penggunaannya.
Periksa sumber kebocoran di luar interval label
Hasil validasi tetap dapat tercemar oleh fitur dengan timestamp salah atau yang memakai informasi masa depan, basis data yang memuat revisi kemudian atau hanya sekuritas yang masih bertahan. Kebocoran juga terjadi jika preprocessing atau pemilihan fitur dilakukan pada seluruh data sebelum pembagian fold.
Mencoba banyak variasi model atau strategi lalu melaporkan hasil terbaik menambah bias seleksi, sekalipun label tidak beririsan. Backtest yang mengabaikan biaya trading atau mengandaikan semua order terisi pada harga yang tidak realistis dapat melebihkan kinerja. Bailey dan rekan-rekannya membahas risiko memilih hasil terbaik dari banyak percobaan dalam The Probability of Backtest Overfitting. Desain split saja tidak menyelesaikan masalah tersebut.
Fit preprocessing dan seleksi hanya di dalam fold latih
Pada setiap fold, fit transformasi, pemilihan fitur, dan pemilihan parameter hanya dengan data latih. Gunakan validasi time-aware bertingkat (nested) untuk menilai kandidat, agar fold uji luar tidak dipakai sekaligus untuk memilih model dan mengestimasi kinerjanya.
Setelah metode ditetapkan, sisihkan periode kronologis terakhir yang tidak disentuh sebagai holdout final. Jangan terus mengubah model berdasarkan hasil holdout lalu tetap menyebutnya uji independen. Cross-validation mengukur kinerja di bawah split dan data tertentu; metode ini tidak menjamin kinerja masa depan.
Dokumentasikan validasi agar dapat diulang
Catat unit sampel, waktu keputusan, sumber fitur dan kapan data tersedia, setiap jendela fitur, serta interval label aktual (t,t1]. Dokumentasikan metode split, fold, aturan interval untuk purging, durasi dan alasan embargo, serta jumlah baris gap bila menggunakan TimeSeriesSplit.
Jelaskan apakah data latih mencakup observasi setelah blok uji, bagaimana biaya dan fill diperlakukan, dan fold mana yang digunakan untuk memilih parameter. Bacaan terkait: trade-off bias-varians dan overfitting model keuangan, multiple testing dan false discovery rate dalam keuangan, serta annualisasi rasio Sharpe dengan korelasi serial.
Pertanyaan umum
Q1Apakah random K-fold selalu salah untuk data keuangan?
Tidak. Metode ini dapat sesuai jika cocok dengan pertanyaan evaluasi dan struktur sampel. Namun, dependensi waktu atau interval hasil yang bertumpang tindih dapat menyesatkan; periksa unit sampel serta label sebelum memilih metode.
Q2Apakah embargo menggantikan purging?
Tidak. Purging membuang sampel latih dengan interval hasil yang beririsan dengan uji. Pada skema tertentu, embargo mengeluarkan buffer terpisah setelah blok uji. Keduanya berbeda, dan tidak satu pun membenarkan pemakaian fitur yang belum tersedia saat prediksi.
Q3Apakah CPCV menjamin kinerja masa depan?
Tidak. CPCV menghasilkan beberapa jalur uji di bawah rancangan split tertentu. CPCV tidak menghilangkan kebocoran data, percobaan berulang, perubahan pasar, atau ketidakpastian eksekusi di masa depan.
Sumber dan bacaan lanjutan
Laporkan masalah
Kami akan menyiapkan email berisi tautan artikel ini. Mark menerima laporan setelah Anda mengirimkannya
Cek cepat
Sudah membaca panduannya? Uji diri dengan 3 pertanyaan
Pertanyaan 01
Kapan sampel latih harus dibuang melalui purging?
Pilih jawaban untuk melihat penjelasannya
Glosarium opsi
The relationship between systematic prediction error from model mismatch and instability caused by sensitivity to the training sample.
Baca panduan lengkapFamily-wise error rateThe probability of falsely rejecting at least one true null hypothesis within a predefined family of tests.
Baca panduan lengkapAssignment opsiProses ketika kewajiban memenuhi kontrak setelah pemberitahuan exercise dialokasikan kepada penjual opsi dan dapat menimbulkan penyerahan atau pembelian saham.
Baca panduan lengkap