Hari Ketika Saya Membalik Sebuah Tanda dan Menyebutnya Wawasan

Suatu backtest pernah kembali dengan win rate yang nyaris persis berlawanan dengan yang saya harapkan. Di tempat saya ingin model itu sebagian besar benar, ia justru sebagian besar salah — dan bukan salah secara acak, melainkan salah secara bersih dan simetris, seolah-olah ia memang sedang berusaha untuk kalah.

Alih-alih bertanya kenapa, saya melakukan sesuatu yang selama kira-kira satu jam terasa brilian. Saya membalik logikanya agar cocok. Kalau model ini secara andal salah, pikir saya, maka melakukan kebalikan dari apa yang ia katakan pastilah secara andal benar. Satu perubahan kecil, dan sebuah aturan yang kalah menjadi, di atas kertas, sebuah aturan yang menang. Saya memberi selamat pada diri sendiri atas sebuah penemuan.

Itu bukan sebuah penemuan. Itu adalah momen ketika saya mulai membohongi diri sendiri dengan satu suntingan sekarakter.

Angka yang persis salah

Hal yang mencurigakan tidak pernah berupa fakta bahwa hasilnya buruk. Hasil yang buruk itu biasa; itu memang sebagian besar dari pekerjaan ini. Hal yang mencurigakan adalah bahwa hasilnya buruk dengan cara yang begitu rapi dan seperti bayangan cermin — semacam simetri yang, jika ditengok ke belakang, bisa mengindikasikan bahwa ada sesuatu yang lebih biasa yang rusak di baliknya ketimbang sebuah strategi yang benar-benar “terbalik.”

Tetapi simetri itu menggoda ketika ia mengarah pada kemenangan yang mudah. Hasil buruk yang berantakan membuat kita melakukan debugging. Hasil buruk yang terbalik dengan rapi membisikkan sebuah jalan pintas: kamu lebih dekat dari yang kamu kira — tinggal balik saja.

Perbaikan sekarakter

Maka saya membaliknya. Saya membalik kondisinya — membalik sebuah pertidaksamaan — dan logika yang sama yang tadinya kalah kini, dalam backtest, menang. Saya men-commit perubahan itu, merasa seolah saya telah mengakali masalahnya. Seluruh koreksi itu lebih kecil daripada kalimat ini.

Kekecilan itu seharusnya menjadi peringatan. Edge yang nyata itu sulit ditemukan dan lebih sulit lagi dipertahankan. Ketika satu karakter yang dibalik tampak mengubah kegagalan menjadi keberhasilan, asumsi yang jujur bukanlah bahwa kita menemukan sebuah kebenaran tersembunyi. Melainkan bahwa kita menemukan sebuah bug tersembunyi, dan sekadar berpindah ke sisi mana dari bug itu kita berdiri.

Mengapa membalik tanda terasa seperti kejeniusan

Logikanya nyaris tak tertahankan: jika sebuah prediktor secara konsisten salah, maka membalikkannya membuatnya secara konsisten benar. Sebuah kejeniusan-terbalik. Sebuah tambang emas kontrarian. Siapa yang tidak mau mengambil model yang secara andal keliru lalu cukup membacanya secara terbalik?

Cacat dalam penalaran itu ada pada kata konsisten. Penalaran itu mengandaikan bahwa model itu sebenarnya memprediksi sesuatu — hanya saja ke arah yang salah. Dan andaian itulah satu-satunya hal yang tidak pernah saya periksa.

Apa yang sebenarnya rusak

Model itu tidak terbalik. Ia nyaris tidak memprediksi apa pun. Keluarannya degeneratif — terjepit ke dalam rentang yang sempit dan tidak informatif, mengatakan hal yang nyaris sama tak peduli apa pun yang ditunjukkan kepadanya. Ia bukan mempelajari sebuah sinyal lalu mengarahkannya ke arah yang salah. Ia gagal mempelajari sebuah sinyal, dan menghasilkan sesuatu yang mendekati derau dengan sedikit kemiringan yang tak bermakna.

Sederet pendek hasil yang sebagian besar belakang tidak membuktikan adanya bias yang stabil dan dapat dieksploitasi — itu bisa saja sekadar sekeping koin yang rusak atau tak bisa diandalkan. Membalik cara kita membaca sinyal yang penuh derau tidak membuat sinyal itu menjadi informatif. Ia hanya melabeli ulang derau itu.

Pembalikan itu membuatnya makin buruk

Inilah bagian yang akhirnya dipaksa diakui oleh backtest itu kepada saya. Setelah membalik logikanya, kinerjanya tidak mencerminkan ke atas menjadi sesuatu yang baik. Ia tetap buruk — dan menurut beberapa ukuran malah menjadi lebih buruk. Tidak ada apa pun untuk dibalik. Saya telah mengambil derau, membalikkannya, dan mendapat derau lagi, kini mengenakan kostum kesengajaan.

Hasil yang singkat dan indah yang membuat saya merasa cerdas itu adalah jenis fatamorgana yang sama dengan yang pernah saya tulis sebelumnya: sebuah angka yang menyanjung kita tepat cukup lama untuk menghentikan kita dari menanyakan satu-satunya pertanyaan yang penting — apakah model itu sudah mempelajari apa pun sama sekali?

Bug yang sebenarnya ada pada diri saya

Pembalikan sekarakter itu sebenarnya tidak pernah merupakan perubahan kode. Itu adalah kesalahan kategori. Saya telah memperlakukan sebuah gejala — win rate yang buruk — seolah-olah ia adalah sebuah strategi yang bisa saya tuning, padahal ia sebenarnya sebuah diagnosis yang saya tolak untuk dibuat. Alih-alih bertanya mengapa keluaran model itu tampak seperti itu, saya mengoptimasi sebuah pertidaksamaan terhadap backtest sampai angkanya berubah hijau.

Itulah overfitting dalam bentuknya yang paling murni dan paling manusiawi. Kita tidak butuh seribu parameter untuk melakukan overfitting. Kita bisa melakukannya dengan satu tanda saja, jika kita bersedia memilihnya berdasarkan hasil yang kita inginkan ketimbang penyebab yang kita pahami.

Hasil yang mengejutkan adalah sebuah pertanyaan, bukan sebuah jawaban

Disiplin yang saya ambil dari ini mudah diucapkan dan sungguh sulit dipraktikkan: ketika sebuah hasil keluar berlawanan dengan yang kita harapkan, itu adalah sebuah pertanyaan, bukan sebuah jawaban. Godaannya adalah meraih perubahan terkecil yang membuat angka itu tampak benar — membalik sebuah tanda, membalik sebuah aturan, menukar sebuah perbandingan. Perubahan terkecil itu seringkali yang paling berbahaya, karena ia memperbaiki tampilan sementara membiarkan penyebabnya sama sekali tak tersentuh.

Kini, ketika sesuatu terbalik pada saya, saya berusaha menahan diri dari pembalikan yang elegan dan menanyakan pertanyaan yang buruk rupa sebagai gantinya: bukan “bagaimana saya membuat angka ini mengarah ke arah yang benar?” melainkan “apakah ada sinyal yang nyata di sini sama sekali, yang mengarah ke arah mana pun?” Seringkali belum ada. Dan sebuah tanda yang dibalik tidak bisa memanufaktur satu pun.

Sebuah model yang kalah yang dibaca secara terbalik tetaplah sebuah model yang kalah. Satu-satunya hal yang diubah oleh pembalikan itu adalah berapa lama waktu yang kita butuhkan untuk menyadarinya.

— Tidak ada sinyal, tidak ada imbal hasil, bukan nasihat investasi.