Memilih library backtesting pada dasarnya adalah taruhan pada pemeliharaan. Kode yang menilai strategi Anda harus tetap hidup saat sebuah bursa mengubah API, rilis pandas merusak sebuah import, atau Anda menemukan bug pukul 2 dini hari. Jadi ulasan ini mengawali dengan sinyal yang paling tidak glamor namun paling menentukan — apakah proyeknya benar-benar dipelihara? — dan baru setelah itu masuk ke arsitektur, kecepatan, dan fitur.

Setiap angka GitHub di bawah ini diambil langsung dari GitHub API pada 2026-06-22, dan klaim-klaim yang lebih sulit diperiksa silang terhadap sumber primer (repo proyek, dokumentasi resmi) serta diverifikasi secara adversarial. Bila sebuah angka adalah skenario terbaik yang dilaporkan sendiri oleh vendor, hal itu ditandai.

Pemeriksaan realita pemeliharaan

Berikut seluruh ekosistemnya diurutkan berdasarkan bintang GitHub, diberi kode warna sesuai apakah proyeknya benar-benar dikerjakan:

Tools backtesting Python diurutkan berdasarkan bintang GitHub dan diwarnai sesuai status pemeliharaan (2026-06-22): freqtrade, NautilusTrader, dan LEAN memimpin kelompok yang aktif dipelihara, sementara Backtrader tidak aktif dan Zipline, PyAlgoTrade, serta QSTrader telah ditinggalkan.

Kesimpulan yang tidak menyenangkan: dua dari nama paling banyak dibintangi dan paling banyak ditulis di blog sebenarnya sudah menjadi warisan lama.

Sementara itu, proyek yang merilis versi nyata pada 2026 adalah Freqtrade (51.7k ⭐), NautilusTrader (24.1k ⭐), LEAN (20k ⭐), backtesting.py (8.5k ⭐), Jesse (8.1k ⭐), vectorbt (8.0k ⭐), PyBroker (3.4k ⭐), bt (2.9k ⭐), dan Lumibot (1.7k ⭐). Bintang mengukur sejarah; tanggal commit mengukur apakah ada yang akan memperbaiki bug Anda.

Dua arsitektur: event-driven vs vektorized

Percabangan lain yang menentukan segalanya adalah bagaimana mesin menjalankan strategi Anda.

Tidak ada yang menang mutlak. Anda meneliti dengan yang cepat dan memvalidasi dengan yang realistis. Lebih lanjut soal trade-off ini di bawah.

Para pemimpin yang aktif dipelihara

NautilusTrader — kelas produksi, event-driven, inti Rust

NautilusTrader (24.1k ⭐, LGPL-3.0) menyebut dirinya sebagai "mesin trading native-Rust kelas produksi dengan arsitektur event-driven yang deterministik" — basis kodenya sekitar 70% Rust dengan binding Python. Ia melakukan backtest di berbagai venue dan instrumen pada resolusi nanodetik menggunakan data tick dan order-book, serta menyertakan sekitar 20 integrasi live (Binance, Coinbase, Kraken, OKX, Bybit, Interactive Brokers, Betfair, dan lainnya). Janji utamanya: kode strategi yang identik dari riset hingga penerapan live. Ini adalah pilihan terkuat untuk audiens crypto+saham yang membutuhkan realisme level tick dan jalur nyata menuju produksi. Biayanya: kurva belajar yang lebih curam dan arsitektur yang lebih berat dibanding library sederhana.

vectorbt — riset vektorized dalam skala besar

vectorbt (8.0k ⭐, Apache-2.0 + Commons Clause) adalah mesin vektorized. README-nya: "alih-alih melakukan loop melalui bar satu strategi pada satu waktu, ia mengemas ribuan konfigurasi ke dalam array NumPy, mempercepat hot path dengan Numba dan Rust, dan menjalankan semuanya sekaligus, mengubah grid search yang butuh berjam-jam menjadi hitungan detik." Menguji 10.000 kombinasi window dual-SMA dalam hitungan detik adalah contoh kanoniknya; pihak ketiga melaporkan percepatan sekitar 1000× dibanding Backtrader pada beberapa beban kerja (angka dari vendor/pihak ketiga, bukan benchmark independen). Parameter sweep di bawah ini — 25 backtest di berbagai window SMA — persis seperti yang diindustrikan oleh vectorbt:

