Блог им. r0man

Как за полминуты протестировать идею на 150 миллионах тиков

    • 31 января 2020, 19:24
    • |
    • r0man
  • Еще

Тестировать будем крипту на Bitmex, так как там можно без проблем достать тики с направлениями на халяву.
Собственно, идея очень простая:
— покупаем, если сумма объемов последних 5 сделок больше 500,000
— продаем, если сумма объемов последних 5 сделок меньше -500,000
Торгуем одним условным битком (тикер XBTUSD).
Использовать будем R и пакет QuantTools.
Пишем немножко кода:
Как за полминуты протестировать идею на 150 миллионах тиков

Результаты:
Как за полминуты протестировать идею на 150 миллионах тиков
Как за полминуты протестировать идею на 150 миллионах тиков

Посчиталось всё где-то за 38 секунд. Из них 30сек заняло чтение тиков с диска. Ниже табличка профайлинга по времени в миллисекндах:
Как за полминуты протестировать идею на 150 миллионах тиков

  • обсудить на форуме:
  • bitmex
★15
25 комментариев
Интересно сравнить производительность с другими Тестерами.
avatar
fxsaber, самый шустрый амиброкер… там специально сделали чтоб самый быстрый код крутился на ядре и процессорном кэше без доступа к внешней оперативке...


avatar
ves2010, если знаете Ami, можно сравнить с MT5.
avatar
векторный тест… думаю numpy так же обработало бы.
то, что быстро круто, но от реальности будет ой как далеко.
вообще тест подтверждает мои ощущения от крипты — если налили лимитник, то будет минус:)
avatar
Eugene Logunov, RAMDisk решает все такие проблемы. И SSD целее будет.
avatar
fxsaber, из за рэм диска будет меньше считывания с ссд?
avatar
Андрей К, RAMDisk — это все тот же диск, только в быстрой памяти и энергозависимый. Так что SSD понадобится только для первоначального заполнения RAMDisk и для сохранения конечного результата после долгой работы.
avatar
fxsaber, сейчас такие диски nvme, что про скорость чтения можно не думать. А память — дорогая. И возни много, чтобы удерживать на рамдиске копию необходимых данных.
avatar
Логично было бы вынести во входные параметры ТС какие-то показатели и сделать Оптимизацию. Не в курсе, справится ли QT. Ну и walk-forward замутить там же.
avatar
fxsaber, да нет в этом смысла. это тиковый грааль. добавить задержки в макрет дате и исполнении + кодовый обвесок движка и грааль стухнет. опять же экзекьюн на тике, а не на котировке. такое надо на нормальном движе тестить для начала и потом уже добавлять оптимизацию и прочее
avatar
day0markets, не пизди. Все что работает на тиках и все что считается наносекунды и обрабатывается за 8 секунд, это все экстремально критично к исполнению и экстремально не пригодно для бектестинга.

П.С. Прошу прощения, только сейчас увидел что вы именно это и имели в виду.
avatar
day0markets, цель была проверить рабочая идея или нет. С такой средней сделкой комис не отобьет.
Но нормальный, полноценный движок в QT тоже есть.

avatar
Что такое «тики с направлениями»?
«сумма объемов последних 5 сделок» — это сумма объёмов на последних 5 тиках?
avatar
Rostislav Kudryashov, buy или sell
avatar
Этот «тестер» бесконечно далек от нормальной симуляции исполнения заявок. Также хотелось бы на выходе получить стандартную статистику: список сделок, средняя сделка, распределение финрезов сделок… Что я Вам рассказываю прописные истины? =)
avatar
ch5oh, 

Это не совсем тестер, а быстрый способ проверить идею по ценам и сигналу вход/выход. На выходе как раз только и получим список сделок вида цена вход/выход, финрез в разрезе возможного убытка и упущеного профита, id сделок. Времени пока только не хватает. Имея список сделок легко посчитать остальные статистики. В коде я там набросал несколько.

А для полноценного бэктестинга, в QT есть тестер с генерацией и отменой ордеров по разным событиям, поддержкой лимитников, задержек и прочее. Но в нем страту, надо более подробно описывать и в отдельном файле на плюсах, что не всегда бывает целесообразно.

avatar
r0man, а какая просадка у вашей стратегии и каким обьемом тестили
avatar
CapitalMAN, максимальная 809usd, объем один контракт. Но я бы не стал называть это стратегией. Всего лишь тест сигнала с параметрами взятыми на глаз для примера, не более. 
avatar
r0man, при обьеме 10 контрактов просадка будит 8000usd я так понимаю) а при 100 80тыс в моменте, а если тест не годовой)))
avatar
CapitalMAN, один контракт соответствует одну битку. Тест за май-декабрь 2019. Вижу вы неплохо умножаете на 10, попробуйте разделить просадку на цену битка 'в моменте' при объеме 1, 10, 100 и так далее контрактов.
avatar
r0man, я о том что просадка будит увеличиваться какая цена битка не была, всегда и что самое интересное вы ни когда не знаете ав друг макс просадка продлитс подольше)
avatar
На мексе когда движуха такая ордера не проходят
avatar
Gryphon, а если лимитку ставить подальше от движухи с рассчетом что ее потом смоет волной еще дальше, такие ордера принимает? Понятно, что профит тогда меньше будет, но, может, не отрицательный получится в итоге…
avatar
Eugene Logunov, да вроде нормальная скорость, мне хватает. Не хватало быстрого тестера, чтобы проверить по сигналу вход/выход прямо R. Вот теперь нашёл, делюсь) Но это не полноценный бэктестинг, конечно.
avatar

теги блога r0man

....все тэги



UPDONW
Новый дизайн