Backtesting dan pengujian ke depan — metode, bukti, dan jebakan

Menguji strategi berarti memeriksa perilaku aturannya pada data serta seberapa bergantung hasilnya pada asumsi. Backtest memakai sejarah; uji ke depan prospektif mencatat keputusan saat data baru datang. Keduanya memerlukan spesifikasi jelas, pencatatan biaya realistis, dan deskripsi sampel yang jujur. Pelajaran ini menyediakan kartu uji dua belas kolom, contoh validasi kronologis, alat perhitungan yang dapat dieksekusi, serta prosedur membandingkan simulasi historis dengan pengamatan kemudian. Tujuannya membedakan hal yang didukung bukti dari hal yang masih tidak pasti, bukan mengubah grafik menguntungkan menjadi janji imbal hasil masa depan.

Demo mengamati sinyal yang tiba tetapi tidak mereproduksi setiap kondisi eksekusi riil.

Ilustrasi asli dipertahankan. Demo memakai pengisian simulasi; eksekusi riil aktual dinilai pada akun mikro. Metode tertulis di bawah menjelaskan asumsi dan keterbatasan perkembangan yang digambarkan.

Poin utama dalam 60 detik
  • Uji historis dan prospektif sama-sama dapat menyumbang bukti. Keduanya tidak otomatis membuktikan keunggulan langgeng, dan eksekusi demo bukan eksekusi riil.
  • Bekukan pertanyaan, versi, pembagian data, model eksekusi, dan kriteria evaluasi sebelum memeriksa hasil evaluasi. Simpan log seluruh percobaan riset.
  • Ketersediaan sinyal dan waktu pengisian berbeda. Sisi bid/ask, jalur intrabar ambigu, pengisian parsial, gap, dan biaya dapat mengubah kesimpulan.
  • Jumlah sampel saja bukan nilai kelulusan. Laporkan penyebaran hasil, ketergantungan, cakupan, dan ketidakpastian; interval tingkat kemenangan tidak mengestimasi ekspektansi.
  • Simulasi bootstrap membuat sampel alternatif dengan asumsi, bukan pengamatan pasar baru. Persentil drawdown simulasi bukan jaminan kerugian maksimum.
  • “Jangan gunakan” dan “belum konklusif” adalah hasil sah. Daftar periksa atau durasi kalender tidak pernah mewajibkan beralih ke trading riil.

Catat hipotesis, aturan, sampel, dan hasil dalam Perangkat N: protokol pengujian strategi. Formulir melengkapi metode bab ini dengan penyimpanan lokal, ekspor, dan cetak.

1. Backtesting dan pengujian ke depan — pertanyaan berbeda, jawaban berbeda

Backtest bagus tidak berarti strategi siap trading. Uji historis meneliti masa lalu dengan model tertentu. Uji prospektif mengamati keputusan saat data baru datang. Kedua tahap memberi informasi berbeda: backtest dapat menyediakan sampel hasil lebih panjang, sedangkan pengamatan ke depan dapat mengungkap masalah waktu, implementasi, dan kepatuhan. Hanya tahap riil yang dikendalikan layak yang mengukur pengisian serta biaya riil aktual; eksekusi demo tetap simulasi. Menggantikan satu tahap dengan yang lain membuang informasi yang seharusnya diberikan tahap yang hilang.

Backtesting: pertanyaan historis

Backtest bertanya: “Bagaimana aturan ini berperilaku selama, misalnya, tiga hingga sepuluh tahun sebelumnya?” Kegunaan jawabannya dibatasi oleh data, model eksekusi dan biaya, serta validitas rancangan riset. Sifatnya retrospektif:

  • Dapat cepat. Data lima tahun mungkin hanya perlu beberapa menit pada uji sederhana, tetapi pemodelan tick rinci dan pencarian parameter luas dapat jauh lebih lama.
  • Dapat menghasilkan ratusan atau ribuan pengamatan, bergantung pada frekuensi sinyal dan periode historis.
  • Memungkinkan perbandingan varian parameter. Fleksibilitas itu sekaligus sumber utama bias seleksi dan overfitting.
  • Peka terhadap tick buruk, candle hilang, cap waktu keliru, dan biaya tidak realistis. Sampel besar tidak memperbaiki kesalahan sistematis data atau model.

Backtest tidak membuktikan strategi bekerja sekarang. Rezim yang terwakili pada 2018–2022 belum tentu berlanjut pada 2024–2026. Begitu pula hasil tren yen historis tertentu tidak bisa langsung dipindahkan ke lingkungan kebijakan moneter atau intervensi berbeda. Contoh itu menggambarkan perubahan kondisi, bukan pernyataan strategi tertentu pasti sukses atau gagal pada periode tertentu. Dokumentasikan eksposur rezim alih-alih menganggap rentang tanggal sebagai bukti cukup.

Pengujian ke depan: pertanyaan prospektif

Uji prospektif bertanya: “Bagaimana aturan beku berperilaku saat pengamatan baru datang, dan apakah implementasinya sesuai proses yang dituju?” Uji berjalan maju secara waktu nyata:

  • Memerlukan waktu. Pada lima transaksi seminggu, 100 transaksi memerlukan sekitar 20 minggu, kira-kira lima bulan, sebelum memperhitungkan hari libur dan peluang dilewati.
  • Sampel mungkin tetap kecil. Pilot 30–80 transaksi adalah contoh bukti terbatas, bukan deskripsi terverifikasi praktik semua trader ritel.
  • Pengamatan masa depan belum tersedia pada saat keputusan riil yang sesungguhnya. Ini menutup satu jalur look-ahead, tetapi pelabelan ulang, data revisi, atau suntingan retrospektif masih dapat mencemari evaluasi tercatat.
  • Dapat mengungkap perubahan spread, latensi, permintaan ditolak, dan slippage. Bukti bergantung pada mode: catatan riil mengukur eksekusi riil, sedangkan demo dan paper tidak mereproduksinya penuh.
  • Mengungkap kesalahan implementasi manusia: volume salah, keputusan terlambat, sinyal terlewat, dan intervensi diskresioner pada posisi terbuka.

Uji ke depan singkat tidak menuntaskan klaim keunggulan jangka panjang. Sangat berguna mengidentifikasi celah asumsi historis dan implementasi kini. Inferensi jangka panjang tetap bergantung pada ukuran sampel, ketergantungan, cakupan rezim, dan ketidakpastian, bukan label “ke depan”.

Tiga mode pengujian: tinjauan manual, replay, dan otomatisasi

“Backtesting” dapat merujuk pada tiga aktivitas berbeda. Pisahkan sebelum membandingkan buktinya:

  • Tinjauan grafik manual. Anda menelusuri sejarah dan mencatat keputusan. Ini membantu menemukan aturan tidak jelas serta kasus batas. Tinjauan biasa dengan candle kemudian terlihat rentan terhadap hindsight, laju selektif, dan ingatan hasil; jangan sajikan sebagai sampel kinerja tanpa bias. Protokol manual tersamar yang dirancang teliti adalah kegiatan berbeda dan lebih menuntut.
  • Replay bar per bar. Alat membuka sejarah berurutan sambil menyembunyikan pengamatan kemudian. Contohnya replay grafik, mode tester visual, dan aplikasi replay khusus, tergantung perilaku data serta waktunya yang sebenarnya. Replay dapat menguji konsistensi klasifikasi diskresioner serta waktu respons jika lajunya dikendalikan. Namun tetap tidak membuktikan biaya eksekusi riil. Memundurkan setelah melihat hasil lalu mengganti keputusan awal mencemari proses itu; catat replay eksploratif secara terpisah.
  • Uji historis otomatis. Kode menerapkan aturan pada dataset. Ini cara efisien memperoleh sampel besar yang dapat direproduksi, tetapi membawa semua bahaya bagian 2: kebocoran informasi, asumsi eksekusi, biaya, dan seleksi berulang. Otomatisasi juga mereproduksi aturan cacat secara sangat konsisten.

Urutannya penting. Replay sebelum coding dapat mengungkap instruksi yang ditafsirkan berbeda oleh dua orang. Tester tidak dapat menyediakan definisi yang hilang; hanya menerapkan interpretasi yang dipilih programmer. Bekukan spesifikasi dan versi strategi sebelum evaluasi, seperti dijelaskan dalam artikel 15.3, bukan setelah memeriksa hasil.

Hal yang dapat dan tidak dapat diungkap tiap tahap

MasalahUji historisUji prospektif
Look-ahead: informasi masa depan dipakai dalam keputusanLaporan laba tidak mendiagnosis kebocorannya sendiri. Tinjauan kode, pemeriksaan cap waktu, dan replay terkendali dapat mengungkapnya.Catatan waktu nyata dapat mengungkap ketidaksesuaian dengan rekonstruksi historis kemudian. Simpan nilai dan keputusan asli.
Curve fitting parameterEvaluasi tak tersentuh, riset walk-forward, dan register percobaan lengkap dapat menyelidikinya; tidak satu pun penyembuhan otomatis.Dapat mengungkap penurunan setelah cukup pengamatan atau perubahan rezim. Pilot singkat yang baik tetap bisa keberuntungan.
Biaya eksekusi dimodelkan terlalu rendahHanya sejauh data masukan dan model eksekusi mewakilinya.Biaya riil aktual dapat diukur langsung. Biaya demo dan paper tetap proksi tidak lengkap.
Perubahan rezim setelah periode historisTidak dapat mengamati kondisi masa depan yang tidak ada dalam dataset.Mengamati lingkungan saat ini, tetapi mendeteksinya tidak otomatis membuktikan berapa lama akan bertahan.
Trader tidak dapat mengikuti aturanUji mekanis biasanya mengasumsikan instruksi terprogram diikuti; protokol manual dapat mengungkap sebagian masalah kegunaan.Keputusan bercap waktu mengungkap sinyal terlewat, penyimpangan, dan intervensi operator sebenarnya.
Presisi keunggulan yang diestimasiSampel lebih panjang dapat mempersempit ketidakpastian jika kualitas, ketergantungan, dan seleksinya ditangani benar.Pilot ke depan singkat sering tidak cukup: 5 transaksi seminggu memberi sekitar 130 pengamatan dalam setengah tahun (26 × 5), dengan interval lebar pada ukuran itu. Presisi juga bergantung pada distribusi hasil.
Drawdown horizon panjang (3+ tahun, beberapa siklus)Beberapa tahun dapat mencakup lebih banyak kondisi historis, tetapi 5 tahun tidak menjamin beberapa siklus pasar independen atau jalur rugi terburuk yang mungkin.Pilot ke depan singkat biasanya hanya mencakup 1 siklus pasar atau kondisi yang benar-benar diamati; catatan prospektif lebih panjang pada akhirnya dapat menambah bukti lebih luas.

Pekerjaan historis memberi konteks dan kedalaman sampel; pekerjaan prospektif memeriksa apakah proses bertahan saat menghadapi data baru serta lingkungan operasi yang dituju. Backtest cepat dan tahap pengamatan 90 hari memiliki biaya tunggu sangat berbeda, tetapi lamanya waktu bukan alasan menghilangkan yang kedua. Perhitungan sepuluh menit maupun pilot tiga bulan tidak menjamin bukti yang dibutuhkan terkumpul.

Rekonsiliasi sinyal historis dan prospektif

Diagnostik sangat berguna adalah perbandingan sinyal demi sinyal pada tanggal sama. Ekspor kedua sumber ke skema bersama, misalnya:

timestamp_utc, broker_server_time, pair, setup_id, direction, entry_rule_hash,
entry_price, sl_price, tp_price, trigger_bar_close, source

Simpan cukup kolom tambahan untuk membedakan waktu sinyal, ketersediaan informasi aktual, permintaan order, dan pengisian. Setelah 30–60 hari pengamatan pertama, jalankan implementasi historis beku pada data arsip hari-hari yang sama. Bandingkan kedua inventaris. Ambang selisih ilustratif sebesar 5–10% dapat memicu penyelidikan, tetapi selisih lebih kecil pun penting jika sistematis menguntungkan backtest. Definisikan penyebut dan apakah yang dicocokkan sinyal, permintaan, atau pengisian sebelum melaporkan persentase.

Penyebab mungkin meliputi kebocoran informasi masa depan, repainting, feed berbeda, kesalahan zona waktu, kode tidak konsisten, dan upaya order waktu nyata gagal. Lima puluh sinyal historis versus dua belas prospektif pada tanggal sama adalah selisih besar belum terpecahkan; jangan lanjut sebelum terjelaskan. Membaca Close[0] di dalam bar tidak otomatis bug: kesalahannya adalah menganggap nilai akhir kemudian seolah diketahui pada keputusan sebelumnya.

Normalkan waktu sebelum mendiagnosis strategi. Simpan timestamp_utc dan broker_server_time, beserta konvensi selisih waktu server sesuai tanggal. Beberapa penyedia MT4/MT5 memakai jam server UTC+2 atau UTC+3 yang terkait penutupan New York, tetapi tidak universal. Membandingkan catatan belum dinormalkan dapat menciptakan masalah look-ahead semu padahal kedua sistem memakai bar berbeda. Konversikan cap waktu benar, baru bandingkan. Hitung pula bar hilang dan cap waktu duplikat, bedakan penutupan pasar sah dari gap feed. Cap waktu tick sama dapat mewakili pembaruan kuotasi berbeda, jadi jangan hapus setiap tick sewaktu tanpa memeriksa identitas dan urutannya.
Mengapa pengamatan prospektif merupakan tahap terpisah. Beberapa proses riset institusional mengamati strategi baru pada data masuk sebelum alokasi modal. Penjelasan publik terlalu umum untuk memberi satu “jumlah bulan standar” yang dapat dipindahkan. Durasi sesuai bergantung pada frekuensi sinyal, sumber daya, dan presisi yang diperlukan. Pelajaran praktisnya pemisahan tahap bukti, bukan merujuk jadwal institusi. Melewati demo atau pengamatan bayangan setelah backtest baik menghilangkan kesempatan menemukan cacat waktu dan operasional sebelum mempertaruhkan dana; tahap riil terbatas kemudian tetap diperlukan untuk mengukur eksekusi riil dan butuh otorisasi tersendiri.

Kartu uji: dua belas kolom sebelum menafsirkan hasil

Tanpa kartu uji, hasil mungkin mustahil direproduksi enam bulan kemudian. Anda perlu tahu data, implementasi, model biaya, dan riwayat seleksi yang menghasilkannya. Lengkapi sembilan kolom pertama sebelum menjalankan evaluasi. Sisa artikel menjelaskan mengapa setiap kolom dapat mengubah kesimpulan.

Kartu ilustratif — bukan kinerja historis. Setiap nilai pada kolom contoh sintetis dan mendemonstrasikan format pelaporan. Penyedia yang disebutkan adalah pilihan data hipotetis, bukan klaim dataset atau uji ini benar-benar diperoleh dan dijalankan.
KolomYang dicatatIsian ilustratif: data sintetis
1. PertanyaanSatu kalimat yang menyatakan hal yang diselidiki pengujian.“Apakah penembusan rentang sebelum London pada EUR/USD memiliki ekspektansi positif setelah biaya?”
2. Versi strategi dan kodePengenal versi dan hash spesifikasi serta implementasi beku.lonbreak v1.3, awalan hash ilustratif a91f…, dibekukan sebelum OOS pertama.
3. Data dan periodePenyedia, instrumen, resolusi, bid/ask/mid, zona waktu, cakupan, dan pembersihan.Tick bid/ask EUR/USD Dukascopy, UTC, 2018-01 → 2024-12; catatan duplikat terkonfirmasi dihapus; pembaruan berbeda dengan cap waktu sama dipertahankan; 4 hari hilang dan 11 gap lebih dari 30 menit didokumentasikan.
4. PembagianBatas kronologis IS, validasi, dan OOS; nyatakan apakah “ke depan” berarti holdout historis atau data masuk.IS 2018-01 → 2021-12; validasi 2022-01 → 2023-06; OOS tak tersentuh 2023-07 → 2024-12. Pengamatan prospektif mulai 2026-05-04.
5. Model eksekusiKetersediaan sinyal, pengisian, jeda, pengisian parsial, gap, dan penanganan bar ambigu.Sinyal penutupan M15; long terisi pada ask setelah jeda model 300 ms, short pada bid; bar stop/target tak terselesaikan dihitung stop dahulu; gap memakai harga berikutnya yang dapat dieksekusi. Contoh kartu ini terpisah dari kandidat artikel sebelumnya.
6. BiayaSpread, slippage, komisi, dan pendanaan, dengan pemeriksaan penghitungan ganda eksplisit.Spread dari tick bid/ask; slippage merugikan ilustratif 0,1 × ATR(14) M5 saat masuk dan keluar; komisi setara 0,6 pip pulang-pergi; pendanaan dari jadwal penyedia terkait. Spread dalam harga pengisian tidak dikurangi lagi.
7. Varian dan percobaanSemua kombinasi parameter dan versi aturan yang dicoba, termasuk yang ditinggalkan.96 kombinasi parameter ditambah 4 eksperimen keluar mandiri = 100 percobaan. Memakai produk lengkap 96 × 4 justru berarti 384 percobaan. Catat setiap percobaan di 02_IS/trial_log.csv.
8. MetrikDefinisi, penyebut, dan konvensi sampling.Ekspektansi dalam R dengan R₀ tetap sebagai risiko moneter terencana sebelum entri; profit factor; drawdown dari puncak ekuitas berjalan; jumlah transaksi dan estimasi ketidakpastian.
9. Kriteria keputusan yang ditetapkan sebelumnyaHasil positif, negatif, dan tak konklusif, ditulis sebelum uji.Lanjutkan riset jika batas bawah ekspektansi OOS 95% di atas nol; kembali ke rancangan jika batas atas di bawah nol; jika tidak, klasifikasikan belum konklusif. “Lanjutkan” bukan izin riil otomatis.
10. HasilEstimasi dengan interval, bukan hanya nilai titik.OOS n = 214, ekspektansi +0,12R, interval ilustratif 95% (−0,07R, +0,31R): mencakup nol.
11. KeterbatasanHal yang tidak diukur uji dan yang dapat mencemarinya.Satu penyedia dan pasangan; tidak ada data kedalaman buku order; tidak ada krisis likuiditas teramati; 100 percobaan eksploratif tanpa penyesuaian pengujian berganda yang ditentukan. Nyatakan dampak seleksi dan integritas holdout pada inferensi.
12. Berkas reproduksiJalur dan hash lengkap input, kode, serta output yang diperlukan.01_data/eurusd_2018_2024.csv (sha256), lonbreak_v1_3.mq5, costs.json, trial_log.csv serta notebook bootstrap. Hash singkat di atas hanya contoh tampilan.

Kolom 9 mudah terlewat. Kriteria ditulis setelah melihat hasil adalah deskripsi retrospektif, bukan aturan keputusan yang ditetapkan sebelumnya. Kolom 7 sama penting: tanpa jumlah percobaan total, pemenang semu bisa sekadar nilai maksimum banyak pencarian. Kolom 11 harus menyatakan keterbatasan belum terselesaikan. Jika input penting pada kolom sebelumnya tidak diketahui, jangan mengarang; tandai belum terselesaikan dan tunda uji atau batasi interpretasinya.

