← Zurück

Backtesting: нестабильные результаты

Провел эксперимент:

  1. Создал 10 идентичных копий стратегии
  2. Запустил их параллельно

Генерация стаканов отключена, тестирование исключительно на тиковых данных

Результат: у всех стратегий разный PnL...

Задача провести оптимизацию стратегии, но если 10 идентичных копий дают разный результат (== 10 одинаковых входов дают 10 различных выходов), то ни о какой оптимизации речи быть не может....

Вопрос, что надо изменить в настройках?

War dieses Thema hilfreich?

Thema teilen

Kommentare (5)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

devruss
devruss Autor

Итак, результаты тестов на тиковых данных за 2 месяца:

  1. Тест 1 стратегии занимает 27 минут, десяти - 1ч49мин (в 4 раза больше времени за 10 стратегий)
  2. trades: 299 - 301. 2 потерянных трейда (4 сделки) не так страшно, но вопрос почему это происходит

  3. PnL гуляет на 7% (-7%,0) - это уже намного хуже

Короче, либо я что-то не так делаю, либо в S# вскрылась большая проблема.

esper
esper

Все стратегии запускаются на одном эмуляторе или каждая на отдельном?

devruss
devruss Autor

esper: Все стратегии запускаются на одном эмуляторе или каждая на отдельном? все на одном.

Процесс оптимизационного бэктестинга нигде не задокументирован, так что приходится делать методом тыка.

  • Надо на нескольких коннекторах типа StorageRegistry?
  • Если все равно одни и те же данные, их можно как-нибудь запихнуть в память целиком, чтобы не считывать с диска каждый раз для каждой стратегии?
esper
esper

Если у вас один HistoryEmulationConnector, то все стратегии торгуют между собой и нет ничего странного в том, что их результаты отличаются.

devruss
devruss Autor

esper: Если у вас один HistoryEmulationConnector, то все стратегии торгуют между собой и нет ничего странного в том, что их результаты отличаются.

это 10 одинаковых копий стратегии, соответственно, они не между собой торгуют, а одновременно и однонаправленно торгуют. Почему в данном случае возникают проблемы непонятно. В реале, когда будет запущено несколько стратегий на одном коннекторе, они тоже между собой будут конфликтовать?

  • Возможно, мой подход неверен именно с точки зрения реализации S#, тогда скажите как правильно делать.
  • Возможно ли кэшировать данные в памяти, чтобы 10 коннекторов считывали данные не с диска, а из памяти? Ну либо еще как-нибудь оптимизировать процесс бэктестинга?