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.
- 01
Jun 26, 2026 #algotradingBacktest tezligi zinapoyasi: laptop CPU'sida 298x, oxirgi bitimigacha bir xil PnL
Bir xil 80 kombinatsiyali parametr sweep'ining beshta implementatsiyasi, barchasi bir xil PnL ishlab chiqarishi tasdiqlangan: pandas rolling.apply 69.9 soniya, numpy 3.1, numba 2.0, parallel numba 0.23 — Apple M2 Max'da hech qanday apparat o'zgarishisiz o'lchangan 298x tezlashuv, va layoqatli vektorlashtirilgan bazaviy variantdan ham ~13x ustun. Har bir pog'ona nima beradi, nega GPU yetishmayotgan bo'lak emas, va ommaviy parametr qidiruvida haqiqiy bo'g'ilish qayerda yashaydi.
- 02
Jul 2, 2026 #algotradingFreymvork solig'i: qachonki backtest kutubxonangiz oddiy pandas siklidan sekinroq bo'ladi
Biz sakkizta backtest dvigatelini bitta bir xil parametr sweepida solishtirdik — 150k bar, 80 ta HMA-cross kombinatsiyasi, savdolar soni 2707 da bir xil qulflangan. Eng mashhur ikkita hodisaga asoslangan freymvork qo'lda yozilgan pandas siklidan ham sekinroq chiqdi, vektorlashtirilgan/kompilyatsiya qilingan dvigatel esa xuddi shu ishni ~13,000× tezroq bajardi. Mashhur kutubxonalar hech qachon amortizatsiya qilishga mo'ljallanmagan har bir bar uchun yuklama tadqiqoti.
- 03
Mar 16, 2026 #algotradingYig'ilgan Parquet Kesh: Ko'p Vaqt Oralig'idagi Backtestlarni Yuzlab Marta Tezlashtirish
Daqiqalik sham (candle) ma'lumotlaridan vaqt oraliqlari va indikatorlarni oldindan qanday hisoblash, ularni parquet formatida saqlash va ortiqcha qayta hisoblashlarsiz strategiyalarni ommaviy sinovdan o'tkazish uchun qanday foydalanish.
- 04
Jul 3, 2026 #algotradingIkki oʻqli parametr fazosi: nega sweepingizning katta qismi deyarli bepul boʻlishi kerak
Barcha parametrlarni qidirish bir xil qimmatga tushmaydi. Strategiyaning parametrlari qimmat oʻqqa (indikatorlar — butun qator boʻyicha qayta hisoblanadi) va arzon oʻqqa (qaror threshold'lari — oldindan hisoblangan signallar boʻyicha O(n) oʻtish) boʻlinadi. Indikatorlar threshold'larga bogʻliq emasligi tufayli siz ularni bir marta hisoblaysiz va minglab threshold konfiguratsiyalarini ~5,600 cfg/s tezlikda sweep qilasiz — bu har bir konfiguratsiya uchun qayta hisoblashdan taxminan 1,600 marta arzon. Oʻlchamlilik laʼnatining qayta narxlanishi.
- 05
Mar 17, 2026 #algotradingAdaptiv Drill-Down: Daqiqalardan xom savdolargacha o'zgaruvchan granulyarlikda backtest
Adaptiv ma'lumotlar granulyarligi backtestlarni qanday tezlashtiradi va saqlash joyini qanday tejaydi: 1m dan 1s, 100ms va xom savdolargacha drill-down faqat narx sezilarli o'zgargan yoki hajm keskin oshgan joyda, butun tarixiy qator bo'ylab emas.
- 06
Jul 5, 2026 #algotreydingAniqlik darvozasi: agar arzon proksi konfiguratsiyalarni qimmat baholash kabi saralamasa, yirikdan-nozikkacha bektest sizni tezroq aldaydi
Yirikdan-nozikkacha / ko'p-aniqlikli qidiruv (ASHA, ketma-ket ikkiga bo'lish, Hyperband) minglab konfiguratsiyalarni arzon narxda saralaydi va faqat omon qolganlarni qimmat, to'liq baholashga o'tkazadi. Bu haqiqiy tezlashuv — lekin agar past aniqlikdagi reyting yuqori aniqlikdagisiga zid kelsa, u sezilmagan holda quladi. Biz fold-reyting korrelyatsiyasini o'lchadik: bitta fold'da Spearman ρ 0.03 bo'lishi mumkin (deyarli tasodifiy saralaydi), fold'lar to'planishi bilan 0.43, 0.67, 0.78, 0.91 gacha ko'tariladi. Yechim — bitta majburiy darvoza: avval ρ(arzon, to'liq)ni o'lchang va minimal aniqlik darajasini ρ ≥ 0.5 bo'lgan birinchi pog'onagacha avtomatik ko'taring.
- 07
Jul 4, 2026 #algotradingTasodifiy qidiruv vs aqlli qidiruv: kesishish nuqtasi baholash narxida, algoritmda emas
Bitta backtest arzon bo'lganda, ahmoqona aralashtirilgan Sobol xom o'tkazuvchanlikda g'alaba qozonadi — aqlli samplerlar (TPE, CMA-ES, ASHA) Python ask/tell solig'ini to'laydi, bu ularni 20x sekinlashtiradi, shu sababli ular teng wall-clock vaqtida ancha kamroq nuqtani baholaydi va yutqazadi. Har bir baholashni qimmat qiling (multi-TF + walk-forward foldlar) — kesishish nuqtasi teskarilanadi. Biz ikkala rejimni ham o'lchadik, shuningdek nima uchun fold-rank fidelity (ρ@1 0.03→0.43 gacha o'sishi) pruning foyda berishining zaruriy sharti ekanligini aniqladik.
- 08
Jul 6, 2026 #algotradingGPU aniqlik tuzogi: Apple Metal ustidagi fp32 backtest qanday qilib jimgina axlat qaytaradi
Apple'ning Metal GPU'sida float64 yoq. Vektorlashtirilgan backtestni unga soddadillik bilan kochirsangiz, jozibali prefiks-yigindi WMA fp32'dan toshib ketadi — maksimal nisbiy xato 211× — biroq u baribir ishlaydi va ishonarli korinuvchi raqamlar qaytaradi. Yechim koproq aniqlik emas; bu boshqacha formulirovka: togridan-togri oynali konvolyutsiya, fp32 uchun xavfsiz 8×10⁻⁷ va bir oqimli numba'dan 55.9× tezroq. Tuzoq, arifmetika va unga tushmaganingizni qanday isbotlash.
- 09
Jul 7, 2026 #algotradingGPU qachon o'zini oqlaydi: parametr qidiruvi roofline'i — sarlavhadagi 167x aslida 27x algoritm karra 6.2x apparat
GPUning CPUdan ustunligi paket hajmi bilan o'sadi — ko'p taymfreymli indikatorlarni oldindan hisoblashimizda har chaqiruvga bitta kombinatsiyada 54.5x dan 61 tasida 359.6x gacha — chunki kichik qidiruv kernelni ishga tushirish va uzatish ustamasini amortizatsiya qila olmaydi. Sarlavhadagi 167x ni CPUga ham naf keltiradigan 27x algoritmik yutuq karra 6.2x apparat yutug'iga ajratamiz, GPUning eng yaxshi CPUdan haqiqiy ustunligi bitta taymfreymda atigi 3.2x, ko'p taymfreymda 6.2x ekanini ko'rsatamiz va GPU sotib olish o'zini oqlashi uchun qidiruv qanchalik keng bo'lishi kerakligi haqida qaror qo'llanmasini beramiz.
- 10
Jun 30, 2026 #algotradingIPC solig'i: backtest dvigatelini soket ortiga qo'ying va 13% yo'qoting — bu deyarli hech narsasi soketga tegishli emas
Biz numba backtest yadrosini qatorma-qator Rust tiliga ko'chirdik va uni jarayon chegarasi orqali to'rt xil usulda chaqirdik, so'nggi savdogacha bir xil PnL ni tasdiqlovchi ekvivalentlik darvozasi bilan. 1,2 MB narx seriyasining barchasini Unix soketi orqali yuborish ~2 ms turadi — vazifaning taxminan 0,1%. Xuddi shu yukni JSON formatida kodlash xom baytlardan 1348 marta qimmatga tushadi, kombinatsiya boshiga gaplashuvchi chaqiruvlar ma'lumotlarni 80 marta qayta yuboradi, va bar boshiga chaqiruv namunasi 2,0 s vazifada 2,1 s sof IPC to'laydi. Chegara arzon; soliq uni qanday kesib o'tishingizda.