← All Collections
10 parts

High-Performance Backtest Engines

How to build a backtest engine that runs hundreds of times faster without changing a single PnL number — data layout, caching, adaptive resolution, and architecture, from first speedups to production internals.

  1. 01
    Backtest Hız Merdiveni: Dizüstü CPU'da 298x, Son İşleme Kadar Birebir Aynı PnL
    Jun 26, 2026 #algotrading

    Backtest Hız Merdiveni: Dizüstü CPU'da 298x, Son İşleme Kadar Birebir Aynı PnL

    Aynı 80 kombinasyonluk parametre taramasının, hepsinin aynı PnL'i ürettiği doğrulanmış beş uygulaması: pandas rolling.apply 69.9 saniye sürüyor, numpy 3.1, numba 2.0, paralel numba 0.23 — donanımda sıfır değişiklikle Apple M2 Max üzerinde ölçülen 298x'lik bir hızlanma ve yetkin bir vektörize edilmiş referansa karşı bile hâlâ ~13x. Her basamağın ne kazandırdığı, bir GPU'nun neden eksik parça olmadığı ve kitlesel parametre aramasındaki gerçek darboğazın nerede yaşadığı.

  2. 02
    Çerçeve Vergisi: Backtest Kütüphaneniz Basit Bir Pandas Döngüsünden Yavaş Olduğunda
    Jul 2, 2026 #algo ticaret

    Çerçeve Vergisi: Backtest Kütüphaneniz Basit Bir Pandas Döngüsünden Yavaş Olduğunda

    Sekiz backtest motorunu tek ve aynı parametre taramasında kıyasladık — 150k bar, 80 HMA kesişim kombinasyonu, işlem sayısı paritesi 2707'de kilitlendi. En popüler olay güdümlü çerçevelerden ikisi, elle yazılmış bir pandas döngüsünden daha yavaş kaldı; buna karşın vektörleştirilmiş/derlenmiş bir motor aynı işi ~13,000× daha hızlı çalıştırdı. Popüler kütüphanelerin amorti etmek için asla tasarlanmadığı bar başına ek yükün bir incelemesi.

  3. 03
    Toplu Parquet Önbelleği: Çoklu Zaman Dilimi Backtestlerini Yüzlerce Kat Nasıl Hızlandırırsınız
    Mar 16, 2026 #algotrading

    Toplu Parquet Önbelleği: Çoklu Zaman Dilimi Backtestlerini Yüzlerce Kat Nasıl Hızlandırırsınız

    Dakikalık mumlardan zaman dilimlerini ve göstergeleri önceden hesaplama, parquet'e kaydetme ve gereksiz yeniden hesaplamalar olmadan toplu strateji testi için kullanma yöntemi.

  4. 04
    İki Eksenli Parametre Uzayı: Taramanızın Büyük Kısmı Neden Neredeyse Bedava Olmalı
    Jul 3, 2026 #algoritmik ticaret

    İki Eksenli Parametre Uzayı: Taramanızın Büyük Kısmı Neden Neredeyse Bedava Olmalı

    Tüm parametrelerin arama maliyeti aynı değildir. Bir stratejinin parametreleri pahalı bir eksene (göstergeler — tüm seri üzerinde yeniden hesaplanır) ve ucuz bir eksene (karar eşikleri — önceden hesaplanmış sinyaller üzerinde O(n) bir geçiş) ayrılır. Göstergeler eşiklerden bağımsız olduğu için onları bir kez hesaplar ve binlerce eşik konfigürasyonunu ~5,600 cfg/s hızıyla tararsınız — her konfigürasyonda yeniden hesaplamaya göre kabaca 1,600x daha ucuz. Boyutluluk lanetinin yeniden fiyatlandırılması.

  5. 05
    Uyarlanabilir Drill-Down: Dakikadan Ham İşlemlere Değişken Granülerlikle Backtest
    Mar 17, 2026 #algotrading

    Uyarlanabilir Drill-Down: Dakikadan Ham İşlemlere Değişken Granülerlikle Backtest

    Uyarlanabilir veri granülerliğinin backtestleri nasıl hızlandırdığı ve depolama alanını nasıl tasarruf ettirdiği: yalnızca fiyatın önemli ölçüde hareket ettiği veya hacmin ani yükseldiği yerlerde 1m'den 1s, 100ms ve ham işlemlere drill-down; tüm tarihsel seri boyunca değil.

  6. 06
    Sadakat Kapısı: Ucuz Vekil, Pahalı Değerlendirmeyle Aynı Şekilde Sıralamadıkça, Kabadan İnceye Backtesting Sizi Daha Hızlı Kandırır
    Jul 5, 2026 #algotrading

    Sadakat Kapısı: Ucuz Vekil, Pahalı Değerlendirmeyle Aynı Şekilde Sıralamadıkça, Kabadan İnceye Backtesting Sizi Daha Hızlı Kandırır

    Drill-down / çoklu sadakat araması (ASHA, successive halving, Hyperband) binlerce konfigürasyonu ucuza eler ve yalnızca hayatta kalanları pahalı tam değerlendirmeye terfi ettirir. Bu gerçek bir hızlanmadır — ama düşük sadakatli sıralama yüksek sadakatli olanla uyuşmadığında sessizce çöker. Fold-sıralama korelasyonunu ölçtük: tek fold'da Spearman ρ 0.03 olabiliyor (neredeyse rastgele sıralıyor), fold sayısı arttıkça 0.43, 0.67, 0.78, 0.91'e tırmanıyor. Çözüm tek bir zorunlu kapı — önce ρ(ucuz, tam) ölçün ve minimum sadakati ρ ≥ 0.5 olan ilk basamağa otomatik yükseltin.

  7. 07
    Rastgele Arama'ya Karşı Akıllı Arama: Kesişme Noktası Algoritma Değil, Değerlendirme Maliyetidir
    Jul 4, 2026 #algoritmik trading

    Rastgele Arama'ya Karşı Akıllı Arama: Kesişme Noktası Algoritma Değil, Değerlendirme Maliyetidir

    Tek bir backtest ucuz olduğunda, aptal karıştırılmış Sobol ham verimde kazanır — akıllı örnekleyiciler (TPE, CMA-ES, ASHA) onları 20 kat geriye düşüren bir Python ask/tell vergisi öder, bu yüzden eşit duvar saatinde çok daha az nokta değerlendirir ve kaybederler. Her değerlendirmeyi maliyetli hale getirin (multi-TF + walk-forward katları) ve kesişme noktası tersine döner. Her iki rejimi de ölçtük, ve kat-sıralama sadakatinin (ρ@1'in 0.03'ten 0.43'e yükselmesi) neden budamanın karşılığını vermesi için bir ön koşul olduğunu da.

  8. 08
    GPU Hassasiyet Tuzağı: Apple Metal Üzerinde fp32 Backtest Nasıl Sessizce Çöp Değerler Döndürür
    Jul 6, 2026 #algoritmik-ticaret

    GPU Hassasiyet Tuzağı: Apple Metal Üzerinde fp32 Backtest Nasıl Sessizce Çöp Değerler Döndürür

    Apple'ın Metal GPU'sunda float64 yok. Vektörleştirilmiş bir backtest'i buna naif şekilde taşıyın ve cazip prefix-sum WMA fp32'yi taşırır — maksimum bağıl hata 211× — ama yine de çalışır ve makul görünen sayılar döndürür. Çözüm daha fazla hassasiyet değil; farklı bir formülasyon: doğrudan pencereli konvolüsyon, 8×10⁻⁷ hassasiyetiyle fp32-güvenli ve tek iş parçacıklı numba'dan 55.9× daha hızlı. Tuzak, aritmetik ve içine düşmediğinizi nasıl kanıtlarsınız.

  9. 09
    GPU Ne Zaman Karşılığını Verir: Parametre Taraması Roofline'ı — Manşetteki 167x'in Aslında 27x Algoritma Çarpı 6.2x Donanım Olduğu Yer
    Jul 7, 2026 #algotrading

    GPU Ne Zaman Karşılığını Verir: Parametre Taraması Roofline'ı — Manşetteki 167x'in Aslında 27x Algoritma Çarpı 6.2x Donanım Olduğu Yer

    GPU'nun CPU'ya karşı üstünlüğü batch boyutuyla büyüyor — çoklu zaman dilimli gösterge ön hesaplamamızda çağrı başına tek kombinasyonda 54.5x'ten 61 kombinasyonda 359.6x'e — çünkü küçük bir tarama, kernel başlatma ve aktarım ek yükünü amorti edemiyor. Manşetlik bir 167x'i, CPU'ya da aynı şekilde yarayan 27x'lik bir algoritmik kazanç ile 6.2x'lik bir donanım kazancına ayrıştırıyoruz; gerçek GPU-en-iyi-CPU üstünlüğünün tek zaman diliminde yalnızca 3.2x, çokluda 6.2x olduğunu gösteriyoruz ve bir GPU'ya yatırım yapmaya değmesi için bir taramanın ne kadar geniş olması gerektiğine dair bir karar rehberi veriyoruz.

  10. 10
    IPC Vergisi: Backtest Motorunu Bir Soketin Arkasına Koyun ve %13 Kaybedin — Kaybın Neredeyse Hiçbiri Sokete Ait Değil
    Jun 30, 2026 #algotrading

    IPC Vergisi: Backtest Motorunu Bir Soketin Arkasına Koyun ve %13 Kaybedin — Kaybın Neredeyse Hiçbiri Sokete Ait Değil

    Bir numba backtest çekirdeğini satır satır Rust'a taşıdık ve onu bir process sınırı üzerinden dört farklı şekilde çağırdık; bir eşdeğerlik kapısı son işleme kadar aynı PnL'i doğruladı. 1.2 MB'lık fiyat serisinin tamamını bir Unix soketi üzerinden göndermek ~2 ms'ye mal oluyor — işin yaklaşık %0.1'i. Aynı payload'ı JSON ile kodlamak ham byte'lardan 1348 kat daha pahalıya mal oluyor, kombinasyon başına gevezelik eden çağrılar veriyi 80 kez yeniden gönderiyor ve bar başına bir çağrı deseni 2.0 saniyelik bir işte 2.1 saniyelik saf IPC'ye mal olurdu. Sınır ucuz; vergi onu nasıl geçtiğinizde.