Model trading adalah proses sistematis yang menerima data sebagai input dan menghasilkan keputusan trading sebagai output. Model tersebut tidak harus kompleks. Model yang berbunyi "beli Bitcoin ketika moving average 50 hari memotong ke atas moving average 200 hari dan jual ketika memotong ke bawah" adalah model trading yang lengkap. Ia memiliki aturan yang jelas, menghasilkan sinyal yang tidak ambigu, dan dapat diuji secara historis.
Sumber data publik untuk kripto sangat melimpah. API bursa menyediakan data harga dan volume historis. CoinGecko dan CoinMarketCap menyediakan data agregat di berbagai bursa. Data on-chain dari sumber seperti Glassnode menyediakan metrik khusus blockchain. Data ekonomi dari FRED (Federal Reserve Economic Data) menyediakan input makro. Semua data ini tersedia secara bebas dan cukup untuk membangun model yang berguna.
Mulailah dengan satu hipotesis. Alih-alih mencoba membangun model yang menangkap segalanya, pilih satu hubungan yang Anda yakini ada. Contohnya: Bitcoin cenderung berkinerja baik dalam beberapa bulan setelah periode di mana rasio holder jangka pendek terhadap holder jangka panjang mencapai titik ekstrem rendah. Ini adalah hipotesis spesifik dan dapat diuji yang berdasarkan pada data on-chain. Anda dapat memverifikasinya dengan data historis sebelum mempertaruhkan uang untuknya.
Persiapan data adalah tempat sebagian besar pekerjaan terjadi. Data mentah perlu dibersihkan (menghapus kesalahan dan kesenjangan yang jelas), diselaraskan (menyinkronkan timestamp dari berbagai sumber), dan diubah menjadi fitur yang dapat digunakan oleh model Anda. Sebuah fitur bisa berupa moving average, persentase perubahan selama periode tertentu, rasio antara dua metrik, atau indikator biner untuk apakah suatu kondisi terpenuhi. Habiskan lebih banyak waktu untuk kualitas data daripada untuk kompleksitas model.
Model sederhana lebih sering mengungguli model kompleks daripada yang Anda duga. Kombinasi linear dari tiga fitur yang dipilih dengan baik sering kali mengungguli neural network yang dilatih pada puluhan fitur. Alasannya adalah overfitting: model kompleks memiliki kapasitas lebih besar untuk menghafal noise dalam data historis. Model sederhana dipaksa untuk hanya menangkap pola terkuat, yang lebih mungkin bertahan di masa depan.
Pengujian walk-forward sangat penting. Bagi data Anda menjadi potongan-potongan berurutan. Latih (atau kalibrasi) model Anda pada potongan pertama. Uji pada potongan berikutnya. Kemudian tambahkan potongan itu ke data training Anda dan uji pada potongan berikutnya. Ulangi hingga seluruh dataset Anda. Ini mensimulasikan bagaimana model akan berkinerja jika Anda menggunakannya secara real time, mengalibrasi ulang ketika data baru tersedia. Hasil dari pengujian walk-forward jauh lebih realistis daripada backtest tunggal.
Biaya transaksi, slippage, dan market impact harus dimasukkan dalam pengujian Anda. Model yang menghasilkan return tahunan 2% sebelum biaya adalah strategi yang merugi setelah Anda memperhitungkan biaya bursa, spread antara bid dan ask, serta market impact dari order Anda. Untuk pasar kripto, mengasumsikan biaya round-trip 0,1-0,2% untuk pair mayor adalah wajar. Untuk aset yang kurang likuid, asumsikan lebih.
Manajemen risiko harus menjadi bagian dari model, bukan renungan belakangan. Definisikan aturan position sizing, batas maksimum drawdown, dan level stop-loss dalam model itu sendiri. Model yang menghasilkan return besar tetapi memiliki drawdown 50% tidak berguna bagi sebagian besar trader karena mereka akan meninggalkannya selama drawdown jauh sebelum return tersebut terwujud.
Langkah terakhir adalah menjalankan model Anda pada data live tanpa uang riil (paper trading) untuk periode yang cukup guna memvalidasi bahwa ia berperilaku seperti yang diharapkan. Perhatikan perbedaan antara hasil paper dan apa yang diprediksi backtest Anda. Jika model berkinerja secara signifikan berbeda secara real time, selidiki penyebabnya sebelum mengerahkan modal. Penyebab umumnya meliputi kebocoran data dalam backtest, asumsi fill yang tidak realistis, atau perubahan rezim yang tidak tertangkap oleh data historis.