【Продолжение серии «CJ: продвинутый уровень», 08/30 · выпуск № 36】
Если источник прибыли ещё не найден, а вы уже оптимизируете микросекунды, скорее всего, вы оптимизируете преимущество, которого пока не существует.
Python подходит для быстрой проверки данных, сигналов и моделей затрат. Определять, не стали ли язык или среда выполнения узким местом, имеет смысл только тогда, когда стратегия действительно сталкивается с высокой параллельной нагрузкой, длинным хвостом задержек и блокировками при исполнении. Rust обеспечивает более строгие ограничения типов и более предсказуемую производительность, но он не исправит ошибочную логику входа в сделку и не избавит от одностороннего рынка.
Правильный порядок действий в разработке таков: сначала доказать работоспособность логики стратегии, затем измерить реальные узкие места и после этого выбрать подходящий способ реализации. Если сводить все проблемы к «недостаточной скорости», легко обойти стороной более сложные, но важные вопросы: корректны ли данные, контролируем ли риск и можно ли остановиться в случае сбоя.
При тестировании также нужно различать среднюю скорость и самые медленные моменты. Обычно всё может работать быстро, но при перегрузке надолго зависать — и это может быть сложнее контролировать, чем стабильно работающая, пусть и немного более медленная система. Решение о переписывании должно зависеть от результатов измерений и поведения системы при сбоях, а не от ощущения профессионализма, которое создаёт название языка.
Скорость — не цель. Инженерная ценность — в том, чтобы ускорить именно то, что нужно.
В следующем выпуске: почему цены контрактов продолжают двигаться, когда рынок закрыт?
#量化工程 #Rust