2. Jebakan uji — informasi masa depan, survivorship, curve fitting, dan overfitting

Ini bahaya metodologis, bukan sekadar tanda peneliti ceroboh. Platform atau skrip khusus dapat menghasilkan laporan meyakinkan sementara konfigurasi atau implementasinya memuat kesalahan serius. Masalah kognitif seperti bias konfirmasi dan hindsight dibahas pada bagian psikologi trading. Fokus di sini rancangan teknis uji serta pemeriksaan untuk mengungkap kelemahannya.

Jebakan 1: bias look-ahead

Look-ahead terjadi ketika keputusan memakai informasi yang baru tersedia kemudian. Jalur umumnya:

  • Keputusan intrabar berdasarkan penutupan akhir. Strategi menghitung SMA(20) termasuk candle M5 kini dan menyatakan masuk ketika candle itu ditutup di atas rata-rata. Pada detik 240 candle lima menit, penutupan akhirnya belum diketahui. Membaca nilai kini Close[0] bukan dengan sendirinya kebocoran masa depan; menganggap penutupan akhir kemudian sebagai nilai yang tersedia pada detik 240 itulah kebocorannya. Verifikasi keluaran mode tester aktual dan kode pada tiap callback, bukan menganggap mode bernama “Open prices only” mendukung aturan intrabar yang dimaksud.
  • Penanda historis dikonfirmasi kemudian. ZigZag, alat swing point, fractal, jangkar pitchfork yang dipilih manual, dan beberapa kanal khusus dapat menandai bar terdahulu memakai informasi kemudian. Swing high yang hari ini digambar sepuluh bar ke belakang mungkin belum dikonfirmasi pada bar itu. Nama indikator tidak membuktikan perilaku persis; implementasi serta cap waktu konfirmasilah yang membuktikan.
  • Data makroekonomi diindeks menurut periode acuan, bukan waktu rilis. Nilai berlabel “CPI Maret” mungkin baru dipublikasikan April. Strategi yang memakainya sebelum rilis aktual memakai informasi belum tersedia. Verifikasi kalender penerbit, konvensi cap waktu penyedia, serta versi data yang tersedia saat itu. Revisi kemudian adalah sumber kebocoran lain.

Deteksi: amati strategi beku pada data masuk, lalu rekonsiliasi sinyal aslinya dengan rekonstruksi historis tanggal sama. Ketidaksesuaian adalah masalah untuk didiagnosis, bukan bukti look-ahead sendiri. Penjelasan lain meliputi feed berbeda, repainting, konversi waktu salah, dan upaya order waktu nyata gagal. Selaraskan waktu serta data terlebih dahulu; bedakan sinyal dari permintaan dan pengisian; lalu periksa aliran informasi strategi. Menulis ulang indikator benar sebelum memeriksa bar masukan dapat membuat masalah baru tanpa menjelaskan yang lama.

Implementasi yang perlu pemeriksaan waktu informasi eksplisit meliputi:

  • ZigZag, fractal, dan konstruksi pitchfork. Tentukan kapan pivot atau jangkar dapat diketahui dan apakah titik terdahulu yang ditampilkan dapat bergerak. Sinyal terkonfirmasi yang ditunda benar berbeda dari berpura-pura pivot diketahui sejak asalnya.
  • Heikin-Ashi, SuperTrend, Hull moving average, dan kanal khusus. Tidak ada yang dengan sendirinya curang. Uji implementasi aktual untuk perubahan sinyal bar selesai. Harga candle sintetis Heikin-Ashi juga perlu perlakuan terpisah: tidak otomatis merupakan harga pasar yang dapat dieksekusi.
  • Indikator marketplace bersumber tertutup. Anda tidak bisa memeriksa logika internalnya. Jika kebijakan memerlukan validasi tingkat sumber, tolak untuk alur riset itu. Uji waktu black box dapat menemukan cacat tetapi tidak membuktikan seluruh ketergantungan internal.
  • iCustom() Pembacaan buffer. Identifikasi buffer, pergeseran bar, penanganan nilai tak tersedia, serta apakah nilai buffer historis dihitung ulang.
  • Keputusan intrabar Close[0] di MT4. Nilai kini adalah harga bar berjalan yang berubah, bukan nilai penutupan akhir. Uji harus mereproduksi urutan informasi sama dengan aturan riil.
  • Data timeframe lebih tinggi pada grafik timeframe rendah. Nilai H4 yang dipakai keputusan M15 sebelum bar H4 ditutup bersifat sementara. Dalam Pine, perilaku request.security() bergantung pada offset ekspresi, pengaturan lookahead, serta evaluasi historis versus waktu nyata. Pakai pola timeframe tinggi terkonfirmasi yang didokumentasikan jika itulah aturan yang dimaksud; jangan menganggap menambahkan [1] di sembarang tempat memperbaiki semua masalah waktu. Periksa juga implementasi MQL terkait.
  • Seri makro bertanggal menurut periode. Gabungkan berdasarkan ketersediaan informasi aktual dan versinya, bukan hari pertama bulan yang dijelaskan statistik.

Pemeriksaan anti-repaint praktis: pada feed berjalan, rekam nilai indikator untuk bar selesai yang diidentifikasi, kini sepuluh bar ke belakang. Setelah lima bar baru muncul, periksa cap waktu sama, kini lima belas bar ke belakang. Lima bar M1 baru memerlukan kira-kira lima menit; lima H1 kira-kira lima jam, selain jeda sesi. Jika nilai berubah, tampilan historis belum tentu mereproduksi sinyal asli. Catat kapan konfirmasi tersedia.

Tidak berubah pada satu bar bukan sertifikat bebas repaint. Ulangi pada banyak bar, kasus batas, dan rezim volatilitas; sertakan perubahan setelah koneksi ulang atau pemuatan ulang sejarah jika relevan. Ini protokol pengamatan, bukan klaim semua implementasi dapat divalidasi dalam beberapa menit. Simpan catatan agar perbandingan dapat direproduksi.

Contoh ilustratif: Heikin-Ashi dan 200 setup A+ semu. Ini angka sintetis, bukan catatan trading. Uji lima tahun yang menggabungkan implementasi Heikin-Ashi khusus dan osilator menemukan 200 setup A+, tingkat kemenangan 85%, dan kurva terlalu mulus seperti iklan EA mahal. Pilot akun mikro riil kemudian mencatat sepuluh stop-out pada dua belas setup awal. Sampel kinerja pendek itu tidak menentukan penyebab. Bukti penentu datang dari sinyal terekam: implementasi khusus ini mengubah keluaran lama setelah candle berikutnya, sedangkan rekonstruksi historis osilator memperlakukan nilai Close[0] kemudian seolah tersedia di dalam bar. Masalahnya kode dan waktu, bukan konsep Heikin-Ashi sendiri. Rekonsiliasi mengungkap selisih di atas 50% menurut aturan pencocokan contoh dan memblokir kelanjutan. Dua belas transaksi terlalu sedikit untuk estimasi keunggulan presisi, tetapi ketidaksesuaian aturan yang dapat direproduksi langsung dapat ditemukan dari sedikit kasus. Sampel kecil atau saling bergantung: batasi kesimpulan kinerja, bukan penyelidikan cacat implementasi yang terbukti.

Jebakan 2: bias survivorship

Misalkan peneliti memakai daftar pasangan masa kini untuk menguji periode lama. Pilihan itu dapat menghilangkan instrumen yang dulu dapat ditradingkan tetapi kemudian hilang atau tidak tersedia. Masalah implementasi sebaliknya juga penting: hasil historis menarik mungkin sangat bergantung pada instrumen yang tidak lagi ditawarkan penyedia tujuan dalam kondisi sebanding. USD/RUB di sekitar perubahan setelah 2022 adalah contoh mengapa ketersediaan, pembatasan sanksi, likuiditas, dan eksekusi perlu verifikasi khusus tanggal dan penyedia, bukan pernyataan universal akses kini.

Seleksi marketplace menciptakan masalah terkait. EA yang kini terlihat berbintang lima dan 200 ulasan positif berasal dari produk yang masih terdaftar serta diperhatikan. Produk gagal, ditarik, atau tidak populer mungkin tidak ikut dibandingkan. Peringkat saja tidak mengidentifikasi seluruh kohort peluncuran, tidak menentukan probabilitas bertahan, dan tidak membuktikan setiap EA semula punya peluang sukses sama.

Deteksi: rekonstruksi semesta instrumen sebagaimana adanya pada tanggal keputusan historis. Uji 2018–2020 harus mengidentifikasi penawaran penyedia relevan pada 2018, termasuk instrumen ditarik kemudian. Membatasi sejarah pada yang bertahan kini memakai informasi masa depan pada pemilihan semesta. Kelayakan saat ini keterbatasan terpisah: catat instrumen historis yang tetap tersedia pada badan hukum tujuan dan bagian hasil historis dari instrumen yang tidak lagi dapat dipakai. Untuk produk marketplace, simpan tanggal publikasi, riwayat versi, serta informasi kohort pembanding, bukan menafsirkan peringkat kini sebagai sampel tanpa seleksi.

Jebakan 3: curve fitting

Pertimbangkan periode SMA 20, 22, 25, dan 30; periode RSI 11, 14, dan 17; serta ambang ATR dari 0,8 hingga 1,5 dengan kenaikan 0,1. Jumlahnya 4 × 3 × 8 = 96 kombinasi. Mencari banyak alternatif meningkatkan peluang menemukan hasil menarik meski tidak ada keunggulan langgeng. Tidak menjamin ada yang luar biasa, tetapi maksimum terpilih bukan pengamatan tunggal biasa yang ditentukan sebelumnya.

Dalam contoh sintetis, kombinasi terbaik SMA-22, RSI-14, dan ATR 1,1 menghasilkan +180% selama tiga tahun historis. Pada 60 hari berikutnya hasilnya −8%. Perbedaan ini bisa sesuai pencocokan noise historis, tetapi pasangan imbal hasil itu saja tidak membuktikannya; biaya, implementasi, rezim, dan sampling juga harus diperiksa. Yang pasti, pemenang historis dipilih dari 96 percobaan dan laporan harus mengungkap prosesnya.

Deteksi: periksa heatmap parameter. Sel menguntungkan terisolasi dikelilingi hasil buruk menunjukkan sensitivitas yang patut diselidiki. Plateau luas hanya menunjukkan hasil tidak terikat satu pengaturan. Plateau tidak membuktikan ekspektansi positif. Itu masih bisa artefak dataset sama yang dipakai berlebihan, atau sekadar parameter yang sedikit berubah tetapi kumpulan transaksi tidak berubah.

Tetap perlu evaluasi independen: periode OOS sungguh tak tersentuh, prosedur walk-forward yang ditetapkan sebelumnya, serta pembandingan baseline pada bagian 3. Laporkan jumlah transaksi, ketidakpastian, dan seluruh riwayat seleksi, bukan hanya heatmap mulus atau rata-rata baik. Hasil OOS yang berulang kali dilihat sambil mengubah metode tidak lagi tak tersentuh.

Jebakan 4: overfitting aturan

Curve fitting parameter adalah satu bentuk overfitting. Bentuk lain menambah aturan untuk membuang kerugian historis tertentu. “Tidak masuk setelah 13:00 Europe/London pada Selasa” mungkin dibuat hanya karena dua rugi terjadi pada interval itu; ini sesuai batas 14:00 contoh Polandia pada selisih Inggris–Polandia biasa. Menghapus transaksi itu memperbaiki sampel secara konstruksi, belum tentu strategi dasarnya.

Jangan sebut filter Jumat tervalidasi hanya karena tiga kerugian lalu terjadi Jumat. Filter yang diusulkan setelah melihat kerugian adalah hipotesis riset baru. Boleh diselidiki pada data pengembangan, tetapi perlu alasan, entri log percobaan, dan evaluasi independen sebelum disebut perbaikan. Bekukan sebelum evaluasi yang mendukung klaim.

Artikel contoh ini memberi peringatan kerja konservatif jika lebih dari empat parameter dioptimalkan dengan kurang dari 200 transaksi, serta membahas heuristik kasar parameter dioptimalkan × 30 ≤ jumlah transaksi: empat parameter berarti 120 transaksi, delapan berarti 240. Ini heuristik audit ilustratif, bukan teorema statistik atau standar pasar. Model di bawah garis peringatan tetap dapat overfit, dan yang di atasnya tidak terbantahkan hanya oleh rasio tersebut.

Selidiki sensitivitas, jumlah varian dicoba, ketergantungan, dan kinerja independen. Jika varian berbagi pengamatan, evaluasi perbedaan kinerja dengan metode berpasangan atau resampling yang sesuai, bukan menganggap tumpang tindih interval terpisah menuntaskan perbandingan. Hasil OOS baik atau heatmap stabil adalah bukti untuk dinilai, bukan bukti universal overfitting hilang.

Jebakan 5: biaya dimodelkan terlalu rendah

Uji MT4 dengan spread tetap 1 pip menerapkan biaya sederhana tanpa memedulikan kondisi likuiditas historis. Verifikasi pengaturan dan kemampuan tester terpasang, jangan menganggap semua platform atau build memakai default sama. Spread aktual dapat berbeda besar antara tumpang tindih sesi likuid, rollover, dan rilis utama. Pecahan pip, beberapa pip, serta spread singkat dua digit pip adalah besaran skenario untuk diteliti pada feed terkait, bukan kuotasi penyedia kini atau batas terjamin. Strategi yang terkonsentrasi pada likuiditas malam tipis dapat tampak untung dengan spread tetap tetapi gagal dengan model variabel yang sesuai.

Komponen kedua adalah slippage. Pengisian historis tepat harga adalah asumsi, bukan janji eksekusi riil. Contohnya 0,2–0,5 pip pada kondisi biasa, 1–3 pip di sekitar penembusan, dan 5–15 pip setelah rilis. Rentang ini tidak boleh dianggap distribusi terukur akun Anda. Estimasi bruto +0,3R dapat turun ke +0,1R jika biaya implementasi tambahan 0,2R; penurunan aktual bergantung pada jarak risiko awal, jenis order, dan pengisian terukur.

Komponen ketiga adalah pendanaan. Strategi swing yang menahan tiga hingga delapan hari dapat menanggung debit atau kredit rollover menurut instrumen, arah, dan penyedia. Jangan menganggap long EUR/USD selalu memiliki tanda tertentu. Pada perhitungan ilustratif, biaya malam 3 pip dengan jarak stop awal 20 pip adalah 0,15R per hari yang dikenai biaya. Lima biaya harian tunggal total 0,75R, melampaui estimasi +0,4R sebelum pendanaan. Stop 60 pip membuat biaya sama 0,05R sehari. Pakai pengali hari aktual, termasuk penyesuaian akhir pekan dan hari libur relevan, bukan menyamakan lima malam kalender dengan lima biaya identik. Konversinya biaya pendanaan dalam R = pendanaan dalam satuan ekuivalen pip / jarak stop awal dalam pip, dengan ukuran posisi serta konversi mata uang ditangani konsisten.

Komponen keempat adalah komisi. Beberapa akun raw spread mengenakan biaya terpisah menurut volume; label “ECN” tidak menentukan jenis akun wajib atau biayanya. Sebagai ilustrasi USD 6 per lot standar pulang-pergi, 200 transaksi berukuran 0,1 lot membutuhkan 200 × 0,1 × 6 = USD 120. Itu 12% saldo awal USD 1.000 sebelum hasil harga apa pun. Rentang USD 5–7 di sini hanya contoh, bukan survei harga terkini. Uji scalping yang menghilangkan biaya per putaran material tidak mendukung klaim kinerja neto yang dituju.

Contoh ilustratif: backtest spread tetap 1 pip versus spread rilis 8 pip. Angka ini sintetis. Strategi reversal saat rilis ketenagakerjaan menghasilkan 14 transaksi dalam dua tahun, sekitar 64% pemenang dan ekspektansi +0,8R dalam uji MT4 sederhana. Ini sampel kecil yang sangat bergantung peristiwa. Trader lalu memakai risiko terencana 0,5% pada skenario riil, tetapi spread rilis pertama delapan kali model. Bid atau ask yang dapat dieksekusi bisa melewati level perlindungan ketat bahkan tanpa pergerakan harga tengah seperti yang digambarkan grafik satu sisi. Empat rugi akun ilustratif −2,1%, −1,8%, −2,4%, dan −1,9%. Jumlahnya −8,2%; jika dimajemukkan berurutan dari ekuitas tersisa, perubahan akun sekitar −7,95%. Rugi 2,1% dibanding risiko terencana 0,5% adalah −4,2R, bukan −1R. Stop tidak menjamin harga pemicunya: gap, kuotasi terputus, atau perubahan spread tajam dapat menimbulkan rugi jauh lebih besar. Model gagal mewakili skenario eksekusi. Uji lebih baik memerlukan data bid/ask historis, waktu, biaya, serta asumsi gap yang sesuai; Tick Data Suite atau data Dukascopy dapat menjadi komponen alur kerja, tetapi nama produk saja tidak mengesahkannya, dan cap waktu milidetik tidak menjamin likuiditas lengkap yang dapat dieksekusi. Sampel kecil atau saling bergantung: batasi kesimpulan keunggulan.

Jebakan 6: data snooping

Peneliti mencoba 30 strategi, membuang 28, dan memublikasikan dua backtest menarik. Perhitungan individual mungkin benar tetapi seleksi membuat signifikansinya menyesatkan. Pada 30 uji nol independen dengan ambang 5%, jumlah harapan positif palsu 1,5 dan peluang sedikitnya satu sekitar 78,5%. Ini tidak berarti tepat dua atau tiga harus berhasil, atau strategi terpublikasi hampir pasti tidak bekerja. Artinya seluruh pencarian, bukan hanya yang bertahan, harus dimasukkan dalam inferensi.

Satu kontrol kesalahan family-wise konvensional adalah penyesuaian Bonferroni: untuk 30 uji pada tingkat keseluruhan 0,05, ambang tiap uji adalah 0.05 / 30 ≈ 0.00167.[2] Ini bisa konservatif, khususnya pada uji terkait. Pendekatan lain menangani tujuan berbeda, termasuk kendali false-discovery rate dan deflated Sharpe ratio.[3] Bukan sakelar yang dapat saling ditukar; asumsi dan input seleksinya harus disediakan. Dalam semua kasus, menyembunyikan percobaan gagal menghalangi penilaian bermakna.

Deteksi: simpan register setiap strategi dan varian yang diuji, termasuk hasil ditolak. Dua pemenang dari 30 kandidat eksploratif perlu interpretasi berbeda dari dua evaluasi yang sungguh ditetapkan sebelumnya. Itu sebab kolom 7 kartu uji wajib.

Kesalahan lengkap: stop dan target di dalam candle sama

Ambiguitas eksekusi ini dapat sangat membesarkan backtest sambil tampak seperti hasil transaksi biasa. Pentingnya bergantung pada frekuensi keluar strategi berada dalam bar tercatat sama.

Catatan yang salah: candle H1 memiliki open 1,0850, high 1,0885, low 1,0815, dan close 1,0870. Long diasumsikan sudah terisi pada 1,0850, stop 1,0820 dan target 1,0880, masing-masing berjarak 30 pip. Kedua level di dalam rentang candle. Uji khusus yang memeriksa target dahulu mencatat +1R, padahal OHLC tidak menunjukkan level mana tercapai pertama. Ini contoh implementasi optimistis yang didefinisikan, bukan klaim semua tester default-nya target dahulu.

