Freqtrade

Lookahead Bias pada Freqtrade: Cara Mendeteksi Strategi yang ‘Curang’

Kenali penyebab lookahead bias dalam dataframe Freqtrade, contoh kode berbahaya, cara menjalankan lookahead-analysis, dan batas interpretasinya.

Written by CuanTrade Research
Read time 4 min
Published July 21, 2026
Ilustrasi garis waktu data masa lalu dan masa depan dalam backtest Freqtrade

Image source: CuanTrade AI

Lookahead bias terjadi ketika keputusan pada waktu tertentu menggunakan informasi yang baru tersedia di masa depan. Strategi tampak sangat akurat dalam backtest karena ia secara tidak sengaja “melihat jawaban”.

Mengapa Dataframe Rentan Bias?

Freqtrade memberikan seluruh rentang dataframe kepada fungsi indikator. Ini efisien untuk perhitungan vektor, tetapi pembuat strategi harus memastikan setiap baris hanya memakai data sampai waktu baris tersebut.

Operasi pandas yang valid secara teknis belum tentu valid secara temporal.

Pola Kode Berbahaya

Negative Shift

dataframe["future_close"] = dataframe["close"].shift(-1)

Baris sekarang memperoleh close candle berikutnya. Ini lookahead langsung.

Agregasi Seluruh Dataset

dataframe["normalized"] = (
    dataframe["close"] - dataframe["close"].min()
) / (dataframe["close"].max() - dataframe["close"].min())

Nilai minimum dan maksimum masa depan memengaruhi baris masa lalu. Gunakan rolling atau expanding window sesuai kebutuhan.

Merge Informative Timeframe yang Salah

Candle 4 jam yang berakhir pukul 12:00 tidak boleh diketahui sepenuhnya oleh candle 30 menit pukul 08:30. Merge manual tanpa pergeseran waktu dapat membocorkan high, low, atau close candle informative yang belum selesai.

Loop yang Mengakses Baris Berikutnya

Loop dengan indeks i + 1 atau pencarian puncak setelah sinyal juga dapat membawa informasi masa depan.

Machine Learning Leakage

Scaler, feature selection, atau model yang dilatih pada seluruh data sebelum split membuat informasi periode validasi masuk ke training.

Pola yang Lebih Aman

Gunakan data historis:

dataframe["previous_close"] = dataframe["close"].shift(1)
dataframe["rolling_high"] = dataframe["high"].rolling(20).max()
dataframe["expanding_mean"] = dataframe["close"].expanding().mean()

Rolling window tetap perlu memerhatikan apakah candle saat ini sudah ditutup saat keputusan dibuat.

Untuk informative timeframe, gunakan helper resmi Freqtrade dan audit timestamp hasil merge.

Menjalankan Lookahead Analysis

Contoh:

freqtrade lookahead-analysis \
  --config user_data/config.json \
  --userdir user_data \
  --strategy MyStrategy \
  --timerange 20220101-20251231 \
  --timeframe 30m \
  --timeframe-detail 5m \
  --minimum-trade-amount 20 \
  --targeted-trade-amount 100

Tool menjalankan baseline lalu membandingkan sinyal dan indikator melalui backtest terpisah. Hasilnya melaporkan apakah entry, exit, atau indikator berubah dengan cara yang menunjukkan bias.

Membaca Hasil

Kolom penting biasanya mencakup:

  • has_bias.
  • Jumlah total signal.
  • Biased entry signals.
  • Biased exit signals.
  • Biased indicators.

Jika bias terdeteksi, jangan langsung menghapus indikator yang disebut. Telusuri bagaimana kolom tersebut dihitung dan digunakan.

Mengapa “No Bias Detected” Belum Final?

Tes otomatis memiliki batas:

  • Sampel signal mungkin terlalu kecil.
  • Cabang callback tertentu mungkin tidak aktif.
  • Strategi dapat mengubah perilaku berdasarkan mode run.
  • Kebocoran pada proses eksternal atau training model tidak selalu terlihat.
  • Bias dapat muncul hanya pada pair atau periode tertentu.

Hindari kode yang sengaja mendeteksi mode lookahead lalu melewati aturan tertentu. Tes seharusnya sedekat mungkin dengan perilaku strategi normal.

Audit Manual yang Perlu Dilakukan

Cari pola:

  • shift(- atau indeks masa depan.
  • .max(), .min(), .mean() tanpa rolling/expanding.
  • iloc[-1] dalam fungsi yang membangun seluruh dataframe.
  • Merge dataframe berdasarkan timestamp yang tidak jelas.
  • Resampling tanpa memastikan candle telah selesai.
  • Fitur ML yang di-fit sebelum data split.
  • State global yang dipengaruhi urutan backtest.

Kemudian periksa beberapa timestamp secara manual: kapan candle tersedia dan kapan sinyal seharusnya dibuat.

Recursive Analysis

Selain lookahead, indikator dapat berubah ketika startup candle atau panjang data berubah. Recursive analysis membantu mengidentifikasi indikator yang nilainya tidak stabil karena warm-up tidak cukup atau perhitungan rekursif.

Kedua tes menyelesaikan masalah berbeda dan sebaiknya dijalankan bersama.

Checklist Lulus Bias

  • Lookahead analysis tidak menemukan bias pada sampel memadai.
  • Kode tidak memakai negative shift.
  • Agregasi memiliki jendela historis.
  • Informative timeframe digabung dengan timestamp aman.
  • Training dan validasi model terpisah.
  • Tidak ada perilaku khusus yang mempermudah tes.
  • Hasil stabil ketika startup candle ditambah.
  • Audit manual atas fitur utama selesai.

Penutup

Lookahead bias dapat mengubah strategi biasa menjadi tampak luar biasa. Karena itu, pemeriksaan bias harus dilakukan sebelum mengoptimalkan parameter lebih jauh atau mempertimbangkan dry-run.

Artikel berikutnya membahas Hyperopt dan cara menggunakannya tanpa mengubah proses optimasi menjadi mesin overfitting.

Bacaan lanjutan

Lulus alat deteksi bias adalah bukti penting, tetapi tetap membutuhkan audit kode dan validasi out-of-sample.
Trending

Related Post

Expand your knowledge with these hand-picked posts.

Ilustrasi kontras kurva profit backtest dan risiko live trading
July 20, 2026
Freqtrade

Mengapa Return Backtest Tinggi Belum Tentu Layak untuk Live Trading?

Pelajari sumber return backtest yang menyesatkan: compounding, leverage, bias, overfitting, slippage, likuiditas, dan risiko eksekusi live.

Ilustrasi dashboard metrik dan kurva ekuitas backtest Freqtrade
July 19, 2026
Freqtrade

Cara Membaca Hasil Backtest Freqtrade dengan Benar

Panduan memahami profit factor, drawdown, Sharpe, expectancy, win rate, distribusi trade, dan konsistensi hasil backtest Freqtrade.

Ilustrasi terminal menjalankan backtest strategi Freqtrade
July 18, 2026
Freqtrade

Cara Backtest Strategi Freqtrade dari CLI: Panduan Lengkap

Pelajari command backtesting Freqtrade, timerange, timeframe detail, export, cache, dan cara membuat eksperimen yang dapat direproduksi.

Workspace with laptop

Explore insights, stories, and strategies that help you build better products every day.

Join 1,000,000+ subscribers receiving expert tips on earning more, investing smarter and living better, all in our free newsletter.