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

Backtesting: нестабильные результаты
Atom
3/10/2014
devruss


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

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

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

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

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

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


Tags:


Thanks:


devruss

Avatar
Date: 3/11/2014
Reply


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

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

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

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

Thanks:

esper

Avatar
Date: 3/11/2014
Reply


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

Thanks:

devruss

Avatar
Date: 3/12/2014
Reply


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

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

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

esper

Avatar
Date: 3/12/2014
Reply


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

Thanks:

devruss

Avatar
Date: 3/12/2014
Reply


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

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

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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy