
Комментарии 12
Отличная статья!
Немного подушню, на тему того, что эти 97% дейтрейдеров в минусе - это все-таки местечковая история, полученная на базе двух исследований, на биржах с по современным меркам конскими комиссиями, но к статье это почти никак не относится.
А вот с остальными цифрами из статьи согласен почти полностью. Очень похожие и у себя наблюдал. Тейки и подходы из статьи, - по сути все полностью справедливо. Даже с, казалось бы, спорным
Переписал кусок. Было 50 мс, стало 0.5 мс. Гордый, замерил общий roundtrip. Был 150 мс, стал 100.5 мс. Месяц работы ради 33%. На daily-стратегии это технически интересно, но фактически бесполезно
По опыту абсолютно согласен.
Почему просто не взять готовые решения для бэктестов типа backtrader, Backtesting.py, не изобретать велосипед и не наступать на одни и те же грабли каждый раз (это про look-ahead bias). Тот же TA-lib для расчётов индикаторов? Зачем гнаться за скоростью, если HFT не является целью? Сомневаюсь, что на часовых свечах при ограниченном наборе инструментов подобные оптимизации имеют большое значение
backtrader и Backtesting.py не решают проблему. Они тоже по умолчанию исполняют по close того же бара. Look-ahead bias никуда не девается, а просто прячется внутри библиотеки
TA-lib для индикаторов сам использую. Но индикаторы это 5% задачи, остальное моделирование исполнения
Про скорость согласен. В статье как раз об этом и говорю. Для daily-стратегий гнаться за миллисекундами бессмысленно. Но event-driven архитектура нужна не ради скорости, а чтобы физически не дать себе заглянуть в будущее.
Backtrader - по умолчанию сделка происходит по цене открытия следующего бара
Backtesting.py - тоже по умолчанию по цене открытия следующего бара
Научитесь читать документацию. С++ не нужен даже если на 5мин торговать, может и на 1мин не нужен, но надо проверить. В HFT смысла нет, нет там денег на MOEX.
У Backtesting.py хорошая скорость работы, плюс можно распараллелить на несколько процессов.
returns = prices.pct_change().shift(-1)
Эта ошибка очень простая. Странно ее не заметить при кодировании стратегии. А так, конечно, надо внимательно быть с разными нюансами. И не забывать о возможности переподгонки.
Согласен ошибка глупая. Тем и обиднее. Нл такие вещи иногда проскакивают. А когда видишь на бектесте красивый Sharpe и не возникает желания искать баг в работающем коде.
Собственно, статья как раз об этом
Причем здесь питон или библиотеки, если дело в прокладке между стулом и монитором?
Почему ваш бектест врёт на 50%, и при чём тут выбор между Python и C++