Model eksekusi yang diperbaiki: OHLC saja tidak dapat merekonstruksi seluruh urutan peristiwa intrabar. Nyatakan penanganan ambiguitas:

  • Default konservatif menghitung candle yang menyentuh kedua keluar sebagai stop-out. Tandai sebagai pesimistis, bukan terbukti realistis, dalam kolom 5 kartu uji.
  • Periksa data timeframe rendah atau tick untuk bar ambigu. M1 mungkin masih menyisakan kedua keluar dalam satu bar; data kuotasi cukup rinci dengan sisi benar dapat menyelesaikan sebagian kasus, tetapi pengisian masih dapat memerlukan asumsi status order dan likuiditas.
  • Hitung kedua ekstrem: semua transaksi ambigu stop dahulu dan semua target dahulu. Jika rentangnya mengubah keputusan, laporkan ketidakpastian alih-alih memilih ujung menguntungkan.
  • Catat jumlah bar ambigu dalam keterbatasan. Jika stop dan target dekat relatif terhadap rentang bar keputusan, resolusi OHLC yang dipilih mungkin tidak memadai untuk klaim.

Perhitungan sintetis: uji 200 transaksi memuat 14 candle seperti itu. Menganggap semua target dahulu memberi ekspektansi +0,18R. Mengubah semua 14 dari +1R ke −1R mengurangi 28R, atau 0,14R per transaksi, menyisakan +0,04R. Replay cukup rinci menemukan sembilan kasus stop dahulu dan lima target dahulu. Terhadap semua-target, sembilan transaksi kehilangan masing-masing 2R: 18R / 200 = 0,09R, sehingga estimasi terselesaikan adalah +0,09R. Model optimistis melebihkannya sebesar 0,09R per transaksi, yang dapat material terhadap buffer biaya strategi. Candle H1 saja tidak membuktikan urutannya. Laporkan keterbatasan dan metode penyelesaiannya, bukan hasil yang tampak lebih baik.

Enam jebakan backtesting dengan kontrol khusus atas waktu data, cakupan instrumen, parameter dan biaya
Riwayat percobaan dan evaluasi independen mendukung penilaian; grafik menarik tidak membuktikan keunggulan.

3. Analisis walk-forward — validasi dengan data terbatas

Analisis walk-forward, atau WFA, mengevaluasi rangkaian jendela pengembangan dan evaluasi berikutnya. Robert Pardo membahas metode ini secara sistematis dalam The Evaluation and Optimization of Trading Strategies.[1] Alih-alih memilih parameter dari seluruh sejarah, kembangkan pada jendela dalam sampel, evaluasi pilihan beku pada jendela di luar sampel berikutnya, lalu maju mengikuti prosedur yang ditetapkan sebelumnya.

Pembagian kronologis: pengembangan, validasi, dan OOS

Ilustrasi dua bagian sederhana memakai:

  • Lima tahun kalender: 1 Januari 2020–31 Desember 2024.
  • Sekitar 70% untuk pengembangan: 1 Januari 2020–30 Juni 2023, atau tiga setengah tahun.
  • Sekitar 30% untuk evaluasi akhir: 1 Juli 2023–31 Desember 2024, atau satu setengah tahun, pertama kali diperiksa hanya setelah aturan terpilih dibekukan.

Pembagian 70/30 adalah asumsi skenario, bukan standar pasar. Pilih pembagian yang memberi jumlah sinyal berguna dan kondisi relevan pada kedua sisi. Urutan waktu penting: untuk peramalan dan trading ini, evaluasi mengikuti pengembangan. Mencampur pengamatan acak antartanggal dapat membocorkan informasi rezim masa depan dan ketergantungan ke proses riset.

Ada pula tiga peran berbeda walau ilustrasi awal hanya dua blok tanggal tingkat atas:

  • Pengembangan dalam sampel: cari, optimalkan, dan tolak kandidat di sini. Seleksi parameter sah jika diungkap sebagai pengembangan.
  • Validasi untuk seleksi: jendela tahap pengembangan lebih akhir membantu memilih kandidat. Setelah dipakai memilih, ia bagian seleksi, bukan uji akhir tak tersentuh. Alokasikan eksplisit dalam periode pengembangan jika memakai contoh dua bagian di atas.
  • Evaluasi OOS akhir: periksa setelah membekukan strategi dan prosedur evaluasi. Jika hasilnya memandu filter baru, ia bukan lagi bukti independen bagi filter revisi; catat kontaminasi.

Jendela seleksi terpisah berguna saat membandingkan banyak kandidat. Secara logis tidak wajib bagi satu kandidat yang seluruhnya ditetapkan sebelumnya, tetapi OOS akhir tidak boleh diam-diam menjadi tempat memilih pemenang. “Coba satu filter lagi” setelah melihat hasil mengubah peran data.

Boleh kembali ke pengembangan setelah OOS lemah, tetapi tidak boleh mengubah aturan, mengulang periode sama, lalu menyebut hasil baru validasi tak tersentuh. Simpan hasil pertama dan tandai penggunaan kemudian sebagai pengembangan atau penggunaan ulang diagnostik. Pengulangan identik demi reproduksibilitas tidak dengan sendirinya membuat hipotesis baru; perubahan aturan dipandu hasillah yang membuatnya.

Analisis walk-forward bergulir

Satu periode akhir bisa luar biasa baik atau sulit. Evaluasi bergulir meneliti prosedur pada beberapa periode berurutan, tetapi tidak menjamin semuanya mewakili seluruh kondisi masa depan:

LangkahJendela pengembanganJendela evaluasi berikutnya
12020-01 hingga 2022-12 (3 tahun)2023-01 hingga 2023-06 (6 bulan)
22020-07 hingga 2023-06 (3 tahun)2023-07 hingga 2023-12 (6 bulan)
32021-01 hingga 2023-12 (3 tahun)2024-01 hingga 2024-06 (6 bulan)
42021-07 hingga 2024-06 (3 tahun)2024-07 hingga 2024-12 (6 bulan)

Empat jendela evaluasi tidak tumpang tindih secara kalender dan bersama mencakup dua tahun. Itu tidak menjadikannya independen secara statistik. Periode bersebelahan, jendela pengembangan sangat tumpang tindih, dan satu rezim langgeng dapat melintasi beberapa blok evaluasi. Bekukan prosedur seleksi bergulir sebelum melihat rangkaian gabungan; kalau tidak, prosedur itu sendiri dapat dicocokkan pada hasil OOS semu.

Hasil neto positif pada tiga atau empat jendela dapat membenarkan penyelidikan ketahanan lanjutan, tetapi jumlah saja bukti lemah. Dalam model tanda adil independen ilustratif, sedikitnya tiga positif dari empat terjadi dengan probabilitas 5/16 = 31,25%. Ketergantungan mengubah probabilitas itu, tidak selalu ke arah yang dapat diprediksi universal. Laporkan jumlah transaksi, ekspektansi neto, ketidakpastian, dan eksposur rezim tiap jendela. Satu atau dua positif mungkin menunjukkan kepekaan rezim; nol atau satu tidak memberi alasan aktivasi meyakinkan. Tak satu pun hitungan menggantikan kriteria statistik serta operasional yang ditetapkan sebelumnya.

Riset walk-forward untuk trader frekuensi rendah

Pada lima hingga sepuluh transaksi sebulan, strategi swing menghasilkan sekitar 300–600 transaksi dalam lima tahun. Bagian OOS 30% memuat sekitar 90–180. Di dekat tingkat kemenangan 60%, interval binomial independen 95% memiliki setengah lebar kira-kira 7–11 poin persentase, bergantung jumlah dan metode. Ini dapat membatasi klaim kemenangan, tetapi tidak dengan sendirinya membuktikan payoff untung setelah biaya.

Pada 50–100 transaksi sebulan, lima tahun memberi sekitar 3.000–6.000 pengamatan. Ketidakpastian sampling mungkin lebih kecil, tetapi ketergantungan, seleksi, cakupan rezim, dan model eksekusi tetap penting. Jumlah besar tidak otomatis menjadikan model biaya satu-satunya masalah tersisa.

Pada satu atau dua transaksi sebulan, strategi posisi hanya memberi 60–120 transaksi dalam lima tahun, menyisakan sekitar 18–36 pada segmen OOS 30%. Ketidakpastian dapat terlalu lebar untuk membedakan ekspektansi berguna dari kerugian. Respons yang mungkin:

  • Sejarah lebih panjang: sepuluh hingga lima belas tahun memberi sekitar 120–360 transaksi pada frekuensi itu, dengan sekitar 36–108 pada evaluasi 30%. Periksa relevansi kondisi pasar dan eksekusi lama.
  • Banyak instrumen: enam hingga sepuluh pasangan dapat menambah pengamatan, tetapi peristiwa mata uang bersama dan posisi bertumpang tindih menciptakan ketergantungan. Validasi klaim lintas instrumen dan jangan menghitung setiap transaksi sebagai eksperimen independen baru.
  • Block bootstrap: lakukan resampling blok hasil teramati untuk memeriksa variasi dengan asumsi ketergantungan dinyatakan. Ini memakai ulang pengamatan, bukan menciptakan bukti pasar baru. Menghasilkan banyak jalur simulasi tidak mengubah sampel kecil menjadi keunggulan mapan.

Baseline: strategi dibandingkan dengan apa?

Rata-rata positif dapat dilaporkan tanpa baseline, tetapi klaim aturan tambahan memberi nilai perlu pembanding relevan. Sebelum menafsirkan “+0,25R per transaksi”, terapkan periode data, asumsi eksekusi, dan pencatatan biaya sama pada alternatif yang eksplisit:

  • Pemicu tanpa filter tambahan. Jika empat filter tidak memperbaiki sasaran kinerja atau risiko yang ditetapkan sebelumnya, mungkin hanya mengurangi sampel dan menambah fleksibilitas. Bandingkan lebih dari rata-rata jika filter ditujukan mengubah drawdown atau eksposur.
  • Entri acak dengan frekuensi, kebijakan arah, dan aturan keluar sepadan. Simulasi berulang menghasilkan distribusi acuan, bukan satu angka yang dipilih demi kenyamanan. Tentukan semesta entri memenuhi syarat, prosedur pengacakan, dan seed. Strategi dekat pusatnya belum menunjukkan perbedaan dalam perbandingan itu; bukan bukti universal setiap aspeknya acak.
  • Menahan arah tertentu sepanjang periode. Pada strategi swing satu pasangan, ini dapat menunjukkan bagian hasil yang menyerupai drift arah. Gunakan eksposur sebanding dan masukkan pendanaan; menahan tanpa penskalaan tidak otomatis perbandingan risiko adil.
  • Prosedur sama dengan sinyal dibalik. Jika kedua arah tampak untung, selidiki waktu, keluar asimetris, efek volatilitas, dan model biaya. Hasil tidak otomatis salah, tetapi menantang klaim bahwa prediksi arah satu-satunya sumber nilai.

Catat hasil strategi dan baseline pada kolom 10. Analisis sensitivitas menanyakan hal sama secara lokal: apa yang terjadi jika tiap parameter bergeser satu langkah ke salah satu arah? Jika keunggulan semu hilang saat ambang ATR berubah dari 1,1 menjadi 1,0, selidiki perubahan kumpulan transaksi serta ketidakpastian. Satu sel heatmap menarik bukan bukti kuat keunggulan tangguh.

Membekukan OOS: folder, hash konfigurasi, dan catatan percobaan

OOS lemah lalu perubahan parameter dan pemeriksaan berulang periode sama adalah pengembangan pada sejarah gabungan, bukan bukti walk-forward tak tersentuh. Struktur proyek sederhana membantu memperjelas perbedaannya:

  • Pisahkan direktori seperti 01_raw_data, 02_IS_optimization dan 03_OOS_locked. Tambahkan subset validasi seleksi yang diidentifikasi jelas serta batasnya jika dipakai.
  • Sebelum OOS akhir pertama dijalankan, catat hash lengkap spesifikasi, kode, parameter, model biaya, serta batas tanggal dalam 03_OOS_locked/run_001.lock. Setelah itu, tambahkan hasil dan metadata proses tanpa mengganti input asli.
  • Kandidat yang diubah mendapat catatan proses baru seperti run_002.lock, disertai catatan periode yang sudah diperiksa bukan lagi bukti tak tersentuh untuk revisi itu. Jangan hapus catatan historis sah hasil kandidat beku pertama.
  • Setiap jendela evaluasi akhir memiliki satu pemeriksaan pertama berdasarkan prosedur yang ditetapkan. Pemeriksaan reproduksibilitas identik dibedakan dari varian baru dipandu hasil. Rencanakan jendela bergulir sebelumnya dan catat kapan blok evaluasi lama menjadi data masa lalu sah untuk langkah pengembangan terjadwal kemudian.

Nama berkas berakhiran .lock atau hash tidak secara fisik mencegah penyuntingan atau penelusuran. Itu memberi jejak audit bila dipasangkan dengan berkas terpelihara dan disiplin akses. Kunci semu tanpa catatan siapa memeriksa data mana bukan bukti independensi.

Tindakan setelah hasil OOS lemah

Jangan menambah filter hanya karena hasil tidak nyaman. Ikuti urutan keputusan terdokumentasi:

  1. Terima dan simpan hasilnya. Kandidat kini belum memenuhi kriteria validasi yang dituju. Hasil dapat belum konklusif, bukan pasti negatif; pakai kriteria sebelum uji.
  2. Kembali ke konsep. Tinjau hipotesis, siklus pengembangan, dan definisi keunggulan dalam tiga bagian pertama artikel 15.3. Periksa apakah mekanisme yang diusulkan tetap masuk akal dan apakah cacat implementasi atau data menjelaskan hasil.
  3. Jika mekanisme tetap masuk akal, selidiki ketergantungan rezim sebagai pertanyaan riset baru. Empat hingga enam jendela bergulir yang ditetapkan sebelumnya dapat membantu. Dua jendela tren baik dan empat konsolidasi buruk menunjukkan kandidat interaksi rezim, bukan izin langsung mengaktifkan saat tren muncul. Tiap jendela perlu ukuran sampel serta interval ekspektansi neto. Tiga jendela positif masing-masing hanya delapan transaksi bisa tetap sangat belum konklusif. Filter rezim ditemukan dari hasil itu perlu spesifikasi berversi dan evaluasi independen.
  4. Jika konsep gagal, hentikan kandidat. Simpan alasan serta riwayat percobaan, lalu beralih ide alih-alih menumpuk pengecualian di sekeliling klaim ditolak.
Contoh ilustratif: “audit” berulang mengubah strategi menjadi kecocokan satu kuartal. Ini angka sintetis. Kandidat penembusan GBP/USD memiliki tiga jendela positif dari empat pada WFA historis; hitungan tanda itu saja tidak membuktikan sistem sehat secara statistik. Kuartal lemah pertama berisi 30 transaksi dengan ekspektansi −0,15R. Dengan simpangan baku sampel sekitar 1,4R, interval pendekatan normal 95% memiliki setengah lebar sekitar 0,50R, sekitar −0,65R hingga +0,35R. Hasil belum menentukan tanda ekspektansi dengan pendekatan itu. Meski begitu trader mulai mengubah mingguan: pekan 2 membuang pembukaan Senin setelah dua rugi; pekan 5 mengecualikan ATR di bawah 0,0080 tanpa mencatat satuan indikator atau timeframe; pekan 9 membuang entri sebelum batas jam baru. Tiga aturan asli menjadi delapan. Ulang periode sama kini memberi 61% pemenang dan +0,4R; kuartal riil berikutnya rugi 12%. Contoh menggambarkan seleksi dipandu hasil, bukan bukti strategi awal sehat atau revisi tertentu menyebabkan rugi berikutnya. Perubahan aturan nyata perlu alasan diagnostik terdokumentasi dan hipotesis baru, bukan sekadar membuang beberapa transaksi tidak nyaman. Batas keselamatan yang ditetapkan sebelumnya dan cacat data atau eksekusi terbukti dapat membenarkan jeda segera tanpa menunggu interval ekspektansi sempit. Mengubah aturan riset tetap perlu versi baru dan evaluasi independen. Sampel kecil atau saling bergantung: batasi kesimpulan.
Analisis walk-forward: jendela dalam sampel dan luar sampel bergulir Setiap jendela biru mencakup tiga tahun. Jendela evaluasi merah mencakup enam bulan berikutnya. Jendela maju enam bulan sekali; kalibrasi kemudian boleh mencakup data evaluasi terdahulu, tetapi setiap interval evaluasi mengikuti kalibrasinya sendiri yang telah dibekukan. Analisis walk-forward: empat jendela IS/OOS berurutan selama lima tahun 2020 2021 2022 2023 2024 2025 IS 1: 2020-01 → 2022-12 OOS 1 IS 2: 2020-07 → 2023-06 OOS 2 IS 3: 2021-01 → 2023-12 OOS 3 IS 4: 2021-07 → 2024-06 OOS 4 Dalam sampel: kalibrasi parameter, tiga tahun Luar sampel: enam bulan, parameter beku
Empat jendela pengembangan/evaluasi bergulir. Setiap blok pengembangan tiga tahun, evaluasi sesudahnya enam bulan, dan prosedur maju enam bulan sekali. Empat blok evaluasi mencakup Januari 2023–Desember 2024 tanpa tanggal tumpang tindih. Tidak selalu independen secara statistik. Laporkan jumlah transaksi dan ketidakpastian ekspektansi neto masing-masing, bukan hanya jumlah jendela positif. Hanya skema; tidak ada data kinerja.
Walk-forward: empat jendela. IS tumpang tindih; tanggal OOS terpisah tidak menjamin independensi. Bandingkan baseline yang ditetapkan sebelumnya pada periode, cakupan instrumen dan model biaya yang sama.
IS tumpang tindih; tanggal OOS terpisah tidak menjamin independensi. Bandingkan baseline yang ditetapkan sebelumnya pada periode, cakupan instrumen dan model biaya yang sama.
Hambatan praktis pekerjaan walk-forward. Dukungan alat berbeda. Tester MT5 memiliki pembagian Forward historis dengan opsi dokumentasi seperti separuh, sepertiga, seperempat, atau batas khusus.[6] Itu holdout dalam data historis, bukan pengamatan prospektif kuotasi masuk; satu pembagian bukan seluruh WFA bergulir. Platform lain atau Python khusus dapat mendukung atau mengatur proses yang diperlukan; periksa kemampuan nyata, jangan menganggap semua platform grafik memberi WFA identik. Estimasi 8–20 jam mempelajari alur dan 4–8 jam uji pertama merupakan alokasi perencanaan ilustratif, bukan norma industri terukur. WFA menanyakan apakah proses seleksi beku bertahan pada jendela kemudian, bukan hanya sampel pengembangan. Tidak dapat mengungkap cacat biaya yang absen dari model setiap jendela. Pada contoh ketenagakerjaan, evaluasi OOS dengan model eksekusi jendela rilis yang sesuai dapat mengungkap asumsi sebelum rugi riil ilustratif; walk-forward saja tidak menjamin diagnosis itu.

