Minggu, 01 Agustus 2010

Backtesting Limitation

Suatu sore saat pulang kantor beberapa hari yang lalu, saya melihat layang-layang putus yang dikejar dan diperebutkan oleh beberapa orang anak-anak. Saya jadi teringat masa kecil saya dahulu.

Saat masih duduk di bangku SD, saya sangat senang sekali bermain layang-layang. Sangat jarang saya membeli layang-layang yang sudah jadi, biasanya saya membuat sendiri. Benangnya pun saya gelas atau pertajam sendiri, waktu itu saya paling suka menggunakan pecahan kaca lampu atau neon karena hasilnya benang akan sangat tajam dan jarang kalah kalau diadu.

Masih saya ingat bagaimana almarhumah ibu saya sangat marah kalau melihat tiang jemuran pakaian saya gunakan untuk menjemur benang gelasan sampai-sampai menjemur baju baju saja tidak bisa :)

Saat itu sering kali saya melakukan percobaan sendiri bagaimana caranya membuat layang-layang yang baik. Rangka bambunya saya perhalus dan ditipiskan agar layang-layang makin ringan tetapi tetap tidak patah dan tetap mampu menahan angin. Ekor layang-layang pun ditambahkan agar makin stabil.

Tiap kali selesai membuat layang-layang, setelahnya dicoba untuk diterbangkan. Apabila dirasa masaih kurang bagus atau kurang stabil, layang-layang tersebut saya bongkar ulang dan perbaiki lagi.

Begitulah yang saya lakukan, rancang dan buat dahulu, bila sudah jadi, setelahnya lakukan uji coba terbangkan. Bila hasil uji coba kurang memuaskan, saya bongkar dan perbaiki lagi. Terus menerus saya lakukan hal seperti itu sampai akhirnya layang-layang milik saya menjadi sangat stabil dan ringan.

Sayangnya, layang-layang tersebut akhirnya hilang karena kalah aduan. Lawan saat itu memiliki benang yang lebih tajam, akibatnya layang-layang saya putus dan hilang. Tapi saya sudah tahu bagaimana cara membuat layang-layang yang baik, sehingga meskipun layang-layang tersebut hilang, saya tidak bersedih karena toh saya bisa membuatnya lagi dengan cara yang sudah saya ketahui.

Layang-layang itulah yang mengingatkan saya ke robot forex. Membuat robot forex prinsipnya sama saja dengan membuat layang-layang.

Rancang dan desain robot, pikirkan strategi apa yang akan ditanamkan ke dalam kode robot tersebut. Bila proses merancang dan membuat robot sudah selesai, lakukan uji coba menggunakan data mundur (backtest). Bila hasilnya sudah cukup baik di backtest, sewa VPS dan lakukan uji coba menggunakan data masa depan (forward test).

Seperti halnya kisah layang-layang diatas, kadang kala saya merasa yakin bahwa layang-layang yang dibuat akan baik dan ringan karena menggunakan rangka bambu yang tipis. Eh... pada saat uji coba diterbangkan, malah patah karena rangka bambu tidak kuat menahan terpaan angin pada kertas layang-layang.

Uji coba terbang sangat penting karena akan menguji layang-layang dalam kondisi yang sebenarnya. Segala macam rancangan dan desain hanyalah baik dan sempurna di dalam angan-angan, uji coba terbanglah yang akan membuktikan bahwa apa yang diangan-angankan telah sesuai dengan kenyataan.


Kemarin seorang pembaca setia blog ini, Mas Surya, mahasiswa dari Bali, bertanya apa yang harus dilakukannya agar robot yang dibuatnya menjadi lebih baik. Berikut hasil backtest robot tersebut:



Hasil backtest robot tersebut cukup baik, konsisten profit sehingga garis grafik membentuk sudut 45 derajat. Hanya saja Maximal Drawdown (27,64%) dan Relative Drawdown (48,64%) sangat tinggi, yang artinya robot ini memiliki resiko tinggi.

Saya sarankan untuk menyewa VPS dan dilakukan forward test untuk mengetahui lebih detil penyebab drawdown tersebut.

Seperti halnya kisah layang-layang diatas, jangan terlalu terpaku dengan hasil backtest. Backtest hanyalah sekedar asumsi bahwa robot KEMUNGKINAN akan bekerja baik pada kondisi market sebenarnya.

Lakukan uji coba di kondisi market sebenarnya dengan forward test. Seperti layang-layang, Anda tidak akan pernah tahu apakah rangka bambu mampu menahan angin kalau belum pernah dilakukan uji coba terbang. Sebagus apapun rangka bambu layang-layang, belum tentu akan bagus juga hasilnya pada saat uji coba terbang.

Proses pembuatan robot perlu ketekunan serta kemampuan untuk tidak meyerah meskipun mengalami kegagalan ribuan kali.

Berbeda dengan membuat layang-layang, dimana proses membuat layang-layang gagal paling-paling hanya puluhan kali dan setelahnya dapat dibuat layang-layang yang baik. Dalam membuat robot, Anda harus siap sedia dengan tidak pernah putus asa meskipun mengalami ribuan kali kegagalan.

Yang harus dilakukan adalah proses perbaikan terus menerus sampai akhirnya ditemukan robot yang baik. Proses pemprograman dan backtest adalah proses desain dan perancangan robot, sedangkan forward test adalah proses uji coba terbang.

