Before you start
What this module changes in your trading process.
Turn a trading hypothesis into explicit, testable rules.
Connect the pieces from hypothesis to rules, signals, and positions through a simple moving-average crossover strategy.
Module outline
Before you start
Turn a trading hypothesis into explicit, testable rules.
Lesson 1
Merumuskan hipotesis trading menjadi aturan yang eksplisit dan dapat diuji.
Setiap strategi bermula dari hipotesis tentang perilaku pasar. Contoh: "Ketika tren naik mulai terbentuk, harga cenderung melanjutkan untuk sementara." Hipotesis ini harus diubah menjadi aturan yang tidak ambigu . Moving Average Crossover Salah satu aturan klasik (dan sederhana untuk belajar): • Hitung rata-rata bergerak cepat (mis. MA 20) dan lambat (mis.
MA 50). • Sinyal long ketika MA cepat memotong ke atas MA lambat (golden cross). • Keluar/flat ketika MA cepat memotong ke bawah (death cross). Logikanya: MA cepat di atas MA lambat menandakan momentum jangka pendek lebih kuat dari jangka panjang. Jujur sejak awal Crossover MA bukan "strategi ajaib" — ia sering menghasilkan banyak sinyal palsu di pasar sideways.
Kita pakai sebagai alat belajar untuk memahami alur sinyal → posisi, bukan sebagai sistem siap pakai.
Example
Contoh: "Ketika tren naik mulai terbentuk, harga cenderung melanjutkan untuk sementara." Hipotesis ini harus diubah menjadi aturan yang tidak ambigu . Moving Average Crossover Salah satu aturan klasik (dan sederhana untuk belajar): • Hitung rata-rata bergerak cepat (mis. MA 20) dan lambat (mis. MA 50). • Sinyal long ketika MA cepat memotong ke atas MA lambat (golden cross). • Keluar/flat ketika MA cepat memotong ke bawah (death cross). Logikanya: MA cepat di atas MA lambat menandakan momentum jangka pendek lebih ku
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
Membangun strategi moving-average crossover langkah demi langkah.
Kita ubah aturan menjadi kolom posisi di Pandas, lalu berhati-hati menghindari look-ahead.
Example code: import pandas as pd, numpy as np df["ma_fast"] = df["close"].rolling(20).mean() df["ma_slow"] = df["close"].rolling(50).mean() # Sinyal mentah: 1 jika fast > slow, else 0 df["signal"] = np.where(df["ma_fast"] > df["ma_slow"], 1, 0) # PENTING: posisi hari ini dieksekusi berdasarkan sinyal kemarin df["position"] = df["signal"].shift(1) # Return strategi = posisi * return pasar df["mkt_ret"] = df["close"].pct_change() df["strat_ret"] = df["position"] * df["mkt_ret"] Perhatikan dua hal kunci: • shift(1) pada posisi: Anda tidak bisa membeli pada harga close hari ini menggunakan sinyal yang baru diketahui dari close hari ini.
Posisi berlaku mulai periode berikutnya. • Return strategi = posisi × return pasar: jika flat (0), tidak ada eksposur; jika long (1), mengikuti pasar. Bug paling umum Lupa shift membuat strategi "melihat masa depan" dan hasilnya tampak luar biasa — padahal mustahil dieksekusi. Selalu tanyakan: "Informasi ini benar-benar tersedia saat keputusan dibuat?"
Example
import pandas as pd, numpy as np df["ma_fast"] = df["close"].rolling(20).mean() df["ma_slow"] = df["close"].rolling(50).mean() # Sinyal mentah: 1 jika fast > slow, else 0 df["signal"] = np.where(df["ma_fast"] > df["ma_slow"], 1, 0) # PENTING: posisi hari ini dieksekusi berdasarkan sinyal kemarin df["position"] = df["signal"].shift(1) # Return strategi = posisi * return pasar df["mkt_ret"] = df["close"].pct_change() df["strat_ret"] = df["position"] * df["mkt_ret"]
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
Menghasilkan sinyal dan posisi secara vektor di Pandas tanpa look-ahead.
Dari return strategi, kita bangun equity curve — pertumbuhan modal kumulatif: Example code: # Pertumbuhan kumulatif (mulai dari 1.0) df["equity"] = (1 + df["strat_ret"].fillna(0)).cumprod() df["equity"].plot(title="Equity Curve Strategi") Cara membaca awal: • Kemiringan naik = strategi tumbuh; datar = periode flat/tanpa edge. • Penurunan dari puncak (drawdown) = seberapa dalam modal turun — indikator nyeri psikologis & risiko. • Bandingkan dengan buy & hold sebagai tolok ukur (benchmark).
Ini belum backtest sungguhan Perhitungan di atas mengabaikan biaya transaksi, spread, slippage, dan pendanaan . Equity curve yang indah tanpa biaya sering berubah merah setelah biaya dimasukkan. Tingkat Menengah akan membahas backtesting yang jujur secara mendalam.
Inilah alasan kita melanjutkan ke Tingkat Menengah: mengukur kinerja dengan benar, menyertakan biaya, dan menghindari bias yang membuat kita menipu diri sendiri.
Example
# Pertumbuhan kumulatif (mulai dari 1.0) df["equity"] = (1 + df["strat_ret"].fillna(0)).cumprod() df["equity"].plot(title="Equity Curve Strategi")
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 Your First Rule-Based Strategy: 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
A strategy is only as good as its data. Learn price-data structure, timeframe resampling, and the quiet data traps that break backtests.
Next module
A bad backtest is more dangerous than no backtest. Learn honest testing practices and the biases that must be avoided.
Risk note: Metavulus learning content is for education and market preparation only. It is not financial advice, investment advice, or a trading recommendation.