4. Analisis Monte Carlo — satu jalur historis bukan seluruh gambaran

Backtest mencatat satu rangkaian peluang dan hasil. Sampel strategi lima tahun mungkin berisi 100 transaksi; sejarah pasar berbeda dapat menghasilkan 95 atau 110, pada harga dan hasil berbeda. Resampling tidak merekonstruksi semua pasar yang mungkin. Pertanyaannya lebih sempit: bagaimana hasil bervariasi dalam model yang dipilih eksplisit berdasarkan pengamatan yang sudah ada?

Simulasi memberi distribusi, bukan satu estimasi titik. Distribusi dapat mengungkap sensitivitas tersembunyi dalam urutan asli, tetapi bersyarat pada model dan sampel masukan. Bukan pengukuran risiko dunia nyata lengkap atau jaminan hasil masa depan dalam amplopnya.

Dua metode dasar resampling

Bootstrap transaksi individual: ambil daftar, misalnya, 200 hasil R—+1,5R, −1R, +2,2R, dan seterusnya—lalu sampel 200 pengamatan dengan pengembalian. Ulangi 1.000 kali untuk membuat 1.000 jalur. Urutan maupun frekuensi hasil tertentu dapat berubah.

Ini berbeda dari permutasi acak tanpa pengembalian. Mengurutkan ulang hasil R tetap yang sama tidak mengubah jumlahnya. Dengan ukuran fraksi konstan dan tanpa batas bergantung jalur, hasil kali faktor ekuitas juga tetap, meski drawdown dapat berubah. Jangan mendeskripsikan permutasi dan bootstrap sebagai prosedur saling tukar.

Block bootstrap: ambil blok berurutan, misalnya sepuluh transaksi beruntun sekali, bukan transaksi terpisah. Ini mempertahankan sebagian ketergantungan dalam blok tetapi memutus hubungan pada batas sambungan baru. Kesesuaiannya bergantung pada ketergantungan strategi yang teramati. Panjang blok adalah parameter untuk diselidiki; bandingkan pilihan seperti 5, 10, dan 20, bukan memilih hasil paling menenangkan.

Yang dihitung dari 1.000 jalur simulasi

  • Median imbal hasil terminal: pusat distribusi imbal hasil simulasi untuk horizon yang ditentukan. Sebut tahunan hanya jika horizon dan model waktunya benar-benar mewakili setahun.
  • Persentil kelima imbal hasil: kuantil ekor bawah dalam simulasi. Bukan hasil terburuk yang mungkin atau “terburuk realistis” terjamin. Nilai seri dan interpolasi sampel terbatas dapat mengubah proporsi yang benar-benar di bawahnya.
  • Persentil ke-95 besaran drawdown: ringkasan ekor atas penurunan puncak-ke-dasar simulasi. Bandingkan dengan batas risiko rencana yang ditetapkan sebelumnya tanpa menganggapnya batas maksimum.
  • Tingkat melampaui ambang tertentu: misalnya proporsi jalur dengan drawdown melebihi 30%. Sebut ambangnya serta apakah diukur dari saldo awal atau puncak berjalan. Drawdown 30% bukan secara harfiah insolvensi.

Angka ilustratif, bukan hasil historis: misalkan jalur asli model tahunan menghasilkan +45% dan drawdown maksimum 12%. Simulasi hipotetis 1.000 jalur memberi median +38%, persentil kelima imbal hasil +8%, persentil ke-95 besaran drawdown 22%, serta 4% jalur drawdown di atas 30%. Artinya sekitar satu dari 25 jalur model melampaui batas pilihan; bukan probabilitas kehancuran dunia nyata 4%. Setiap drawdown persentase sudah mengasumsikan kebijakan ukuran posisi, jadi bukan sifat sinyal entri saja.[4]

Gunakan satu rangkaian definisi metrik yang konsisten

Sebelum menjalankan kode, definisikan ekspektansi dalam R, profit factor, drawdown dan durasinya, recovery factor, serta skor bergaya SQN jika ada. Artikel 15.9 adalah acuan bab untuk rumus dan penyebut. Tiga hal penting di sini:

  • Drawdown memakai puncak berjalan, bukan maksimum global akhir. Definisikan H_t = max(ekuitas hingga t), D_t = (H_t - E_t) / H_t dan maxDD = max(D_t). Untuk 100 → 80 → 120 → 110, penurunan terbesar dari puncak sebelumnya adalah 20%, dari 100 ke 80. Memakai puncak 120 kemudian dan dasar 80 sebelumnya menghasilkan 33,3%, yang bukan drawdown jalur itu.
  • Nyatakan kurva dan frekuensi sampling. Ekuitas mark-to-market termasuk posisi terbuka berbeda dari saldo transaksi tertutup. Sampling tick, harian, dan setelah transaksi dapat memberi maksimum berbeda. “Drawdown 12%” tanpa definisi itu tidak dapat langsung dibandingkan dengan laporan lain atau rencana Anda.
  • Nyatakan konvensi skor. Skor rata-rata-R/simpangan-baku dikali √N berubah mengikuti N. Varian berbatas dan tanpa batas adalah kuantitas berbeda. Gunakan konvensi sama serta N sebanding; jangan jadikan skor pengganti ketidakpastian atau aturan alokasi.

Konvensi pelaporan lain juga harus eksplisit. Profit factor tunai belum tentu sama dengan dalam R saat unit risiko moneter berubah. Sharpe perlu interval imbal hasil, benchmark, dan asumsi annualisasi; R per transaksi tidak otomatis seri imbal hasil kalender. Calmar perlu imbal hasil tahunan serta drawdown pada horizon sebanding. Sertakan rugi ekor, panjang rentetan rugi, durasi drawdown, dan keadaan operasional belum terselesaikan, bukan meringkas semuanya menjadi satu rasio.

Contoh block bootstrap Python

Anda dapat menjalankan contoh pada Python lokal dengan NumPy dan pandas, atau layanan notebook seperti Google Colab. Colab menyediakan notebook peramban dengan batas pemakaian; periksa informasi layanan dan penyimpanan terkini. Buat notebook, tempel kode pada sel, lalu jalankan. Input bawaan adalah sintetis, jadi tidak perlu data trading pribadi untuk melihat format keluaran.

Untuk jurnal sendiri, siapkan CSV dengan satu kolom numerik R dan satu transaksi lengkap tiap baris, urut kronologis. Hapus tanda komentar baris impor dan berikan berkas. Tiap nilai R mencakup biaya relevan satu kali dan memakai risiko moneter positif terencana sebelum entri. Hapus pengenal pribadi sebelum mempertimbangkan unggahan cloud; simpan ekspor sensitif di lokal jika tidak ingin disimpan penyedia pihak ketiga.

import numpy as np
import pandas as pd

def block_bootstrap_strategy(trades_R, n_simulations=1000, block_size=10,
                             risk_per_trade=0.01, seed=42):
    """Mengambil sampel ulang blok berurutan, tidak melingkar, dari hasil transaksi neto dalam R.

    trades_R: hasil kronologis yang berhingga; satu transaksi lengkap untuk setiap nilai.
    n_simulations: jumlah jalur sintetis, bukan observasi pasar baru.
    block_size: panjang blok berurutan; teliti 5, 10 dan 20.
    risk_per_trade: fraksi tetap dari ekuitas saat itu yang dirisikokan per transaksi.
    seed: input reproduksibilitas; catat juga versi NumPy.

    Imbal hasil mencakup len(trades_R) transaksi, BUKAN otomatis tahunan.
    Drawdown diukur setelah setiap transaksi dan disimpan sebagai nilai negatif.
    """
    trades_R = np.asarray(trades_R, dtype=float)
    if trades_R.ndim != 1 or trades_R.size == 0:
        raise ValueError("trades_R harus array satu dimensi yang tidak kosong")
    if not np.isfinite(trades_R).all():
        raise ValueError("trades_R hanya boleh memuat nilai hingga")
    for name, value in (("n_simulations", n_simulations),
                        ("block_size", block_size)):
        if isinstance(value, bool) or not isinstance(value, (int, np.integer)):
            raise ValueError(name + " harus bilangan bulat positif")
        if value < 1:
            raise ValueError(name + " harus bilangan bulat positif")
    if not np.isfinite(risk_per_trade) or not 0 < risk_per_trade < 1:
        raise ValueError("risk_per_trade harus di antara nol dan satu")

    rng = np.random.default_rng(seed)
    n_trades = len(trades_R)
    # Sesuai contoh ini: batasi blok yang terlalu besar pada panjang sampel.
    # Blok sepanjang sampel tidak memberi variasi resampling; laporkan batas ini.
    block_size = min(block_size, n_trades)
    n_blocks = (n_trades + block_size - 1) // block_size
    final_returns, max_drawdowns = [], []
    threshold_breaches = 0

    for _ in range(n_simulations):
        # Ambil posisi awal dengan pengembalian; pertahankan setiap blok.
        starts = rng.integers(0, n_trades - block_size + 1, size=n_blocks)
        sample = np.concatenate(
            [trades_R[s:s + block_size] for s in starts]
        )[:n_trades]  # Pertahankan tepat jumlah transaksi asli.

        equity, equity_curve = 1.0, [1.0]
        for outcome in sample:
            # Serap pada nol bila kerugian menghabiskan ekuitas. Ini bukan model utang
            # dan tidak menyatakan perlindungan saldo negatif menurut hukum berlaku.
            equity *= max(0.0, 1.0 + outcome * risk_per_trade)
            equity_curve.append(equity)
        equity_curve = np.asarray(equity_curve)
        peak = np.maximum.accumulate(equity_curve)
        drawdown = (equity_curve - peak) / peak
        worst = float(drawdown.min())
        final_returns.append(equity - 1.0)
        max_drawdowns.append(worst)
        if worst < -0.30:  # Benar-benar lebih dalam daripada penurunan 30% dari puncak berjalan.
            threshold_breaches += 1

    return {
        "trades_per_path": n_trades,
        "effective_block_size": block_size,
        "median_return": float(np.median(final_returns)),
        "p05_return": float(np.percentile(final_returns, 5)),
        "p95_return": float(np.percentile(final_returns, 95)),
        # DD negatif: persentil kelima adalah besaran persentil ke-95 yang merugikan.
        "p95_max_dd": float(np.percentile(max_drawdowns, 5)),
        "p99_max_dd": float(np.percentile(max_drawdowns, 1)),
        "prob_dd_over_30pct": threshold_breaches / n_simulations,
        "mean_return": float(np.mean(final_returns)),
    }

# Data sendiri opsional: satu nilai R neto tiap transaksi selesai, urut kronologis.
# trades = pd.read_csv("my_results.csv")["R"].to_numpy(dtype=float)

# Demonstrasi SINTETIS, bukan hasil strategi pasar.
# 20 nilai: 6 pemenang, total +2R, rerata +0.10R; satu pencilan +7.2R mendominasi.
toy = np.array([-1.0, -1.0, 3.1, -1.0, -1.0, -1.0, 0.9, -1.0, 7.2, -1.0,
                -1.0, -0.6, 1.4, -1.0, -1.0, -1.0, 2.3, -1.0, -1.0, 0.7])
trades = np.tile(toy, 10)  # Pengulangan buatan, BUKAN 200 pengamatan independen.
# Untuk CSV sendiri, ganti baris di atas dengan baris impor opsional.

print("Versi NumPy:", np.__version__)
for risk in (0.01, 0.02):
    result = block_bootstrap_strategy(trades, n_simulations=2000,
                                      block_size=10, risk_per_trade=risk, seed=42)
    print(f"Fraksi risiko tiap transaksi: {risk:.0%}")
    print(f"Median imbal hasil {result['trades_per_path']} transaksi: {result['median_return']:.2%}")
    print(f"Imbal hasil persentil kelima: {result['p05_return']:.2%}")
    print(f"DD merugikan persentil ke-95: {result['p95_max_dd']:.2%}")
    print(f"Jalur dengan DD lebih dalam dari 30%: {result['prob_dd_over_30pct']:.2%}")

Perhitungan menguji perilaku sampel pilihan saat resampling dengan kebijakan ukuran tertentu. Rangkaian mainan 20 nilai berjumlah +2R dan rata-rata +0,10R; membuang pengamatan +7,2R sangat mengubah gambaran. Mengulang sepuluh kali menghasilkan demonstrasi kode 200 entri dengan periodisitas buatan, bukan bukti independen sepuluh kali lipat.

Keluaran contoh terverifikasi dengan NumPy 2.5.3, seed 42, dan 2.000 jalur: pada risiko 1%, median imbal hasil 200 transaksi adalah +19,56%, persentil kelima imbal hasil −4,11%, drawdown merugikan persentil ke-95 −17,66%, dan tidak ada jalur simulasi melampaui drawdown 30%. Pada risiko 2%, angka terkait adalah +32,25%, −13,71%, −33,70% dan 11,05% jalur melampaui ambang. Drawdown merugikan persentil ke-99 sekitar −21,09% dan −39,51% berturut-turut. Ini keluaran sintetis 200 transaksi, bukan prakiraan tahunan. Catat versi kode dan NumPy bersama seed: generator tidak menjanjikan aliran tak berubah pada semua versi mendatang. Hubungan pentingnya: drawdown persentase bergantung pada ukuran posisi dan rangkaian R.

Catat kriteria simulasi pada kolom 9 kartu uji sebelum memeriksa keluaran. Salah satu kebijakan ilustratif mensyaratkan median dan persentil kelima imbal hasil positif, kuantil drawdown merugikan di bawah batas rencana, dan kurang dari 1% jalur simulasi melampaui ambang drawdown 30%. Itu aturan keputusan skenario, bukan standar pasar. Gagal berarti kandidat tidak lolos model dan skala itu dengan kriteria pilihan; bukan ajakan menggeser ambang sesudahnya.

Keterbatasan penting: resampling tidak dapat menciptakan kerugian individual lebih ekstrem daripada hasil input terburuk, meski kerugian berulang dapat membuat drawdown kumulatif lebih dalam. Tidak dapat mengarang krisis likuiditas tak terlihat, rezim pendanaan baru, atau kegagalan eksekusi hilang. Nol pelampauan pada simulasi terbatas tidak berarti risiko dunia nyata nol. Kurva setelah transaksi dalam kode mengabaikan variasi ekuitas intratransaksi, likuidasi margin, posisi bertumpang tindih, dan utang sisa. Batas nol ekuitasnya konvensi model, bukan perlindungan hukum akun.

Persentase sama, jumlah uang berbeda

Penurunan 15% pada PLN 5.000 adalah PLN 750; pada PLN 50.000 menjadi PLN 7.500. Mata uang contoh Polandia dipertahankan, bukan konversi kurs. Aritmetika sama berlaku pada mata uang akun apa pun: 15% dari 5.000 unit adalah 750, dan 15% dari 50.000 adalah 7.500. Persentase identik tetapi akibat tunai dan kendala pemilik dapat sangat berbeda.

Drawdown yang dapat diterima dan ukuran posisi pada berbagai skala akun dibahas pada artikel 15.11; batas harian, mingguan, dan bulanan ada dalam rencana pada artikel 15.2. Dalam uji ini, bandingkan kuantil simulasi dengan batas terdokumentasi sebelum proses, bukan jumlah yang baru Anda rela toleransi setelah melihat hasil.

Mengapa mempertimbangkan blok, bukan resampling independen?

Pengelompokan volatilitas menyangkut besaran pergerakan. Tidak otomatis berarti satu transaksi rugi membuat transaksi berikutnya lebih mungkin rugi. Ketergantungan tanda dan hasil adalah sifat untuk diteliti pada strategi Anda, bukan fakta universal yang diasumsikan. Rezim bersama, pasangan berkorelasi, atau satu peristiwa makro dapat menciptakan rangkaian yang terpecah oleh resampling independen.

Sampling blok mempertahankan rangkaian lokal sehingga analisis sensitivitas bisa lebih relevan ketika ketergantungan penting. Tidak mempertahankan semua hubungan jangka panjang, dan kesalahan bootstrap independen tidak dijamin meremehkan risiko pada setiap dataset. Bandingkan panjang 5, 10, dan 20, ungkap semua hasil, serta periksa struktur ketergantungan asli. Kuantil drawdown merugikan yang naik saat blok lebih panjang menunjukkan kepekaan skema resampling; bukan bukti tunggal model ketergantungan tertentu. Perubahan kecil dalam latihan sensitivitas sederhana ini pun tidak membuktikan asumsi independen aman pada semua kondisi.

Bootstrap blok: 2000 jalur, masing-masing 200 hasil. Contoh 20 diulang 10×; blok 10, seed 42. Pita per titik bukan persentil DD maksimum. Cakupan: 200 transaksi, bukan setahun; tidak ada jaminan atas kerugian masa depan.
Contoh 20 diulang 10×; blok 10, seed 42. Pita per titik bukan persentil DD maksimum. Cakupan: 200 transaksi, bukan setahun; tidak ada jaminan atas kerugian masa depan.

5. Pengujian prospektif — demo, paper trading, dan pilot riil terbatas

Tahap berikut menambah realisme dan konsekuensi finansial kesalahan. Memperpendek proses tidak menghapus asumsi belum diuji; lebih banyak dibiarkan baru ditemukan setelah dana terekspos. Urutannya kerangka edukatif, bukan kewajiban setiap kandidat akhirnya maju ke trading riil.

Dua arti berbeda “forward”

Selalu bedakan dalam laporan uji:

  • Holdout forward historis: tester memisahkan bagian akhir dataset yang ada, memilih parameter pada bagian awal, lalu mengevaluasi pada segmen yang ditahan. MT5 menyebut opsi pembagian historisnya Forward.[6] Ini meneliti jendela historis lain dengan model tester. Tidak mengukur eksekusi masa depan aktual.
  • Pengamatan prospektif: strategi beku berjalan saat pengamatan datang setelah tanggal beku. Keputusan asli bercap waktu tidak dapat memakai pengamatan yang belum ada. Namun simpan catatannya karena revisi atau pelabelan ulang retrospektif masih mencemari evaluasi. Nyatakan apakah order disimulasikan, hanya dicatat di atas kertas, atau dieksekusi riil; hanya terakhir memberi pengisian riil aktual.

Catat mode dan tanggal beku pada kolom 4 kartu uji. Tanpa tanggal, “bekerja pada data baru” tak dapat dibedakan dari “bekerja pada data yang sudah tersedia saat aturan dipilih”.

Tahap 1: demo pada data masuk

Demo penyedia dapat mirip platform riil tanpa berbagi semua feed, aturan eksekusi, atau kendala. Verifikasi perbedaannya, jangan anggap identik. Demo berguna karena:

  • Kesalahan order dan strategi tidak langsung merugikan modal akun riil.
  • Anda dapat menemukan cacat setelah sepuluh transaksi lalu kembali mengembangkan tanpa rugi trading finansial. Catat versi baru dan simpan pengamatan lama, bukan mencampur aturan revisi pada evaluasi sama.
  • Dapat menguji integrasi alat: notifikasi, startup EA, implementasi aturan, penanganan status order, serta ekspor jurnal.

