Before you start
What this module changes in your trading process.
Compare vectorized and event-driven backtests and their tradeoffs.
A bad backtest is more dangerous than no backtest. Learn honest testing practices and the biases that must be avoided.
Module outline
Before you start
Compare vectorized and event-driven backtests and their tradeoffs.
Lesson 1
Membedakan backtest vectorized dan event-driven beserta trade-off-nya.
Ada dua gaya backtest utama: Aspek Vectorized Event-driven Cara kerja Operasi pada seluruh deret sekaligus (Pandas/NumPy) Memproses bar demi bar seperti waktu nyata Kecepatan Sangat cepat Lebih lambat Realisme Rendah–menengah Tinggi (order, fill, kas) Cocok untuk Riset awal & screening ide Validasi sebelum live Vectorized ideal untuk menyaring banyak ide dengan cepat.
Event-driven mensimulasikan aliran waktu: tiap bar, strategi melihat data sejauh ini, memutuskan, mengirim order, lalu order terisi dengan harga & biaya realistis. Ini mencegah banyak bug "melihat masa depan". Alur kerja sehat Saring ide secara vectorized → validasi kandidat terbaik dengan event-driven (biaya, slippage, sizing) → paper trade → live kecil. Jangan langsung percaya equity curve vectorized.
Example
Practical example: Vectorized cepat untuk screening; event-driven realistis untuk validasi.
Key points
Practice checkpoint
Apply this lesson to one market you actually watch. Write the rule, the data needed, the risk check, and the condition that invalidates the idea.
Before continuing
Lesson 2
Mengenali & mencegah look-ahead bias, survivorship bias, dan overfitting.
Inilah cara backtest "menipu" Anda: 1. Look-ahead bias Strategi memakai informasi yang belum tersedia saat keputusan dibuat — mis. memakai harga close hari ini untuk memutuskan beli pada close yang sama, atau memakai data fundamental versi revisi. Akibatnya hasil mustahil direplikasi live. Solusi: geser sinyal ( shift ), pakai data point-in-time. 2.
Survivorship bias Menguji hanya pada aset yang bertahan hingga kini. Saham yang bangkrut/delisting hilang dari data, sehingga kinerja tampak terlalu bagus. Solusi: pakai dataset yang menyertakan aset yang sudah delisting. 3. Overfitting (curve fitting) Menyetel parameter sampai backtest tampak sempurna pada data masa lalu — tetapi yang dipelajari adalah kebisingan , bukan pola nyata.
Strategi dengan 15 parameter yang "pas sempurna" hampir pasti gagal live. Tanda overfitting Equity curve yang terlalu mulus, banyak parameter, kinerja anjlok drastis saat parameter digeser sedikit, atau hasil hebat hanya pada satu periode/aset. Semakin banyak yang Anda coba, semakin besar peluang "menemukan" pola palsu (multiple testing).
Example
Practical example: Look-ahead: memakai info masa depan → hasil mustahil live.
Key points
Practice checkpoint
Apply this lesson to one market you actually watch. Write the rule, the data needed, the risk check, and the condition that invalidates the idea.
Before continuing
Lesson 3
Menerapkan pemisahan in-sample / out-of-sample dan walk-forward sederhana.
Pertahanan utama melawan overfitting adalah memisahkan data untuk membangun dan untuk menguji . • In-sample (IS): data untuk mengembangkan & menyetel strategi. • Out-of-sample (OOS): data yang "disembunyikan" — hanya diuji sekali di akhir untuk menilai kejujuran strategi. Jika kinerja runtuh di OOS, strategi kemungkinan overfit.
Aturan disiplin: jangan berulang kali mengintip OOS lalu menyetel ulang — itu mengubah OOS menjadi IS. Walk-forward analysis Pendekatan lebih kuat: latih pada jendela awal, uji pada jendela berikutnya, lalu geser jendela maju, ulangi. Ini meniru bagaimana strategi akan dipakai sepanjang waktu dan mengurangi kebetulan satu periode.
Example code: # Konsep walk-forward (pseudokode) for fold in jendela_bergulir(data): train = fold.in_sample test = fold.out_of_sample params = optimasi(train) # setel di train saja hasil = evaluasi(test, params) # nilai di test yang belum dilihat kumpulkan(hasil) # gabungkan kinerja OOS lintas fold Disiplin riset Tetapkan rencana sebelum melihat data, batasi jumlah parameter, dan catat setiap eksperimen.
Example
# Konsep walk-forward (pseudokode) for fold in jendela_bergulir(data): train = fold.in_sample test = fold.out_of_sample params = optimasi(train) # setel di train saja hasil = evaluasi(test, params) # nilai di test yang belum dilihat kumpulkan(hasil) # gabungkan kinerja OOS lintas fold
Key points
Practice checkpoint
Apply this lesson to one market you actually watch. Write the rule, the data needed, the risk check, and the condition that invalidates the idea.
Before continuing
Fieldwork
Build one worksheet for Honest Backtesting and Deceptive Biases: state the market, the rule, the data input, the risk limit, the validation check, and the review note before using it live.
Glossary
Checkpoint quiz
Quiz results can add XP when you are signed in.
Progress action
Marking complete saves the module, updates streak activity, and awards XP only once per module.
Previous module
Connect the pieces from hypothesis to rules, signals, and positions through a simple moving-average crossover strategy.
Next module
Returns alone are misleading. Build the metric vocabulary needed to balance reward and risk and compare strategies fairly.
Risk note: Metavulus learning content is for education and market preparation only. It is not financial advice, investment advice, or a trading recommendation.