Heatmap parameter-sweep: total return di 25 kombinasi window SMA cepat/lambat, dari −5% hingga +54%. Grid search ini adalah optimasi parameter massal yang dirancang vectorbt untuk dijalankan dalam hitungan detik.

Dua catatan penting yang perlu diketahui: Commons Clause membatasi penjualan ulang komersial (relevan jika Anda membangun produk), dan vectorbt PRO yang berbayar dan lebih matang adalah produk terpisah dari build open-source-nya. vectorbt hanya untuk backtest — tanpa live trading.

backtesting.py — favorit yang ringan

backtesting.py (8.5k ⭐, AGPL-3.0) adalah pilihan saat Anda ingin backtest yang bersih, cepat, dan mudah dibaca tanpa keribetan sebuah framework. Definisikan init() dan next(), jalankan, dapatkan objek statistik dan plot Bokeh interaktif. Lisensi AGPL-3.0 penting: ini adalah copyleft kuat dengan ketentuan penggunaan jaringan, sehingga merepotkan di dalam SaaS tertutup. Ia hanya untuk backtest. Kurva ekuitas pada halaman ini (cover) dan statistik di bawah ini berasal dari sebuah run backtesting.py yang nyata — crossover SMA(20/50) sederhana pada deret sintetis:

Statistik performa backtesting.py untuk contoh crossover SMA(20/50): return +1,6% vs +46% buy & hold, Sharpe 0,05, max drawdown −38%, 4 trade. Hasil yang jujur — crossover naif berkinerja lebih buruk daripada sekadar menahan posisi.

Perhatikan hasil yang jujur ini: crossover naif menghasilkan +1,6% dibanding +46% untuk buy & hold, dengan drawdown −38% yang brutal. Itulah hasil pertama yang normal dari sebuah backtest nyata, dan persis alasan mengapa Anda menyapu parameter dan memvalidasi asumsi sebelum memercayai apa pun.

Freqtrade — pilihan default untuk crypto

Freqtrade (51.7k ⭐, GPL-3.0) adalah proyek dengan bintang terbanyak dalam daftar ini dan secara de facto merupakan bot trading crypto open-source. Ia menyediakan backtesting, dry-run (paper trading), dan live trading di bursa-bursa besar, dikendalikan melalui Telegram atau UI web bawaan, serta merilis versi setiap bulan. Ia khusus crypto — tanpa saham — tetapi untuk crypto, inilah standar yang dipelihara dan didukung komunitas.

Lumibot, bt, PyBroker, Jesse, LEAN, zipline-reloaded

Kuburan — hindari untuk proyek baru

Nama-nama ini masih muncul di hasil pencarian dan posting blog lama, tetapi jangan memulai dari sini pada 2026:

Arsitektur itu penting: trade-off realisme

Pembagian vektorized-vs-event-driven bukan sekadar teori. Kecepatan vectorbt berasal dari asumsi bahwa setiap fill terjadi pada harga bar berikutnya tanpa slippage. Untuk screen momentum di 500 aset, itu tidak masalah. Untuk strategi yang keunggulannya berada di eksekusi intrabar — penempatan stop, partial fill, posisi antrean — backtest vektorized akan diam-diam membohongi Anda, dan Anda butuh mesin event-driven (NautilusTrader, Backtrader) atau dry-run live (Freqtrade, Lumibot) untuk mendapatkan angka yang jujur. Alur kerja profesional menggunakan keduanya: vectorbt untuk menjelajahi ruang parameter, mesin event-driven untuk memvalidasi yang lolos.

Lisensi — baca ini sebelum Anda membangun produk

Library backtesting tergolong sangat sarat lisensi, dan beberapa di antaranya bersifat copyleft:

