VectorBT: Rangka Kerja Backtesting Terpantas untuk Python

Jika anda pernah terlibat dalam algotrading dan backtesting strategi dagangan menggunakan Python, anda mungkin pernah menghadapi masalah yang sama: kelajuan. Perpustakaan klasik (seperti Backtrader atau Zipline) menggunakan pendekatan berorientasikan objek, memproses data sejarah satu peristiwa demi satu peristiwa (event-driven). Pendekatan ini mudah untuk menulis logik, namun apabila tiba masa untuk mengoptimumkan parameter pada ribuan kombinasi, masa menunggu berjam-jam menjadi tidak tertanggung.
Dan di sinilah VectorBT hadir — perpustakaan analisis kuantitatif yang menggunakan pendekatan yang berbeza secara asasnya terhadap backtesting.
Apakah VectorBT?

VectorBT beroperasi secara eksklusif dengan objek pandas dan NumPy, serta menggunakan pengkompil Numba untuk mempercepatkan pengiraan. Ini membolehkan analisis sebarang data dengan kelajuan dan kebolehskalaan yang luar biasa, menguji puluhan ribu strategi dalam masa beberapa saat sahaja.
Berbanding memproses setiap bar atau tick secara bergiliran (seperti yang dilakukan oleh backtesters tradisional), VectorBT mewakili data kompleks sebagai tatasusunan berstruktur. Pemvektoran operasi bersama-sama dengan Numba (yang menyelesaikan masalah kebergantungan laluan dengan membenarkan gelung Python dikompilasi ke dalam kod mesin) memberikan prestasi setaraf bahasa C.
Ciri-ciri Utama

- Backtesting Tervektoran: Menguji strategi dalam beberapa baris kod. Tiada gelung Python yang perlahan.
- Pengoptimuman Berskala Besar: Optimumkan strategi dagangan anda secara serentak merentasi banyak parameter, tempoh masa, dan aset dalam satu operasi.
- Visualisasi Interaktif: Integrasi terbina dengan Plotly dan Jupyter Widgets membolehkan penciptaan carta dan papan pemuka yang sangat kompleks (seperti Tableau) terus dalam Jupyter Notebook tanpa kelewatan rendering yang ketara.
- Tiada Kehilangan Kawalan: Tidak seperti platform awan seperti TradingView, data dan algoritma anda kekal hanya bersama anda. Pada masa yang sama, prestasi pengiraan setanding, dan kerap melebihi, platform siap sedia.
- Penyediaan Data: Set alat yang sangat baik untuk analisis siri masa dan kejuruteraan ciri untuk model pembelajaran mesin.
Cara Ia Berfungsi (Contoh)

Katakan kita ingin menguji strategi Dual Moving Average Crossover (DMAC) klasik pada Bitcoin (BTC).
Dalam rangka kerja OOP klasik, anda perlu mencipta kelas strategi, menerangkan logik next() yang dicetuskan pada setiap bar, dan melakukan iterasi melalui semua bar. Dalam VectorBT, semuanya jauh lebih elegan dan lebih cepat:
import vectorbt as vbt
btc_price = vbt.YFData.download('BTC-USD', start='2019-01-01 UTC', end='2020-01-01 UTC').get('Close')
fast_ma = vbt.MA.run(btc_price, [10, 20], short_name='fast')
slow_ma = vbt.MA.run(btc_price, [30, 30], short_name='slow')
entries = fast_ma.ma_crossed_above(slow_ma)
exits = fast_ma.ma_crossed_below(slow_ma)
pf = vbt.Portfolio.from_signals(btc_price, entries, exits)
print(pf.total_return())
Dalam contoh ini, kita telah menguji beberapa variasi strategi DMAC dalam satu masa yang singkat: kombinasi (10, 30) dan (20, 30). Hasilnya (dalam bentuk lajur) ialah pulangan bagi setiap set parameter:
fast_window slow_window
10 30 0.848840
20 30 0.543411
Name: total_return, dtype: float64
Ingin menambah Ethereum, Solana, dan beberapa syiling lagi? Hanya gabungkan harga mereka ke dalam satu DataFrame. Ingin menguji julat masa yang berbeza? Gunakan fungsi range_split. Perwakilan vektor membolehkan anda melipatgandakan dimensi hampir tanpa had (selagi RAM mencukupi).
VectorBT PRO

Terdapat juga versi komersial perpustakaan ini — VectorBT PRO, yang menambah alat yang lebih berkuasa lagi. Ia menampilkan pemprosesan selari, pengoptimuman portfolio lanjutan, pengecaman corak harga, unjuran peristiwa, pengiraan dagangan margin dan pesanan had, serta lebih seratus metrik lain yang penting untuk dagangan sebenar.
Mengapa Menggunakan VectorBT?
Jika anda hanya perlu "menjalankan" satu strategi pada satu instrumen, rangka kerja standard mungkin sudah mencukupi. Tetapi jika matlamat anda adalah analisis penerokaan, mencari corak statistik (alfa), menguji hipotesis pada ribuan instrumen secara serentak, maka VectorBT akan menjadi satu penemuan sebenar bagi anda.
Ia adalah alat para saintis data yang dibawa ke dalam dunia dagangan. Ia memberikan kelebihan maklumat yang kompetitif dengan keupayaan menyemak idea puluhan dan ratusan kali lebih pantas berbanding peserta pasaran lain yang menggunakan Python.
Pengarang
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.