Быстрые движки бэктеста
Как построить движок бэктеста, который считает в сотни раз быстрее без изменения PnL: раскладка данных, кэширование, адаптивное разрешение и архитектура — от первых ускорений до внутренностей продакшена.
- 01
Jul 1, 2026 #алготрейдингЛесенка скорости бэктест-движка: 298x на CPU ноутбука, идентичный PnL до последней сделки
Пять реализаций одного и того же перебора 80 комбинаций параметров, каждая проверена на идентичность PnL: pandas rolling.apply занимает 69.9 секунды, numpy — 3.1, numba — 2.0, параллельная numba — 0.23 — измеренное ускорение 298x на Apple M2 Max без единого изменения в железе, и все еще ~13x против добротной векторизованной базовой реализации. Что дает каждая ступень, почему GPU — не то недостающее звено, и где на самом деле находится узкое место в массовом переборе параметров.
- 02
Mar 16, 2026 #алготрейдингАгрегированный Parquet-кэш: как ускорить мультитаймфрейм-бэктест в сотни раз
Как предвычислить таймфреймы и индикаторы из минутных свечей, сохранить в parquet и использовать при массовом тестировании стратегий без повторных пересчётов.
- 03
Mar 17, 2026 #алготрейдингAdaptive drill-down: бэктест с переменной гранулярностью от минут до сырых сделок
Как адаптивная гранулярность данных ускоряет бэктесты и экономит хранилище: drill-down от 1m к 1s, 100ms и сырым сделкам только там, где цена двигалась значительно или объём аномально вырос.
- 04
Jul 2, 2026 #алготрейдингIPC-налог: спрячьте бэктест-движок за сокетом и потеряйте 13% — при этом сокет почти ни при чем
Мы перенесли numba-ядро бэктеста построчно на Rust и вызывали его через границу процесса четырьмя способами, а проверка эквивалентности подтвердила идентичный PnL вплоть до последней сделки. Передача всего ценового ряда в 1.2 MB через Unix-сокет стоит ~2 мс — около 0.1% всей работы. JSON-кодирование того же payload стоит 1348x дороже, чем сырые байты, болтливые вызовы на каждую комбинацию пересылают данные заново 80 раз, а паттерн вызова на каждый бар обошелся бы в 2.1 с чистого IPC на задаче длиной 2.0 с. Граница дешева; налог — в том, как вы ее пересекаете.