VectorBT: Python için En Hızlı Backtesting Çerçevesi

Algotrading ve Python'da ticaret stratejilerini backtesting ile test etmeyle hiç uğraştıysanız, muhtemelen aynı sorunla karşılaşmışsınızdır: hız. Klasik kütüphaneler (örneğin Backtrader veya Zipline), olay tabanlı (event-driven) bir yaklaşım kullanarak geçmiş veriler üzerinde olay olay iterasyon yapar. Bu, mantık yazmak için kullanışlıdır; ancak binlerce kombinasyon üzerinde parametre optimizasyonu söz konusu olduğunda, saatlerce bekleme katlanılmaz hale gelir.
İşte tam burada VectorBT devreye girer — backtesting'e temelden farklı bir yaklaşım uygulayan bir kantitatif analiz kütüphanesi.
VectorBT Nedir?

VectorBT yalnızca pandas ve NumPy nesneleriyle çalışır ve hesaplamaları hızlandırmak için Numba derleyicisini kullanır. Bu sayede inanılmaz hız ve ölçeklenebilirlik ile her türlü veriyi analiz etmek ve kelimenin tam anlamıyla saniyeler içinde on binlerce strateji test etmek mümkün olur.
Her çubuğu veya tiki sırayla işlemek yerine (geleneksel backtest araçlarının yaptığı gibi), VectorBT karmaşık verileri yapılandırılmış diziler olarak temsil eder. Numba ile birleştirilmiş işlem vektörizasyonu (Python döngülerinin makine koduna derlenmesine izin vererek yol bağımlılığı sorununu çözen), C dili düzeyinde performans sağlar.
Temel Özellikler

- Vektörize Backtesting: Birkaç satır kodla strateji testi. Yavaş Python döngüsü yok.
- Büyük Ölçekli Optimizasyon: Ticaret stratejinizi aynı anda birçok parametre, zaman dilimi ve varlık üzerinde tek seferde optimize edin.
- Etkileşimli Görselleştirme: Plotly ve Jupyter Widgets ile yerleşik entegrasyon, Jupyter Notebook'ta fark edilir bir render gecikmesi olmadan doğrudan son derece karmaşık grafikler ve gösterge panelleri (Tableau gibi) oluşturmaya olanak tanır.
- Kontrol Kaybı Yok: TradingView gibi bulut platformlarının aksine, verileriniz ve algoritmalarınız yalnızca size ait kalır. Aynı zamanda hesaplama performansı, hazır platformlarla karşılaştırılabilir düzeyde hatta çoğu zaman onları geride bırakır.
- Veri Hazırlama: Makine öğrenimi modelleri için zaman serisi analizi ve özellik mühendisliği konusunda mükemmel bir araç seti.
Nasıl Çalışır (Örnek)

Bitcoin (BTC) üzerinde klasik Çift Hareketli Ortalama Kesişimi (DMAC) stratejisini test etmek istediğimizi varsayalım.
Klasik bir OOP çerçevesinde, bir strateji sınıfı oluşturmanız, her çubukta tetiklenen next() mantığını tanımlamanız ve tüm çubuklar üzerinde iterasyon yapmanız gerekirdi. VectorBT'de her şey çok daha zarif ve hızlıdır:
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())
Bu örnekte DMAC stratejisinin birden fazla varyasyonunu tek bir anda test ettik: (10, 30) ve (20, 30) kombinasyonları. Sonuç (sütun biçiminde) her parametre varyantı için getiriyi gösterir:
fast_window slow_window
10 30 0.848840
20 30 0.543411
Name: total_return, dtype: float64
Ethereum, Solana ve bir düzine daha fazla coin eklemek ister misiniz? Fiyatlarını tek bir DataFrame'de birleştirin. Farklı zaman aralıklarını test etmek ister misiniz? range_split fonksiyonunu kullanın. Vektör gösterimi, boyutları neredeyse sınırsız biçimde çoğaltmanıza olanak tanır (yeterli RAM olduğu sürece).
VectorBT PRO

Kütüphanenin ticari bir sürümü de mevcuttur — VectorBT PRO, daha da güçlü araçlar ekler. Paralel işleme, gelişmiş portföy optimizasyonu, fiyat örüntüsü tanıma, olay projeksiyonu, marjin ticareti ve limit emir hesaplama ile gerçek ticaret için önemli yüzden fazla metrik sunar.
Neden VectorBT Kullanmalısınız?
Yalnızca tek bir enstrümanda tek bir stratejiyi "çalıştırmanız" gerekiyorsa, standart çerçeveler yeterli olabilir. Ancak hedefiniz keşif analizi, istatistiksel örüntüler (alfa) bulmak, aynı anda binlerce enstrümanda hipotezleri test etmekse, VectorBT sizin için gerçek bir keşif olacaktır.
Bu, ticarete uyarlanan veri bilimcilerinin bir aracıdır. Diğer piyasa katılımcılarının Python üzerinde yaptığından onlarca ve yüzlerce kat daha hızlı fikir kontrol etme kapasitesiyle rekabetçi bir bilgi avantajı sağlar.
Yazarlar
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.