Keterbatasannya meliputi:

  • Pengisian simulasi: penanganan slippage dan likuiditas dapat berbeda dari riil. Jangan menyimpulkan motif penyedia dari pengisian demo menguntungkan; identifikasi perbedaan terukur.
  • Taruhan finansial berbeda: mekanisme margin dan stop-out simulasi tetap bisa ada, tetapi ketiadaan rugi uang nyata tidak mereproduksi reaksi pengguna pada eksposur riil.
  • Perilaku permintaan tidak lengkap: penanganan penolakan, requote, dan pengisian parsial dapat berbeda. Itu bergantung mode eksekusi serta pengaturan produk, bukan sekadar label pemasaran ECN atau STP.

Tahap demo ilustratif 30 hari dan 30 transaksi menanyakan hal praktis: apakah notifikasi tepat waktu, EA melewatkan sinyal, spread teramati berbeda dari model, dan operator mengubah aturan manual? Jumlah itu ambang skenario, bukan standar pasar. Jika satu sinyal setiap dua minggu, target pengamatan sama memerlukan berbulan-bulan. Bahkan 30 transaksi benar terutama mendukung pemeriksaan infrastruktur dan proses; bukan estimasi ekspektansi presisi.

Catat hasil prospektif sejak hari pertama. Merekonstruksi transaksi sebulan secara manual mengundang kelalaian dan membuat rekonsiliasi tidak andal. Skema jurnal, impor, dan perbandingan laporan penyedia ada pada artikel 15.9. Minimal simpan waktu sinyal, permintaan, dan pengisian, harga yang dapat dieksekusi, slippage, biaya, versi setup, serta risiko moneter awal. Tanpa pencatatan sepadan, kelipatan R prospektif tidak dapat dibandingkan dengan R pengujian.

Tahap 2: paper trading pada feed waktu nyata, opsional 30–60 hari

Proses bayangan atau paper mencatat setiap sinyal memenuhi syarat dan menghitung hasil hipotetis dengan model spread, slippage, serta pengisian eksplisit tanpa order. Ini memberi kendali model dan menghindari pengisian demo tak terjelaskan. Bukan bukti eksekusi aktual, dan belum tentu menunjukkan apakah operator akan mengirim order saat uang riil dipertaruhkan. Durasi ilustratif 30–60 hari opsional, bergantung pertanyaan tersisa setelah demo. Bukan sumber tambahan pengamatan pasar independen otomatis jika sinyalnya sama.

Tahap 3: pilot riil terbatas dengan otorisasi terpisah

Skenario menunjukkan akun kecil didanai PLN 1.000–2.000 dengan order 0,01–0,05 lot standar. Pertahankan sebagai jumlah skenario Polandia, bukan rekomendasi setoran atau ukuran posisi sesuai. Ukuran valid berasal dari jarak stop, nilai pip, biaya, margin, dan anggaran rugi pemilik. Bahkan 0,01 lot bisa terlalu besar pada akun kecil atau stop lebar. Jika minimum penyedia tidak muat anggaran yang diotorisasi, hasil yang benar adalah tidak menjalankan pilot di sana.

Tujuan tahap riil terbatas meneliti implementasi aktual dengan eksposur terencana terbatas dan disetujui eksplisit, bukan menguji penghasilan. Ini dapat mengukur:

  • Eksekusi aktual: spread, slippage, latensi, penolakan, serta requote teramati menurut mode akun riil.
  • Kepatuhan operasional: keluar manual di luar aturan, perubahan stop, sinyal diabaikan, dan penyimpangan lain. Definisikan penyebut tingkat kesalahan: sinyal memenuhi syarat, order terkirim, serta transaksi selesai adalah populasi berbeda.
  • Pendanaan aktual: rekonsiliasi debit dan kredit dengan spesifikasi simbol riil yang berlaku, bukan jadwal demo.
  • Integrasi pada kondisi riil: pastikan EA, notifikasi, pencatatan, dan prosedur kendali bekerja sesuai maksud.

Target 90 hari dan 60–100 transaksi contoh ini adalah asumsi perencanaan ilustratif. Tentukan sebelumnya cara membandingkan estimasi historis dan prospektif dengan memperhitungkan ketidakpastian kedua sampel. Sekadar memeriksa rata-rata baru dalam interval kepercayaan rata-rata historis bukan perbandingan dua sampel tepat. Tumpang tindih dua interval terpisah juga tidak setara matematis dengan interval kepercayaan selisih yang mencakup nol.

Estimasikan selisih dengan metode sesuai data dan ketergantungan, dan tentukan margin penurunan yang dapat diterima jika pertanyaannya kesetaraan praktis. Interval selisih mencakup nol berarti belum terselesaikan, bukan bukti kedua implementasi setara. Selain perbandingan itu, wajibkan perilaku eksekusi dipahami, kepatuhan batas risiko, dan tingkat pelanggaran aturan yang terukur serta dapat diterima. Persentil drawdown simulasi dapat menjadi pemicu tinjauan terdahulu, bukan batas masa depan tak terlanggar. Catat semua kriteria sebelum mulai.

Kriteria perpindahan

Durasi serta jumlah di bawah mempertahankan skenario contoh. Aturan keputusan aktual ada pada kolom 9 kartu uji; tabel bukan izin maju hanya karena cukup hari berlalu.

DariTahap berikut yang mungkinGerbang ilustratif
Riset historisDemo atau pengamatan bayanganKriteria OOS/WFA terdahulu lolos; Monte Carlo: persentil ke-5 imbal hasil > 0, dengan tingkat pelampauan ambang di bawah batas kartu uji (kolom 9); model biaya realistis. Tinjau ketidakpastian serta keterbatasan sebelum maju.
DemoPilot riil terbatas yang diotorisasi terpisahSebagai ilustrasi 30+ hari dan 30+ transaksi; rekonsiliasi sinyal serta integrasi lolos; perbedaan dijelaskan; perbandingan tepat tidak melanggar kriteria penurunan terdahulu. Konfirmasi ukuran minimum layak dan anggaran risiko riil eksplisit.
Pilot riil terbatasSkala apa pun yang diizinkan rencana trading (15.2)Sebagai ilustrasi 90+ hari dan 60+ transaksi; biaya riil serta perbedaan hasil dinilai dengan ketidakpastian; drawdown dalam kendali rencana; penyimpangan terukur cukup rendah; tidak ada cacat operasional tak terselesaikan. Penskalaan perlu keputusan terpisah, bukan transisi otomatis.

Cabang yang hilang dalam banyak rencana adalah “jangan gunakan”. Gerbang gagal adalah hasil untuk dicatat, bukan undangan menurunkan kriteria. Jadwal contoh: empat hingga delapan minggu riset historis, 30 hari demo, dan 90 hari pilot: 148–176 hari, sekitar lima hingga enam bulan, belum termasuk tahap paper opsional dan jeda. Aritmetika ini contoh perencanaan, bukan jaminan bukti cukup atau prediksi melewati tahap pasti rugi. Melewatkannya membiarkan pertanyaannya tak terjawab.

Kelayakan operasional: hal yang tidak diuji model historis

Strategi yang memerlukan keputusan 13:30 Europe/London tidak layak bagi orang yang rapat hingga 16:00 zona sama. Ini setara contoh Polandia asli 14:30 dan 17:00, bukan jadwal peristiwa universal. Inventaris sinyal prospektif mengungkap peluang terlewat. Catat sebagai tidak dieksekusi; jangan hapus lalu berpura-pura riset dan praktik memakai peluang sama.

Artikel 15.5 membahas jendela keputusan kompatibel kerja, notifikasi, dan timeframe tinggi. Artikel 15.1 membahas kesinambungan workstation, pemantauan VPS, dan startup; artikel 15.3 mencatat asumsi waktu serta eksekusi strategi. Tanggung jawab berbeda, semuanya relevan bagi implementasi.

Stop server bukan harga eksekusi terjamin. Stop yang diterima dan disimpan penyedia dapat tetap aktif saat terminal atau VPS lokal terputus. Aturan trailing terhitung lokal biasanya berhenti memperbarui saat proses berhenti, menyisakan level server terakhir diterima. Verifikasi untuk akun, instrumen, dan jenis order aktual. Gap atau kuotasi hilang tetap bisa membuat pengisian lebih buruk dari stop dan hasil di bawah −1R. Kolom 5 kartu uji harus mewakili kemungkinan itu. Klik kendali lokal tidak membuktikan perlindungan diterima penyedia.
Pisahkan pajak penghasilan dari perhitungan kinerja trading. Uji melaporkan hasil setelah biaya eksekusi dan pendanaan relevan, sebelum perhitungan pajak penghasilan terpisah. Pembahasan pelaporan Polandia asli ada pada bab 14, dalam bahasa Polandia; perlakuan internasional bergantung yurisdiksi dan status. Pajak atau pungutan transaksi yang benar-benar dibebankan pada order tetap biaya trading dan tidak boleh dihilangkan hanya karena pajak penghasilan terpisah.
Contoh ilustratif: pengisian demo tidak mereproduksi akun riil. Ini angka sintetis. Scalper EUR/USD bertarget ketat tampak untung pada demo sederhana tetapi menghadapi slippage merugikan sekitar 1,5 pip pada entri dan keluar dalam skenario riil. Selisih 3 pip pulang-pergi adalah 0,5R ketika jarak risiko awal 6 pip, mengubah asumsi +0,3R menjadi −0,2R sebelum perbedaan lain. Aritmetika ini tidak membuktikan mekanisme routing tertentu. Label B-Book, ECN, dan STP tidak menentukan kualitas pengisian, dan slippage saja tidak mendiagnosis “last look”. Periksa cap waktu, penolakan, kebijakan eksekusi, dan kuotasi sebelum menetapkan sebab atau memilih penyedia lain. Pada ilustrasi ukuran linear, rugi USD 24 di 0,01 lot menjadi USD 2.400 di 1 lot: volume 100 kali dan hasil berbasis harga 100 kali, dengan asumsi pengisian tetap serta biaya proporsional. Eksekusi ukuran lebih besar belum tentu identik. Pilot enam minggu dapat menemukan selisih konkret ketika keunggulan jangka panjang masih tidak pasti. Pelajarannya mengukur implementasi riil yang dituju, bukan menganggap ganti label akun menyelesaikan masalah.
Siklus pengujian strategi: hipotesis, spesifikasi beku, pemeriksaan data dan kode, riset historis, evaluasi independen, pengamatan data masuk, perbandingan, dan keputusan. Perubahan aturan memulai versi baru; tidak menggunakan adalah hasil sama sahnya. Delapan langkah riset berurutan menghasilkan keputusan. Aturan berubah kembali ke hipotesis serta spesifikasi baru, bukan menulis ulang hasil lama. Setiap langkah menuju risiko riil perlu keputusan eksplisit terpisah. Siklus uji: delapan langkah, putaran versi baru, dan keluar sah “jangan gunakan” 1. Hipotesis mekanisme dan kondisi hal yang akan membantahnya 2. Spesifikasi beku aturan, parameter, hash kriteria evaluasi tertulis 3. Pemeriksaan data dan kode sumber, gap, waktu, biaya look-ahead, repaint 4. Riset historis IS + validasi catat setiap percobaan 5. Evaluasi independen satu uji OOS tak tersentuh + perbandingan baseline 6. Uji data masuk demo ≠ eksekusi riil pilot riil hanya jika diotorisasi 7. Bandingkan kriteria gunakan kartu uji beku ketidakpastian, bukan sekadar rata-rata 8. Keputusan lanjutkan / jeda / tolak Aturan berubah → versi baru → uji baru; simpan hasil lama Ukuran dari rencana (15.2) pilihan, bukan hadiah Jangan gunakan hasil yang sama sahnya Lolos uji tidak cukup: tidak menjamin sukses dan tidak mewajibkan trading riil.
Siklus uji lengkap: delapan langkah, jalur kembali “aturan berubah → versi baru → evaluasi baru”, dan dua keputusan sama sah pada tinjauan akhir. Aturan revisi tidak memperbaiki bukti versi lama. Tentukan kriteria perpindahan sebelum tahap dijalankan dan pertahankan pilihan tidak menggunakan. Hanya skema; tanpa data kinerja.
Contoh ilustratif: melewati demo dan pilot terbatas. Trader meneliti kandidat reversal GBP/JPY enam minggu, memperoleh OOS +0,4R serta simulasi menarik, lalu langsung ke skenario didanai USD 5.000 dengan risiko terencana 0,5%. Pada 30 transaksi pertama ada 11 kemenangan: 36,7%, lazim dibulatkan menjadi 37%, bukan 54% historis. Proporsi tepat 38% tidak mungkin pada 30 hasil biner. Rata-rata ilustratif −0,2R, jadi jumlahnya 30 × −0,2R = −6R. Dengan R moneter tetap USD 25, hasilnya USD 150, atau 3% ekuitas awal. Jika risiko justru dihitung ulang 0,5% ekuitas berubah, hasil tunai tepat bergantung pada tiap hasil dan urutannya; jumlah saja tidak cukup.

Pada skenario itu model historis hanya bid memakai biaya 1,5 pip, sedangkan model teramati memerlukan spread 2,5–4 pip ditambah slippage 0,5–1,5 pip pada tiap sisi: total 3,5–7 pip. Ini asumsi sintetis, bukan kuotasi GBP/JPY kini. Selisih R bergantung jarak stop. Misalnya biaya 1,5 menjadi 4,5 pip menambah 3 pip; pada D = 5 pip itu 0,6R, cukup mengubah +0,4R ke −0,2R. Demo mungkin mengungkap beda model kuotasi tetapi tidak menjamin penemuan slippage riil. Pada sepersepuluh risiko moneter, −6R sama menjadi USD 15, bukan USD 150, hanya jika ukuran minimum dan biaya proporsional mengizinkan skala itu. Tiga puluh transaksi tetap bukti terbatas tentang ekspektansi. Selisih biaya terukur tetap dapat membenarkan koreksi model, sembari mengakui biaya bervariasi dan eksekusi ekor tidak pasti.

6. Berapa pengamatan yang cukup? N, nilai p, dan interval kepercayaan

Backtest 30 transaksi dengan 18 menang memiliki tingkat teramati 60%. Itu deskripsi sampel sah, bukan pengukuran presisi probabilitas menang mendasar. Pada uji Bernoulli independen berdistribusi sama, interval Clopper–Pearson dua sisi 95% kira-kira 40,6–77,3%. Prosedur interval memiliki cakupan setidaknya sesuai pernyataannya pada sampel berulang dalam model; bukan memberi probabilitas 95% pada parameter tetap tak diketahui setelah sampel khusus ini diamati.

Persentase sampel baik dapat menyisakan rentang luas belum terselesaikan. Dengan 24 kemenangan dari 40 transaksi, tingkatnya tetap 60%, tetapi interval eksak terkait sekitar 43,3–75,1%. Apakah peluang menang rendah berarti strategi rugi bergantung payoff. Pada tingkat hipotetis 41%, rata-rata menang 2R dan rugi 1R, ekspektansi sebelum biaya tambahan adalah 0,41 × 2 − 0,59 × 1 = +0,23R. Dengan payoff 1:1 hasilnya −0,18R. Estimasi berikutnya dekat 51% belum tentu berarti keunggulan hilang; estimasi awal mungkin tidak presisi. Estimasi titik awal mengukur sampel, bukan pernyataan presisi atau pasti tentang kinerja mendatang.

Teorema limit pusat, ekor tebal, dan tiadanya jumlah ajaib

Teorema limit pusat tidak menyatakan N = 30 cukup secara universal. Keterterapan dan mutu pendekatan bergantung pada asumsi distribusi serta ketergantungan. Hasil transaksi finansial bisa miring, berekor tebal, dan mengelompok: satu pemenang +5R atau rugi gap −3R dapat sangat mengubah rata-rata serta penyebaran sampel kecil. Konvergensi bisa lambat, dan beberapa model sama sekali tidak memenuhi asumsi varians hingga yang lazim.

Tidak ada satu jumlah transaksi ajaib. Kecukupan bergantung pada penyebaran hasil R, ketergantungan transaksi, frekuensi sinyal, cakupan rezim, jumlah varian dicoba, serta presisi keputusan yang diperlukan. Tiga puluh entri terkena tren mingguan atau peristiwa makro sama tidak otomatis tiga puluh eksperimen independen. Selalu laporkan jumlah, bersama interval, metode, dan asumsi, bukan sebagai kelulusan mandiri.

Interval tingkat kemenangan pada ukuran sampel berbeda

Jumlah transaksi NKemenangan dan tingkat teramatiInterval eksak dua sisi 95%Dapat membedakan keunggulan dari noise?
3060%40,6–77,3% (sekitar ±18 poin persentase)Belum terselesaikan: interval mencakup tingkat menang di bawah ambang impas; pada payoff 1:1 tanpa biaya, ambangnya 50%.
5060%45,2–73,6% (sekitar ±14 poin persentase)Batas bawah tetap di bawah 50%.
10060%49,7–69,7% (sekitar ±10 poin persentase)Interval tetap mencakup 50%; pembulatan tidak boleh mengubah keputusan.
20060%52,9–66,8% (sekitar ±7 poin persentase)Mengecualikan 50% pada model itu; belum membuktikan payoff menguntungkan setelah biaya.
50060%55,6–64,3% (sekitar ±4 poin persentase)Ketidakpastian probabilitas menang lebih sempit, bukan bukti ekspektansi menguntungkan.
1.00060%57–63% (dibulatkan; sekitar ±3 poin persentase)Presisi lebih tinggi dalam model; kualitas data, ketergantungan, dan payoff tetap penting.

Tabel memakai interval Clopper–Pearson dua sisi 95% dengan jumlah menang bilangan bulat serta percobaan independen berprobabilitas tetap. Ketergantungan atau probabilitas menang berubah menggugurkan interpretasi sederhana itu; pengelompokan positif sering mengurangi informasi efektif, tetapi jangan menganggap semua ketergantungan berefek identik. Nyatakan penanganan kondisi mengelompok atau berubah.

Kolom perbandingan memakai 50% hanya karena itu tingkat impas model dua hasil dengan payoff tetap 1:1 tanpa biaya tambahan. Secara umum, untuk besaran menang positif W dan rugi L, tingkat impas tanpa biaya tambahan adalah L / (W + L), setara dengan 1 / (1 + W/L). Pemenang 2R terhadap rugi 1R memberi 33,3%; pemenang 0,5R terhadap rugi 1R memberi 66,7%. Biaya rata-rata tambahan konstan c menaikkan ambang model menjadi (L + c) / (W + L), asalkan biaya belum tercakup dalam W dan L.

Kesimpulan operasionalnya bukan “200 transaksi cukup”, melainkan ketidakpastian relatif terhadap ambang keputusan pilihan penting. Pada n = 100 interval dua sisi masih mencakup 50%, jadi kriteria interval itu belum terselesaikan. Pada n = 200 mengecualikan 50%, tetapi klaim strategi untung tetap perlu seluruh payoff serta biaya. Hasil belum terselesaikan biasanya memerlukan riset lanjut sesuai rencana; tidak otomatis mengizinkan posisi riil lebih kecil atau membuktikan strategi harus dihentikan. Batas keselamatan dan cacat implementasi terbukti tetap alasan jeda terpisah.

Uji binomial: apakah probabilitas menang di atas 50%?