Anda harus melakukan perbaikan terus menerus tanpa bosan meskipun telah gagal ribuan kali, sampai akhirnya hasil yang diperoleh dari backtest sama dengan hasil yang diperoleh dari forward test.

Kalau hasil backtest sudah sama dengan hasil forward test, maka robot tersebut sudah siap untuk dijalankan di live account.

Oleh karenanya, jangan terlalu terpaku dengan hasil backtest. Yang utama adalah forward test, bukan backtest.

Forward test akan menguji robot dalam kondisi market sebenarnya. Baik buruknya robot akan terlihat pada saat forward test, sehingga akan diperoleh pemahaman yang lebih mendalam mengenai perilaku robot tersebut. Juga dapat diketahui apakah kode yang diprogramkan telah sesuai dengan perilaku yang terjadi.

Backtest tidak menunjukkan hal ini karena backtest menggunakan kompresi waktu dimana proses pengujian berjalan sangat cepat hingga kadang kala kode program yang tidak benar atau tidak berjalan dengan semestinya tidak diketahui.

Karena proses forward test berjalan di waktu yang sebenarnya, kesalahan dan perilaku robot dapat dipelajari lebih detil. Dari sinilah baru dilakukan perbaikan, untuk kemudian hasil perbaikan tersebut diuji lagi di forward test.

Kadang kala meskipun kode yang diprogramkan rasanya sudah benar, tetapi hasilnya di forward test melenceng jauh. Hal ini saya alami berkali-kali, dari pengalaman itulah akhirnya saya tidak percaya begitu saja hasil backtest, saya lebih mementingkan hasil forward test.

Backtest juga tidak memperhitungkan perubahan spread. Seperti diketahui, sewaktu market berjalan maka spread akan selalu berubah-ubah dan tidak pernah memiliki nilai tetap. Backtest tidak memperhitungkan hal ini, sehingga spread yang digunakan nilainya tetap.

Nah, hal ini akan mempengaruhi kinerja robot, terutama robot yang melakukan scalping, yaitu robot yang membuka dan menutup transaksi dengan nilai profit kecil. Akibat nilai spread tetap pada backtest, kinerja robot akan terlihat sangat bagus, padahal dalam kenyataannya belum tentu seperti itu karena pada kondisi market yang sebenarnya nilai spread akan berubah terus menerus.

Sekali lagi, jangan terlalu berfokus kepada hasil backtest, tapi berfokuslah kepada hasil forward test. Karena forward test yang akan menunjukkan perfomance robot yang sebenarnya.

Oleh karena itu, perhatikan saja website penjual-penjual robot forex yang banyak bertebaran di internet, tidak ada yang berani menampilkan real time live result dari robot yang dijualnya. Karena mereka paham betul bahwa belum tentu robot yang hasil backtest-nya sangat perfect, juga akan perfect dalam live trading atau demo forward test.

Untuk lebih memahami keterbatasan backtest, silahkan baca artikel berikut:
- Backtest Limitation
- Is MT4 Tester Reliable?
- MegaDroid Backtesting Blues
- FapTurbo Evolution Backtesting Blues

Dua artikel terakhir diatas menguji robot forex komersial yang sangat populer dijual di internet. Hasil pengujian menunjukkan bahwa hasil live trading atau demo forward test tidaklah sefantantis yang dipromosikan oleh penjual robot tersebut.

Sudah banyak robot forex yang pernah saya beli dan saya uji, tidak ada satupun yang hasil demo forward test sesuai dengan promosinya. Untungnya, saya tidak pernah yakin begitu saja terhadap robot-robot yang dijual, sehingga saya tidak pernah memasang robot-robot tersebut ke live account. Selalu saya uji coba dahulu di demo forward test.

Pengalaman seperti itulah yang akhirnya memotivasi diri saya untuk akhirnya membuat robot sendiri. Meskipun proses yang sangat panjang harus dilalui, tetapi bagi saya jauh lebih aman menggunakan robot buatan sendiri daripada menggunakan robot bohong-bohongan yang dapat mengamblaskan live account. Paling tidak, dengan membuat sendiri saya akan sangat paham kelebihan dan kelemahan robot tersebut.

Membuat profitable robot adalah pekerjaan yang sangat sulit.

Trading forex saja sudah sulit, apalagi membuat robot. Akan tetapi bila Anda ingin membuat robot sendiri, silahkan saja, tetapi siapkan terlebih dahulu mental dan semangat Anda bahwa proses yang akan dilalui sangatlah lama dan panjang.

Modal membuat robot bukanlah kepintaran atau komputer yang super cepat, tetapi ketekunan dan kesabaran.

Komputer super cepat dapat diibaratkan hanyalah sekedar pisau super tajam untuk menghaluskan rangka bambu layang-layang. Makin tajam pisau yang Anda miliki maka makin cepat juga proses desain dan pembuatan layang-layang.

Kalau belum mampu membeli pisau super tajam yang mahal harganya, tidak apa-apa juga menggunakan pisau yang sedikit tumpul. Toh bukanlah pisau yang utama untuk membuat layang-layang yang baik.

Yang utama adalah semangat Anda sendiri yang tiada henti melakukan uji coba terbang layang-layang dan melakukan perbaikan terus menerus, sampai akhirnya layang-layang yang Anda buat dapat terbang dan dapat melakukan manuver yang sempurna untuk melawan musuh layang-layang lain.

Semoga dengan adanya tulisan ini, Mas Surya dari Bali, menjadi lebih jelas akan prinsip pembuatan robot.


Tidak ada komentar:

Posting Komentar