Lisensi Library Yang perlu diketahui
AGPL-3.0 backtesting.py Copyleft terkuat; penggunaan jaringan/SaaS dapat memicu kewajiban membuka source
Apache-2.0 + Commons Clause vectorbt (build OSS) Permisif kecuali Anda tidak boleh menjualnya sebagai produk
GPL-3.0 Backtrader, Freqtrade, Lumibot Copyleft; mendistribusikan turunannya berarti harus open-source
LGPL-3.0 NautilusTrader Copyleft lebih lemah; linking umumnya tidak masalah
MIT bt, Jesse, QSTrader, fastquant Permisif — bisa melakukan hampir apa saja
Apache-2.0 LEAN, zipline-reloaded, finmarketpy Permisif, termasuk hibah paten

Jika Anda membangun sesuatu yang komersial dan tertutup, tool MIT/Apache adalah pilihan tanpa hambatan; AGPL dan Commons Clause perlu ditinjau oleh pengacara.

Perbandingan sekilas

Tool ⭐ Bintang Arsitektur Lisensi Pemeliharaan Live trading Paling cocok untuk
NautilusTrader 24.1k Event-driven (Rust) LGPL-3.0 🟢 Aktif Ya Produksi, realisme tick/order-book
vectorbt 8.0k Vektorized Apache+CC 🟢 Aktif Tidak Pencarian parameter massal
backtesting.py 8.5k Event-driven AGPL-3.0 🟢 Aktif Tidak Backtest tunggal cepat dan bersih
Freqtrade 51.7k Event-driven GPL-3.0 🟢 Aktif Ya (crypto) Bot crypto yang dipelihara
Backtrader 22.1k Event-driven GPL-3.0 🟡 Tidak aktif Ya Proyek warisan (perhatikan kemandekan)
Lumibot 1.7k Event-driven GPL-3.0 🟢 Aktif Ya Multi-aset, backtest/live terpadu
LEAN 20k Event-driven Apache-2.0 🟢 Aktif Ya Platform multi-aset kelas berat
bt 2.9k Vektorized/bobot MIT 🟢 Aktif Tidak Strategi alokasi portofolio
PyBroker 3.4k Event-driven OSS 🟢 Aktif Tidak Strategi ML + walk-forward
zipline-reloaded 1.8k Event-driven Apache-2.0 🟢 Aktif Tidak Akademik, buku ML4T
Zipline (asli) 19.9k Event-driven Apache-2.0 🔴 Ditinggalkan Tidak ada — gunakan reloaded
PyAlgoTrade 4.7k Event-driven 🔴 Diarsipkan Tidak ada yang baru

Bintang dan status adalah snapshot 2026-06-22 dan akan bergeser; pemeliharaan adalah dimensi yang paling fluktuatif, jadi periksa ulang aktivitas commit sebelum Anda berkomitmen.

Cara memilih, dalam satu tarikan napas

Satu aturan yang bertahan di setiap rezim pasar: periksa tanggal commit terakhir sebelum Anda memeriksa jumlah bintang. Library 22k bintang yang belum merilis apa pun sejak 2023 adalah jalur yang lebih lambat menuju produksi dibanding library 8k bintang yang merilis minggu lalu.


Metodologi: metrik GitHub diambil langsung dari GitHub API pada 2026-06-22; klaim arsitektur, pemeliharaan, lisensi, dan live trading diperiksa silang terhadap repositori proyek dan dokumentasi resmi serta diverifikasi secara adversarial, dengan mengacu pada katalog kurasi (PyTrade.org, awesome-systematic-trading) dan daftar alternatif milik kernc. Kurva ekuitas, statistik, dan heatmap parameter adalah output nyata dari sebuah run backtesting.py pada deret harga sintetis yang dapat direproduksi — bersifat ilustratif, bukan rekomendasi strategi. Angka performa yang diatribusikan kepada vendor (percepatan vectorbt, resolusi nanodetik NautilusTrader) dilaporkan sendiri, bukan benchmark independen.