Hipotesis nolnya adalah p = 0.5, dengan alternatif yang ditetapkan sebelumnya p > 0.5. Ini berbeda dari “tidak ada keunggulan trading”. Strategi 40% menang dengan payoff 3:1 berekspektansi positif sebelum biaya, sedangkan bahkan 70% menang dengan 0,5:1 hanya buffer positif tipis yang dapat dihapus biaya.

Nilai p satu sisi adalah probabilitas, menurut hipotesis nol serta asumsi samplingnya, mengamati kemenangan setidaknya sebanyak sampel. Bukan probabilitas nol benar, strategi memiliki keunggulan, atau hasil mendatang untung. Jika memakai pita deskriptif contoh ini, tafsirkan hati-hati:

  • Di bawah 0,01: hasil ekor atas relatif tidak biasa pada nol ini untuk satu uji yang ditetapkan sebelumnya, bukan bukti efek trading berguna.
  • 0,01–0,05: mungkin lolos uji satu sisi 5% yang ditetapkan sebelumnya, tetapi seleksi banyak kandidat memerlukan prosedur pengujian berganda tepat.
  • 0,05–0,10: tidak lolos ambang penolakan 5%. Efek masih tidak pasti menurut kriteria itu.
  • Di atas 0,10: bukti tidak cukup menolak hipotesis nol probabilitas menang pada ambang itu. Tidak membuktikan kinerja acak atau tiadanya keunggulan berbasis payoff.

Pilih arah dan ambang uji sebelum melihat hasil. Setelah 30 varian dicari, nilai p tak disesuaikan terkecil merupakan hasil terpilih; bagian 2 menjelaskan pentingnya riwayat percobaan penuh.

Dalam SciPy modern, gunakan from scipy.stats import binomtest, lalu binomtest(wins, n_trades, 0.5, alternative='greater').pvalue. Dokumentasi API resmi mencatat pengenalannya pada versi 1.7.0. Pendahulunya binom_test tidak dianjurkan lagi pada 1.10.0 dan dihapus pada 1.12.0; gunakan API objek hasil kini, bukan menyalin cuplikan usang.

Untuk 60 menang dari 100 transaksi, nilai p satu sisi kira-kira 0,02844. Untuk 18 dari 30, kira-kira 0,18080, walau tingkat teramati sama 60%. Yang pertama lolos uji 5% tanpa penyesuaian dan ditetapkan sebelumnya satu sisi; yang kedua tidak. Tidak bertentangan dengan interval tabel 100 transaksi yang mencakup 50%: tabel memakai dua sisi 95%. Samakan tingkat kepercayaan dan arah uji sebelum membandingkan keputusan.

Uji hasil R, bukan hanya tingkat kemenangan

Pada 40% menang, rata-rata menang 3R dan rugi 1R, ekspektansi sebelum biaya tambahan adalah 0,4 × 3 − 0,6 × 1 = +0,6R. Pada 70% menang, rata-rata menang 0,5R dan rugi 1R, hasil hanya +0,05R. Yang kedua tingkat kemenangannya lebih tinggi tetapi buffer biayanya jauh lebih kecil. Asumsi angka itu bukan bukti kualitas strategi aktual.

Uji t satu sampel dapat meneliti rata-rata R neto terhadap nol jika asumsi dan pendekatannya sesuai. Statistiknya t = mean_R / (sample_sd_R / sqrt(N)), dengan derajat kebebasan N−1. Ini bukan jawaban statistik lengkap bagi hasil terpilih, saling bergantung, atau berekor tebal; mungkin perlu rancangan inferensi atau resampling berbeda.

Untuk ilustrasi rata-rata sampel +0,3R dan simpangan baku 1,5R, N = 30 memberi t ≈ 1,10 dan nilai p satu sisi sekitar 0,14. Pada N = 200, rata-rata serta penyebaran sama memberi t ≈ 2,83 dan nilai p satu sisi sekitar 0,003. Yang kedua lebih kuat melawan hipotesis nol rata-rata nol khusus itu menurut asumsi, bukan kepastian atau izin riil otomatis. API uji t satu sampel SciPy mendukung alternatif eksplisit; pilih alternative='greater' hanya jika itu pertanyaan yang ditetapkan sebelumnya.

Contoh ini menunjukkan estimasi titik sama dapat mendukung kesimpulan berbeda pada ukuran sampel berbeda. Catat N dan interval yang sesuai di sekitar ekspektansi neto. Mencapai N tertentu tidak membuat hasil pasti, dan pemeriksaan berulang hingga signifikan menambah masalah seleksi.

Rumus ekspektansi operasional

EkspektansiR = (W% × avgWinR) − (L% × avgLossR)

Gunakan pecahan untuk W% dan L%, serta besaran positif untuk rata-rata menang dan rugi bersyarat. Transaksi impas menyumbang nol tetapi tetap dalam jumlah total. Dengan 54% menang, rata-rata menang 1,8R dan rugi 1R, hasilnya 0,54 × 1,8 − 0,46 × 1 = 0,512R, sekitar +0,51R.

Ini harus rata-rata terealisasi, bukan rasio target terencana. Target 1,8 kali jarak stop awal tidak berarti rata-rata menang +1,8R: keluar parsial, penutupan dini, dan eksekusi mengubah hasil. Jika seri R sudah neto seluruh biaya, jangan kurangi lagi. Jika sebelum biaya tertentu, masukkan sekali sebelum mengevaluasi klaim neto. Biaya +0,2–0,3R dapat menghapus estimasi positif lebih kecil sebelum biaya; satuan dan penyebut harus membuat perhitungan dapat ditelusuri.

SQN: konvensi pelaporan, bukan keputusan alokasi

Skor berbentuk SQN = sqrt(N) × mean(R) / std(R) menggabungkan rata-rata hasil, penyebaran, dan ukuran sampel.[5] Dengan rata-rata dan simpangan baku sama, bentuk tanpa batas naik mengikuti √N. Karena itu uji panjang dapat berskor lebih tinggi tanpa keunggulan per transaksi lebih besar. Nyatakan konvensi simpangan baku sampel serta batas N; varian berbatas yang dibahas di bab ini tidak dapat saling ditukar dengan skor tanpa batas.

Artikel 15.9 memberi definisi metrik bersama serta keterbatasannya. SQN tidak membuktikan keunggulan nyata, menggantikan OOS atau model biaya, maupun menentukan alokasi modal sendiri.

Contoh ilustratif: 57% menang tetapi strategi rugi. Setelah delapan bulan, jurnal sintetis memuat 47 transaksi dan 27 kemenangan: 57,4%. Nilai p binomial satu sisi terhadap 50% kira-kira 0,19085, dan interval eksak dua sisi 95% untuk tingkat menang adalah 42,2–71,7%. Ini tidak menolak hipotesis nol probabilitas menang. Lebih penting, jurnal awal mengabaikan payoff dalam R sehingga tingkat menang sama sekali tidak dapat menentukan ekspektansi.

Menambah rata-rata menang 0,7R dan rata-rata rugi 1,2R menghasilkan (27 × 0,7 − 20 × 1,2) / 47 = (18,9 − 24) / 47 ≈ −0,109R. Jumlahnya −5,1R, bukan positif. Dengan R moneter tetap 1% ekuitas awal, itu −5,1% ekuitas awal. Jika setiap 27 kemenangan tepat +0,7R dan tiap rugi tepat −1,2R, risiko 1% ekuitas kini setiap kali memberi 1,007^27 × 0,988^20 − 1 ≈ −5,17%. Jika hanya kedua rata-rata diketahui, hasil majemuk itu tidak ditentukan unik karena besaran masing-masing hasil juga berpengaruh.

Hasil tunai positif bersama rata-rata R tanpa bobot negatif dapat mencerminkan bobot risiko moneter berbeda, setoran/penarikan, biaya, atau kesalahan rekonsiliasi; selidiki jangan menganggap satu penjelasan. Risiko bervariasi tidak membuat ekspektansi R tak terhitung. Tiap transaksi memerlukan R₀ positif yang tetap sebelum entri, dengan R_i = neto P/L_i / R₀_i. Yang tidak dapat dilakukan adalah mengubah jumlah R tanpa bobot menjadi persentase perubahan akun tanpa bobot risiko, jalur ekuitas, dan informasi arus kas. Pelajarannya menyimpan kolom yang hilang, bukan mengabaikan delapan bulan pengamatan karena satu metrik tidak lengkap. Sampel kecil atau saling bergantung: batasi inferensi.

Tingkat menang 60%: ketidakpastian sampel. 95% Clopper–Pearson: observasi independen, probabilitas tetap. 50% impas pada 1:1 tanpa biaya. Mengecualikan 50% tidak membuktikan keunggulan neto.
95% Clopper–Pearson: observasi independen, probabilitas tetap. 50% impas pada 1:1 tanpa biaya. Mengecualikan 50% tidak membuktikan keunggulan neto.
Pengaruh pencilan: 20 hasil. Histogram persis sampel sintetis sebelum komisi. Rata-ratanya bukan prakiraan; pengulangan pencilan perlu penilaian.
Histogram persis sampel sintetis sebelum komisi. Rata-ratanya bukan prakiraan; pengulangan pencilan perlu penilaian.

7. Pemodelan eksekusi dan biaya: spread, slippage, pendanaan, komisi, dan pengisian parsial

Meremehkan biaya dapat membuat implementasi rugi tampak untung dalam backtest. Modelkan empat komponen terpisah, lalu rekonsiliasi dengan model pengisian agar tiap biaya dihitung tepat sekali. Lembar biaya rinci tidak menggantikan pengisian mustahil.

Spread: tetap atau variabel?

ModelDeskripsiInterpretasi yang tepat
Spread tetap, misalnya 1 pipSatu nilai konfigurasi sepanjang uji.Penyaringan awal cepat atau skenario sederhana eksplisit. Bisa optimistis saat likuiditas tipis dan perlu uji sensitivitas sebelum mendukung klaim implementasi riil.
Spread rata-rata historisRata-rata diperkirakan selama 6–12 bulan, dilaporkan sebagai satu nilai.Model kasar untuk jendela likuid terdefinisi baik, jika rata-rata serta ekornya representatif. Rata-rata sepanjang hari dapat menyembunyikan biaya entri strategi.
Spread menurut waktu dalam sehariNilai berbeda menurut sesi atau likuiditas; misalnya 0,3 pip saat likuid dan 4 pip sekitar rollover.Model skenario lebih kaya, tetapi tabel, zona waktu, dan batas rezim perlu bukti. Tidak mereproduksi setiap kuotasi atau kejutan rilis.
Spread bid/ask tiap tickSpread yang tersirat pada setiap catatan bid/ask di feed pilihan.Berguna untuk strategi peka spread dan intrabar. Tidak otomatis mencakup kedalaman buku order, ukuran dapat dieksekusi, posisi antrean, atau pengisian penyedia Anda.

Tick Data Suite adalah satu alur MT4 untuk impor tick, spread variabel, serta pengaturan eksekusi tambahan. Penyedianya menjelaskan kemampuan dan memasarkan angka kualitas model 99%. Angka itu indikator terkait tester, bukan probabilitas 99% strategi atau pengisian riil benar. Keputusan membeli bergantung pada data atau kemampuan model yang benar-benar kurang dalam riset, bukan lencana.

Scalp atau strategi rilis yang peka spread dapat berganti tanda saat model berubah, sementara swing dengan stop sekitar 100 pip mungkin kurang peka selisih kecil. Ukur sensitivitas, jangan menganggap alat berbayar pasti balik modal. Artikel ini tidak menganjurkan pembelian atau memberi harga langganan kini.

Slippage: model statis dan kondisional

Slippage adalah selisih harga acuan pilihan dan pengisian aktual, dengan arah serta sisi order dinyatakan. Perbandingan harga model historis dan pengisian riil berguna hanya setelah cap waktu acuan dan konvensi kuotasi disamakan. Model yang mungkin:

  • Statis: cadangan merugikan tetap, misalnya 0,5 pip saat masuk dan keluar. Sederhana, tetapi mungkin tidak memadai saat stres.
  • Dikondisikan ATR: cadangan ilustratif 0,1 × ATR(14) M5 selesai, dikonversi ke pip. Bertambah mengikuti ukuran volatilitas pilihan, tetapi koefisien perlu kalibrasi dan belum tentu menggambarkan ekor.
  • Dikondisikan ukuran dan kedalaman: model memakai volume order, kedalaman tersedia, dan proses eksekusi tempat transaksi. Memerlukan data kedalaman serta status order terkait; riwayat tick bid/ask biasa tidak otomatis menyediakannya.

Sketsa awal tiga rezim—pecahan pip pada kondisi biasa, beberapa pip sekitar penembusan, dan mungkin dua digit setelah rilis—bersifat ilustratif, bukan distribusi akun terukur. Buat tabel sendiri dari permintaan dan pengisian yang dicocokkan. Dengan nilai positif berarti slippage merugikan, pembelian memakai pengisian - acuan, penjualan memakai acuan - pengisian, lalu bagi ukuran pip. Keluar long adalah jual, keluar short adalah beli. Simpan pengisian menguntungkan beserta penolakan, dan laporkan acuannya.

Beberapa puluh transaksi bisa mengungkap selisih implementasi biasa, tetapi jarang mencirikan ekor eksekusi langka dengan andal. Catat periode, ukuran, dan kondisi, bukan menyajikan rata-rata kecil sebagai seluruh model slippage.

Swap dan pendanaan

Posisi melewati batas pendanaan dapat menerima debit atau kredit. Spesifikasi simbol mendukung mode hitung berbeda, jadi angka swap tidak selalu “pip per lot per malam”. Periksa apakah berupa poin, uang, perhitungan bunga, atau konvensi khusus produk sebelum konversi.

  • Arah: peroleh tarif long dan short terpisah. Tidak harus sama dan berlawanan; keduanya bisa biaya. Jangan menganggap swap short EUR/USD positif atau long negatif permanen dari lingkungan bunga lama.
  • Pengali hari: banyak instrumen FX T+2 memakai penyesuaian tiga kali terkait rollover Rabu, tetapi hari dan pengecualian libur bergantung instrumen dan penyedia. Modelkan kalender posisi, bukan mengalikan jumlah malam tanpa tanggal.
  • Perubahan tarif: pendanaan mencerminkan lingkungan suku bunga serta ketentuan penyedia. Untuk sejarah, gunakan jadwal historis jika tersedia atau ungkap pendekatan skenario. Tabel kini tidak otomatis merekonstruksi biaya bertahun-tahun lalu.

Pada swing tiga hingga delapan hari, pendanaan dapat memakan bagian material ekspektansi. Konversi biaya ekuivalen pip ke R dengan jarak awal, lalu terapkan urutan tarif serta pengali bertanggal aktual. Mengabaikan biaya material membuat klaim neto tak didukung; kredit juga harus bertanda benar, bukan diasumsikan menutup biaya lain.

Komisi

Beberapa akun mengenakan biaya volume selain spread. Contoh ini memakai USD 5–7 per lot standar pulang-pergi untuk mayor, USD 6–10 minor, dan USD 8–15 eksotis. Rentang skenario, bukan kuotasi kini; label ECN/STP tidak menentukan biaya. Pakai jadwal akun yang berlaku, termasuk minimum dan jenjang.

Untuk komisi dalam pip, bagi komisi pulang-pergi satu lot dengan nilai pip lot itu dalam mata uang sama. Untuk ilustrasi EUR/USD standar, USD 6 / USD 10 per pip = 0,6 pip per putaran pulang-pergi. Jika akun PLN atau mata uang lain, konversi kedua nilai konsisten; hanya mengonversi pembilang mengubah rasio secara salah.

Pada 200 transaksi bulanan 0,1 lot dan USD 6 per lot standar pulang-pergi, komisinya USD 120 per bulan. Terhadap ekuitas awal USD 1.000, itu biaya turnover 12% sebulan, atau USD 1.440—144% jumlah awal—selama dua belas bulan identik. Total aritmetis, bukan prakiraan atau imbal hasil majemuk. Ini menggambarkan perlunya memeriksa turnover dan biaya; bukan bukti semua strategi lot kecil tidak ekonomis.

Kebijakan ilustratif menjaga komisi tahunan pada bagian ilustratif 20–30% imbal hasil harapan strategi. Perlakukan sebagai kebijakan skenario, bukan ambang modal universal; nyatakan penyebutnya laba bruto harapan atau laba sesudah komisi sama agar tak melingkar. Menambah modal saja tidak meningkatkan keunggulan neto per transaksi ketika eksposur diskalakan proporsional. Evaluasi hasil neto aktual serta ketidakpastian dahulu.

Tick Data Suite: alur data tick MT4

Alur asli dapat dipertahankan tanpa menganggap nama perangkat lunak sertifikat validasi profesional:

  • Penyedia dan lisensi: tinjau situs resmi terkini serta lisensi dan kompatibilitas sebelum membeli. Alamat situs serta perilaku pengalihan dapat berubah.
  • Data: ekspor data historis Dukascopy adalah salah satu sumber. Periksa cakupan, cap waktu, bid/ask, gap, serta syarat penggunaan. Resolusi waktu rinci tidak menjamin likuiditas lengkap dapat dieksekusi.
  • Pengaturan awal: alokasi dua hingga tiga jam dalam contoh bukan janji. Unduh periode kecil dahulu, konfirmasi konversi waktu dan properti simbol, hubungkan ke alur tester terdokumentasi, lalu verifikasi mode tick aktual.
  • Setelah pengaturan: periksa spread variabel, komisi, pendanaan, batas volume, margin, serta stop terhadap akun tujuan. Tinjau transaksi sampel manual. “Every tick” saja bukan bukti tick terekam, bukan dihasilkan.

Tujuannya meneliti selisih model spread sederhana dan model data terekam lebih relevan. Alat tidak memvalidasi hipotesis, memperbaiki kedalaman data tak tersedia, atau menjamin biaya masa depan sama. Kegunaan bergantung kebutuhan riset dan pemeriksaan Anda.

Pemodelan eksekusi: jeda, gap, dan pengisian parsial

Pencatatan biaya hanya separuh model implementasi. Kolom 5 juga harus menyatakan kejadian antara sinyal dan pengisian:

  • Waktu sinyal dan latensi: setelah candle dipastikan ditutup, perhitungan, transmisi, dan penerimaan perlu waktu. Keputusan manual bisa beberapa detik; jeda otomatis bergantung sistem serta penyedia. Ukur atau modelkan eksplisit. Asumsi jeda nol dapat material pada penembusan, tetapi kontribusinya tak bisa dinyatakan bagian tetap biaya tanpa bukti.
  • Gap: order stop-market biasa tidak dapat terisi pada harga yang tidak tersedia. Modelkan kuotasi berikut yang dapat dieksekusi sesuai aturan order, termasuk kemungkinan eksekusi tertunda atau gagal. Selalu mengisi tepat pada stop meremehkan sebagian rugi ekor, khususnya di sekitar penutupan dan rilis.
  • Pengisian parsial: gunakan rata-rata harga pengisian berbobot volume, bukan harga pertama saja. Volume parsial biasanya memberi eksposur lebih kecil jika syarat lain sama, tetapi perubahan harga serta biaya dapat mengubah perbandingan. Dalam konvensi jurnal ini, pertahankan R₀ asli sebelum order dan catat bagian tak terisi terpisah. Jika implementasi lain memakai risiko posisi terisi teralokasi, catat penyebut itu sebagai metrik berbeda, bukan mengubah retrospektif. Keluar parsial dari satu keputusan entri tetap satu transaksi; menghitung terpisah mengubah pembobotan dan dapat mendistorsi tingkat menang.
  • Requote dan penolakan: sinyal historis belum tentu menjadi pengisian riil. Catat hasil permintaan dan bedakan penolakan terkonfirmasi dari status tak diketahui. Lima puluh sinyal kandidat dan 41 eksekusi dapat berarti sembilan kegagalan eksekusi, bukan sembilan sinyal hilang; rekonsiliasi harus membandingkan yang sejenis.

