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


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


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

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 Go to
Все стратегии запускаются на одном эмуляторе или каждая на отдельном?

все на одном.

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

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

esper

Avatar
Date: 3/12/2014
Reply


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

devruss

Avatar
Date: 3/12/2014
Reply


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


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

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


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

loading
clippy