Uji stres tiap asumsi material: jeda lebih panjang, slippage lebih buruk, resolusi candle ambigu merugikan. Jika perubahan masuk akal menghilangkan keunggulan, laporkan sensitivitas dan bukti implementasi hilang. Jangan sebut semua skenario pesimistis realistis hanya karena konservatif. Model instan penuh pada setiap harga acuan harus menjelaskan keterbatasannya terbuka. Diagnostik MAE/MFE dan konvensi sampling dibahas pada artikel 15.9.

Buku biaya gabungan untuk skrip validasi

Contoh pengajaran yang dapat dijalankan berikut mengembangkan pseudocode contoh ini. Semua komponen memakai satuan pip pasangan. Tabel spread dan komisi kecil bersifat sintetis, bukan data penyedia. Pita jam UTC sengaja sederhana dan tidak memodelkan musim panas atau kejutan rilis. Riset produksi harus memakai kuotasi bertanggal atau model kondisional tepat.

Peristiwa pendanaan menyediakan biaya long serta short terpisah dan pengali hari berlaku; fungsi tidak mengasumsikan tarif berlawanan atau menebak swap tiga kali dari jumlah malam saja. Flag menandai komponen yang telah tercakup dalam P/L uji. Hasilnya penyesuaian tambahan yang masih harus dikurangi, bukan izin membebankan seluruh buku biaya lagi.

import math

def total_cost_per_trade(pair, hour_utc, atr_pips, direction,
                         financing_events=(), *, spread_in_fills=False,
                         slippage_in_fills=False, commission_in_result=False,
                         financing_in_result=False):
    """Biaya tambahan dalam pip; positif = biaya, negatif = kredit neto.

    Setiap peristiwa pembiayaan memuat BIAYA harian ekuivalen pip untuk
    'long' dan 'short' secara terpisah serta 'multiplier' yang berlaku. Kredit bernilai negatif.
    Isi peristiwa bertanggal secara eksternal berdasarkan masa kepemilikan dan tarif sebenarnya.
    """
    spread_table = {
        "EURUSD": {"low": 1.5, "normal": 0.7, "peak": 0.3},
        "GBPJPY": {"low": 4.0, "normal": 2.0, "peak": 1.2},
    }
    commission_table = {"EURUSD": 0.6, "GBPJPY": 0.8}  # Pip pulang-pergi sintetis.
    if pair not in spread_table:
        raise ValueError("Pasangan tidak didukung: sediakan model biaya eksplisit")
    if direction not in ("long", "short"):
        raise ValueError("direction harus long atau short")
    if isinstance(hour_utc, bool) or not isinstance(hour_utc, int):
        raise ValueError("hour_utc harus bilangan bulat dari 0 hingga 23")
    if not 0 <= hour_utc <= 23:
        raise ValueError("hour_utc harus bilangan bulat dari 0 hingga 23")
    if not math.isfinite(atr_pips) or atr_pips < 0:
        raise ValueError("atr_pips harus hingga dan tidak negatif")
    regime = "low" if hour_utc >= 22 or hour_utc <= 6 else (
        "peak" if 8 <= hour_utc <= 16 else "normal"
    )
    spread = 0.0 if spread_in_fills else spread_table[pair][regime]
    slippage = 0.0 if slippage_in_fills else 2 * 0.1 * atr_pips
    commission = 0.0 if commission_in_result else commission_table[pair]
    financing = 0.0
    for event in financing_events:
        rate = float(event[direction])
        multiplier = float(event["multiplier"])
        if not math.isfinite(rate) or not math.isfinite(multiplier) or multiplier < 0:
            raise ValueError("Peristiwa pendanaan tidak valid")
        if not financing_in_result:
            financing += rate * multiplier
    return spread + slippage + commission + financing

# Contoh sintetis: tarif terpisah, bukan asumsi tanda berlawanan.
events = [{"long": 0.3, "short": 0.1, "multiplier": 3}]
print(total_cost_per_trade("EURUSD", 10, 5.0, "long", events))  # 2.8 pip
print(total_cost_per_trade("EURUSD", 10, 5.0, "long", events,
                           spread_in_fills=True))             # 2.5 pip

Sebagai pemeriksaan sederhana, +0,4R sebelum biaya tambahan menjadi +0,2R bila biaya 0,2R, atau −0,1R bila 0,5R. Konversikan buku pip dengan jarak risiko awal dan konvensi mata uang sesuai. Tanpa buku serta model pengisian eksplisit, Anda tidak tahu hasil neto yang diwakili laporan historis.

8. Cherry picking dan seleksi sinyal

Cherry picking metodologis terjadi saat peneliti membuang sinyal lalu melaporkan sisa menarik tanpa aturan seleksi sah yang ditetapkan sebelumnya. Bisa sengaja atau tak sadar. Implementasi penuh rugi kemudian tampak untung karena pengamatan buruk hilang dari sampel laporan.

Tiga bentuk cherry picking

1. “Saya melewati sinyal yang terlihat tidak tepat.” Grafik historis memuat sinyal valid tetapi peneliti menolaknya karena konteks salah. Jika candle kemudian terlihat atau diingat, “tidak tepat” dapat berkorelasi dengan rugi, bukan aturan pada waktu keputusan asli. Strategi diskresioner dapat diteliti, tetapi perlu protokol klasifikasi terdefinisi yang tersamar atau prospektif serta keputusan sebelum hasil yang dipertahankan.

2. “Saya menambah filter setelah melihat kerugian.” Kelompok rugi Selasa pagi mendorong pengecualian Selasa. Periode sama membaik secara konstruksi, tidak membuktikan Selasa memang berbeda. Perlakukan sebagai hipotesis baru, catat alasan, dan validasi independen, bukan menyajikan sampel terpilih sebagai konfirmasi.

3. “Saya hanya memakai periode bersih.” Peneliti membuang periode stres seperti Maret 2020, krisis finansial 2008, atau aksi jual akhir 2018, lalu mengklaim sisa representatif. Label harus akurat: Lehman Brothers gagal September 2008, dan taper tantrum terjadi 2013, bukan Desember 2018. Strategi terdahulu boleh mengecualikan kondisi teramati, tetapi tak boleh membuang krisis tak terduga retrospektif karena hasil tak nyaman. Simpan periode stres dan nyatakan tindakan nyata aturan dengan informasi tersedia saat itu.

Cara mendeteksi penanganan sinyal selektif

  • Hitung kandidat, sinyal memenuhi syarat, dan eksekusi terpisah. Ambang peringatan lewat manual 10% dan 30% adalah pemicu audit ilustratif, bukan probabilitas cherry picking. Bahkan penghilangan kecil berdasar hasil dapat membiaskan; pengecualian tinggi berbasis aturan bisa sah.
  • Catat alasan penolakan dan cap waktunya. Filter sebelum evaluasi berbeda dari keputusan spontan setelah hasil. Untuk diskresi disengaja, simpan penilaian saat keputusan, jangan diam-diam memperlakukannya sebagai filter mekanis.
  • Rekonstruksi seluruh periode. Bandingkan semua sinyal layak dengan subset eksekusi, termasuk kondisi sulit. Selisih kinerja perlu diagnosis: bisa seleksi, kegagalan eksekusi, atau efek filter terdahulu yang nyata. Selisih saja tidak mengidentifikasi sebab.

Inventaris sinyal: kendali konkret

Beri setiap kandidat status dalam log otomatis atau direkonsiliasi dari jurnal. Buat status saling eksklusif pada level pilihan, dan simpan catatan permintaan serta pengisian terpisah jika kandidat dieksekusi:

StatusDefinisiKonvensi tinjauan ilustratif
takenSinyal layak dieksekusi sesuai aturan.Target di atas 90% dapat menggambarkan kepatuhan pada sinyal layak yang dapat dieksekusi, bukan semua kandidat mentah sebelum filter.
skipped_by_ruleKandidat dikecualikan aturan beku sebelum evaluasi, seperti kalender, korelasi, atau waktu.Tidak ada batas persentase universal. Simpan aturan, input terukur, dan alasan agar dapat diaudit.
skipped_manualSinyal layak dilewati keputusan diskresioner yang tidak dimodelkan.Contoh ini memakai 10% untuk eskalasi. Setiap penghilangan dipandu hasil perlu penyelidikan, bahkan di bawahnya.
invalid_dataInput wajib hilang, tidak valid, atau belum tersedia saat keputusan.Peringatan 5% hanya ilustratif. Diagnosis jenis dan waktu masalah; jangan sembunyikan sebagai pengecualian biasa.

Kegagalan penyedia atau infrastruktur setelah sinyal valid perlu status eksekusi tambahan seperti order_rejected, order_state_unknown atau partial_fill. Bukan otomatis data pasar invalid. Nyatakan penyebut saat melaporkan tingkat kesalahan; jika tidak, pengecualian aturan tanpa batas dapat membuat target “taken” menyesatkan secara matematis.

Pada kebijakan contoh, skip manual di atas 10% menghentikan perkembangan sampai perbedaan dipahami. Formalkan alasan yang dapat dibela sebagai aturan baru lalu evaluasi versi baru, atau akui metode tidak dapat dijalankan andal dengan alur kini. Jangan melabeli ulang penghilangan diskresioner lama seolah filter baru sudah ada dahulu. Angka itu pilihan proses, bukan batas yang membuat bias seleksi hilang di bawahnya.

Cherry picking dalam presentasi penjualan EA

Contoh ilustratif: EA USD 2.000 dan backtest dipoles. Ini angka sintetis, bukan tuduhan penjual tertentu. Presentasi menampilkan 2018–2022, lebih dari 1.500 transaksi dan drawdown maksimum 8%. Pembeli memakai akun USD 5.000; bulan pertama rugi 12%, kedua juga rugi. Penyelidikan menemukan kandidat dipilih dari 30 alternatif, sedangkan 29 lain dan riwayat pencarian tidak diungkap. Rentang 2018–2022 juga tidak membuktikan cakupan stres memadai: periksa apakah data Maret 2020 masuk, lengkap, dan layak menurut aturan. Maret 2020 satu bulan, bukan dua; label tanggal tidak membuktikan data yang diproses. Terakhir, model spread tetap 1 pip, sedangkan spread relevan ilustratif akun tujuan 1,8 pip. Seleksi, cakupan data, dan ketidakcocokan biaya adalah masalah terpisah, masing-masing perlu bukti.

Kriteria pembelian bijak adalah dapat mereproduksi uji relevan dengan data dan asumsi biaya sendiri serta memahami batasnya. Akses sumber memungkinkan pemeriksaan lebih dalam, tetapi sumber tertutup tidak otomatis curang; ada batas validasi yang mungkin tak dapat diterima kebijakan Anda. Harga tinggi, kurva mulus, atau peringkat kuat tidak menutup celah itu. Jangan membeli atau menggunakan hanya karena satu laporan terpilih meyakinkan.

9. Kesalahan pengujian umum

Kesalahan 1: optimasi seluruh dataset

Peneliti mencoba 200 kombinasi selama lima tahun lalu memilih +180% tanpa evaluasi tak tersentuh. Maksimum itu hasil terpilih; besarannya saja bukan bukti keunggulan. Gunakan rancangan kronologis, catat pembagian pada kolom 4 dan seluruh 200 percobaan pada kolom 7. Pembagian 70/30 hanya contoh, bukan aturan universal. Tahap prospektif tetap berguna, tetapi tidak membuat seleksi lama menjadi uji independen secara retrospektif.

Kesalahan 2: sampel historis kecil dianggap menentukan

Backtest enam bulan 24 transaksi tetap backtest, tetapi bukti mungkin lemah untuk klaim luas jangka panjang. Ketidakpastian besar relatif rata-rata dan periode hanya satu rezim relevan. Pilih sejarah sesuai lingkup, laporkan rezim teramati; “beberapa tahun” tidak menjamin cakupan. Jumlah 200 atau 500 adalah skenario, bukan standar pasar. Nilai presisi dari distribusi, ketergantungan, dan ambang keputusan.

Kesalahan 3: hanya satu sisi kuotasi tanpa memodelkan sisi lain

Long dibuka dan ditutup pada bid menghilangkan ask masuk dan dapat melebihkan sekitar spread pada perbandingan harga sepadan sederhana. Long masuk ask keluar bid; short masuk bid keluar ask. Riwayat bid saja tidak otomatis tak berguna bila ditambah model ask serta eksekusi beralasan, tetapi pendekatan harus eksplisit. Mode tick terekam MT5 dan alur MT4 yang dikonfigurasi benar adalah opsi untuk diteliti, bukan bukti realisme lengkap.[6] Catat konvensi bid, ask, harga tengah, serta data dibuat-versus-terekam pada kolom 3.

Kesalahan 4: mengabaikan perbedaan rezim

Hasil satu kebijakan, volatilitas, atau likuiditas belum tentu pindah ke lingkungan lain. Jangan melabeli seluruh periode bertahun-tahun sebagai bunga rendah/tinggi, QE, atau QT seragam saat kondisi berubah di dalamnya. Evaluasi bergulir dapat mengungkap perbedaan, tetapi keunggulan bergantung rezim perlu bukti cukup dan aturan mengenali rezim dengan informasi saat itu. Filter dibuat setelah melihat jendela baik adalah varian baru, bukan aturan aktivasi otomatis.

Kesalahan 5: mengklaim portabilitas tanpa uji

Uji EUR/USD tampak sukses tidak membuktikan metode sama bekerja lintas mata uang. Jika klaim lintas pasangan, evaluasi himpunan terdahulu, mungkin lima hingga delapan pasangan dalam rancangan ilustratif, dengan biaya serta ketergantungan tepat. Jika klaim awal khusus EUR/USD, kegagalan pasangan lain tidak dengan sendirinya membantah atau membuktikan curve fitting. Lingkup kesimpulan harus sama dengan bukti.

Kesalahan 6: mencampur imbal hasil dan kinerja terkoreksi risiko

Misalkan A berimbal hasil tahunan 35% dan drawdown maksimum 22%, B 25% serta 8% pada horizon sebanding. Perbandingan sederhana bergaya Calmar memberi:

  • A: 35 / 22 ≈ 1,6.
  • B: 25 / 8 ≈ 3,1.

B memiliki rasio imbal hasil terhadap drawdown teramati lebih tinggi dengan definisi itu. Bukan bukti semua dimensi stabilitas atau risiko mendatang. Sharpe tidak dapat dihitung dari dua angka saja; perlu seri imbal hasil berfrekuensi tertentu, imbal hasil acuan sepadan, dan konvensi annualisasi: (rerata imbal hasil periodik - imbal hasil acuan) / simpangan baku imbal hasil periodik, dengan annualisasi akar-jumlah-periode yang dibenarkan asumsi.

Membagi imbal hasil tahunan dengan simpangan baku bulanan tanpa satuan konsisten bukan Sharpe memadai. Input hilang berarti metrik tidak tersedia, bukan izin mengarang perkiraan. Artikel 15.9 mengembangkan Sharpe, Sortino, Calmar, dan hal yang tidak diukur masing-masing.

Kesalahan 7: berhenti mengukur setelah penggunaan

Kandidat dapat lolos sejarah, demo, serta pilot, lalu pengukuran berhenti saat alokasi naik. Terus rekonsiliasi implementasi riil dan bandingkan hasil dengan asumsi, ketidakpastian, serta batas skenario. Sampel baru punya ketidakpastian sendiri; rata-rata di dalam interval sampel lama bukan pemeriksaan cukup. Artikel 15.10 menentukan ritme tinjauan serta keputusan pertahankan, amati, kurangi, atau hentikan. Artikel ini memberi catatan perbandingan: definisi metrik, interval awal, biaya, dan kuantil drawdown simulasi.

Kesalahan 8: mengganti metode setiap rentetan rugi

Perubahan mingguan setelah lima hingga sepuluh rugi dapat lebih cepat daripada informasi tentang setiap versi. Pada hasil independen dan probabilitas menang 52%, lima rugi dalam satu blok yang ditetapkan sebelumnya memiliki probabilitas 0,485 ≈ 2.5%. Peluang sedikitnya satu rentetan demikian di suatu tempat dalam 100 transaksi sekitar 75%. Yang terakhir memiliki banyak kesempatan tumpang tindih; menganggap jendela independen memakai 1 - (1 - q^k)^(N-k+1) melebihkan probabilitas rentetan eksak contoh ini.

Ini perhitungan model, bukan klaim transaksi Anda independen. Pelajarannya menanyakan probabilitas tepat sebelum menyatakan strategi rusak. Gunakan kriteria tinjauan riset terdahulu, bukan tampilan pekan terakhir. Kegagalan operasional, batas risiko terlampaui, atau cacat data terbukti tetap dapat mewajibkan jeda segera; tidak perlu penurunan ekspektansi signifikan sebelum melindungi akun. Revisi aturan menciptakan versi baru dan perlu evaluasi sendiri.

Sebelum mengubah aturan: periksa lapisan ini berurutan

Jangan campuradukkan cacat strategi dengan implementasi atau data. Pastikan apa yang diukur hasil sebelum menyunting aturan:

  1. Data dan eksekusi. Rekonsiliasi jurnal dengan catatan penyedia, konfirmasi versi, dan hitung penyimpangan. Periode terkontaminasi bukan kinerja bersih strategi yang ditentukan; tetap bisa memberi bukti kegagalan operasional berguna.
  2. Biaya. Bandingkan spread, slippage, komisi aktual dengan kartu. Penurunan ekspektansi 0,15R bersama kenaikan biaya 0,15R dapat menjelaskan selisih. Biaya bagian kelayakan strategi meski mekanisme entri tak berubah.
  3. Rezim. Periksa kondisi yang dimaksud benar-benar muncul dan filter kelayakannya diterapkan benar.
  4. Keunggulan. Baru kemudian nilai distribusi hasil dan ketidakpastian terhadap aturan keputusan terdahulu, bukan hanya rata-rata selusin transaksi terakhir.

Tabel keputusan lengkap “ubah sistem atau ubah eksekusi”, kriteria penurunan kelas, dan proses tinjauan ada pada artikel 15.10. Aturannya selesaikan tiga lapisan diagnostik awal sebelum menyalahkan logika entri dan keluar. Perubahan aturan nyata kembali ke proses uji berversi; bukan tambalan tak terlihat pada bukti lama.

Diagnosis perbedaan. Jumlah kesalahan, sampel 30 transaksi atau persentil DD saja tidak bisa mengidentifikasi penyebab. Tinjauan alokasi lengkap ada di Artikel 15.10.
Jumlah kesalahan, sampel 30 transaksi atau persentil DD saja tidak bisa mengidentifikasi penyebab. Tinjauan alokasi lengkap ada di Artikel 15.10.

10. Daftar periksa — dua gerbang keputusan riil terpisah

Daftar periksa berisi 20 item dalam lima kategori: evaluasi statistik, kendali metodologis, biaya, pengujian prospektif, dan disiplin operasional. Ada dua gerbang karena item 17 memerlukan pengamatan riil aktual dan tak dapat menjadi prasyarat studi riil terbatas pertama. Pada versi ini, periksa 1–16, 19, dan 20 sebelum mempertimbangkan studi yang diotorisasi terpisah; periksa seluruh 20 sebelum keputusan skala berikutnya. Rencana pengukuran berkelanjutan item 20 harus ada sebelum pilot, bukan hanya setelahnya.

Skor tidak menggantikan syarat kritis hilang. “Tidak berlaku” perlu alasan tertulis. Seluruh durasi, jumlah, dan ambang kebijakan di sini pilihan skenario, bukan standar pasar. Lengkap bukan sertifikasi profitabilitas atau izin order.

Evaluasi statistik: lima pemeriksaan

Kendali metodologis: enam pemeriksaan

Model biaya: empat pemeriksaan

Uji prospektif: tiga pemeriksaan

Disiplin operasional: dua pemeriksaan

Terdokumentasi: 0/20 pemeriksaan

Halaman tidak mengirim jawaban atau sengaja menyimpannya sebagai catatan riset. Peramban dapat memulihkan formulir saat kembali; bukan bukti item telah diverifikasi. Simpan daftar hasil tinjauan bersama arsip uji bertanggal.

Arsip wajib: sebelas komponen

Tinjauan penggunaan memerlukan jejak audit. Tanpanya, enam bulan lagi Anda mungkin tidak bisa merekonstruksi aturan, data, dan asumsi yang menghasilkan hasil awal:

  1. Kartu uji dua belas kolom: kolom 1–9 sebelum evaluasi, hasil dan batas sesudahnya, dengan manifest reproduksi lengkap serta terverifikasi.
  2. Input historis: data pasar dan kalender mentah, sumber, tanggal perolehan, izin, hash, versi bersih, kode transformasi, serta log gap, duplikat, dan revisi.
  3. Spesifikasi dan implementasi strategi: aturan terbaca, kode, parameter, versi dependensi dan platform, cap waktu beku, serta perintah tepat. Bekukan sebelum OOS, bukan setelah melihatnya.
  4. Laporan IS, validasi, dan OOS: batas pembagian, riwayat penuh, kurva ekuitas, interval ekspektansi, profit factor, drawdown tiap jendela, serta hasil baseline sepadan.
  5. Laporan simulasi dan stres: contohnya 1.000 jalur atau lebih, dengan seed, kode, skema blok, horizon, ukuran, kuantil imbal hasil dan drawdown, tingkat pelampauan, serta batas. Lebih banyak jalur bukan pengamatan pasar tambahan.
  6. Model biaya dan akun: spread sesi/tick, asumsi slippage, tarif pendanaan terpisah dan pengali hari, komisi, konversi, margin, serta batas simbol.
  7. Ekspor demo atau paper: seluruh periode rencana, ilustrasinya 30 hari, dengan cap waktu sinyal asli, status, serta rekonsiliasi historis.
  8. Jurnal riil terbatas jika diotorisasi dan selesai: periode rencana, ilustrasi 90 hari, dengan R₀ tiap transaksi, R neto, konvensi MAE/MFE, biaya aktual, permintaan, pengisian, insiden, dan tangkapan sebelum/sesudah jika berguna.
  9. Inventaris sinyal: seluruh kandidat dan alasan pengecualian, skip manual, data invalid, dan kegagalan eksekusi, dengan penyebut tingkat penyimpangan yang dapat direproduksi.
  10. Catatan pengaturan penyedia: jenis akun, syarat simbol, leverage, volume minimum, stop, serta biaya pada tanggal uji. Simpan bukti sengketa eksekusi tanpa membocorkan kredensial.
  11. Cadangan yang dapat dipulihkan dan catatan keputusan: EA, skrip, dan template beku, kesimpulan ditinjau, batas belum selesai, penanggung jawab, lokasi pemulihan, serta syarat jeda atau lanjut.

Contoh direktori adalah strategy_X/2026-Q2/{01_data,02_IS,03_OOS_locked,04_montecarlo,05_demo,06_micro_live,07_artefacts}. Simpan salinan yang dapat dipulihkan pada penyimpanan sesuai dan lindungi ekspor sensitif. Cloud pilihan menurut kebijakan data, bukan keharusan. Hash mengungkap beda berkas, bukan membuktikan kuotasi benar.

Gerbang pertama lengkap memungkinkan tinjauan apakah perlu memberi izin studi riil terbatas, bukan order otomatis. Dua puluh lengkap memungkinkan tinjauan penggunaan atau skala kemudian sesuai rencana. Syarat kritis hilang mengembalikan proyek ke tahap belum selesai. Keputusan akhir sama sah adalah tidak menggunakan.

Kapan tidak menjalankan backtest kinerja mekanis. Jika setup masih hanya “pullback bagus”, “price action bersih”, atau “momentum meyakinkan”, definisikan dulu hal yang dapat diamati serta dicatat evaluator. Kode tidak mereproduksi penilaian tak dinyatakan. Untuk diskresi disengaja, gunakan protokol observasi dan pelabelan tetap dengan keputusan sebelum hasil; diskresi bukan mustahil diteliti, tetapi seleksi grafik hindsight biasa tidak memadai. Contoh menyarankan enam hingga dua belas bulan pengamatan tanpa entri sambil menjernihkan aturan. Itu periode ilustratif mengikuti frekuensi sinyal, bukan hitung mundur wajib. Hasil kerja adalah metode dapat direproduksi serta bukti jujur, bukan kumpulan grafik menarik.

Pertanyaan umum

Berapa lama proses lengkap dari backtest hingga tinjauan riil?

Urutan ilustratif: empat hingga delapan minggu sejarah, 30 hari demo, dan 90 hari pilot riil terbatas berotorisasi terpisah: 148–176 hari, sekitar lima hingga enam bulan. Studi multi-aset atau multi-timeframe rumit dapat memerlukan delapan hingga enam belas minggu sejarah saja. Ini asumsi rencana, bukan standar industri atau jaminan bukti cukup. Sinyal langka butuh lebih lama. Kandidat gagal gerbang tetap tak disetujui; waktu berlalu bukan alasan menurunkan kriteria. Tahap paper opsional, jeda, dan versi revisi menambah waktu, bukan diam-diam dimasukkan jadwal awal.

Apakah MT4 Strategy Tester cukup untuk validasi?

Bergantung strategi, data, dan konfigurasi. Model harga pembukaan saja tidak menentukan urutan intrabar yang tidak dimodelkan. Spread tetap bisa tidak memadai bagi aturan peka spread, dan WFA bergulir lengkap perlu jendela serta catatan dikelola eksplisit. Alur tick seperti TDS dapat memberi kemampuan kurang, tetapi label kualitas model 99% bukan sertifikat benar. Verifikasi tick terekam versus dibuat, sisi kuotasi, biaya, waktu, serta transaksi sampel. Forward historis MT5 memberi pembagian holdout, bukan pengamatan riil prospektif.[6] Pilih alat menurut bukti yang diperlukan, bukan menganggap nama platform membuat uji valid.

Bagaimana jika uji historis hanya 50 transaksi?

Pertimbangkan sejarah relevan lebih panjang, mungkin sepuluh alih-alih lima tahun; studi lintas pasangan terdahulu jika hipotesis sungguh berpindah; serta sensitivitas block bootstrap 5, 10, dan 20. Sejarah panjang menambah pengamatan tetapi tidak selalu konstan. Lima hingga delapan pasangan tidak otomatis memberi lima hingga delapan kali bukti independen. Bootstrap tidak menciptakan pengamatan pasar baru. Jika ketidakpastian masih melintasi ambang, catat belum konklusif atau frekuensi terbatas. Mekanisme masuk akal bukan pengganti bukti hilang dan tidak mengizinkan posisi riil kecil. Lanjutkan riset atau tolak penggunaan sesuai rencana.

Bolehkah melewati demo setelah backtest baik?

Hasil historis baik tidak menjawab apakah notifikasi, startup, pengiriman data, status order, dan alur operator berjalan pada pengamatan masuk. Demo atau pengamatan bayangan sesuai dapat mengungkap cacat sebelum uang riil. Pengisian demo tidak mengukur slippage atau likuiditas riil penuh, jadi studi eksekusi riil kemudian tetap keputusan terpisah eksplisit. Intinya bukan ritual platform wajib, tetapi menghindari melewati pertanyaan operasional yang tak diuji backtest.

Berapa imbal hasil tahunan realistis untuk strategi ritel?

Artikel ini tak memiliki dataset andal untuk satu “imbal hasil ritel untung tipikal”. Persentase akun rugi regulator bukan distribusi imbal hasil akun untung. Imbal hasil sangat tinggi perlu pemeriksaan leverage, risiko, penyebut akun, arus kas, seleksi, biaya, serta panjang periode baik. Tampilan akun prop bisa memakai penyebut berbeda dari modal trader sendiri; jelaskan. Contoh 50%, 200%, atau 500% adalah klaim untuk diselidiki, bukan ambang bukti penipuan atau mustahil. Tetapkan kriteria neto R teruji dengan ketidakpastian, bukan target tahunan promosi.

Bagaimana membedakan perubahan rezim dari kemunduran strategi?

Mulai dari data, implementasi, biaya, lalu periksa kondisi dimaksud terjadi. Periode baru benar-benar tak diperiksa dapat memberi evaluasi baru bagi aturan beku, tetapi ukuran dan cakupan tetap membatasi. Enam bulan tidak otomatis cukup. Jika sinyal rekonstruksi dan eksekusi prospektif berbeda pada tanggal sama, rekonsiliasi, jangan menyalahkan pasar semua. Memakai periode baru merancang filter rezim menjadikannya data pengembangan revisi itu. Keputusan pertahankan, amati, kurangi, atau hentikan mengikuti artikel 15.10, dengan kendali keselamatan terpisah untuk masalah operasional segera.

Bolehkah pengamatan prospektif mendahului backtest historis?

Ya, khususnya jika input historis sesuai waktu atau label diskresioner tidak ada, tetapi jelaskan batasnya. Lima transaksi seminggu memberi sekitar 21 pada 30 hari, 130 pada enam bulan, dan 520 pada dua tahun. Presisi bergantung penyebaran serta ketergantungan, bukan jumlah saja. Proses 50 transaksi sehari bisa lebih dari 1.000 sebulan, tetapi peristiwa bersama bisa membuat sangat bergantung. Sejarah menambah lingkup serta konteks; prospektif mencatat hal benar-benar diketahui dan dilakukan. Tidak satu pun label menjamin inferensi cukup, dan ketiadaan sejarah tidak mewajibkan eksperimen dana riil.

Bisakah strategi teruji tetap mengalami margin call atau likuidasi paksa?

Ya. Kejutan likuiditas/kebijakan tak terlihat, alokasi lebih besar, perubahan margin penyedia, atau kegagalan infrastruktur bisa melampaui kondisi uji. Resampling tidak membuat setiap peristiwa tak terlihat. Gunakan batas rencana, kriteria skala dan rollback terdokumentasi, serta prosedur insiden pada artikel 15.8. Artikel 15.11 membahas skala. Beberapa kegagalan dapat dimodelkan stres, tetapi tidak ada model menjamin seluruh keparahan. Peringatan margin dan likuidasi otomatis juga khusus penyedia, bukan peristiwa universal saling tukar. Kuartal baik bukan izin meningkatkan risiko di luar rencana.

Bolehkah membeli EA alih-alih membuat strategi?

Implementasi dibeli bisa dievaluasi, tetapi harga, peringkat, dan backtest terpilih bukan pengganti uji tuntas. Minta riwayat percobaan serta versi, data dan asumsi biaya dapat direproduksi, serta catatan riil informatif jika diklaim. Contoh menyarankan riwayat riil publik minimal tiga tahun sebagai preferensi penyaringan; bukan jaminan, dan pelacakan pihak ketiga tetap perlu asal-usul serta arus kas diperiksa. Kode memungkinkan validasi mendalam; jika kebijakan mewajibkan, penolakan berarti produk tak sesuai kebijakan, bukan bukti penjual curang. Periksa seleksi, varian tersembunyi, survivorship, kelayakan kini, dan biaya. Artikel tidak menetapkan tingkat sukses marketplace EA keseluruhan andal atau keunggulan finansial universal membeli atas membangun.

Apakah uji manual dengan sendirinya kurang valid dari otomatisasi?

Tidak. Manual perlu protokol sampel dan keputusan tetap, catatan lengkap, serta kendali hindsight. Otomatisasi perlu kode benar, input sesuai waktu, dan model eksekusi kredibel. Keduanya bisa mengulang kesalahan sendiri. Nyatakan bagian diskresioner dan simpan keputusan sebelum hasil.

Bolehkah mengulang periode luar sampel?

Perhitungan sama boleh diulang demi reproduksi atau audit. Jika hasil memandu perubahan/seleksi, periode itu menjadi data pengembangan hipotesis revisi. Simpan hasil awal dan labeli penggunaan berikutnya jujur; nama berkas baru tidak membuat data kembali belum diperiksa.

Jika stop dan target dalam candle sama?

OHLC saja tidak menentukan mana lebih dulu. Pakai data lebih rinci dengan sisi kuotasi sesuai, atau laporkan sensitivitas pesimistis stop dulu dan optimistis target dulu. Bahkan urutan tick tidak menentukan semua ukuran yang dapat terisi atau menjamin order sudah ada sebelum kuotasi.

Apakah tingkat menang tinggi membuktikan keunggulan positif?

Tidak. Contoh 47 transaksi menang 57,4% tetapi total −5,1R karena rata-rata rugi lebih besar dari untung. Uji payoff neto terealisasi dengan penyebut risiko awalnya. Uji binomial probabilitas menang bukan uji rata-rata R neto.

Apakah Monte Carlo menentukan drawdown maksimum mungkin?

Tidak. Kuantil menjelaskan distribusi simulasi tertentu, bukan batas keras. Bergantung sampel, metode, panjang blok, horizon, dan ukuran. Kejutan hilang, variasi ekuitas intratransaksi, serta gagal likuiditas tidak muncul otomatis dengan jalur lebih banyak.

Haruskah spread dikurangi dari tiap transaksi ekspor?

Hanya jika belum termasuk. Harga bid/ask aktual masuk-keluar biasanya mencakup spread dan slippage harga terealisasi. Tambah hanya biaya belum ada, dengan unit mata uang dan volume konsisten. Rekonsiliasi komisi serta pendanaan, jangan mengurangi dua kali.

Apakah hasil tak konklusif membenarkan setengah ukuran riil?

Tidak dengan sendirinya. Bukti kurang tetap kurang. Studi eksekusi riil terbatas perlu tujuan terpisah, otoritas, ukuran minimum layak, dan anggaran rugi diterima. Terus mengamati tanpa menggunakan adalah keputusan sah.

Sumber dan catatan verifikasi

Enam entri pertama daftar bacaan metodologis. Mendukung latar metode, bukan kinerja strategi sintetis atau ambang sampel, risiko, dan penggunaan universal. Rujukan platform menjelaskan fitur teknisnya, bukan setiap broker atau tempat transaksi.

Daftar bacaan edisi Polandia

  1. Robert Pardo, The Evaluation and Optimization of Trading Strategies, Wiley, 2008. Pengembangan, optimasi, dan evaluasi walk-forward strategi.
  2. David Aronson, Evidence-Based Technical Analysis, Wiley, 2007. Uji hipotesis, data mining, dan penalaran statistik evaluasi strategi.
  3. Marcos López de Prado, Advances in Financial Machine Learning, Wiley, 2018. Seleksi riset, overfit backtest, dan validasi pengamatan finansial saling bergantung.
  4. Howard B. Bandy, Quantitative Technical Analysis, Blue Owl Press, 2015. Evaluasi sistem, resampling, ukuran posisi, dan drawdown.
  5. Van K. Tharp, The Definitive Guide to Position Sizing, International Institute of Trading Mastery, 2008. Hasil R, ukuran posisi, dan evaluasi sistem. Statistik R bukan izin penggunaan.
  6. MetaQuotes, Pengujian Strategi Trading, dan MetaTrader 5, Pengujian Strategi. Mode historis, pembagian forward, dan pengaturan model. Forward historis tester bukan pengamatan data riil prospektif.

Rujukan teknis tambahan edisi Inggris terdahulu ada di bawah. Contoh numerik tetap skenario pendidikan, bukan studi kinerja pasar terverifikasi independen. Interval binomial eksak diperiksa silang numerik; contoh bootstrap NumPy dan buku biaya diperiksa terpisah dari akun broker mana pun.

  1. TradingView, Strategi, dan Repainting: asumsi emulator broker, grafik sintetis, dan waktu informasi. Khusus platform, bukan aturan bursa universal.
  2. Bailey dan rekan penulis, The Probability of Backtest Overfitting, dan The Deflated Sharpe Ratio: seleksi serta ketidaknormalan evaluasi kinerja.
  3. MetaTrader 5, Pelaksanaan Transaksi, dan MQL5, Properti Simbol: penanganan order platform serta pengaturan volume, pendanaan, dan eksekusi khusus kontrak.
  4. MetaTrader 5, Pengujian Strategi: pembagian forward historis, mode tick, jeda, dan pengaturan akun/biaya, termasuk batas perhitungan profit dalam pip.
  5. Global Foreign Exchange Committee, The Use of Last Look in FX Markets: definisi dan pengungkapan last look dalam FX grosir.
  6. NIST/SEMATECH, Interval kepercayaan proporsi: konstruksi interval dan asumsi.
  7. SciPy, binomtest, dan ttest_1samp: uji berbeda probabilitas binomial dan rata-rata populasi.

Kemajuan belajar Anda

Selesai membaca pelajaran ini? Tandai sendiri. Membuka atau menggulir halaman tidak menandainya sebagai selesai.

Kemajuan memerlukan JavaScript dan penyimpanan browser.

Disimpan hanya di browser ini. Tanpa akun atau sinkronisasi antarperangkat. Menghapus data situs dapat menghapus kemajuan Anda.

Jarosław Wasiński

Pemimpin redaksi, ForexMechanics.com • Analis makro dan FX

Analis independen dan profesional dengan lebih dari 20 tahun pengalaman di pasar keuangan. Aktif di Forex sejak 2004, berfokus pada analisis fundamental, struktur pasar OTC, dan manajemen risiko modal yang disiplin.

  • Pendiri dan pemimpin redaksi MyBank.pl, menyediakan edukasi keuangan tepercaya sejak 2004.
  • Penulis ratusan komentar pasar mendalam, analisis struktural, dan materi edukasi untuk trader dan investor.
  • Pendukung transparansi pasar, mempromosikan edukasi berbasis data konkret dan laporan institusional (BIS, ESMA, CFTC).

Seluruh konten bersifat edukasi dan informasi semata – bukan merupakan saran investasi atau rekomendasi apa pun. Ingat: trading dengan leverage (Forex/CFD) memiliki risiko tinggi kehilangan modal dengan cepat.